Вопросы на счет плагинов

ivanms1337

Участник
Сообщения
69
Реакции
2
Кто может помочь с плагином Overlay Round End ? Нужно сделать что бы оверлей отображался 3 секунды.

PHP:
#include <sdktools_stringtables>

new Handle:sm_roundend_overlay_t,Handle:sm_roundend_overlay_ct;

public OnPluginStart()
{
    HookEvent("round_start", Event_RoundStart);
    HookEvent("round_end", Event_RoundEnd);
    sm_roundend_overlay_t = CreateConVar("sm_roundend_overlay_t", "overlays/status_win/t_win", "Путь к оверлею T");
    sm_roundend_overlay_ct = CreateConVar("sm_roundend_overlay_ct", "overlays/status_win/ct_win", "Путь к оверлею CT");
}

public OnMapStart()
{
    decl String:file[256];
    BuildPath(Path_SM, file, 255, "configs/OverlayDownloads.cfg");
    new Handle:fileh = OpenFile(file, "r");
    if (fileh != INVALID_HANDLE)
    {
        decl String:buffer[256];
        decl String:buffer_full[PLATFORM_MAX_PATH];

        while(ReadFileLine(fileh, buffer, sizeof(buffer)))
        {
            TrimString(buffer);
            if ( (StrContains(buffer, "//") == -1) && (!StrEqual(buffer, "")) )
            {
                PrintToServer("Reading overlay_downloads line :: %s", buffer);
                Format(buffer_full, sizeof(buffer_full), "materials/%s", buffer);
                if (FileExists(buffer_full))
                {
                    PrintToServer("Precaching %s", buffer);
                    PrecacheDecal(buffer, true);
                    AddFileToDownloadsTable(buffer_full);
                    PrintToServer("Adding %s to downloads table", buffer_full);
                }
                else
                {
                    PrintToServer("File does not exist! %s", buffer_full);
                }
            }
        }
        CloseHandle(fileh);
    }
}

public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
    new winner_team = GetEventInt(event, "winner");
    decl String:overlaypath[PLATFORM_MAX_PATH];

    if (winner_team == 2)
    {
        GetConVarString(sm_roundend_overlay_t, overlaypath, sizeof(overlaypath));
        ShowOverlayToAll(overlaypath);
    }
    else if (winner_team == 3)
    {
        GetConVarString(sm_roundend_overlay_ct, overlaypath, sizeof(overlaypath));
        ShowOverlayToAll(overlaypath);
    }
}

ShowOverlayToClient(client, const String:overlaypath[])
{
    ClientCommand(client, "r_screenoverlay \"%s\"", overlaypath);
}

ShowOverlayToAll(const String:overlaypath[])
{
    for (new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            ShowOverlayToClient(i, overlaypath);
        }
    }
}

public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    ShowOverlayToAll("");
}
 

ivanms1337

Участник
Сообщения
69
Реакции
2
Последнее редактирование:

Someone

Участник
Сообщения
1,933
Реакции
1,653
Он весь конец раунда отображается. Тут надо таймер сделать, но я не знаю как
--- Добавлено позже ---

Сможешь?

Должно работать.

PHP:
public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
    new winner_team = GetEventInt(event, "winner");
    decl String:overlaypath[PLATFORM_MAX_PATH];

    if (winner_team == 2)
    {
        GetConVarString(sm_roundend_overlay_t, overlaypath, sizeof(overlaypath));
        ShowOverlayToAll(overlaypath);
    }
    else if (winner_team == 3)
    {
        GetConVarString(sm_roundend_overlay_ct, overlaypath, sizeof(overlaypath));
        ShowOverlayToAll(overlaypath);
    }
  
    CreateTimer(3.0, HIDE_OVERLAY);
}

public Action HIDE_OVERLAY(Handle hMenu)
{
    ShowOverlayToAll("");
}
 

ivanms1337

Участник
Сообщения
69
Реакции
2
Должно работать.

PHP:
public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
    new winner_team = GetEventInt(event, "winner");
    decl String:overlaypath[PLATFORM_MAX_PATH];

    if (winner_team == 2)
    {
        GetConVarString(sm_roundend_overlay_t, overlaypath, sizeof(overlaypath));
        ShowOverlayToAll(overlaypath);
    }
    else if (winner_team == 3)
    {
        GetConVarString(sm_roundend_overlay_ct, overlaypath, sizeof(overlaypath));
        ShowOverlayToAll(overlaypath);
    }
 
    CreateTimer(3.0, HIDE_OVERLAY);
}

public Action HIDE_OVERLAY(Handle hMenu)
{
    ShowOverlayToAll("");
}
Вот так теперь он должен выглядить?
PHP:
#include <sdktools_stringtables>

