[Ajuda] Run time error 20
#1

1
Olб galera, 01:32 da madrugada de sexta-feira, e eu aqui, fazendo um GM do 0, bom, o cуdigo estб a principio tudo certo, mas fui ligar ele apуs eu terminar de fazer o sistema de registro, salvamento de dados, e talz, e deu este erro:
PHP код:
Run time error 20"Invalid index parameter (bad entry point)" 
Gostaria de saber oque й, como resolver, e a dialog de login que era pra estar aparecendo quando eu entrar no servidor nгo estб aparecendo...

Abraзos e Obrigado desde jб.
1 resolvido!
2
Reply
#2

Boa madrugada ^^ o senhor tem isso em seu GM?

PHP код:
main()
{

Se nгo tiver, coloca antes do OnGameModeInit ou depois das definiзхes #defines + - assim:

PHP код:
main()
{
    print(
"\n----------------------------------");
    print(
"-------------------------------------");
    print(
"----------------------------------\n");

Atй mais!
Reply
#3

Opa, o erro saium porйm, as minhas dialogs de login e registro continuam a nгo aparecer, se puder ajudar:
PHP код:
public OnPlayerConnect(playerid)
{
    
ShowPlayerDialog(playeridDialogChamouPublicConnectDIALOG_STYLE_MSGBOX"{FFFF00}#{FFFFFF}Carregando Servidor...""{FFFFFF}Olб, o servidor [MS] Missoes [GM] estб sendo carregado.\nPedimos que aguarde apenas um momento.\nGarantimos que nгo vai perder seu tempo :D\n""Ok""");
    
SetTimerEx("LoginRegistro"5000false"i"playerid);
    return 
1;
}
forward LoginRegistro(playerid);
public 
LoginRegistro(playerid)
{
    new 
Msg[128], Arquivo[75];
    
format(Arquivo75"PlayerInfo/Jogadores/%s.ini"rNome(playerid));
    if(
DOF2_FileExists(Arquivo))
    {
        
CarregarContaPlayer(playerid);
        
format(Msgsizeof(Msg), "{FFFFFF}Olб %s, vocк estб registrado no servidor.\nInsira sua senha no campo abaixo:"rNome(playerid));
        
ShowPlayerDialog(playeridDialogLoginDIALOG_STYLE_PASSWORD"{FFFF00}#{FFFFFF}Logando..."Msg"Logar""Sair");
        
format(Msgsizeof(Msg), "{00FF00}O Jogador {FFFFFF}%s[ID:%d]{00FF00} estб logando no servidor!"rNome(playerid), playerid);
        
SendClientMessageToAll(-1Msg);
    }
    else
    {
        
CriarContaPlayer(playerid);
        
format(Msgsizeof(Msg), "{FFFFFF}Olб %s, vocк nгo estб registrado em nosso servidor.\nInsira uma senha no campo abaixo para se registrar:",  rNome(playerid));
        
ShowPlayerDialog(playeridDialogRegistroDIALOG_STYLE_INPUT"{FFFF00}#{FFFFFF}Registrando..."Msg"Registrar""Sair");
        
format(Msgsizeof(Msg), "{00FF00}O Jogador {FFFFFF}%s[ID:%d]{00FF00} estб sendo registrado no servidor!"rNome(playerid), playerid);
        
SendClientMessageToAll(-1Msg);
    }
    return 
1;
}
stock rNome(playerid)
{
    new 
Name[24];
    
GetPlayerName(playeridName24);
    return 
rNome(playerid);
}
stock CriarContaPlayer(playerid)
{
    
DOF2_CreateFile(PastaPlayer);
    return 
CriarContaPlayer(playerid);
}
stock SalvarContaPlayer(playerid)
{
    
DOF2_SetString(PastaPlayer"Nome"PlayerInfo[playerid][Nome]);
    
DOF2_SetInt(PastaPlayer"Registrado"1);
    
DOF2_SetString(PastaPlayer"Senha"PlayerInfo[playerid][Senha]);
    
DOF2_SetInt(PastaPlayer"Skin"GetPlayerSkin(playerid));
    
DOF2_SetInt(PastaPlayer"Dinheiro"GetPlayerMoney(playerid));
    
DOF2_SetInt(PastaPlayer"Score"GetPlayerScore(playerid));
    
DOF2_SaveFile();
    return 
SalvarContaPlayer(playerid);
}
stock CarregarContaPlayer(playerid)
{
    
GetPlayerName(playeridPlayerInfo[playerid][Nome], 24);
    
PlayerInfo[playerid][Registrado] = DOF2_GetInt(PastaPlayer"Registrado");
    
format(PlayerInfo[playerid][Senha], 50DOF2_GetString(PastaPlayer"Senha"));
    
PlayerInfo[playerid][Skin] = DOF2_GetInt(PastaPlayer"Skin");
    
PlayerInfo[playerid][Score] = DOF2_GetInt(PastaPlayer"Score");
    
PlayerInfo[playerid][Dinheiro] = DOF2_GetInt(PastaPlayer"Dinheiro");
    return 
CarregarContaPlayer(playerid);
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == DialogRegistro)
    {
        if(
response)
        {
            if(
strlen(inputtext)>0)
            {
                
format(PlayerInfo[playerid][Senha], 50"%s"inputtext);
                
SendClientMessage(playerid, -1"{00FF00}Vocк se registrou com sucesso!");
                
PlayerInfo[playerid][Logado] = 1;
                
DOF2_CreateFile(PastaPlayer);
                
CarregarContaPlayer(playerid);
            }
            else
            {
                
SendClientMessage(playerid, -1"{FF0000}Vocк precisa digitar uma senha para se registar.");
                
SendClientMessage(playerid, -1"{FF0000}Vocк foi kickado por falhar ao se registrar.");
                
PlayerInfo[playerid][Logado] = 0;
                
Kick(playerid);
            }
        }
        else
        {
            
SendClientMessage(playerid, -1"{FF0000}Vocк nгo se registrou e foi kickado.");
            
Kick(playerid);
        }
        return 
1;
    }

    if(
dialogid == DialogLogin)
    {
        if(
response)
        {
            if(
strlen(inputtext)>0)
            {
                if(
strcmp(PlayerInfo[playerid][Senha], inputtextfalse) == 0)
                {
                    
SendClientMessage(playerid, -1"{00FF00}Vocк logou com sucesso!");
                    
PlayerInfo[playerid][Logado] = 1;
                }
                else
                {
                    
SendClientMessage(playerid, -1"{FF0000}Vocк digitou a senha errada e foi kickado.");
                    
PlayerInfo[playerid][Logado] = 0;
                    
Kick(playerid);
                }
            }
            else
            {
                
SendClientMessage(playerid, -1"{FF0000}Vocк nгo logou e foi kickado.");
                
Kick(playerid);
            }
        }
        else
        {
            
SendClientMessage(playerid, -1"{FF0000}Vocк nгo logou e foi kickado.");
            
PlayerInfo[playerid][Logado] = 0;
        }
        return 
1;
    }
    return 
1;

Se puder me ajudar a descobrir, fico imensamente grato.
Reply
#4

Quote:
Originally Posted by matheusspohr
Посмотреть сообщение
Opa, o erro saium porйm, as minhas dialogs de login e registro continuam a nгo aparecer, se puder ajudar:
PHP код:
public OnPlayerConnect(playerid)
{
    
ShowPlayerDialog(playeridDialogChamouPublicConnectDIALOG_STYLE_MSGBOX"{FFFF00}#{FFFFFF}Carregando Servidor...""{FFFFFF}Olб, o servidor [MS] Missoes [GM] estб sendo carregado.\nPedimos que aguarde apenas um momento.\nGarantimos que nгo vai perder seu tempo :D\n""Ok""");
    
SetTimerEx("LoginRegistro"5000false"i"playerid);
    return 
1;
}
forward LoginRegistro(playerid);
public 
LoginRegistro(playerid)
{
    new 
Msg[128], Arquivo[75];
    
format(Arquivo75"PlayerInfo/Jogadores/%s.ini"rNome(playerid));
    if(
DOF2_FileExists(Arquivo))
    {
        
CarregarContaPlayer(playerid);
        
format(Msgsizeof(Msg), "{FFFFFF}Olб %s, vocк estб registrado no servidor.\nInsira sua senha no campo abaixo:"rNome(playerid));
        
ShowPlayerDialog(playeridDialogLoginDIALOG_STYLE_PASSWORD"{FFFF00}#{FFFFFF}Logando..."Msg"Logar""Sair");
        
format(Msgsizeof(Msg), "{00FF00}O Jogador {FFFFFF}%s[ID:%d]{00FF00} estб logando no servidor!"rNome(playerid), playerid);
        
SendClientMessageToAll(-1Msg);
    }
    else
    {
        
CriarContaPlayer(playerid);
        
format(Msgsizeof(Msg), "{FFFFFF}Olб %s, vocк nгo estб registrado em nosso servidor.\nInsira uma senha no campo abaixo para se registrar:",  rNome(playerid));
        
ShowPlayerDialog(playeridDialogRegistroDIALOG_STYLE_INPUT"{FFFF00}#{FFFFFF}Registrando..."Msg"Registrar""Sair");
        
format(Msgsizeof(Msg), "{00FF00}O Jogador {FFFFFF}%s[ID:%d]{00FF00} estб sendo registrado no servidor!"rNome(playerid), playerid);
        
SendClientMessageToAll(-1Msg);
    }
    return 
1;
}
stock rNome(playerid)
{
    new 
Name[24];
    
GetPlayerName(playeridName24);
    return 
rNome(playerid);
}
stock CriarContaPlayer(playerid)
{
    
DOF2_CreateFile(PastaPlayer);
    return 
CriarContaPlayer(playerid);
}
stock SalvarContaPlayer(playerid)
{
    
DOF2_SetString(PastaPlayer"Nome"PlayerInfo[playerid][Nome]);
    
DOF2_SetInt(PastaPlayer"Registrado"1);
    
DOF2_SetString(PastaPlayer"Senha"PlayerInfo[playerid][Senha]);
    
DOF2_SetInt(PastaPlayer"Skin"GetPlayerSkin(playerid));
    
DOF2_SetInt(PastaPlayer"Dinheiro"GetPlayerMoney(playerid));
    
DOF2_SetInt(PastaPlayer"Score"GetPlayerScore(playerid));
    
DOF2_SaveFile();
    return 
SalvarContaPlayer(playerid);
}
stock CarregarContaPlayer(playerid)
{
    
GetPlayerName(playeridPlayerInfo[playerid][Nome], 24);
    
PlayerInfo[playerid][Registrado] = DOF2_GetInt(PastaPlayer"Registrado");
    
format(PlayerInfo[playerid][Senha], 50DOF2_GetString(PastaPlayer"Senha"));
    
PlayerInfo[playerid][Skin] = DOF2_GetInt(PastaPlayer"Skin");
    
PlayerInfo[playerid][Score] = DOF2_GetInt(PastaPlayer"Score");
    
PlayerInfo[playerid][Dinheiro] = DOF2_GetInt(PastaPlayer"Dinheiro");
    return 
CarregarContaPlayer(playerid);
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == DialogRegistro)
    {
        if(
response)
        {
            if(
strlen(inputtext)>0)
            {
                
format(PlayerInfo[playerid][Senha], 50"%s"inputtext);
                
SendClientMessage(playerid, -1"{00FF00}Vocк se registrou com sucesso!");
                
PlayerInfo[playerid][Logado] = 1;
                
DOF2_CreateFile(PastaPlayer);
                
CarregarContaPlayer(playerid);
            }
            else
            {
                
SendClientMessage(playerid, -1"{FF0000}Vocк precisa digitar uma senha para se registar.");
                
SendClientMessage(playerid, -1"{FF0000}Vocк foi kickado por falhar ao se registrar.");
                
PlayerInfo[playerid][Logado] = 0;
                
Kick(playerid);
            }
        }
        else
        {
            
SendClientMessage(playerid, -1"{FF0000}Vocк nгo se registrou e foi kickado.");
            
Kick(playerid);
        }
        return 
1;
    }
    if(
dialogid == DialogLogin)
    {
        if(
response)
        {
            if(
strlen(inputtext)>0)
            {
                if(
strcmp(PlayerInfo[playerid][Senha], inputtextfalse) == 0)
                {
                    
SendClientMessage(playerid, -1"{00FF00}Vocк logou com sucesso!");
                    
PlayerInfo[playerid][Logado] = 1;
                }
                else
                {
                    
SendClientMessage(playerid, -1"{FF0000}Vocк digitou a senha errada e foi kickado.");
                    
PlayerInfo[playerid][Logado] = 0;
                    
Kick(playerid);
                }
            }
            else
            {
                
SendClientMessage(playerid, -1"{FF0000}Vocк nгo logou e foi kickado.");
                
Kick(playerid);
            }
        }
        else
        {
            
SendClientMessage(playerid, -1"{FF0000}Vocк nгo logou e foi kickado.");
            
PlayerInfo[playerid][Logado] = 0;
        }
        return 
1;
    }
    return 
1;

Se puder me ajudar a descobrir, fico imensamente grato.
Pode ser porque voзe esta usando a mesma variavel para o dialog e para a mensagem que vem depois.

Crie a variavel Msg2 para a mensagem e deixe a variavel Msg para o dialog
Reply
#5

Quote:
Originally Posted by Andre02
Посмотреть сообщение
Pode ser porque voзe esta usando a mesma variavel para o dialog e para a mensagem que vem depois.

Crie a variavel Msg2 para a mensagem e deixe a variavel Msg para o dialog
Continua a mesma coisa.
Reply
#6

Opa, vocк tem um loop infinito cara, que й isso!?



E jб agora, visto que vocк estб fazendo um GM do zero, aproveito para dizer que nгo precisa usar "stock" em todo o lado.
PHP код:
stock CarregarJogador(playerid)
{
    
// blah blah
}
CarregarJogador(playerid// Vocк pode fazer assim. Stock era suposto ser usado apenas em casos especнficos.
{
    
// blah blah

O povo aqui tem a mania de usar stock para tudo rsrsrs. Deixo aqui um link a explicar em que casos deve usar stock (Inglкs):
https://sampforum.blast.hk/showthread.php?tid=570635
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)