Вопросы

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 пользователей онлайн

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

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

    • grizly57a
      От grizly57a
      1 захожу на сервер и не мой хост хотя в сервер коннекте я указал все свое
      2 выкидывает через секунду
      3 пишет Loading filterscript 'voice.amx'...
      [15:50:18] No collision data found.

      ----------
      Loaded log file: "server_log.txt".
      ----------
      SA-MP Dedicated Server
      ----------------------
      v0.3.7-R2, (C)2005-2015 SA-MP Team
      [15:50:16] weburl = "www.sa-mp.com"  (string)
      [15:50:16] 
      [15:50:16] Server Plugins
      [15:50:16] --------------
      [15:50:16]  Loading plugin: crashdetect.so
      [15:50:16]   CrashDetect plugin 4.19.4
      [15:50:16]   Loaded.
      [15:50:16]  Loading plugin: pawncmd.so
      [15:50:17] Pawn.CMD plugin v3.2.0 by urShadow has been loaded
      [15:50:17]   Loaded.
      [15:50:17]  Loading plugin: pawnraknet.so
      [15:50:17] [Pawn.RakNet] plugin v1.6.0 loading...
      [15:50:17] [Pawn.RakNet] 
          | Pawn.RakNet 1.6.0 | 2016 - 2023
          |--------------------------------
          | Author and maintainer: katursis

          | Compiled: Feb 12 2023 at 19:35:06
          |--------------------------------------------------------------
          | Repository: https://github.com/katursis/Pawn.RakNet
          |--------------------------------------------------------------
          | Wiki: https://github.com/katursis/Pawn.RakNet/wiki
      [15:50:17]   Loaded.
      [15:50:17]  Loading plugin: sscanf.so
      [15:50:17] 
      [15:50:17]  ===============================
      [15:50:17]       sscanf plugin loaded.     
      [15:50:17]          Version:  2.8.3        
      [15:50:17]   (c) 2018 Alex "Y_Less" Cole  
      [15:50:17]  ===============================
      [15:50:17]   Loaded.
      [15:50:17]  Loading plugin: streamer.so
      [15:50:17] 
      *** Streamer Plugin v2.9.6 by Incognito loaded ***
      [15:50:17]   Loaded.
      [15:50:17]  Loading plugin: mysql_static.so
      [15:50:17]  >> plugin.mysql: R39-6 successfully loaded.
      [15:50:17]   Loaded.
      [15:50:17]  Loading plugin: TOTP.so
      [15:50:17] TOTP plugin v1.0.1 by Games loaded.
      [15:50:17]   Loaded.
      [15:50:17]  Loading plugin: profiler.so
      [15:50:17]   Profiler plugin 2.15.1
      [15:50:17]   Loaded.
      [15:50:17]  Loading plugin: timerfix.so
      [15:50:17]   >> TimerFix v1.5 successfully loaded.
      [15:50:17]   Loaded.
      [15:50:17]  Loading plugin: UTuning.so
      [15:50:17]   Loaded.
      [15:50:17]  Loading plugin: housecar.so
      [15:50:17]   Loaded.
      [15:50:17]  Loading plugin: TOTP.so
      [15:50:17] TOTP plugin v1.0.1 by Games loaded.
      [15:50:17]   Loaded.
      [15:50:17]  Loading plugin: FCNPC.so
      [15:50:17] 
      [15:50:17] -------------------------------------------------
      [15:50:17]      FCNPC - Fully Controllable NPC v2.0.11
      [15:50:17]             GNU/Linux SA-MP 0.3.7 R2
      [15:50:17]            Aug 23 2024 at 16:35:48
      [15:50:17] 
      [15:50:17]   Author:       OrMisicL (2013 - 2015)
      [15:50:17]   Continued by: ziggi    (2016 - present)
      [15:50:17] 
      [15:50:17]   See full credits in the README.md file
      [15:50:17] -------------------------------------------------
      [15:50:17] 
      [15:50:17] Loading...
      [15:50:17] 
      [15:50:17] -------------------------------------------------
      [15:50:17]    ColAndreasv1.4.0
      [15:50:17] 
      [15:50:17]    Created By:
      [15:50:17]      [uL]Chris42O
      [15:50:17]      [uL]Slice
      [15:50:17]      [uL]Pottus
      [15:50:17] -------------------------------------------------
      [15:50:17] 
      [15:50:17] Loading...
      [15:50:17] ColAndreas v1.4.0 Loaded.
      [15:50:17]   Loaded.
      [15:50:17]  Loaded 13 plugins.
      [15:50:17] 
      [15:50:17] Filterscripts
      [15:50:17] ---------------
      [15:50:17]   Loading filterscript 'voice.amx'...
      [15:50:18] No collision data found.
      [15:50:18] 
      --------------------------------------
      [15:50:18]    VOICE COPY RADMIR BY Маттео dev.    
      [15:50:18] --------------------------------------
      [15:50:18]   Loaded 1 filterscripts.
      [15:50:20] ------------------------------------------
      [15:50:20]                  MELONITY AC                 
      [15:50:20] ------------------------------------------
      [15:50:20] weburl = "www.sa-mp.com"  (string)
      [15:50:20] [Vehicle]: Все транспортные средства созданы
      [15:50:20] [TP]: Все входы/выходы созданы
      [15:50:20] [ATM]: Все банкоматы созданы
      [15:50:20] Подключение к базе данных не удалось [Неизвестная ошибка. Код ошибки: -1]
      [15:50:20] -----------------------------------------
      [15:50:20]                                          
      [15:50:20]        CanVas Dev
      [15:50:20]                                          
      [15:50:20] -----------------------------------------
      [15:50:20] Number of vehicle models: 38
      [16:00:35] [connection] 93.159.241.195:1523 requests connection cookie.
      [16:00:36] [connection] incoming connection: 93.159.241.195:1523 id: 0
      [16:00:36] [join] Whoole_Daadadw has joined the server (0:93.159.241.195)
      [16:00:36] [part] Whoole_Daadadw has left the server (0:2)