Смена игрового режима по событию

Mr.Black

Участник
Сообщения
145
Реакции
61
Доброго времени суток!
Пытаюсь сделать два игровых режима на сервере, casual для de_ cs_ карт и survival для dz_ карт (запретная зона).

Столкнулся со следующей проблемой: мне нужно перед сменой карты выполнить в консоль"game_type 6" или "game_type 0", в зависимости от того какая следующая карта dz_ или нет.
Написал вот это чудо:
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sourcemod>

/*Варианты которые я уже попробовал:
1) OnMapEnd - режим меняется, но не подтягивается конфиг, если перезапустить карту с таким же режимом еще раз, то все становится ок.
2) cs_match_end_restart - не работает
3) cs_win_panel_match - не работает
*/

bool g_bNextMapDz;
char g_sNextMap[256];

public void OnPluginStart()
{
    HookConVarChange(FindConVar("sm_nextmap"), ConVarChanged);
    HookEvent("cs_match_end_restart", Event_OnMatchRestart, EventHookMode_Pre);
}

public void ConVarChanged(Handle cvar, const char[] oldValue, const char[] newValue)
{
    GetNextMap(g_sNextMap, sizeof(g_sNextMap));
    if(strncmp(g_sNextMap, "dz_", 3) == 0)
    {
        g_bNextMapDz = true;
    }
    else
    {
        g_bNextMapDz = false;
    }
}

public Action Event_OnMatchRestart(Handle event, char[] name, bool dontBroadcast)
{
  
    if(g_bNextMapDz == true)
    {
        ServerCommand("game_type 6");
    }
    else if(g_bNextMapDz == false)
    {
        ServerCommand("game_type 0");
    }
}
Варианты, которые я уже попробовал:
1) OnMapEnd - режим меняется, но не подтягивается конфиг режима gamemode_survival_server.cfg, если перезапустить карту с таким же режимом еще раз, то все становится ок.
2) cs_match_end_restart - не работает
3) cs_win_panel_match - не работает
4) OnMapStart - совсем ничего не работает
5) Если выполнить game_type 6 в консоль сразу после смены nextmap, то он стягивает конфиг и ломает текущую игру :(


Интересуют две вещи:
1) Почему сервер не применяет конфиг после OnMapEnd?
2) Есть ли еще варианты кроме принудительного второго рестарта карты OnMapStart? может что-то в коде я не так делаю(
 
Последнее редактирование:
Сверху Снизу