Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

ночной режим

, не отключается режим по истечении времени
Статус пользователя lol1989
сообщение 14.11.2016, 16:42
Сообщение #1


Стаж: 12 лет
Город: Калуга

Сообщений: 283
Благодарностей: 54
Полезность: < 0

Всем привет! Установил ночной режим с 3-мя картами с 00-00 до 02-00 de_dust2 с 02-00 до 04-00 cs_mansion и потом de_dust_2х2 до 7 утра, в принципе карты меняются когда надо, но режим не отключается и последняя карта работает пока не сделаешь рестарт серва, плагин стоит выше в списке чем мапчусер вот код
Cкрытый текст
#include amxmodx
#if AMXX_VERSION_NUM < 183
#define engine_changelevel(%0) server_cmd("changelevel %s", %0)
#endif

new g_pTimeLimit, g_iOldTime, Float:g_flResetTime;
new bool:g_bNight;

enum _:DATA
{
NAME[32],
FROM,
TO
}
new g_aMaps[128][DATA];
new g_iCountMaps;

public plugin_init()
{
#define VERSION "1.1"
register_plugin("Night MapList", VERSION, "neygomon");
register_cvar("light_maplist", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

register_event("TextMsg", "eGameCommencing", "a", "2=#Game_Commencing", "2=#Game_will_restart_in");
register_event("HLTV", "eRoundStart", "a", "1=0", "2=0");

register_clcmd("say rtv", "RtvHook");
register_clcmd("say_team rtv", "RtvHook");
register_clcmd("say /rtv", "RtvHook");
register_clcmd("say_team rtv", "RtvHook");
register_clcmd("amx_rtv", "RtvHook");

g_pTimeLimit = get_cvar_pointer("mp_timelimit");
}

public plugin_cfg()
{
new fHand = fopen("addons/amxmodx/configs/night_maps.ini", "rt");
if(!fHand) set_fail_state("File ^"addons/amxmodx/configs/night_maps.ini^" not found OR not read!");
new buffer[64], sFrom[6], sTo[6];
new sTemp[4][3];
new iFrom, iTo;
while(!feof(fHand))
{
fgets(fHand, buffer, charsmax(buffer)); trim(buffer);
if(!buffer[0] || buffer[0] == ';') continue;
if(parse(buffer, g_aMaps[g_iCountMaps][NAME], charsmax(g_aMaps[][NAME]), sFrom, charsmax(sFrom), sTo, charsmax(sTo)))
{
replace_all(sFrom, charsmax(sFrom), ":", " ");
replace_all(sTo, charsmax(sTo), ":", " ");
if(parse(sFrom, sTemp[0], charsmax(sTemp[]), sTemp[1], charsmax(sTemp[])) &&
parse(sTo, sTemp[2], charsmax(sTemp[]), sTemp[3], charsmax(sTemp[])))
{
iFrom = str_to_num(sTemp[0]) * 60 * 60 + str_to_num(sTemp[1]) * 60;
iTo = str_to_num(sTemp[2]) * 60 * 60 + str_to_num(sTemp[3]) * 60;

g_aMaps[g_iCountMaps][FROM] = iFrom;
g_aMaps[g_iCountMaps][TO] = (iFrom > iTo) ? (86400 - iFrom) + iFrom + iTo : iTo;

g_iCountMaps++;
}
}
}
if(!g_iCountMaps) set_fail_state("Maps not found OR invalid syntax file! Check ^"addons/amxmodx/configs/night_maps.ini^"");
}

public plugin_end()
if(g_iOldTime)
set_pcvar_num(g_pTimeLimit, g_iOldTime);

public client_putinserver(id)
if(g_bNight)
remove_user_flags(id, ADMIN_MAP|ADMIN_VOTE);

public eGameCommencing()
g_flResetTime = get_gametime();

public eRoundStart()
{
static CurHour, CurMinute; time(CurHour, CurMinute);
new CurTime = CurHour * 60 * 60 + CurMinute * 60;
if(g_aMaps[0][FROM] <= CurTime || CurTime < g_aMaps[g_iCountMaps-1][TO])
{
new IdMap = CheckMaps(CurTime); if(IdMap == -1) return;
static map[32]; if(!map[0]) get_mapname(map, charsmax(map));
if(!equal(map, g_aMaps[IdMap][NAME]))
{
engine_changelevel(g_aMaps[IdMap][NAME]);
return;
}
else if(!g_bNight)
{
g_bNight = true;
RemovePlayersFlags();
g_iOldTime = get_pcvar_num(g_pTimeLimit);
set_pcvar_num(g_pTimeLimit, 0);
}
}
else if(g_bNight)
{
set_pcvar_num(g_pTimeLimit, floatround(get_gametime() - g_flResetTime) / 60 + 5);
g_bNight = false;
}
}

public RtvHook(id)
{
if(g_bNight)
{
ChatColor(id, "^1[^4INFO^1] ^4RTV не работает в ^3Ночном режиме!");
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}

RemovePlayersFlags()
{
static players[32], pcount;
get_players(players, pcount, "ch");
for(new i; i < pcount; i++)
remove_user_flags(players[i], ADMIN_MAP|ADMIN_VOTE);
}

stock CheckMaps(cTime)
{
for(new i; i < g_iCountMaps; i++)
{
if(cTime >= g_aMaps[i][FROM] && cTime < g_aMaps[i][TO])
return i;
}
return -1;
}
/*
stock CheckMaps(cTime)
{
new iTemp;
for(new i; i < g_iCountMaps; i++)
{
if(cTime >= g_aMaps[i][FROM] && cTime < g_aMaps[i][TO])
iTemp = i;
}
return (iTemp > 0) ? iTemp : -1;
}
*/
stock ChatColor(const id, const szMessage[], any:...)
{
static pnum, players[32], szMsg[190], IdMsg;
vformat(szMsg, charsmax(szMsg), szMessage, 3);

if(!IdMsg) IdMsg = get_user_msgid("SayText");

if(id)
{
if(!is_user_connected(id)) return;
players[0] = id;
pnum = 1;
}
else get_players(players, pnum, "ch");

for(new i; i < pnum; i++)
{
message_begin(MSG_ONE, IdMsg, .player = players[i]);
write_byte(players[i]);
write_string(szMsg);
message_end();
}
}

Прошу подсказать, что не так. P.S забыл сказать, что в 04-00 в расписании сервера стоит авто-рестарт ежедневно мб из-за этого?

Отредактировал: lol1989, - 14.11.2016, 16:42
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя energydance
сообщение 14.11.2016, 17:01
Сообщение #2


Стаж: 10 лет

Сообщений: 2809
Благодарностей: 740
Полезность: 213

lol1989, в amxx.cfg прописан квар?
mp_timelimit 30 //Время карты после ночного режима


Press enter to exit ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя lol1989
сообщение 14.11.2016, 17:04
Сообщение #3


Стаж: 12 лет
Город: Калуга

Сообщений: 283
Благодарностей: 54
Полезность: < 0

Цитата(energydance @ 14.11.2016, 18:01) *
lol1989, в amxx.cfg прописан квар?
mp_timelimit 30 //Время карты после ночного режима

да
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя energydance
сообщение 14.11.2016, 19:13
Сообщение #4


Стаж: 10 лет

Сообщений: 2809
Благодарностей: 740
Полезность: 213

lol1989, ну как вариант сделать авто-рестарт серва в 7 утра


Press enter to exit ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: