[CS:GO] Отловить конец раунда.

smoke96

Участник
Сообщения
1,134
Реакции
175
Как отловить конец раунда если раунд реально закончился запретить игроку пользоваться определенной командой?
Допустим у меня стоит некий плагин на сервере который позволяет писать команду в чат до конца раунда , но так же и после его конца. Ну в то время когда играет музыка в конце раунда. Нужно запретить писать команду в чат когда одна из команд выиграла. Помогите :(
 

CAH4E3

Сосанчез.
Сообщения
1,597
Реакции
779
Пример простого плагина :
#include <sourcemod>

new Handle:gravity;

public OnPluginStart()
{
HookEvent("round_start", OnStart);
HookEvent("round_end", OnEnd);
gravity = FindConVar("sv_gravity");
}

public OnStart(Handle:event, String:name[], bool:dontBroadcast)
{
SetConVarInt(gravity, 780);
}

public OnEnd(Handle:event, String:name[], bool:dontBroadcast)
{
SetConVarInt(gravity, 200);
}
Как-то так.
В конце раунда всем игрокам выставляется гравитация в 200.
 

smoke96

Участник
Сообщения
1,134
Реакции
175
Пример простого плагина :
#include <sourcemod>

new Handle:gravity;

public OnPluginStart()
{
HookEvent("round_start", OnStart);
HookEvent("round_end", OnEnd);
gravity = FindConVar("sv_gravity");
}

public OnStart(Handle:event, String:name[], bool:dontBroadcast)
{
SetConVarInt(gravity, 780);
}

public OnEnd(Handle:event, String:name[], bool:dontBroadcast)
{
SetConVarInt(gravity, 200);
}
Как-то так.
В конце раунда всем игрокам выставляется гравитация в 200.
Не то.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #4
PHP:
#include <sourcemod>
#pragma newdecls required

#define BLOCKED_CMD "sm_admin"

public void OnPluginStart()
{
    HookEvent("round_start", OnStart, EventHookMode_PostNoCopy);
    HookEvent("round_end", OnEnd, EventHookMode_PostNoCopy);
}

public void OnStart(Event event, const char[] name, bool dontBroadcast) {
    UnsetCommandOverride(BLOCKED_CMD, Override_Command);
}

public void OnEnd(Event event, const char[] name, bool dontBroadcast) {
    AddCommandOverride(BLOCKED_CMD, Override_Command, ADMFLAG_ROOT);
}
 

smoke96

Участник
Сообщения
1,134
Реакции
175
Окей. Задам вопрос по другому , ловим конец раунда , проверяем кончился ли раунд , ну выиграла ли одна из команд или нет и делаем проверку на подоби If RoundEnd {Plugin_stop}
 

CAH4E3

Сосанчез.
Сообщения
1,597
Реакции
779
Окей. Задам вопрос по другому , ловим конец раунда , проверяем кончился ли раунд , ну выиграла ли одна из команд или нет и делаем проверку на подоби If RoundEnd {Plugin_stop}
Ты спросил как отловить конец раунда, ч привел пример плагина простого.
 

DarklSide

Участник
Сообщения
931
Реакции
468
@B1g,
PHP:
#pragma semicolon 1
#pragma newdecls required
#include <cstrike>

//#define CMDTYPE

#if defined CMDTYPE
#define BLOCKED_CMD "sm_admin"
#else
bool b_NoAllowChat[MAXPLAYERS + 1];
#endif

public void OnPluginStart()
{
    HookEvent("round_start", Event_Roundstart, EventHookMode_PostNoCopy);
}

public void Event_Roundstart(Event event, const char[] name, bool dontBroadcast)
{
    #if defined CMDTYPE
    UnsetCommandOverride(BLOCKED_CMD, Override_Command);
    #else
    for (int i = 1; i <= MaxClients; ++i)
    {
        b_NoAllowChat[i] = false;
    }
    #endif
}

public Action CS_OnTerminateRound(float &delay, CSRoundEndReason &reason)
{
    switch (reason)
    {
        case CSRoundEnd_GameStart, CSRoundEnd_Draw:return Plugin_Continue;
        default:
        {
            #if defined CMDTYPE
            AddCommandOverride(BLOCKED_CMD, Override_Command, ADMFLAG_ROOT);
            #else
            for (int i = 1; i <= MaxClients; ++i)
            {
                b_NoAllowChat[i] = true;
            }
            #endif
        }
    }
    return Plugin_Continue;
}

//#define CMDTYPE
Откомментируй если команда зарегистрирована, и подправь #define BLOCKED_CMD "sm_admin"

иначе - если эта команда "в чат", ловится через Hook чата или не позволять писать команду даже ADMFLAG_ROOT, то оставь //#define CMDTYPE и используй булевые, добавив проверку:
PHP:
if (!b_NoAllowChat[client])
{
    //выполнение команды
}
else
{
    PrintToChat(client, "Ждите новый раунд");
}
 
Последнее редактирование:
Сверху Снизу