new Handle:sm_roundend_overlay_t,Handle:sm_roundend_overlay_ct;

public OnPluginStart()
{
    HookEvent("round_start", Event_RoundStart);
    HookEvent("round_end", Event_RoundEnd);
    sm_roundend_overlay_t = CreateConVar("sm_roundend_overlay_t", "overlays/status_win/t_win", "Путь к оверлею T");
    sm_roundend_overlay_ct = CreateConVar("sm_roundend_overlay_ct", "overlays/status_win/ct_win", "Путь к оверлею CT");
}

public OnMapStart()
{
    decl String:file[256];
    BuildPath(Path_SM, file, 255, "configs/OverlayDownloads.cfg");
    new Handle:fileh = OpenFile(file, "r");
    if (fileh != INVALID_HANDLE)
    {
        decl String:buffer[256];
        decl String:buffer_full[PLATFORM_MAX_PATH];

        while(ReadFileLine(fileh, buffer, sizeof(buffer)))
        {
            TrimString(buffer);
            if ( (StrContains(buffer, "//") == -1) && (!StrEqual(buffer, "")) )
            {
                PrintToServer("Reading overlay_downloads line :: %s", buffer);
                Format(buffer_full, sizeof(buffer_full), "materials/%s", buffer);
                if (FileExists(buffer_full))
                {
                    PrintToServer("Precaching %s", buffer);
                    PrecacheDecal(buffer, true);
                    AddFileToDownloadsTable(buffer_full);
                    PrintToServer("Adding %s to downloads table", buffer_full);
                }
                else
                {
                    PrintToServer("File does not exist! %s", buffer_full);
                }
            }
        }
        CloseHandle(fileh);
    }
}

public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
    new winner_team = GetEventInt(event, "winner");
    decl String:overlaypath[PLATFORM_MAX_PATH];

    if (winner_team == 2)
    {
        GetConVarString(sm_roundend_overlay_t, overlaypath, sizeof(overlaypath));
        ShowOverlayToAll(overlaypath);
    }
    else if (winner_team == 3)
    {
        GetConVarString(sm_roundend_overlay_ct, overlaypath, sizeof(overlaypath));
        ShowOverlayToAll(overlaypath);
    }
  
    CreateTimer(3.0, HIDE_OVERLAY);
}

public Action HIDE_OVERLAY(Handle hMenu)
{
    ShowOverlayToAll("");
}
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
Вот так теперь он должен выглядить?
PHP:
#include <sdktools_stringtables>

new Handle:sm_roundend_overlay_t,Handle:sm_roundend_overlay_ct;

public OnPluginStart()
{
    HookEvent("round_start", Event_RoundStart);
    HookEvent("round_end", Event_RoundEnd);
    sm_roundend_overlay_t = CreateConVar("sm_roundend_overlay_t", "overlays/status_win/t_win", "Путь к оверлею T");
    sm_roundend_overlay_ct = CreateConVar("sm_roundend_overlay_ct", "overlays/status_win/ct_win", "Путь к оверлею CT");
}

public OnMapStart()
{
    decl String:file[256];
    BuildPath(Path_SM, file, 255, "configs/OverlayDownloads.cfg");
    new Handle:fileh = OpenFile(file, "r");
    if (fileh != INVALID_HANDLE)
    {
        decl String:buffer[256];
        decl String:buffer_full[PLATFORM_MAX_PATH];

        while(ReadFileLine(fileh, buffer, sizeof(buffer)))
        {
            TrimString(buffer);
            if ( (StrContains(buffer, "//") == -1) && (!StrEqual(buffer, "")) )
            {
                PrintToServer("Reading overlay_downloads line :: %s", buffer);
                Format(buffer_full, sizeof(buffer_full), "materials/%s", buffer);
                if (FileExists(buffer_full))
                {
                    PrintToServer("Precaching %s", buffer);
                    PrecacheDecal(buffer, true);
                    AddFileToDownloadsTable(buffer_full);
                    PrintToServer("Adding %s to downloads table", buffer_full);
                }
                else
                {
                    PrintToServer("File does not exist! %s", buffer_full);
                }
            }
        }
        CloseHandle(fileh);
    }
}

public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
    new winner_team = GetEventInt(event, "winner");
    decl String:overlaypath[PLATFORM_MAX_PATH];

    if (winner_team == 2)
    {
        GetConVarString(sm_roundend_overlay_t, overlaypath, sizeof(overlaypath));
        ShowOverlayToAll(overlaypath);
    }
    else if (winner_team == 3)
    {
        GetConVarString(sm_roundend_overlay_ct, overlaypath, sizeof(overlaypath));
        ShowOverlayToAll(overlaypath);
    }
 
    CreateTimer(3.0, HIDE_OVERLAY);
}

