←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] index out of bounds - nagle w...

Locked

  • +
  • -
olek's Photo olek 06.12.2014

witam, od dzisiaj takie errory wyskoczylo (plugin chodził pare dni juz bez edytowania go i bylo wszystko ok)

 

L 12/06/2014 - 17:47:26: [AMXX] Run time error 4: index out of bounds
L 12/06/2014 - 17:47:26: [AMXX]    [0] deve.sma::PlayerPreThink (line 127)

 

 

nad plugin init mam:

 

#define MAXPLAYERS 18

new g_PlayerFrames[MAXPLAYERS]

i potem linia 127:

 

public PlayerPreThink(id)

   {
    g_PlayerFrames[id]++
   }
 

 

 

//edit

 

moglo to byc spowodowane wejsciem wiekszej ilosci osob niz 18 na serwer .. ? bo przez chwile taka sytuacja miala miejsce, ale nie wiem czy wlasnie od tego momentu te bledy zaczely sie sypac


Edited by olek, 06.12.2014 17:49.
Quote

  • +
  • -
he1st's Photo he1st 06.12.2014

Jakieś SMA ?

Quote

  • +
  • -
grankee's Photo grankee 06.12.2014


moglo to byc spowodowane wejsciem wiekszej ilosci osob niz 18 na serwer .. ? bo przez chwile taka sytuacja miala miejsce, ale nie wiem czy wlasnie od tego momentu te bledy zaczely sie sypac

 

Dokładnie to więcej niż 17. Ostatnim elementem tablicy o rozmiarze 18 jest element numer 17. Zdefiniowano MAX_PLAYERS jako 18 i takiego rozmiaru tablica została utworzona. Graczy jest więcej więc plugin próbuje odwołać się do nieistniejącego elementu tablicy. Wyjścia są dwa:

#define MAXPLAYERS 18

zamień na

#define MAXPLAYERS 25

gdzie liczba 25 jest odpowiednia dla serwera 24 slotowego, czyli musisz podać tutaj liczbę slotów +1

 

 

drugie wyjście to:

#define MAXPLAYERS 18
new g_PlayerFrames[MAXPLAYERS]

zamień na

new g_PlayerFrames[get_maxplayers()+1]

wtedy serwer dostosuje wartość zmiennej do ilości slotów na serwerze.

Quote

  • +
  • -
ogieR8's Photo ogieR8 06.12.2014

#define MAXPLAYERS 18
new g_PlayerFrames[MAXPLAYERS]
new g_PlayerFrames[get_maxplayers()+1]

wtedy serwer dostosuje wartość zmiennej do ilości slotów na serwerze.

 

Pytanie mam, pewnie znasz silnik diablo 5.9, standardowy.. jest tam mnóstwo zmiennych + moja edycja.. duża ilość, naprawdę, wszystkie rejestrujemy globalnie z indexem [33] standardowo.. jeśli użyć tego sposobu.. w dużym stopniu odciąży to serwer i nie będzie miało negatywnego wpływu na jego prace / silnika ? Chodzi mi o jakieś skutki uboczne w postaci bugów. Ogólnie zmiana standardowego [33] na konkretną ilość slotów serwera. Nigdy tak szczerze nie robiłem to pytam.

 

Załóżmy 300 zmiennych z zarejestrowaniem indexów na [33], gdy serwer mój ma o połowe mniej slotów ? Nie wiem czy zmienne w dużym stopniu obciążają serwer.. 

Quote

  • +
  • -
GwynBleidD's Photo GwynBleidD 06.12.2014

300 zmiennych zarejestrowanych na rozmiar 19 zamiast 33 to ledwo ok 16kB oszczędności pamięci ram. Sam sobie odpowiedz czy się opłaca.

 

Poza tym: new g_PlayerFrames[get_maxplayers()+1] nie zadziała :) rozmiar tablicy musi być stałą.

Quote

  • +
  • -
olek's Photo olek 06.12.2014

Ustawiłem na 20 bo więcej serwer slotów nie ma, dzięki :) błędów już nie ma

Quote

  • +
  • -
sebul's Photo sebul 06.12.2014

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked