SHAREN
Servers-Info.Ru
- Сообщения
- 232
- Реакции
- 32
Написал такой плагин (в исходнике вырезал лишнее) который каждый раунд через 80 секунд делает предупреждение в HintText и отсчитывает ежесекундно.
Но в логах всегда появляется такая ошибка. Прошу помочь решить эту проблему, а т.ж. напишите если есть замечание по коду, может есть что лишнее.
Plugin "jail_announcer.smx" encountered error 23: Native detected error
Invalid timer handle 7d741a13 (error 3) during timer end, displayed function is timer callback, not the stack trace
Unable to call function "LeaveTimeRepeat" due to above error(s).
Но в логах всегда появляется такая ошибка. Прошу помочь решить эту проблему, а т.ж. напишите если есть замечание по коду, может есть что лишнее.
Plugin "jail_announcer.smx" encountered error 23: Native detected error
Invalid timer handle 7d741a13 (error 3) during timer end, displayed function is timer callback, not the stack trace
Unable to call function "LeaveTimeRepeat" due to above error(s).
PHP:
int g_iSeconds = -1;
Handle hTimerLeave = null;
Handle hTimerLeaveRepeat = null; // ежесекундно
public void OnPluginStart() {
HookEvent("round_start", eV_round_start);
}
public Action eV_round_start(Handle event, const char[] name, bool DB)
{
if(hTimerLeave != null) delete hTimerLeave;
hTimerLeave = CreateTimer(80.0, LeaveTimeStart, TIMER_DATA_HNDL_CLOSE|TIMER_FLAG_NO_MAPCHANGE);
}
public Action LeaveCheckJRepeat(Handle timer)
{
if(false) {
return Plugin_Handled;
}
for (int i=1; i<MAXPLAYERS; i++)
if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 2 )
return Plugin_Handled;
return Plugin_Continue;
}
public Action LeaveTimeStart(Handle timer)
{
hTimerLeave = null;
if (false) {
hTimerLeaveRepeat = CreateTimer(1.0, LeaveTimeRepeat, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
g_iSeconds = 10;
}
}
public Action LeaveTimeRepeat(Handle timer)
{
if(!g_iSeconds) {
KillTimer(hTimerLeaveRepeat);
delete hTimerLeaveRepeat;
g_iSeconds = -1;
return Plugin_Handled;
} else if (g_iSeconds > 0) {
g_iSeconds--;
for(int i=1; i<MAXPLAYERS; i++)
if(IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 3)
PrintHintText(i, "ТЕКСТ (%i сек)", g_iSeconds);
}
return Plugin_Continue;
}