public Action HIDE_OVERLAY(Handle hMenu)
{
    ShowOverlayToAll("");
}
Да.
 

ivanms1337

Участник
Сообщения
69
Реакции
2

Вложения

  • Аватарка.jpg
    Аватарка.jpg
    50.1 КБ · Просмотры: 29
  • 1.png
    1.png
    9.8 КБ · Просмотры: 30

Someone

Участник
Сообщения
1,933
Реакции
1,653
Ошибки при компиляции
--- Добавлено позже ---
ой не то
--- Добавлено позже ---

Исправить можешь?

PHP:
#include <sdktools_stringtables>

new Handle:sm_roundend_overlay_t,Handle:sm_roundend_overlay_ct;

public OnPluginStart()
{
    HookEvent("round_end", Event_RoundEnd);
    sm_roundend_overlay_t = CreateConVar("sm_roundend_overlay_t", "overlays/status_win/t_win", "Путь к оверлею T");
    sm_roundend_overlay_ct = CreateConVar("sm_roundend_overlay_ct", "overlays/status_win/ct_win", "Путь к оверлею CT");
}

public OnMapStart()
{
    decl String:file[256];
    BuildPath(Path_SM, file, 255, "configs/OverlayDownloads.cfg");
    new Handle:fileh = OpenFile(file, "r");
    if (fileh != INVALID_HANDLE)
    {
        decl String:buffer[256];
        decl String:buffer_full[PLATFORM_MAX_PATH];

        while(ReadFileLine(fileh, buffer, sizeof(buffer)))
        {
            TrimString(buffer);
            if ( (StrContains(buffer, "//") == -1) && (!StrEqual(buffer, "")) )
            {
                PrintToServer("Reading overlay_downloads line :: %s", buffer);
                Format(buffer_full, sizeof(buffer_full), "materials/%s", buffer);
                if (FileExists(buffer_full))
                {
                    PrintToServer("Precaching %s", buffer);
                    PrecacheDecal(buffer, true);
                    AddFileToDownloadsTable(buffer_full);
                    PrintToServer("Adding %s to downloads table", buffer_full);
                }
                else
                {
                    PrintToServer("File does not exist! %s", buffer_full);
                }
            }
        }
        CloseHandle(fileh);
    }
}

public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
    new winner_team = GetEventInt(event, "winner");
    decl String:overlaypath[PLATFORM_MAX_PATH];

    if (winner_team == 2)
    {
        GetConVarString(sm_roundend_overlay_t, overlaypath, sizeof(overlaypath));
        ShowOverlayToAll(overlaypath);
    }
    else if (winner_team == 3)
    {
        GetConVarString(sm_roundend_overlay_ct, overlaypath, sizeof(overlaypath));
        ShowOverlayToAll(overlaypath);
    }
 
    CreateTimer(3.0, HIDE_OVERLAY);
}

public Action HIDE_OVERLAY(Handle hTimer)
{
    ShowOverlayToAll("");
}

ShowOverlayToClient(client, const String:overlaypath[])
{
    ClientCommand(client, "r_screenoverlay \"%s\"", overlaypath);
}

ShowOverlayToAll(const String:overlaypath[])
{
    for (new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            ShowOverlayToClient(i, overlaypath);
        }
    }
}
 
Последнее редактирование:

ivanms1337

Участник
Сообщения
69
Реакции
2
Все равно ошибки
 

Вложения

  • 1.png
    1.png
    9.8 КБ · Просмотры: 15

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Полностью переписал плагин и сделал новые overlay к ниму, но вот как скрыть стандартную табличку в конце раунда я не знаю.

Выглядит примерно так:

Counter-strike  Global Offensive 04.23.2017 - 19.44.04.02.png

Counter-strike  Global Offensive 04.23.2017 - 19.45.55.04.png

Нашел кое какую серверную команду...
PHP:
sv_nowinpanel 1
Вроде бы в CS:GO не работает, а вот в CSS вполне возможно. Как вариант...
Можно полностью скрыть худ(все панели) всем игрокам после конца раунда, только вот опять проблема, мертвым все не скроешь.

Как быть - не знаю. Подключайтесь.

Написал на старом синтаксисе, должно работать везде.
PHP:
#include <sdktools_stringtables>

new String:overlay_t[PLATFORM_MAX_PATH];
new String:overlay_ct[PLATFORM_MAX_PATH];

public OnPluginStart()
{
   new Handle:kv = CreateKeyValues("WinOverlay");

   if(!FileToKeyValues(kv, "addons/sourcemod/configs/WinOverlay/Settings.ini"))
   {
       PrintToServer("No Found: addons/sourcemod/WinOverlay/Settings.ini");
   }
 
   KvGetString(kv, "overlay_t", overlay_t, sizeof(overlay_t), "");
   KvGetString(kv, "overlay_ct", overlay_ct, sizeof(overlay_ct), "");
 
   HookEvent("round_end", RoundEnd);
}

public OnMapStart()
{
   new Handle:file = OpenFile("addons/sourcemod/configs/WinOverlay/Downloads.txt", "r");
   if (file == INVALID_HANDLE)
   {
       SetFailState("No Found: addons/sourcemod/configs/WinOverlay/Downloads.txt");
   }
   decl String:path[PLATFORM_MAX_PATH];
   while (!IsEndOfFile(file) && ReadFileLine(file, path, PLATFORM_MAX_PATH))
   {
       TrimString(path);
       if (IsCharAlpha(path[0])) AddFileToDownloadsTable(path);
   }
   CloseHandle(file);
}

public Action:RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
   new winner_team = GetEventInt(event, "winner");
 
   for (new i = 1; i <= MaxClients; i++)
   {
       if (IsClientInGame(i) && !IsFakeClient(i))
       {
           if (winner_team == 2)
           {
               ClientCommand(i, "r_screenoverlay %s", overlay_t);
           }
           else if (winner_team == 3)
           {
               ClientCommand(i, "r_screenoverlay %s", overlay_ct);
           }
       }
   }
 
   CreateTimer(3.0, TimerOverlayOff, _, TIMER_FLAG_NO_MAPCHANGE);
}

public Action:TimerOverlayOff(Handle:timer)
{
   for (new i = 1; i <= MaxClients; i++)
   {
       if (IsClientInGame(i) && !IsFakeClient(i))
       {
           ClientCommand(i, "r_screenoverlay 0");
       }
   }
}

Вложить не получилось, поэтому скачивайте с яд(а): WinOverlay.rar
 
Последнее редактирование:

Felton

Участник
Сообщения
799
Реакции
59
@Drumanid
А можеш сделать просто чисто надпись без брызг крови?
 

Вложения

  • Без имени-1.png
    Без имени-1.png
    355 КБ · Просмотры: 31
  • Без имени-2.png
    Без имени-2.png
    359.4 КБ · Просмотры: 31

Felton

Участник
Сообщения
799
Реакции
59
@Drumanid
Ну если бы я знал как это делать.
Если не трудно сделай пожалуйста!
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
@Drumanid, после подрыва бомбы информация не выводится.
В OnPluginStart() добавь:
PHP:
HookEvent("bomb_exploded", BombExploded);
HookEvent("bomb_defused", BombDefused);
И куда нибудь в любое место в исходнике:
PHP:
public Action:BombExploded(Handle:event, const String:name[], bool:dontBroadcast)
{
   for (new i = 1; i <= MaxClients; i++)
   {
       if (IsClientInGame(i) && !IsFakeClient(i))
       {
           ClientCommand(i, "r_screenoverlay %s", overlay_t);
       }
   }
  
   CreateTimer(3.0, TimerOverlayOff, _, TIMER_FLAG_NO_MAPCHANGE);
}

public Action:BombDefused(Handle:event, const String:name[], bool:dontBroadcast)
{
   for (new i = 1; i <= MaxClients; i++)
   {
       if (IsClientInGame(i) && !IsFakeClient(i))
       {
           ClientCommand(i, "r_screenoverlay %s", overlay_ct);
       }
   }
  
   CreateTimer(3.0, TimerOverlayOff, _, TIMER_FLAG_NO_MAPCHANGE);
}
@Drumanid
Ну если бы я знал как это делать.
Если не трудно сделай пожалуйста!
Постоянно прося сделать все за тебя, ты ничему не научишься.
WinOverlayv2.rar
 
Последнее редактирование:

Someone

Участник
Сообщения
1,933
Реакции
1,653
@Drumanid
Скинь пожалуйста прогу чтобы компелировать картинки.Скачал какуето она вроде компелирует но в игре не показывает.(называется прога SprayR )Может я нетак чтото делаю.Или скомелирй мне пожалуйста .

Нужен .vtf формат. В добавок .vmt файл, который уже ручками пишешь.

Программа: Nem's Tools [VTFLib - Download - VTFEdit v1.2.5 Full]
Про программу и об ее использовании: Steam Community :: Guide :: Спреи : VTF spray texture guide

Смотри на .vmt от других текстурок, станет понятнее. (Например у Drumanid'a с его оверлеями).
 
Сверху Снизу