#include <amxmodx>
#include <hamsandwich>
/* ======= начало настройки =========*/
//#defined MAP_MANAGER //Раскомментировать, если установлен плагин map_manager от Mistrik
new const g_szStartTime[] = "15:00"; // Начало выдачи флагов
new const g_szEndTime[] = "23:55"; // Окончание выдачи флагов
new const g_szAddFlags[] = "inuo"; //Флаги для выдачи
new g_szMessage[MAX_FMT_LENGTH/2] = //Сообщение, которое будет показано игроку при первом входе в игру
"Вам выданы ночные вип привилегии с <start> до <end>";
new iHudColor[] = //цвет сообшения
{
0, //красный
255, //зеленый
0 //синий
}
new Float:flHudCoord[] = //координаты сообшения
{
-1.0, //x
0.35 //y
}
new Float:flHudTime = 5.0; //время показа сообшения, сек
/* ======= конец настройки =========*/
new g_szOldAccessFlags[MAX_NAME_LENGTH];
new bool:g_bIsNigthMode, bool:g_bApi;
new g_iStartTime, g_iEndTime;
new bool:g_bPlayerNotified[MAX_PLAYERS + 1];
new HamHook:g_iHookSpawn;
public plugin_init()
{
register_plugin("CMS Time for Flags", "1.0.0", "zhorzh78");
}
public OnAPIPluginLoaded(Handle:sqlTuple, version[], serverID)
{
g_bApi = true;
#if defined MAP_MANAGER
if(!g_iStartTime)
set_task(10.0, "OnConfigsExecuted");
#endif
}
public OnConfigsExecuted()
{
g_iStartTime = parse_time(g_szStartTime, "%H:%M");
g_iEndTime = parse_time(g_szEndTime, "%H:%M");
if(g_iStartTime > g_iEndTime)
g_iEndTime += 86400;
get_cvar_string("amx_default_access", g_szOldAccessFlags, charsmax(g_szOldAccessFlags));
FnCheckTime();
}
public FnCheckTime()
{
if(!g_bApi)
return;
new iCurrentTime = get_systime();
if(g_iStartTime <= iCurrentTime)
{
if(iCurrentTime < g_iEndTime)
{
if(!g_bIsNigthMode)
{
g_bIsNigthMode = true;
set_task(float(g_iEndTime - iCurrentTime), "FnCheckTime");
set_cvar_string("amx_default_access", g_szAddFlags);
g_iHookSpawn = RegisterHam(Ham_Spawn, "player", "FwdHamPlayerSpawn_Post", 1);
replace_all(g_szMessage, charsmax(g_szMessage), "<start>", g_szStartTime);
replace_all(g_szMessage, charsmax(g_szMessage), "<end>", g_szEndTime);
}
return;
}
}
else
{
set_task(float(g_iStartTime - iCurrentTime), "FnCheckTime");
return;
}
if(g_bIsNigthMode)
{
if(strcmp(g_szAddFlags, g_szOldAccessFlags))
{
if(g_iHookSpawn)
DisableHamForward(g_iHookSpawn);
set_cvar_string("amx_default_access", g_szOldAccessFlags);
}
}
}
public FwdHamPlayerSpawn_Post(id)
{
if(g_bPlayerNotified[id])
return;
if(!is_user_alive(id))
return;
g_bPlayerNotified[id] = true;
set_hudmessage(iHudColor[0], iHudColor[1], iHudColor[1], flHudCoord[0], flHudCoord[0], 0, 0.0, flHudTime);
show_hudmessage(id, "%s", g_szMessage);
}
public client_connect(id)
g_bPlayerNotified[id] = false;