Всем привет. Хочу упорядочить запуск cw-mix в автоматическом режиме и поэтому решил поискать код который будет при наличии состава 5х5 выполнять серверную команду. Нашел код
Код
public OnMapStart() CreateTimer(60.0, Timer_Func, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
public Action:Timer_Func(Handle:timer) { new client = 0; for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i) && !IsFakeClient(i)) client = i; } if (client == 0) ServerCommand("Changelevel de_cbble"); }
Но он работает только когда на сервере 0 игроков. Как можно перекодить, на формат 5х5???
new T,CT; for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i)) { switch (GetClientTeam(i)) { case 2: T++; case 3: CT++; } } } PrintToChatAll("Т => %d | CT=> %d", T, CT); if (T ==5 && CT == 5) ServerCommand("Changelevel de_cbble");
Сообщение отредактировал Scarface_slv - Понедельник, 06.05.2013, 11:27:17
Scarface_slv, О спасибо большое, но не мог бы ты в исходнике залить. Просто у меня на планшете все плюсики и ковычки заменяет смайлами и код не читаем становится. Пожалуйста.
Спасибо все норм работает. Щас я прикручу туда пару условий и буду тестировать
Добавлено (06.05.2013, 12:33:04) --------------------------------------------- Scarface_slv, Все работает - но плагин все время задает команду начала микса. То есть если я правильно понимаю таймер который задает проверку игроков не выключается после запуска серверной команды.(((( Как реализовать можно?
Добавлено (06.05.2013, 12:37:22) --------------------------------------------- Может выгружать плагин атотаймера? А подгружать его уже после окончания микса????
DoK_1997, Нет это не подходит, так ка ку не меня не вармод. Запуск матча идет командой sm_start. Можно ли как в самом коже сделать проверку на запуск матча и остановку таймера ???
Я только учусь кодить и сделал вот так. Правельно?
Код
new Handle:g_ForceStartMix = INVALID_HANDLE;
public OnMapStart() CreateTimer(60.0, ForceStartMix, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
public Action:ForceStartMix(Handle:timer) { new T,CT; for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i)) { switch (GetClientTeam(i)) { case 2: T++; case 3: CT++; } } } PrintToChatAll("\x04%[AutoMix] \x01За команду теров => %d | За команду контров => %d", T, CT); if (T ==5 && CT == 5) ServerCommand("sm_start"); if ( g_ForceStartMix != INVALID_HANDLE ) { KillTimer( g_ForceStartMix ); g_ForceStartMix = INVALID_HANDLE; } return Plugin_Stop }
Вопрос - как выполнить настройку cvar количества игроков от 6 на 6 до 1 на 1 (для разного рода условий, но вписываться будет в server.cfg)
Scarface_slv, Ничего не понял! new bool:MixOn должен же как то ровнятся запуску плагина или что? Как плагин отследить что другой плагин запущен??? Этот пример меня просто выбил из седла! В моем коде вроде все работает норм. Плагин проверяет еслть ли 5 на 5 игроков и запускает команду запуска другого плагина. А тут как реализовано это ????
Тут сделано так, в начале раунда считает количество игроков и если их 5 на 5 запускает sm_start и больше проверка не запускается, ты уверен что твой вариант работает? Если ты создал Handle:g_ForceStartMix надо присвоить его g_ForceStartMix = CreateTimer... И по моему твой таймер через минуту проверит количество игроков и остановиться из за return Plugin_Stop То есть если он проверил количество игроков через 60 сек и игроков меньше 5 то повторной проверки уже не будет...