как трябва да стане, за да няма нужда да се рестартира картата и когато стане определения час да изкарва HUD съобщението? В случая в момента HUD-а се появява след като се рестартира картата, въпреки, че часът е настъпил..
Благодаря!
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <crxranks>
#define PLUGIN_VERSION "1.0"
new g_szMessage[256], g_iObject
new bool:g_bHappyHour, g_pStart, g_pEnd, g_pMultiplier, g_iMultiplier
public plugin_init()
{
register_plugin("CRXRanks: Happy Hour", PLUGIN_VERSION, "OciXCrom")
register_cvar("CRXRanksHH", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
register_logevent("OnRoundStart", 2, "0=World triggered", "1=Round_Start")
g_pStart = register_cvar("crxranks_hh_start", "23")
g_pEnd = register_cvar("crxranks_hh_end", "1")
g_pMultiplier = register_cvar("crxranks_hh_multiplier", "2")
g_iObject = CreateHudSyncObj()
}
public plugin_cfg()
{
new iStart = get_cvar_num("crxranks_hh_start")
new iEnd = get_cvar_num("crxranks_hh_end")
OnRoundStart()
if(is_happy_hour(iStart, iEnd))
{
formatex(g_szMessage, charsmax(g_szMessage), "..::Happy Hour:..^n^n..::DOUBLE XP::..^n^n%i:00 h - 0%i:00 h", iStart, iEnd)
set_task(1.0, "ShowMessage", .flags = "b")
}
}
public ShowMessage()
{
set_hudmessage(0, 255, 0, 0.02, 0.20, 1, 0.1, 1.0, 0.1, 0.1, -1)
ShowSyncHudMsg(0, g_iObject, g_szMessage)
}
public OnRoundStart()
{
g_iMultiplier = get_pcvar_num(g_pMultiplier)
g_bHappyHour = is_happy_hour(get_pcvar_num(g_pStart), get_pcvar_num(g_pEnd))
}
public crxranks_user_receive_xp(id, iXP, CRXRanks_XPSources:iSource)
{
if(g_bHappyHour && iSource == CRXRANKS_XPS_REWARD)
return iXP * g_iMultiplier
return CRXRANKS_CONTINUE
}
bool:is_happy_hour(const iStart, const iEnd)
{
static iHour; time(iHour)
return bool:(iStart < iEnd ? (iStart <= iHour < iEnd) : (iStart <= iHour || iHour < iEnd))
}