Вопросы

Frosik1
Новичок

Делаю систему войн за территорию и у меня возникла проблема что в последней итерации цикла форич итератор выдает максимальный размер итератора, хотя должен выдавать ид территории в которой идет война. Далее приложу код и лог.

 

Код создания и записи значения в итератор:

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

 

Отредактировано пользователем Frosik1

Поделиться сообщением


Ссылка на сообщение

2 ответа на этот вопрос

  • 0
Cawfee
Великий Гуру

@Frosik1, насколько я помню, нельзя удалять элементы из массива, созданного с помощью foreach, во время перебора самим foreach. Я говорю о наличии внутри foreach функции Iter_Remove. Вам следует присмотреться к логике работы кода (изменить ее).

Поделиться сообщением


Ссылка на сообщение
  • 0
Frosik1
Новичок

@odosenok

Да, убрал удаление значения итератора из цикла и ошибка пропала. А вот что касается пересмотреть код, это вы имеете ввиду вообще переделать его? Есть более простые решения выполнения подобной функции? Спасибо за помощь, + дал.

 

 

Отредактировано пользователем Frosik1

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Kasper0
      От Kasper0


      Скачать файл Criminal Russia RolePlay (CRMPRP)
      Всех приветствую, в наличии мод CRMPRP. Разрабатывался с 2013 года если не ошибаюсь от бывшего Владельца (полностью оригинал + так-же имеется БД с сайтом и системой логов). Мод без бонуса, куча работ для новичков например: (Лесопилка,ферма,рыбалка,водитель автобуса,автомеханик,дольнабойщики,завод,таксист и др.) имеется система квестов, система домов (5 классов + возможность заменять интерьеры и система чердака), система гаражей (3 класса), обширная система семей, обширная система *ОПГ. Мод спокойно может выдержать 500+ онлайна
      Добавил Kasper0 Добавлено 05.07.2025 Категория Моды Автор Tim  
    • OREGON-RPG
      От OREGON-RPG
      **Привет, будущий друг!**
      Мы создаем новый сервер в >> GTA SA-MP (OregoN Role Playing Game) << и ищем таких же увлеченных игроков, как ты!!!

      Здесь ты сможешь: 

      Влиять на развитие сервера – твое мнение важно! 

      Найти друзей и классную компанию.
       
      Стать частью уютного комьюнити, где все друг за друга.

      Сервер еще в разработке – это шанс войти в историю с самого начала! 

       >>> Давай строить этот мир вместе? <<<

       Переходи по ссылке, будь в центре событий и стань частью истории: 

      [ Группа ВКонтакте: vk.com/oregonrpgru ]

      [ Форум: oregon-rpg.ru ]
    • Kasper0
      От Kasper0
      Всех приветствую, в наличии мод CRMPRP. Разрабатывался с 2013 года если не ошибаюсь от бывшего Владельца (полностью оригинал + так-же имеется БД с сайтом и системой логов). Мод без бонуса, куча работ для новичков например: (Лесопилка,ферма,рыбалка,водитель автобуса,автомеханик,дольнабойщики,завод,таксист и др.) имеется система квестов, система домов (5 классов + возможность заменять интерьеры и система чердака), система гаражей (3 класса), обширная система семей, обширная система *ОПГ. Мод спокойно может выдержать 500+ онлайна
    • Kasper0
      От Kasper0


      Скачать файл ГУЧИ CRMP | НОВАЯ ВЕРСИЯ МОДА
      Всех приветствую, мод всеми известного проекта на новой карте

      В продажу входит сам мод+карта+лаунчер и парочка скриптов, так-же в моде имеется новая система СГУ для спец. транспорта + исправлено большинство багов.
      Добавил Kasper0 Добавлено 03.07.2025 Категория Моды Автор gcrmp  
    • Binggus
      От Binggus
      Пишет: "non.p(0) : fatal error 100: cannot read from file: "non.p"

      Compilation aborted.

      Pawn compiler 3.2.3664        Copyright (c) 1997-2017, ITB CompuPhase


      1 Error."
       
      Сборка:
      https://cloud.mail.ru/public/eGyt/6hFRdRK1m