punkochel
Дебютант
Делаю систему войн за территорию и у меня возникла проблема что в последней итерации цикла форич итератор выдает максимальный размер итератора, хотя должен выдавать ид территории в которой идет война. Далее приложу код и лог.
Код создания и записи значения в итератор:
Код функции которая вызывается в секундном таймере:
Лог работы функции:
Код создания и записи значения в итератор:
Код:
new Iterator:square_battle_gz<131>;
//В команде в ходе проверки всех ганг зон, записывается ID ганг-зоны в итератор
Iter_Add(square_battle_gz, i);
Код функции которая вызывается в секундном таймере:
Код:
public CheckGZ()
{
foreach(new i:square_battle_gz)
{
printf("форич: %i", i);
if(SquareOnBattleGZ[i] != true) continue;
if(WarTimeGZ[i] > 0) WarTimeGZ[i]--;
foreach(new p:Player)
{
if(PlayerInfo[p][pMember] == GZInfo[i][AttackedGZ] || PlayerInfo[p][pMember] == GZInfo[i][OwnerGZ])
{
if(WarTimeGZ[i] <= 0)
{
SquareOnBattleGZ[i] = false;
if(Iter_Contains(square_battle_gz, i)) Iter_Remove(square_battle_gz, i);
break;
}
}
}
}
return true;
}
Лог работы функции:
Код:
[16:05:17] форич: 51
[16:05:18] форич: 51
[16:05:19] форич: 51
[16:05:21] форич: 51
[16:05:22] форич: 51
[16:05:23] форич: 51
[16:05:24] форич: 51
[16:05:25] форич: 51
[16:05:27] форич: 51
[16:05:28] форич: 51
[16:05:29] форич: 51
[16:05:30] форич: 51
[16:05:30] форич: 132
[16:05:30] [debug] Run time error 4: "Array index out of bounds"
[16:05:30] [debug] Attempted to read/write array element at index 132 in array of size 131
[16:05:30] [debug] AMX backtrace:
[16:05:30] [debug] #0 00047f3c in public CheckGZ () at C:\serv.pwn:1645
[16:05:30] [debug] #1 000469c0 in public SecondUpdate () at C:\serv.pwn:1547
