Portal SAMP
[Ajuda] Salvamento DOF2 sendo salvo como "ÿ" - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Salvamento DOF2 sendo salvo como "ÿ" (/showthread.php?tid=2312)



Salvamento DOF2 sendo salvo como "ÿ" - Levi.M - 18/04/2022

Olá, estou com um problema no salvamento de dados usando o DOF2, não sei porque razão está aparecendo "ÿ" no salvamento da conta de jogadores. Alguém pode ajudar?


RE: Salvamento DOF2 - Carlos Victor - 18/04/2022

Mande mais informações, como está salvando etc...


RE: Salvamento DOF2 - Levi.M - 18/04/2022

Na hora que salva:
Código PHP:
SavePlayer(playerid)
{
    
getdate(Datas[2], Datas[1], Datas[0]);
    
gettime(Datas[3], Datas[4],Datas[5]);
    new 
string[128];

    if(
PlayerInfo[playerid][pLogado] == true)
    {
        
PlayerInfo[playerid][interiorT] = GetPlayerInterior(playerid);

        
GetPlayerPos(playerid,PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ]);
        
GetPlayerFacingAngle(playerid,PlayerInfo[playerid][pPosA]);

        
format(string,sizeof(string),"%02d:%02d:%02d - %d/%d/%d",Datas[3],Datas[4],Datas[5],Datas[0],Datas[1],Datas[2]);
        
DOF2_SetString(GetPlayerArquivo(playerid), "Ultimo Login",string);...
     
DOF2_SaveFile();


Eu só salvo na hora em que o player se desconecta e em algumas ocasiões aonde é preciso a atualização dos dados salvos. Não sei se pode ser algum conflito interno, usei o crashdetect e não aparece nada de erros.


RE: Salvamento DOF2 - Carlos Victor - 18/04/2022

Então, eu vendo o código, não encontrei nenhum erro aparente, mas tenta fazer um debug e vê oque está retornando a string...

Eu refiz o código também, verifica desse modo: 
Código PHP:
stock SavePlayer(playerid)
{
    new 
horasminutossegundosanosmesesdiasstring[32];
    
gettime(horasminutossegundos);
    
getdate(anosmesesdias);    

    if(
PlayerInfo[playerid][pLogado] == true)
    {
        format(stringsizeof(string), "%02d:%02d:%02d - %02d/%02d/%04d"horasminutossegundosdiasmesesanos);
        DOF2_SetString(GetPlayerArquivo(playerid), "UltimoLogin"string);
        DOF2_SaveFile();

        printf(string); //debug        
    }


Qualquer coisa me chama no Discord: Carlos Victor#0404


RE: Salvamento DOF2 - Levi.M - 18/04/2022

Vi que agora está dando pra logar na conta de qualquer jogador com qualquer senha.
Código PHP:
new textseg[128];
                
GetPVarString(playerid,"senhas",textseg,128);
                if(
strcmp(DOF2_GetString(GetPlayerArquivo(playerid),"Senha",PlayerInfo[playerid][pSenhaV]),textsegtrue10) == 0)
                {
                    
//quando acerta a senha loga.
                
}else{
                    
//ao errar a senha retornar erro.
                



Uso a
Código PHP:
GetPVarString(playerid,"senhas",textseg,128); 
pra carregar a senha que o jogador digitou.


RE: Salvamento DOF2 - CoelhaO_LokaO - 18/04/2022

(18/04/2022 22:10)Levi.M Escreveu: Vi que agora está dando pra logar na conta de qualquer jogador com qualquer senha.
Código PHP:
                   new textseg[128];
                
GetPVarString(playerid,"senhas",textseg,128);
        
        if(strcmp(DOF2_GetString(GetPlayerArquivo(playerid),"Senha",PlayerInfo[playerid][pSenhaV]),textsegtrue10) == 0)
        
        {
        
            //quando acerta a senha loga.
        
        }else{
            
        //ao errar a senha retornar erro.
            
    


Uso a
Código PHP:
GetPVarString(playerid,"senhas",textseg,128); 
pra carregar a senha que o jogador digitou.
 

Use !
if(!strcmp(DOF2_GetString(GetPlayerArquivo(playerid),"Senha",PlayerInfo[playerid][pSenhaV]),textseg, true, 10) == 0)
        {
        //quando acerta a senha loga.
        }else{
        //ao errar a senha retornar erro.
    }
EU USO ASIM
if(!strcmp(JOGADOR[playerid][JG_SENHA], inputtext, true, 24)){

SendClientMessage(playerid, 0xFFFF00FF, "{FA5858}» {FFFFFF} Senha Correta!");

}

else{

SendClientMessage(playerid, 0xFFFFFFFF, "{FA5858}» {FFFFFF}Senha {FA5858}incorreta {ffffff}tente novamente!");


}


RE: Salvamento DOF2 - Levi.M - 18/04/2022

Problema resolvido. obrigado Carlos Victor


RE: Salvamento DOF2 sendo salvo como "ÿ" - k2bi_YT - 19/04/2022

Não seria interessante usar DOF2_CheckLogin?


RE: Salvamento DOF2 sendo salvo como "ÿ" - Levi.M - 20/04/2022

(19/04/2022 19:31)k2bi_YT Escreveu: Não seria interessante usar DOF2_CheckLogin?

Nunca usei, como funciona essa função?


RE: Salvamento DOF2 sendo salvo como "ÿ" - k2bi_YT - 20/04/2022

Muito simples, ao ser chamado a função de registro, geralmente na dialog, tu pode estar criando o arquivo do jogador assim:
DOF2_CreateFile(file, inputtext);

Assim, o arquivo será criado com a senha digitada no DIALOG_STYLE_PASSWORD(caso seja esse estilo de dialog).Se você for abrir o arquivo do jogador na scriptfile, a senha estará sempre na primeira linha do arquivo.

Quando o jogador conectar, para verificar a senha você pode estar usando o DOF2_CheckLogin(...), assim substituindo o if(strcmp(DOF2_GetString(GetPlayerArquivo(playerid),"Senha",PlayerInfo[playerid][pSenhaV]),textseg, true, 10) == 0)

Em suma, DOF2_CheckLogin fará o mesmo que if(strcmp(DOF2_GetString(GetPlayerArquivo(playerid),"Senha",PlayerInfo[playerid][pSenhaV]),textseg, true, 10) == 0) de sua função, porem mais "otimizado"


Faça o teste e de sua opinião sobre o mesmo