25.09.2013, 21:47
(
Последний раз редактировалось Locky_; 06.02.2015 в 12:49.
Причина: Update -> Explicaзгo/Soluзгo de erros
)
Olб, estou criando este tуpico com a intenзгo de ajudar pessoas que tem algumas 'duvidas' sobre o plugin crashdetect.
Este plugin, tem a funзгo de achar problemas em seu script, de diversas maneiras.
Mas, muitas das vezes ele ocorre de dizer no log o que vocк praticamente entende nada.
Um exemplo:
Deu б entender que o problema estб em uma dialog. Mas como irei saber qual dialog estб com o tal problema?
Hum, uma boa pergunta.
Entгo, andei pesquisando aqui e descobri uma coisa que funciona. Testei e atй arrumei problemas, e agora irei dar a dica.
Este site, й um conversor.
Pergunta: Por que um conversor?
Resposta: Para achar as informaзхes descritas pelo crashdetect (OnDialogResponse (0x00000041, 0x000002c1, 0x00000001, 0xffffffff, 0x00c3ae2c)).
Primeiramente, vocк deve saber como й o funcionamento da tal callback.
Como muitos sabem (mais experientes) a OnDialogResponse trabalha na ordem
(playerid, dialogid, response, listitem, inputtext[])
Entгo, os erros estгo relacionados nesta ordem
Entгo, iremos abrir o site e clicar na bolinha Hexadecimal.
Com ela marcada, iremos colar os valores abaixo (um de cada vez):
0x00000041
0x000002c1
0x00000001
0xffffffff
0x00c3ae2c
Agora, os resultados mostrados em Decimais:
65
705
1
*
*
Agora vocк deve estar se perguntando.. Por que teve os 'asteriscos'
Simplesmente, por que jб achei a minha dialog, e no caso esta dialog 705 й uma DIALOG_STYLE_MSGBOX. (No meu gamemode), que no caso nгo possue listitem nem inputtext
Opa! Jб vimos que entгo tem um debug em
OnDialogResponse(playerid 65, dialogid 705, response 1, listitem, inputtext[])
Um script exemplo.
Como no script acima, iremos chamar a dialog 7777, e 'Exemplo' tem 5 cells. Veja agora o log feito usando 1 listitem por vez.
Viram os erros?
Traduzindo apenas os erros.
Espero que tenham entendido o pequeno tutorial.
Provavelmente, isto nгo pode ser totalmente funcional.
Porйm assim deste modo funcionou corretamente.
Download do plugin crash detect: Aqui
Listas de erro: Aqui (Traduzida) **
Este plugin, tem a funзгo de achar problemas em seu script, de diversas maneiras.
Mas, muitas das vezes ele ocorre de dizer no log o que vocк praticamente entende nada.
Um exemplo:
pawn Код:
[21/09/2013 17:56:11] [debug] Run time error 4: "Array index out of bounds"
[21/09/2013 17:56:11] [debug] Accessing element at negative index -1
[21/09/2013 17:56:11] [debug] AMX backtrace:
[21/09/2013 17:56:11] [debug] #0 00386c3c in ?? (0x00000041) from GM.amx
[21/09/2013 17:56:11] [debug] #1 0044f35c in ?? (0x00000041, 0x00000001) from GM.amx
[21/09/2013 17:56:11] [debug] #2 00363448 in public OnDialogResponse (0x00000041, 0x000002c1, 0x00000001, 0xffffffff, 0x00c3ae2c) from GM.amx
Hum, uma boa pergunta.
Entгo, andei pesquisando aqui e descobri uma coisa que funciona. Testei e atй arrumei problemas, e agora irei dar a dica.
Este site, й um conversor.
Pergunta: Por que um conversor?
Resposta: Para achar as informaзхes descritas pelo crashdetect (OnDialogResponse (0x00000041, 0x000002c1, 0x00000001, 0xffffffff, 0x00c3ae2c)).
Primeiramente, vocк deve saber como й o funcionamento da tal callback.
Como muitos sabem (mais experientes) a OnDialogResponse trabalha na ordem
(playerid, dialogid, response, listitem, inputtext[])
Entгo, os erros estгo relacionados nesta ordem
Entгo, iremos abrir o site e clicar na bolinha Hexadecimal.
Com ela marcada, iremos colar os valores abaixo (um de cada vez):
0x00000041
0x000002c1
0x00000001
0xffffffff
0x00c3ae2c
Agora, os resultados mostrados em Decimais:
65
705
1
*
*
Agora vocк deve estar se perguntando.. Por que teve os 'asteriscos'
Simplesmente, por que jб achei a minha dialog, e no caso esta dialog 705 й uma DIALOG_STYLE_MSGBOX. (No meu gamemode), que no caso nгo possue listitem nem inputtext
Opa! Jб vimos que entгo tem um debug em
OnDialogResponse(playerid 65, dialogid 705, response 1, listitem, inputtext[])
Um script exemplo.
pawn Код:
#include a_samp
#include zcmd
public OnFilterScriptInit()
{
return 1;
}
new Exemplo1[5];
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 7777) {
if(!response) return 1;
Exemplo1[listitem] = 1;
printf("Exemplo 1 - listitem : %i", listitem);
return 1;
}
return 0;
}
CMD:exemplo1(playerid) return ShowPlayerDialog(playerid, 7777, DIALOG_STYLE_LIST, "Exemplo", "1\n2\n3\n4\n5\n6\n7", "Ok", "Fechar");
pawn Код:
[25/09/2013 19:02:40] Filterscript 'exemplo.amx' loaded.
[25/09/2013 19:02:51] Exemplo 1 - listitem : 0
[25/09/2013 19:02:53] Exemplo 1 - listitem : 1
[25/09/2013 19:02:54] Exemplo 1 - listitem : 2
[25/09/2013 19:02:56] Exemplo 1 - listitem : 3
[25/09/2013 19:02:58] Exemplo 1 - listitem : 4
[25/09/2013 19:03:00] [debug] Run time error 4: "Array index out of bounds"
[25/09/2013 19:03:00] [debug] Accessing element at index 5 past array upper bound 4
[25/09/2013 19:03:00] [debug] AMX backtrace:
[25/09/2013 19:03:00] [debug] #0 00000578 in public OnDialogResponse (0x00000004, 0x00001e61, 0x00000001, 0x00000005, 0x0000041c) from exemplo.amx
[25/09/2013 19:03:02] [debug] Run time error 4: "Array index out of bounds"
[25/09/2013 19:03:02] [debug] Accessing element at index 6 past array upper bound 4
[25/09/2013 19:03:02] [debug] AMX backtrace:
[25/09/2013 19:03:02] [debug] #0 00000578 in public OnDialogResponse (0x00000004, 0x00001e61, 0x00000001, 0x00000006, 0x0000041c) from exemplo.amx
Traduzindo apenas os erros.
pawn Код:
erro 1: OnDialogResponse(4, 7777, 1, 5, inputtext[])
erro 2: OnDialogResponse(4, 7777, 1, 6, inputtext[])
Provavelmente, isto nгo pode ser totalmente funcional.
Porйm assim deste modo funcionou corretamente.
Download do plugin crash detect: Aqui
Listas de erro: Aqui (Traduzida) **