[Ajuda] DOF2 Carregando errado.
#1

Opa, suave brother? Entгo, venho aqui pedir uma ajuda, no meu servidor o DOF2 estб bugando, quando um jogador desconecta, e outro loga, as vezes buga a conta, e carrega a conta do jogador que saiu, aconteceu isso esses dias, no meu servidor, um membro da administraзгo logou apуs minha saнda, e com isso, carregou minha conta na dele.
isso nгo й nada legal, por que atй mesmo jogadores comuns, jб ficaram com esse bug, e carregaram contas de administradores, atй mesmo a minha, poderia ser usado para o mau...

PHP код:
#define Dialog_Registro                                                         0
#define Dialog_Login                                                            1 
- OnPlayerConnect
PHP код:
if(DOF2_FileExistsGetPlayerArquivoplayerid ) ) )
    {
        new 
pName[MAX_PLAYER_NAME], texto[256];
        
GetPlayerName(playeridpNamesizeof(pName));
        
format(textosizeof(texto), "{FFFFFF}Bem-Vindo(a) Novamente!\n\nNick: {F2EA05}%s\n{FFFFFF}Level: {FF0000}%d\n{FFFFFF}Conta: {00FF04}Registrada!\n{FFFFFF}\n\n{FFFFFF}Digite Sua Senha Para Logar No Servidor!"pName,DOF2_GetIntGetPlayerArquivoplayerid ), "Score" ));
        
ShowPlayerDialogplayeridDialog_LoginDIALOG_STYLE_PASSWORD"Login"texto ,"Logar","Sair");
    }
    else
    {
        new 
str[256], Nick[MAX_PLAYER_NAME];
        
GetPlayerName(playeridNicksizeof(Nick));
        
format(strsizeof(str), "{FFFFFF}Bem-Vindo(a)!\n\nNick: {f2EA05}%s\n{FFFFFF}Conta: {FF0000}Nгo Registrada!\n\n{FFFFFF}Digite Uma Senha Para Se Registrar!"Nick);
        
ShowPlayerDialogplayeridDialog_RegistroDIALOG_STYLE_PASSWORD"{FFFFFF}Registro"str"Registrar","Sair");
    } 
- OnPlayerDisconnect
PHP код:
SavePlayer(playerid); 
OnDialogResponse
PHP код:
switch(dialogid){
    case 
Dialog_Registro:
    {
        if( 
response )
        {
            if( 
strleninputtext ) < || strleninputtext ) > 20 || !strleninputtext ) )
            {
                  
ShowPlayerDialogplayeridDialog_Registro ,DIALOG_STYLE_PASSWORD"{FF0000}OPS""{FFFFFF}Sua Senha Deve Conter No Mнnimo 5 Caracteres!\nE No Mбximo 20!\nTente Novamente!""Registrar","Sair" );
                return 
0;
            }
            
// Aqui eram as funcхes de setar os valores na conta do jogador, removi para nгo ocupar muito espaзo, somente seta valores na conta
            // tipo dinheiro, vip, admin, skin, etc..
            
SendClientMessage(playeridverde"| REGISTRO | Sua Conta Foi Registrada Com Sucesso! Bom Jogo!");
            
TaLogado[playerid] = 1;
            
ShowPlayerDialogplayeridDialog_Login ,DIALOG_STYLE_PASSWORD"{FFFFFF}Conta Registrada Com Sucesso!""{00FF04}Conta Registrada Com Sucesso!\n\n\n{FFFFFF}Digite Sua Senha Abaixo Para Fazer O Login!""Logar","Sair" );
            
format(Logsizeof(Log), "%s - Nova Conta Registrada."GetPlayerNameEx(playerid));
            
fileLog("Registros"Log);
            return 
0;
        }
        else
        {
        
Kickplayerid );
        }
    }
    case 
Dialog_Login:
    {
        if( 
response )
        {
            if( 
strleninputtext ) < || strleninputtext ) > 20 || !strleninputtext ) )
            {
                   
ShowPlayerDialogplayeridDialog_LoginDIALOG_STYLE_PASSWORD"{FFFFFF}Login""{FF0000}Senha Incorreta!\n\n{FFFFFF}Digite Sua Senha Corretamente Para Logar!""Logar""Sair");
                return 
0;
            }
               if( 
strcmpinputtextDOF2_GetStringGetPlayerArquivoplayerid ), "Senha" )) == )
            {
                
LoadPlayerplayerid );
                
format(Logsizeof(Log), "O Jogador %s[%d] Logou No Servidor."GetPlayerNameEx(playerid), playerid);
                
fileLog("Logins"Log);
                
GameTextForPlayer(playerid"~g~Logado Com Sucesso!"50001);
                
TaLogado[playerid] = 1;
                
                for(new 
a100a++)
                {
                    
SendClientMessage(playerid0" ");
                }
                
                
SetSpawnInfo(playerid0Player[playerid][Skin], Player[playerid][pX], Player[playerid][pY], Player[playerid][pZ], Player[playerid][pA],0,0,0,0,0,0);
                
SpawnPlayer(playerid);
                
TogglePlayerSpectating(playerid0);
                
TogglePlayerControllable(playerid1);
                return 
1;
            }
            else
            {
                
Erroplayerid ] ++;
                if ( 
Erroplayerid ] == ){
                 
Kick playerid );
                 }
                
ShowPlayerDialogplayeridDialog_LoginDIALOG_STYLE_PASSWORD"{FFFFFF}Login""{FF0000}Senha Incorreta!\n\n{FFFFFF}Digite Sua Senha Corretamente Para Logar!","Logar""Sair");
                
                return 
