index out of bounds, mimo dobrego rozmiaru...
szelbi
24.05.2014
#define MAX 32
new perk_gracza[MAX+1][3];
set_task(36.0, "apteczka_info", .flags="b");
public apteczka_info() { for(new i=1;i<33; i++) { if(is_user_connected(i) && perk_gracza[i][1] == 6) client_print(i, print_chat, "[INFO] Aby uzyc apteczki wpisz /apteczka na czacie lub zbinduj sobie klawisz."); } }
Mam taką funkcję jak powyżej i sypie mi takimi logami.
L 05/24/2014 - 06:01:45: [AMXX] Run time error 4: index out of bounds L 05/24/2014 - 06:01:45: [AMXX] [0] codmw3.sma::apteczka_info (line 465)
Nie wiem co jest nie tak, więc piszę tutaj
Qunir
24.05.2014
Wydaje mi się że brakuje jeszcze sprawdzenia czy gracz jest żywy.
if(is_user_connected(i) && perk_gracza[i][1] == 6)
Zmień na:
if(is_user_connected(i) && is_user_alive(i) && perk_gracza[i][1] == 6)
szelbi
24.05.2014
Wydaje mi się że brakuje jeszcze sprawdzenia czy gracz jest żywy.
To jak jest martwy to nagle nie można mu nic wyświetlić na czacie?
Drago36
25.05.2014
Tutaj chyba chodzi o tą linijkę:
for(new i=1;i<33; i++)
Slotów na serwerze jest 32, nie 33 i serwer nie wie komu wysłać?
Nie jestem pewny, pierwsze co mi się rzuciło na oczy.
Zmień na 32 i zobacz.
xenos
25.05.2014
Tutaj chyba chodzi o tą linijkę:
for(new i=1;i<33; i++)Slotów na serwerze jest 32, nie 33 i serwer nie wie komu wysłać?
Nie jestem pewny, pierwsze co mi się rzuciło na oczy.
Zmień na 32 i zobacz.
Źle mówisz
Pętla for- wykonuj dopuki warunek jest prawdziwy czyli do momentu aż I<33 w momencie gdy I będzie miało wartość 33(czyli poza zakresem) nie wykona się.
GwynBleidD
25.05.2014
szelbi
25.05.2014
Teraz nie wywala błędu, ale nie mam pojęcia, co może być źle z tą stałą MAX.Zamień 33 w pętli na MAX+1. Jeśli to pomoże to szukaj przyczyny w swojej stałej MAX