PDA

Просмотр полной версии : [Вопрос] CrachDetect



Dima_Tushin
15.11.2014, 13:21
Привет всем у меня вопрос про таймеры и Краш Декеторе

в Log сервера раз в минуту флудить вот это


[20:27:56] [debug] Run time error 4: "Array index out of bounds"
[20:27:56] [debug] Accessing element at index 1 past array upper bound 0
[20:27:56] [debug] AMX backtrace:
[20:27:56] [debug] #0 00043238 in public Fresh () from new.amx
[20:27:56] [debug] #1 00043ebc in public UpdateTime () from new.amx

Подскажите что сделать чтобы этого не было!



public Fresh()
{
new hour, minute, second, tmphour, tmpminute, tmpsecond;
gettime(hour, minute, second);
gettime(tmphour, tmpminute, tmpsecond);
FixHour(tmphour);
tmphour = shifthour;
if ((tmphour > ghour) || (tmphour == 0 && ghour == 23))
{
format(Stringers, sizeof(Stringers), " Сейчас времени %d:00 часов ",tmphour);
SendClientMessageToAll(COLOR_WHITE, Stringers);
ghour = tmphour;
PayDay();
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(realtime) SetWorldTime(tmphour);
}
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(PlayerInfo[i][pMuted] == 1 && PlayerInfo[i][pMuteTime] > 0)
{
PlayerInfo[i][pMuteTime]--;
if(PlayerInfo[i][pMuteTime] == 0)
{
PlayerInfo[i][pMuteTime] = 0;
PlayerInfo[i][pMuted] = 0;
SendClientMessage(i, COLOR_GREEN, "Вам включили чат, пожалуйста больше не нарушайте правила!");
}
}
//Наркозависимость
if(startnarko[i] == true)
{
if(PlayerInfo[i][pNarkoZ] > 1000)
{
if(send[i] == false)
{
SendClientMessage(i, COLOR_LIGHTRED, " У Вас началась ломка ");
SendClientMessage(i, COLOR_WHITE, "Принять дозу: /usedrugs | Вызвать скорую: /c ");
send[i] = true;
}
ApplyAnimation(i, "CRACK", "crckdeth1", 4.0, 1, 0, 0, 0, 0);
send[i] = true;
}
return 1;
}
//Капт
if(MZInfo[i][mTime] > 0)
{
MZInfo[i][mTime] --;
for(new b = 0; b < TotalSBizz; b++)
{
if(MZInfo[i][mTime] == 300)//Если до захвата осталось 300 сек = 5 минут то ...
{
SendFamilyMessage(SBizzInfo[b][sbMafia], COLOR_BLUE, "[Внимание]: До захвата осталось 5 минут!");
SendFamilyMessage(MZInfo[0][mNapad], COLOR_BLUE, "[Внимание]: До захвата осталось 5 минут!");
return true;
}
if(MZInfo[i][mTime] == 120)//Если до захвата осталось 120 сек = 2 минут то ...
{
SendFamilyMessage(MZInfo[b][mFrack], COLOR_BLUE, "[Внимание]: До захвата осталось 2 минут!");
SendFamilyMessage(MZInfo[b][mNapad], COLOR_BLUE, "[Внимание]: До захвата осталось 2 минут!");
return true;
}
if(MZInfo[i][mTime] == 0)//Если Время вышло то...
{
//Если у Защиты Skills больше чем у нападающих! то...
if(SkillsMafia1[MZInfo[0][mFrack]] < SkillsMafia[MZInfo[0][mNapad]])
{
SBizzInfo[b][sbMafia] = MZInfo[b][mFrack];
SendFamilyMessage(SBizzInfo[b][sbMafia], COLOR_BLUE, "[Внимание]: В смогли отстоять свой бизнес!");
SendFamilyMessage(MZInfo[b][mNapad], COLOR_BLUE, "[Внимание]: В не смогли захватить новый бизнес!");
SaveSBizz(b);//Сохранили бизнес!
}
else//Если все на оборот то...
{
SBizzInfo[b][sbMafia] = MZInfo[b][mNapad];
SendFamilyMessage(SBizzInfo[b][sbMafia], COLOR_BLUE, "[Внимание]: В не смогли отстоять свой бизнес!");
SendFamilyMessage(MZInfo[b][mNapad], COLOR_BLUE, "[Внимание]: Вам удалось захватить новый бизнес!");
SaveSBizz(b);//Сохранили бизнес!
}
//Если Skills равны то...
if(SkillsMafia1[MZInfo[b][mFrack]] == SkillsMafia[MZInfo[b][mNapad]])
{
MZInfo[i][mTime] = 120;
SendFamilyMessage(SBizzInfo[b][sbMafia], COLOR_BLUE, "[Внимание]: В войне ничья. Война продлинна на 2 минуты!");
SendFamilyMessage(MZInfo[b][mNapad], COLOR_BLUE, "[Внимание]: В войне ничья. Война продлинна на 2 минуты!");
return true;
}
GangZoneStopFlashForAll(CaptZone);
GangZoneHideForAll(CaptZone);
GangZoneShowForAll(CaptZone, COLOR_REDD);
MZInfo[i][mTime] = 0;
TextDrawHideForPlayer(i, CapturesMafia[0]);
TextDrawHideForPlayer(i, CapturesMafia[1]);
TextDrawHideForPlayer(i, CapturesMafia[2]);
}
}
return true;
}
//Тайзер
if(TazerCount[i] == 1)
{
if(TazerTime[i] > 0)
{
TazerTime[i]--;
if(TazerTime[i] == 0)
{
TazerTime[i] = 0;//Установили время на 0 т.к вышло оно
TogglePlayerControllable(i, 1);//Разморозили игрока
TazerCount[i] = 0;//Проверка отключена
}
}
return 1;
}
}
return 1;
}



forward UpdateTime();
public UpdateTime()
{
for(new A, B = GetMaxPlayers(); A != B; A++)
{
new i = gettime();
if(GetPVarInt(A, "Fresh") <= i && GetPVarInt(A, "Fresh") != 0)
{
SetPVarInt(A, "Fresh", i+1);
Fresh();
}
if(GetPVarInt(A, "SatietyCheck") <= i && GetPVarInt(A, "SatietyCheck") != 0)
{
SetPVarInt(A, "SatietyCheck", i+300);
SatietyCheck();
}
}
return 1;
}

Dima_Tushin
15.11.2014, 17:43
Помогите все кто сможет!

[ForD]
15.11.2014, 18:02
Банально перевести лень?

DeimoS
15.11.2014, 18:58
Тема закрыта. Автору выдано предупреждение за нарушение ОПФ п.4.2 + раздел не тот + название хромает.