Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2021-07-04, 10:05


TenTypMess







Wiek: 29
Na forum: 2382 dni
Posty: 16

Piwa: 53

Respekt: 50

Kod:

[debug] Run time error 4: "Array index out of bounds"
[debug] Attempted to read/write array element at index 20 in array of size 20
[debug] AMX backtrace:
[debug] #0 003c0a00 in public OnPlayerKeyStateChange (playerid=0, newkeys=65536, oldkeys=0) at E:\SA-MP\PSS\gamemodes\pst.pwn:28779


pst.pwn:28779 = PlayerTextDrawHide(i, RapcioTD[i][d]);

Kod:

if(PRESSED(KEY_YES))
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, RapcioXYZ[0], RapcioXYZ[1], RapcioXYZ[2]) && RapcioOnOff)
{
Loop(i, 22)//22 - ilo?? obiekt?w
{
DestroyObject(RapcioOBJ[i]);
}
DestroyVehicle(RapcioID);
Delete3DTextLabel(Rapcio3DText);
RapcioOnOff = false;

new EXPDOG;
EXPDOG = randomEx(60, 100);
GiveExpPlayer(playerid, EXPDOG);
Player[playerid][Rapcio] ++;
SendClientMessageToAllEx(-1, ""INFO" "POMARANCZOWY_JASNY"[RAPCIO] "TEXT"%s znalaz?/a misia "POMARANCZOWY_JASNY"Rapcio "ZIELONY_JASNY"+%d EXP"TEXT"!", PlayerName2(playerid), EXPDOG);
SendClientMessageToAllEx(-1, ""INFO" "TEXT"To jej/jego "ZIELONY_JASNY"%d "POMARANCZOWY_JASNY"mi?"TEXT"!", Player[playerid][Rapcio]);
QuestSpr(playerid, QUEST_MIS);
Loop(i, GetMaxPlayers())
{
Loop(d, MAX_RAPCIO_TD)
{
PlayerTextDrawHide(i, RapcioTD[i][d]);
}
}
}


Wie kto? o co mo?e tu chodzi??

Postaw piwo autorowi tego posta
 

 
Wysłany: 2021-07-04, 13:08


AxL







Wiek: 35
Na forum: 6558 dni
Posty: 10

Piwa: 25

Respekt: 50

Kod:

[debug] Run time error 4: "Array index out of bounds"
[debug] Attempted to read/write array element at index 20 in array of size 20

Przekroczy?e? rozmiar tablicy.
Twoja tablica ma rozmiar 20 ("of size 20"), jednak maj?c na uwadze to, ?e w tym j?zyku tablice s? indeksowane od 0, maksymalny indeks do jakiego mo?esz si? odnie?? to 19, a Ty odnosisz si? do indeksu 20 ("Attempted to read/write array element at index 20"). Sprawd? deklaracje tablicy RapcioTD. Pierwszy, albo drugi wymiar pewnie ma warto?? 20.
?eby to naprawi? najpewniej musisz dostosowa? rozmiar tablicy do warunk?w w jakich z niej korzystasz.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
TenTypMess
Wysłany: 2021-07-04, 16:18


TenTypMess







Wiek: 29
Na forum: 2382 dni
Posty: 16

Piwa: 53

Respekt: 50

Kod:

PlayerText:RapcioTD[MAX_PLAYERS][MAX_RAPCIO_TD];


i tak 20stka bierze si? st?d: #define MAX_PLAYERS 20

Zmienia?em maxa do skutku a? debug ust?pi i doszed?em do liczby 50.

Domy?lam si? zmieniaj?c MAX PLAYERS to mija si? troch? z celem, pytanie od czego zale?ne jest to ?e akurat index tej tablicy musi wynosi? 50-i?t?

Sorki za by? mo?e tak proste pytania ale co? dawno ju? si? tym bawi?em mi?o by?o gdyby kto? mi to przypomnia?.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2021-07-04, 17:00


AxL







Wiek: 35
Na forum: 6558 dni
Posty: 10

Piwa: 25

Respekt: 50

Wiesz co, w Twoim przypadku wygl?da na to, ?e problemem jest liczba slot?w na serwerze. Swoj? mapk?/skrypt odpalasz pewnie na serwerze z 50'cioma slotami, tak?

W kodzie u?ywasz czego? takiego:
Kod:

Loop(i, GetMaxPlayers())

Jest to jaka? customowa makrodefinicja pochodz?ca pewnie z jakiego? include, kt?ra tworzy p?tle po wszystkich graczach (a raczej dost?pnych slotach). Zwr?? uwag? na funkcj? GetMaxPlayers(), kt?ra jest w niej u?yta (https://sampwiki.blast.hk/wiki/GetMaxPlayers) - zwraca ona liczb? dost?pnych slot?w dla graczy na serwerze (czyli pewnie 50).

Pawn wymaga, ?eby tworz?c tablice, ich rozmiary by?y okre?lone w czasie kompilacji. Dlatego nie mo?na do ich tworzenia u?ywa? funkcji typu GetMaxPlayers (warto?? tej funkcji jest dost?pna w 'runtimie', czyli w trakcie dzia?ania skryptu) i dlatego tworzy si? makrodefinicje typu MAX_PLAYERS, kt?rej warto?? jest znana w czasie kompilacji. Problem pojawia si?, kiedy warto?ci w tych dw?ch miejscach s? r??ne. Je?li GetMaxPlayers zwr?ci warto?? mniejsz? od tej zawartej w MAX_PLAYERS, wtedy p?? biedy bo nic z?ego si? nie stanie. Po prostu zu?yjesz wi?cej pami?ci ni? potrzeba, ale wszystko b?dzie dzia?a?o. Gorzej je?li tak jak w Twoim przypadku, GetMaxPlayers zwr?ci warto?? wi?ksz? ni? ta w MAX_PLAYERS, kt?ra jest u?ywana do tworzenia tablic dla graczy.

Rozwi?zania w Twoim przypadku s? dwa - albo tak jak zrobi?e?, zmienisz warto?? w MAX_PLAYERS na 50, albo zmniejszysz liczb? slot?w w server.cfg na 20.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 2 piw(a):
TenTypMess, Mecca33
Wysłany: 2021-07-04, 17:48


TenTypMess







Wiek: 29
Na forum: 2382 dni
Posty: 16

Piwa: 53

Respekt: 50

dok?adnie tak jest jak piszesz :D u?ywa tej funkcji, dziekuje za super obja?nienie tematu! Pozdrawiam :)

Postaw piwo autorowi tego posta
 

 
Tagi: chodzi :: debugiem
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku