Mr.Black
Участник
- Сообщения
- 145
- Реакции
- 61
Доброго времени суток!
Пытаюсь сделать два игровых режима на сервере, casual для de_ cs_ карт и survival для dz_ карт (запретная зона).
Столкнулся со следующей проблемой: мне нужно перед сменой карты выполнить в консоль"game_type 6" или "game_type 0", в зависимости от того какая следующая карта dz_ или нет.
Написал вот это чудо:
Варианты, которые я уже попробовал:
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? может что-то в коде я не так делаю(
Пытаюсь сделать два игровых режима на сервере, 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? может что-то в коде я не так делаю(
Последнее редактирование: