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

Wysłany: 2022-05-03, 19:33


TenTypMess







Wiek: 26
Na forum: 990 dni
Posty: 15

Piwa: 41

Respekt: 50


[debug] Run time error 4: "Array index out of bounds"

Błąd z tematu, linijka z crashdetectu:

Kod:

textDrawSetString(StartGameDraw[1], "~p~%s ~w~~h~- Aby sie zapisac wpisz ~y~%s", gameFunName[StartGameID-GAME_FUN_MIN], gameFunCommands[StartGameID-GAME_FUN_MIN]);


w czym jest problem?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-03, 19:43


rufijok







Wiek: 23
Na forum: 2293 dni
Posty: 54
Nick w MP: [STK]Slasher

Piwa: 173

Respekt: 75,3


korzystasz z indexu tablicy ktory nie istnieje
zalozmy ze masz tablice na 5 indexow, blad wyskoczy gdy uzyjesz indexu powyzej 4 lub ponizej 0

Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-03, 19:55


TenTypMess







Wiek: 26
Na forum: 990 dni
Posty: 15

Piwa: 41

Respekt: 50


tylko że dalej nie wiem gdzie pies jest pogrzebany i co zmienić, dalsza część kodu


Kod:

for(new gameid = GAME_FUN_MIN; gameid != GAME_FUN_MAX + 1; gameid++)
{
if(GameCount[gameid][GAME_COUNT_START] > 0)
{
if(StartGameID == -1) StartGameID = gameid;

GameCount[gameid][GAME_COUNT_START] --;
if(GameCount[gameid][GAME_COUNT_START] <= 0) startGame(gameid);
}

if(GameTrwa[gameid]) gameUpdate(gameid);
}

if(StartGameID != -1)
{
if(GameCount[StartGameID][GAME_COUNT_START] <= 0)
{
StartGameID = -1;

TextDrawHideForAll(StartGameDraw[0]);
TextDrawHideForAll(StartGameDraw[1]);
}

textDrawSetString(StartGameDraw[1], "~p~%s ~w~~h~- Aby sie zapisac wpisz ~y~%s", gameFunName[StartGameID-GAME_FUN_MIN], gameFunCommands[StartGameID-GAME_FUN_MIN]);

if(StartGameID != -1)
{
textDrawSetString(StartGameDraw[0], "~r~~h~Pozostalo ~w~~h~%d sekund~n~~g~~h~Zapisanych osob: ~r~~h~%d", GameCount[StartGameID][GAME_COUNT_START], Iter_Count(Game[StartGameID]));

TextDrawShowForAll(StartGameDraw[0]);
TextDrawShowForAll(StartGameDraw[1]);
}
}


#define MAX_GAMES 17
#define MAX_GAME_ZONE 4
#define MAX_WS_CP 130

#define GAME_ARENA 0
#define GAME_EVENT 1
#define GAME_OX 2
#define GAME_SPARING 3
#define GAME_PRACA 4
#define GAME_BR 5
#define GAME_SK 6
#define GAME_SM 7
#define GAME_DR 8
#define GAME_CH 9
#define GAME_WG 10
#define GAME_OS 11
#define GAME_ST 12
#define GAME_CM 13
#define GAME_ZP 14
#define GAME_LR 15
#define GAME_WS 16

new gameFunCommands[][] = {"/br", "/sk", "/sm", "/dr", "/ch", "/wg", "/os", "/st", "/cm", "/zp", "/lr", "/ws"},
gameFunName[][] = {"Berek", "Sianko", "Sumo", "Derby", "Chowany", "Wojna Gangow", "OneShoot", "Strzelnica", "ColorMatch", "Zabij Potwora", "Taniec LowRiderow", "Wyscigi"},
gameFun_settings;

#define GAME_FUN_MIN GAME_BR // Pierwsze ID zabawy
#define GAME_FUN_MAX GAME_WS // Ostatnie ID zabawy

#define GAME_COUNT_START 0
#define GAME_COUNT_END 1
#define GAME_COUNT_OTHER 2

#define MIN_PEOPLE_OX 2
#define MIN_PEOPLE_EVENT 1
#define MIN_BR 8
#define MIN_SK 2
#define MIN_SM 2
#define MIN_DR 3
#define MIN_CH 5
#define MIN_WG 4
#define MIN_OS 3
#define MIN_ST 2
#define MIN_CM 4
#define MIN_ZP 4
#define MIN_LR 3
#define MIN_WS 2

#define MAX_DR 75
#define MAX_SM 15
#define MAX_WS 20

#define SK_HEIGHT 97.0 // wysokosc sianka
#define SM_HEIGHT 23.0 // wysokosc sumo
#define DR_HEIGHT 400.0 // wysokosc derby
#define CM_HEIGHT 95.0 // wysokosc colormatch

// games system


Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-03, 20:15


rufijok







Wiek: 23
Na forum: 2293 dni
Posty: 54
Nick w MP: [STK]Slasher

Piwa: 173

Respekt: 75,3


daj cały log błędu, bo jedną linijkę niżej prawdopodobnie będzie info który index próbujesz wybrać, ponadto dla testu dodaj nad problematyczną linijką
Kod:

printf("debug: %d", (StartGameID - GAME_FUN_MIN));


Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-03, 20:30


TenTypMess







Wiek: 26
Na forum: 990 dni
Posty: 15

Piwa: 41

Respekt: 50


[10] [debug] Run time error 4: "Array index out of bounds"
[10] [debug] AMX backtrace:
[10] [debug] #0 000739ec in public RunFiveSecond () at C:\Users\wrq\Desktop\ps24\gamemodes\PS24byLagowy.pwn:6122

20:41:02] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: 0
[20:41] debug: -6

Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-03, 21:37


rufijok







Wiek: 23
Na forum: 2293 dni
Posty: 54
Nick w MP: [STK]Slasher

Piwa: 173

Respekt: 75,3


nie wiem co to StartGameID ale z tego jasno wynika ze problematyczny przypadek jest spowodowany tym, ze StartGameID - GAME_FUN_MIN = -6, co oznacza ze powyzszy kod probuje wyciagnac wartosc z ujemnego indeksu, a to nie jest mozliwe

Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-04, 18:38


TenTypMess







Wiek: 26
Na forum: 990 dni
Posty: 15

Piwa: 41

Respekt: 50


"rufijok" napisał/a:

nie wiem co to StartGameID ale z tego jasno wynika ze problematyczny przypadek jest spowodowany tym, ze StartGameID - GAME_FUN_MIN = -6, co oznacza ze powyzszy kod probuje wyciagnac wartosc z ujemnego indeksu, a to nie jest mozliwe


w tablicach globalnych
Kod:

StartGameID = -1,


Kod:

for(new gameid = GAME_FUN_MIN; gameid != GAME_FUN_MAX + 1; gameid++)
{
if(GameCount[gameid][GAME_COUNT_START] > 0)
{
if(StartGameID == -1) StartGameID = gameid;

GameCount[gameid][GAME_COUNT_START] --;
if(GameCount[gameid][GAME_COUNT_START] <= 0) startGame(gameid);
}

if(GameTrwa[gameid]) gameUpdate(gameid);
}

if(StartGameID != -1)
{
if(GameCount[StartGameID][GAME_COUNT_START] <= 0)
{
StartGameID = -1;

TextDrawHideForAll(StartGameDraw[0]);
TextDrawHideForAll(StartGameDraw[1]);
}

printf("debug: %d", (StartGameID - GAME_FUN_MIN));
textDrawSetString(StartGameDraw[1], "~p~%s ~w~~h~- Aby sie zapisac wpisz ~y~%s", gameFunName[StartGameID-GAME_FUN_MIN], gameFunCommands[StartGameID-GAME_FUN_MIN]);

if(StartGameID != -1)
{
textDrawSetString(StartGameDraw[0], "~r~~h~Pozostalo ~w~~h~%d sekund~n~~g~~h~Zapisanych osob: ~r~~h~%d", GameCount[StartGameID][GAME_COUNT_START], Iter_Count(Game[StartGameID]));

TextDrawShowForAll(StartGameDraw[0]);
TextDrawShowForAll(StartGameDraw[1]);
}
}


tutaj jest wymienione kliku krotnie

Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-04, 18:51


rufijok







Wiek: 23
Na forum: 2293 dni
Posty: 54
Nick w MP: [STK]Slasher

Piwa: 173

Respekt: 75,3


sprobuj wsadzic
Kod:

textDrawSetString(StartGameDraw[1], "~p~%s ~w~~h~- Aby sie zapisac wpisz ~y~%s", gameFunName[StartGameID - GAME_FUN_MIN], gameFunCommands[StartGameID - GAME_FUN_MIN]);

2 linijki nizej, bezposrednio pod
Kod:

if (StartGameID != -1) {

na moje oko powinno banglac

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
TenTypMess
Wysłany: 2022-05-04, 21:59


TenTypMess







Wiek: 26
Na forum: 990 dni
Posty: 15

Piwa: 41

Respekt: 50


Fakt faktem debugu już nie ma, ale jest kolejny problem który polega na tym że gdy odpala się skrypt na automatyczny start zapisu na eventy, wszystko jest dobrze do momentu kiedy zapis odpali 3 raz po którym procesor serwera osiąga 100% i następuje restart, wystartuje zapis na dwie pierwsze eventy jest ok, dochodzi do trzeciego i jest problem, dodając printy dochodzi wszystko do tego stocka
Kod:

stock startCountGame(gameID)
{
print("uruchamia2");
if(GameTrwa[gameID]) return;
GameCount[gameID][GAME_COUNT_START] = 20;
SCMToAll(0xce9c88ff, "Za {6f4b4a}20{ce9c88} sekund wystartuje {7e7dd3}%s", gameFunCommands[gameID-GAME_FUN_MIN]);
print("uruchamia3");
}


po czym powinien uruchamiać się zapis z góry w którym był debug, pokazujący textdraw lecz tego nie ma

Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-04, 22:47


rufijok







Wiek: 23
Na forum: 2293 dni
Posty: 54
Nick w MP: [STK]Slasher

Piwa: 173

Respekt: 75,3


te return;
zmien na return 1;
ponadto zarzuc cos z konsoli i daj wiecej info bo poki co nie wiadomo o co tak naprawde biega

Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-05, 19:24


TenTypMess







Wiek: 26
Na forum: 990 dni
Posty: 15

Piwa: 41

Respekt: 50


dałem i wywala warring
Kod:

Warning: Minimum time between new connections (3000) exceeded for 5.173.24.176:19449. Ignoring the request.


są błędy na początku serwera nie wiem czym spowodowane bo includy najnowsze, chciałem zacząć od mniejszych bugów ale może ma to związek

Kod:

[22:08] [debug] Run time error 5: "Invalid memory access"
[22:08] [debug] AMX backtrace:
[22:08] [debug] #0 00030f04 in Malloc_Free (Alloc:slot=5914952) at C:\Users\wrq\Desktop\ps24\pawno\include\YSI\..\YSI_Coding\y_malloc/funcs.inc:775
[22:08] [debug] #1 00053d4c in public InlineTimersHandler (repeat=0, address=5914952, pointer=3530832, offset=16, data1=1, data2=0, Alloc:mem=1391253) at C:\Users\wrq\Desktop\ps24\pawno\include\inline_timers.inc:27
[22:18] [debug] Run time error 5: "Invalid memory access"
[22:18] [debug] AMX backtrace:
[22:18] [debug] #0 00030f04 in Malloc_Free (Alloc:slot=5914984) at C:\Users\wrq\Desktop\ps24\pawno\include\YSI\..\YSI_Coding\y_malloc/funcs.inc:775
[22:18] [debug] #1 00053d4c in public InlineTimersHandler (repeat=0, address=5914984, pointer=3530832, offset=16, data1=1, data2=0, Alloc:mem=1391261) at C:\Users\wrq\Desktop\ps24\pawno\include\inline_timers.inc:27


Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-05, 21:26


rufijok







Wiek: 23
Na forum: 2293 dni
Posty: 54
Nick w MP: [STK]Slasher

Piwa: 173

Respekt: 75,3


ta pierwsza informacja oznacza że za szybko próbowałeś się ty (lub twój gracz?) połączyć z serwerem, ogółem proponuję dodać ci do server.cfg
Kod:

ackslimit 5500

na samym dole lub podmienić wartość jeśli już posiadasz taką linijkę.

co do drugiego logu oznacza on próbę dostania się przez serwer sampa do miejsca w pamięci które nie jest jej przydzielone, aczkolwiek nie wiem jak to wygląda w przypadku tego YSI bo sam korzystam wybiórczo, btw watpie zeby to powodowalo te wywalanie serwera przy trzeciej gierce.

najlepiej jak dasz calego stocka ktory wywoluje startCountGame i jakies logi zwiazane z tymi utworzonymi przez ciebie printami (w tym wlasnie startCountGame i ewentualnie tym stocku ktory go wywoluje) bo skoro ten startCountGame wywoluje sie 2 razy a za 3 zabija proces serwera to cos jest nie tak chyba wyzej, ewentualnie w samej logice rozwiazania

Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-05, 22:02


TenTypMess







Wiek: 26
Na forum: 990 dni
Posty: 15

Piwa: 41

Respekt: 50


Usuwam wszystko co tu wstawiłem bo po aktualizacji crashdetecta problem okazał się całkiem inny niż się wydawało.

Kod:

[15] [debug] Long callback execution detected (hang or performance issue)
[15] [debug] AMX backtrace:
[15] [debug] #0 0038d5fc in mix_string (string[]=@015e3f38 "", max_swap=0) at C:\Users\wrq\Desktop\ps24\gamemodes\PS24byLagowy.pwn:34521
[15] [debug] #1 00114270 in ?? () at C:\Users\wrq\Desktop\ps24\gamemodes\PS24byLagowy.pwn:17762
[15] [debug] #2 00114004 in ?? (22691844) at C:\Users\wrq\Desktop\ps24\gamemodes\PS24byLagowy.pwn:17752
[15] [debug] #3 000652d4 in public __MysqlInlineProcessCallback (params_format[]=@015a4018 "", cb_data[E_CALLBACK_DATA]=@015a4004, cb_data_size=5) at C:\Users\wrq\Desktop\ps24\pawno\include\a_mysql_yinline.inc:666


odpowiedzialna część kodu

Kod:

case 6:
/*{
ServerData[minigame_buffer][0] = EOS;

inline LoadRozsypanka()
{
new slowo[30];
ServerData[minigame_buffer][0] = EOS;

cache_get_value(0, "wyraz", ServerData[minigame_buffer], 50);

slowo[0] = toupper(slowo[0]);

format(slowo, strlen(ServerData[minigame_buffer]) + 1, ServerData[minigame_buffer]);
while(!strcmp(slowo, ServerData[minigame_buffer])) mix_string(slowo, strlen(slowo) / 2);

textDrawSetString(MiniGameDraw[1], "ROZSYPANKA:~n~~w~~h~%s~n~~w~~h~Nagroda: ~r~~h~%d exp + %d$!", slowo, ServerData[minigame_exp], ServerData[minigame_money]);
minigame_loop(i) TextDrawShowForAll(MiniGameDraw[i]);

SCMToAll(-1, "[ROZSYPANKA] "YELLOW"Kto pierwszy ułoży słowo z "LIGHTRED"\"%s\" "LIGHTBLUE"Zgarnia %d$ "YELLOW"+ "LIGHTRED"%d "ORANGE"exp", slowo, ServerData[minigame_money], ServerData[minigame_exp]);

return 1;
}

m_pquery_inline("select wyraz from rozsypanka order by rand() asc limit 1;", using inline LoadRozsypanka);

return 1;
}*/




temat rozwiązany, brak wyrazów w mysql powodował crashe, dziękuje i pozdrawiam

Postaw piwo autorowi tego posta
 

 
Tagi: array :: index :: out :: bounds
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:








Wyświetl posty z ostatnich:   

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

Skocz do: