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:
pawn Код: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:
- Código:
[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
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.
pawn Код: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.
- Código:
#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");
Como no script acima, iremos chamar a dialog 7777, e 'Exemplo' tem 5 cells. Veja agora o log feito usando 1 listitem por vez.
pawn Код:- Código:
[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
Viram os erros?
Traduzindo apenas os erros.
pawn Код:Traduzindo apenas os erros.
- Código:
erro 1: OnDialogResponse(4, 7777, 1, 5, inputtext[])
erro 2: OnDialogResponse(4, 7777, 1, 6, inputtext[])
Espero que tenham entendido o pequeno tutorial.
Provavelmente, isto nгo pode ser totalmente funcional.
Porйm assim deste modo funcionou corretamente.
Arquivos necessários
plugin crash detect
Provavelmente, isto nгo pode ser totalmente funcional.
Porйm assim deste modo funcionou corretamente.
Arquivos necessários
plugin crash detect
Creditos: Locky_