0;
            }
        }
        else{
         
Kickplayerid );
        }
    }
    } 
-- As stocks "LoadPlayer" e "SavePlayer" sгo somente para carregar/salvar as informaзхes do jogador, verificando se a conta existe e setando os valores (nada de errado nas stocks).
Reply
#2

Nгo tem nada de errado no code. Deve ser um bug do DOF2, se for .... acho difнcil alguйm resolver

Vou tentar achar uma soluзгo aqui pra te ajudar , e pra me ajudar tambйm.
Reply
#3

Quote:
Originally Posted by Cauezin
Посмотреть сообщение
Nгo tem nada de errado no code. Deve ser um bug do DOF2, se for .... acho difнcil alguйm resolver

Vou tentar achar uma soluзгo aqui pra te ajudar , e pra me ajudar tambйm.
Pois й, o cуdigo estб correto, por isso venho pedir ajuda, nгo consegui achar uma soluзгo para isto.
Reply
#4

Tenho quase certeza que й bug, igual o sistema de erro na hora de logar
Se vocк nгo botar a quantidade de erros, se ele ficar tentando muito ele loga normal .-.

Por isso acho que vou pra MySQL :/
Reply
#5

Resete todas as variбveis antes de carregar ou registrar a conta do jogador (de preferкncia na OnPlayerConnect).
Reply
#6

Quote:
Originally Posted by RodrigoMSR
Посмотреть сообщение
Resete todas as variбveis antes de carregar ou registrar a conta do jogador (de preferкncia na OnPlayerConnect).
vdd .-.
Reply
#7

Quote:
Originally Posted by RodrigoMSR
Посмотреть сообщение
Resete todas as variбveis antes de carregar ou registrar a conta do jogador (de preferкncia na OnPlayerConnect).
Resetando todas as variбveis da conta dele, vai ter resetado a conta dele, pois se eu resetar, vai carregar depois tudo zerado, entгo a conta dele vai estar zerada :/
Reply
#8

Quote:
Originally Posted by AllanSG
Посмотреть сообщение
Resetando todas as variбveis da conta dele, vai ter resetado a conta dele, pois se eu resetar, vai carregar depois tudo zerado, entгo a conta dele vai estar zerada :/
Reseta tudo em OnPlayerConnect, mas nгo salva.

Ai depois que ele passar na parte de login vai carregar as informaзхes dele
Reply
#9

Nгo tem como fazer isso, pois nгo tem funзгo que resete as variбveis sem mexer com o DOF2, entrando na pasta da conta do jogador, tipo
PHP код:
// na stock de getar o player
Player[playerid][Admin] = DOF2_GetInt(file[], "Admin" );
// Ai se eu fosse resetar ia ter que usar
Player[playerid][Admin] = 0/* Esta funзгo й para setar no arquivo do jogador (na conta dele, salvar), o valor de "Admin", entгo resetando
isso na OnPlayerConnect iria resetar a conta dele antes de ele logar, e quando ele logar, jб vai estar zerado, nгo iria adiantar. 
Reply
#10

Quote:
Originally Posted by AllanSG
Посмотреть сообщение
Nгo tem como fazer isso, pois nгo tem funзгo que resete as variбveis sem mexer com o DOF2, entrando na pasta da conta do jogador, tipo
PHP код:
// na stock de getar o player
Player[playerid][Admin] = DOF2_GetInt(file[], "Admin" );
// Ai se eu fosse resetar ia ter que usar
Player[playerid][Admin] = 0/* Esta funзгo й para setar no arquivo do jogador (na conta dele, salvar), o valor de "Admin", entгo resetando
isso na OnPlayerConnect iria resetar a conta dele antes de ele logar, e quando ele logar, jб vai estar zerado, nгo iria adiantar. 
PHP код:
public OnPlayerConnect(playerid)
{
    new 
arquivo[40], name[MAX_PLAYER_NAME], Dialog[240], ip[26]; 
    
GetPlayerName(playeridnamesizeof(name)); 
    
GetPlayerIp(playeridipsizeof(ip)); 
    
format(arquivosizeof(arquivo),"Contas/%sInfos.ini"name);     
       
       
Player[playerid][pSkin] = 0;
       
Player[playerid][pScore] = 0;
       
Player[playerid][pMoney] = 0;
       
Player[playerid][pProcurado] = 0;
       
Player[playerid][pPosX] = 0;
       
Player[playerid][pPosY] = 0;
       
Player[playerid][pPosZ] = 0;
       
Player[playerid][pPosA] = 0;
       
Player[playerid][pLogado] = false;
    if(
DOF2_FileExists(arquivo)) 
    {
        
TogglePlayerSpectating(playerid1); 
        
format(Dialogsizeof(Dialog), "{FFFFFF}Nick: {058AFF}%s\n\n{FFFFFF}Registrado: {27FF05}Sim\n\n{FFFFFF}IP: {058AFF}%s"nameip);
        
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"Login"Dialog"Confirmar""Sair");
    }else{ 
// Se Nгo
        
TogglePlayerSpectating(playerid1); 
        
format(Dialogsizeof(Dialog), "{FFFFFF}Nick: {058AFF}%s\n\n{FFFFFF}Registrado: {FF0505}Nгo\n\n{FFFFFF}IP: {058AFF}%s"nameip);
        
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_STYLE_INPUT"Registro"Dialog"Confirmar""Sair");
    }
    
    return 
1;

Fiz assim , se funciona ou nгo , sу testando
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)