[Tutorial] Resolvendo erros encontrados pelo crashdetect
#1

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 Код:
[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 Код:
#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 Код:
[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 Код:
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.

Download do plugin crash detect: Aqui
Listas de erro: Aqui (Traduzida) **
Reply
#2

bem inovador, parabйns

Nгo lembro de termos algo assim aqui na board.

+2rep
Reply
#3

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
bem inovador, parabйns

Nгo lembro de termos algo assim aqui na board.

+2rep
Obrigado.
Reply
#4

Esse nik й demais e.e
Reply
#5

Quote:
Originally Posted by Juniiro3
Посмотреть сообщение
Esse nik й demais e.e
tamos ae
Reply
#6

Уtimo
Reply
#7

Quote:
Originally Posted by silenthill
Посмотреть сообщение
Уtimo
Thanks
Reply
#8

Bom trabalho, algo revolucionбrio neste forum penso eu, pelo menos ainda n vi nd ligado a isto aqui

+rep
Reply
#9

Quote:
Originally Posted by PT
Посмотреть сообщение
Bom trabalho, algo revolucionбrio neste forum penso eu, pelo menos ainda n vi nd ligado a isto aqui

+rep
Obrigado!
Reply
#10

instalei o plugin pa suave ai quando entrei ele tem um bug que quando loga vc nasce morto '-' ainda n sei como resolve e ele detecto na public onplayerdeath

pawn Код:
[21:18:16] [debug] Run time error 4: "Array index out of bounds"
[21:18:16] [debug]  Accessing element at index 65535 past array upper bound 9
[21:18:16] [debug] AMX backtrace:
[21:18:16] [debug] #0 0000d7a4 in public OnPlayerDeath (0x00000000, 0x0000ffff, 0x000000ff) from GM-GANG.amx
[21:18:16] [death] Caio_Cold died 255
entrei no site da cauculadora e obtive esses resultados:

(playerid) 0x00000000: 0

(killerid) 0x0000ffff: 65535

(reason) 0x000000ff: 255

ai nгo entendi a parte do debug :/
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)