[Ajuda] ajuda com salvamento em DOF2
#1

estou tendo problemas para salvar e setar quando o player loga(skin, dinheiro, vida, colete), quando ele loga ele seta vida e colete cheio, e nao seta o que esta no arquvos deles, alguem pfv, se disponibilizaria para me ajudar a encontrar os bugs desse sistema e me ajudaria a retirar(claramente nao quero que vc faзa pra mim, pois estou aprendendo, entгo me aponte erros que posso arrumar e testar!), OBG <3

PHP код:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    
format(gfilesizeof(gfile), "Contas/%s.txt"Pname(playerid));
    switch(
dialogid) {
        case 
Registro: {
            if(!
response)
            {
                
SendClientMessage(playerid0xFF0000AA"[ ERRO ]Vocк escolheu sair!");
                
Kick(playerid);
            }
            if(!
strlen(inputtext))
            {
                
SendClientMessage(playerid, -1"[ {FFFFFF}ERRO ]Digite uma senha para se registrar!");
                
format(strsizeof(str), "Ola, seja bem vindo pela primeira vez Sr.%s !"Pname(playerid));
                
ShowPlayerDialog(playeridRegistroDIALOG_STYLE_PASSWORD"{FFFFFF}REGISTRO"str"Registro""Cancelar");
            }
            else
            {
                
DOF2_CreateFile(gfile);
                
DOF2_SetString(gfile"Senha"inputtext);
                
DOF2_SetInt(gfile"Skin"pInfo[playerid][pSkin]);
                
DOF2_SetInt(gfile"Dinheiro"pInfo[playerid][pDinheiro]);
                
DOF2_SetFloat(gfile"Vida"pInfo[playerid][pVida]);
                
DOF2_SetFloat(gfile"Colete"pInfo[playerid][pColete]);
                
DOF2_SetInt(gfile"Level"pInfo[playerid][pLevel]);
                
DOF2_SetInt(gfile"Ajudante"pInfo[playerid][Ajudante] = false);
                
DOF2_SetInt(gfile"Moderador"pInfo[playerid][Moderador] = false);
                
DOF2_SetInt(gfile"Corregedor"pInfo[playerid][Corregedor] = false);
                
DOF2_SetInt(gfile"Administrador"pInfo[playerid][Administrador] = false);
                
DOF2_SetInt(gfile"Master"pInfo[playerid][Master] = false);
                
DOF2_SetInt(gfile"Oculto"pInfo[playerid][Oculto] = false);
                
DOF2_SaveFile();
                
SpawnPlayer(playerid);
                
SetPlayerSkin(playerid137);
                
GivePlayerMoney(playerid5000);
                
SetPlayerHealth(playerid100);
                
SetPlayerArmour(playerid100);
            }
        }
        case 
Login: {
            if(!
response)
            {
                
SendClientMessage(playerid0xFF0000AA"[ ERRO ]Vocк escolheu sair!");
                
Kick(playerid);
            }
            if(!
strlen(inputtext))
            {
                
SendClientMessage(playerid, -1"[{FFFFFF}ERRO ] Digite Sua senha para logar no servidor!");
                
format(strsizeof(str), "Ola, seja bem vindo ao servidor novamente!");
                
ShowPlayerDialog(playeridLoginDIALOG_STYLE_PASSWORD"{FFFFFF}LOGIN"str"Login""Cancelar");
            }
            if(
strcmp(inputtextDOF2_GetString(gfile"Senha")) == 0)
            {
                
pInfo[playerid][pLevel] = GetPlayerScore(playerid);
                
pInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
                
pInfo[playerid][pSkin] = DOF2_GetInt(gfile"Skin");
                
pInfo[playerid][pVida] = DOF2_GetFloat(gfile"Vida");
                
pInfo[playerid][pColete] = DOF2_GetFloat(gfile"Colete");
                
pInfo[playerid][pDinheiro] = DOF2_GetInt(gfile"Dinheiro");
                
pInfo[playerid][Ajudante] = DOF2_GetBool(gfile"Ajudante");
                
pInfo[playerid][Moderador] = DOF2_GetBool(gfile"Moderador");
                
pInfo[playerid][Corregedor] = DOF2_GetBool(gfile"Corregedor");
                
pInfo[playerid][Administrador] = DOF2_GetBool(gfile"Administrador");
                
pInfo[playerid][Master] = DOF2_GetBool(gfile"Master");
                
pInfo[playerid][Oculto] = DOF2_GetBool(gfile"Oculto");
                
pInfo[playerid][pVida] = DOF2_GetFloat(gfile"Vida");
                
SpawnPlayer(playerid);
                
SendClientMessage(playerid, -1"{FFFFFF}Login efeituado com sucesso!");
                
SetPlayerHealth(playeridpInfo[playerid][pVida]);
                
SetPlayerArmour(playeridpInfo[playerid][pColete]);
                
GivePlayerMoney(playeridpInfo[playerid][pDinheiro]);
                
SetPlayerSkin(playeridpInfo[playerid][pSkin]);
            }
            else
            {
                
format(strsizeof(str), "Ola, seja bem vindo ao servidor novamente!");
                
ShowPlayerDialog(playeridLoginDIALOG_STYLE_PASSWORD"{FFFFFF}LOGIN"str"Login""Cancelar");
            }
        }
    }
    return 
1;

PHP код:
public OnPlayerDisconnect(playeridreason)
{
    new 
string[64], Float:healthFloat:armour;
    
format(stringsizeof(string), "»O player %s se desconectou ao servidor!"Pname(playerid));
    
SendClientMessageToAll(-1string);
    
format(gfilesizeof(gfile), "Contas/%s.txt"Pname(playerid));
    if(
DOF2_FileExists(gfile))
    {
        
GetPlayerHealth(playeridhealth);
        
GetPlayerArmour(playeridarmour);
        
DOF2_SetInt(gfile"Dinheiro"GetPlayerMoney(playerid));
        
DOF2_SetFloat(gfile"Vida"health);
        
DOF2_SetFloat(gfile"Colete"armour);
        
DOF2_SetInt(gfile"Skin"GetPlayerSkin(playerid));
        
DOF2_SetInt(gfile"Level"GetPlayerScore(playerid));
        
DOF2_SetBool(gfile"Ajudante"pInfo[playerid][Ajudante]);
        
DOF2_SetBool(gfile"Moderador"pInfo[playerid][Moderador]);
        
DOF2_SetBool(gfile"Corregedor"pInfo[playerid][Corregedor]);
        
DOF2_SetBool(gfile"Administrador"pInfo[playerid][Administrador]);
        
DOF2_SetBool(gfile"Master"pInfo[playerid][Master]);
        
DOF2_SetBool(gfile"Oculto"pInfo[playerid][Oculto]);
        
DOF2_SetInt(gfile"Skin"GetPlayerSkin(playerid));
        
DOF2_SaveFile();
    }
    return 
1;

PHP код:
enum PlayerInfo {
    
pDinheiro,
    
pLevel,
    
Float:pVida,
    
Float:pColete,
    
pSkin,
    
pProfissao,
    
bool:Ajudante,
    
bool:Moderador,
    
bool:Corregedor,
    
bool:Administrador,
    
bool:Master,
    
bool:Oculto
};
new 
pInfo[MAX_PLAYERS][PlayerInfo]; 
Reply
#2

Alguem?
Reply
#3

Й porquк vocк estб fazendo errado.

Retire essas linhas
PHP код:
GivePlayerMoney(playerid5000); 
SetPlayerHealth(playerid100); 
SetPlayerArmour(playerid100); 
E coloque essas
PHP код:
GivePlayerMoney(playeridpInfo[playerid][pDinheiro]); 
SetPlayerHealth(playeridpInfo[playerid][pVida]); 
SetPlayerArmour(playeridpInfo[playerid][pColete]); 
Pude avaliar e este sistema estб errado...
1є ponto a ser observado: Vocк estб puxando a variбvel pDinheiro duas vezes, sу й necessбrio chamar uma vez.
2є ponto a ser observado: Vocк puxa a variбvel da Skin mas estб setando outras.
3є ponto a ser observado: Vocк nгo carrega o nнvel do jogador.

Fora que este sistema poderia ser otimizado.
Reply
#4

nao sei mais o que fazer! aaaa mds so mto novato nisso ainda
PHP код:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    
format(gfilesizeof(gfile), "Contas/%s.txt"Pname(playerid));
    switch(
dialogid) {
        case 
Registro: {
            if(!
response)
            {
                
SendClientMessage(playerid0xFF0000AA"[ ERRO ]Vocк escolheu sair!");
                
Kick(playerid);
            }
            if(!
strlen(inputtext))
            {
                
SendClientMessage(playerid, -1"[ {FFFFFF}ERRO ]Digite uma senha para se registrar!");
                
format(strsizeof(str), "Ola, seja bem vindo pela primeira vez Sr.%s !"Pname(playerid));
                
ShowPlayerDialog(playeridRegistroDIALOG_STYLE_PASSWORD"{FFFFFF}REGISTRO"str"Registro""Cancelar");
            }
            else
            {
                
DOF2_CreateFile(gfile);
                
DOF2_SetString(gfile"Senha"inputtext);
                
DOF2_SetInt(gfile"Skin"pInfo[playerid][pSkin] = 137);
                
DOF2_SetInt(gfile"Dinheiro"pInfo[playerid][pDinheiro] = 5000);
                
DOF2_SetFloat(gfile"Vida"pInfo[playerid][pVida] = 100.00000000);
                
DOF2_SetFloat(gfile"Colete"pInfo[playerid][pColete] = 100.00000000);
                
DOF2_SetInt(gfile"Level"pInfo[playerid][pLevel]);
                
DOF2_SetInt(gfile"Ajudante"pInfo[playerid][Ajudante] = false);
                
DOF2_SetInt(gfile"Moderador"pInfo[playerid][Moderador] = false);
                
DOF2_SetInt(gfile"Corregedor"pInfo[playerid][Corregedor] = false);
                
DOF2_SetInt(gfile"Administrador"pInfo[playerid][Administrador] = false);
                
DOF2_SetInt(gfile"Master"pInfo[playerid][Master] = false);
                
DOF2_SetInt(gfile"Oculto"pInfo[playerid][Oculto] = false);
                
DOF2_SaveFile();
                
SpawnPlayer(playerid);
                
SetPlayerSkin(playeridpInfo[playerid][pSkin]);
                
GivePlayerMoney(playeridpInfo[playerid][pDinheiro]);
                
SetPlayerHealth(playeridpInfo[playerid][pVida]);
                
SetPlayerArmour(playeridpInfo[playerid][pColete]);
                
SetPlayerScore(playeridpInfo[playerid][pLevel]);
            }
        }
        case 
Login: {
            if(!
response)
            {
                
SendClientMessage(playerid0xFF0000AA"[ ERRO ]Vocк escolheu sair!");
                
Kick(playerid);
            }
            if(!
strlen(inputtext))
            {
                
SendClientMessage(playerid, -1"[{FFFFFF}ERRO ] Digite Sua senha para logar no servidor!");
                
format(strsizeof(str), "Ola, seja bem vindo ao servidor novamente!");
                
ShowPlayerDialog(playeridLoginDIALOG_STYLE_PASSWORD"{FFFFFF}LOGIN"str"Login""Cancelar");
            }
            if(
strcmp(inputtextDOF2_GetString(gfile"Senha")) == 0)
            {
                
pInfo[playerid][pSkin] = DOF2_GetInt(gfile"Skin");
                
pInfo[playerid][pVida] = DOF2_GetFloat(gfile"Vida");
                
pInfo[playerid][pColete] = DOF2_GetFloat(gfile"Colete");
                
pInfo[playerid][pDinheiro] = DOF2_GetInt(gfile"Dinheiro");
                
pInfo[playerid][Ajudante] = DOF2_GetBool(gfile"Ajudante");
                
pInfo[playerid][Moderador] = DOF2_GetBool(gfile"Moderador");
                
pInfo[playerid][Corregedor] = DOF2_GetBool(gfile"Corregedor");
                
pInfo[playerid][Administrador] = DOF2_GetBool(gfile"Administrador");
                
pInfo[playerid][Master] = DOF2_GetBool(gfile"Master");
                
pInfo[playerid][Oculto] = DOF2_GetBool(gfile"Oculto");
                
pInfo[playerid][pVida] = DOF2_GetFloat(gfile"Vida");
                
SpawnPlayer(playerid);
                
SetPlayerSkin(playeridpInfo[playerid][pSkin]);
                
GivePlayerMoney(playeridpInfo[playerid][pDinheiro]);
                
SetPlayerScore(playeridpInfo[playerid][pLevel]);
                
SetPlayerArmour(playeridpInfo[playerid][pColete]);
                
SetPlayerHealth(playeridpInfo[playerid][pVida]);
                
SendClientMessage(playerid, -1"{FFFFFF}Login efeituado com sucesso!");
            }
            else
            {
                
format(strsizeof(str), "Ola, seja bem vindo ao servidor novamente!");
                
ShowPlayerDialog(playeridLoginDIALOG_STYLE_PASSWORD"{FFFFFF}LOGIN"str"Login""Cancelar");
            }
        }
    }
    return 
1;

PHP код:
public OnPlayerDisconnect(playeridreason)
{
    new 
string[64], Float:healthFloat:armour;
    
format(stringsizeof(string), "»O player %s se desconectou ao servidor!"Pname(playerid));
    
SendClientMessageToAll(-1string);
    
format(gfilesizeof(gfile), "Contas/%s.txt"Pname(playerid));
    if(
DOF2_FileExists(gfile))
    {
        
GetPlayerHealth(playeridhealth);
        
GetPlayerArmour(playeridarmour);
        
DOF2_SetInt(gfile"Dinheiro"GetPlayerMoney(playerid));
        
DOF2_SetFloat(gfile"Vida"health);
        
DOF2_SetFloat(gfile"Colete"armour);
        
DOF2_SetInt(gfile"Skin"GetPlayerSkin(playerid));
        
DOF2_SetInt(gfile"Level"GetPlayerScore(playerid));
        
DOF2_SetBool(gfile"Ajudante"pInfo[playerid][Ajudante]);
        
DOF2_SetBool(gfile"Moderador"pInfo[playerid][Moderador]);
        
DOF2_SetBool(gfile"Corregedor"pInfo[playerid][Corregedor]);
        
DOF2_SetBool(gfile"Administrador"pInfo[playerid][Administrador]);
        
DOF2_SetBool(gfile"Master"pInfo[playerid][Master]);
        
DOF2_SetBool(gfile"Oculto"pInfo[playerid][Oculto]);
        
DOF2_SetInt(gfile"Skin"GetPlayerSkin(playerid));
        
DOF2_SaveFile();
    } 
tudo e salvo corretamente, mas na hora de carregar e setar(no login e registro), nao seta, fica tudo com skin de cj e a vida cheia, a skin, vida e dinheiro parace que estao bugados, ngm tem um tutorial desse sistema pra mim estudar antes de fazer o meu?
Reply
#5

Como nгo consegue fazer da maneira certa o seu sistema faзa como esse sistema que eu fiz aki:

PHP код:
//  INCLUDES
#include <a_samp>
#include <DOF2>
//  DIALOGS
#define DIALOG_REGISTRO                                                         0
#define DIALOG_LOGIN                                                            1
// ENUNS
enum pInfo
{
    
Float:pVida,
    
Float:pColete,
    
pSkin,
    
pLevel,
    
pDinheiro
};
//  NEWS
new PlayerInfo[MAX_PLAYERS][pInfo];
//  PUBLIC
public OnGameModeExit()
{
    
DOF2::Exit();
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    new 
File[100];
    
format(Filesizeof(File), "Contas/%s.ini"Nome(playerid));
    if(!
DOF2::FileExists(File))
    {
        
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_STYLE_PASSWORD"REGISTRO""Senha para Registrar-se.""Registrar""Sair");
    }
    if(
DOF2::FileExists(File))
    {
        
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"LOGIN""Senha para Logar-se.""Logar""Sair");
    }
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    new 
File[100];
    
format(Filesizeof(File), "Contas/%s.ini"Nome(playerid));
    
    if(
dialogid == DIALOG_REGISTRO)
    {
        if(!
response)
        {
            
Kick(playerid);
            return 
1;
        }
        if(
strlen(inputtext) < || strlen(inputtext) > 20)
        {
            
SendClientMessage(playerid, -1"| ERRO | Digite uma senha entre 4 й 20 caracteres!");
            
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_STYLE_PASSWORD"REGISTRO""Senha para Registrar-se.""Registrar""Sair");
        }
        else
        {
            
DOF2::CreateFile(File);
            
            
DOF2::SetString(File"Senha"inputtext);
            
DOF2::SetFloat(File"Vida"100.0);
            
DOF2::SetFloat(File"Colete"100.0);
            
DOF2::SetInt(File"Skin"0);
            
DOF2::SetInt(File"Level"0);
            
DOF2::SetInt(File"Dinheiro"0);
            
            
DOF2::SaveFile();
            
            
GivePlayerMoney(playerid5000);
        }
    }
    if(
dialogid == DIALOG_LOGIN)
    {
        if(!
response)
        {
            
Kick(playerid);
            return 
1;
        }
        if(!
strlen(inputtext))
        {
            
SendClientMessage(playerid, -1"| ERRO | Vocк nгo pode logar sem colocar uma senha!");
            
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"LOGIN""Senha para Logar-se.""Logar""Sair");
        }
        if(
strcmp(inputtextDOF2::GetString(File"Senha"), true) == 0)
        {
            
CarregarConta(playerid);
        }
        else
        {
            
SendClientMessage(playerid, -1"| ERRO | Senha Incorreta!");
            
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"LOGIN""Senha para Logar-se.""Logar""Sair");
        }
    }
    return 
1;
}
stock CarregarConta(playerid)
{
    new 
File[100];
    
format(Filesizeof(File), "Contas/%s.ini"Nome(playerid));
    if(
DOF2::FileExists(File))
    {
        
SetPlayerHealth(playeridPlayerInfo[playerid][pVida]);
        
SetPlayerArmour(playeridPlayerInfo[playerid][pColete]);
        
SetPlayerSkin(playeridPlayerInfo[playerid][pSkin]);
        
SetPlayerScore(playeridPlayerInfo[playerid][pLevel]);
        
GivePlayerMoney(playeridPlayerInfo[playerid][pDinheiro]);
        
        
PlayerInfo[playerid][pVida] = DOF2::GetFloat(File"Vida");
        
PlayerInfo[playerid][pColete] = DOF2::GetFloat(File"Colete");
        
PlayerInfo[playerid][pSkin] = DOF2::GetInt(File"Skin");
        
PlayerInfo[playerid][pLevel] = DOF2::GetInt(File"Level");
        
PlayerInfo[playerid][pDinheiro] = DOF2::GetInt(File"Dinheiro");
        
        
SpawnPlayer(playerid);
    }
    return 
1;
}
stock SalvarConta(playerid)
{
    new 
File[100];
    
format(Filesizeof(File), "Contas/%s.ini"Nome(playerid));
    if(
DOF2::FileExists(File))
    {
        
PlayerInfo[playerid][pVida] = GetPlayerHealth(playerid);
        
PlayerInfo[playerid][pColete] = GetPlayerArmour(playerid);
        
PlayerInfo[playerid][pSkin] = GetPlayerSkin(playerid);
        
PlayerInfo[playerid][pLevel] = GetPlayerScore(playerid);
        
PlayerInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
    
        
DOF2::SetFloat(File"Vida"PlayerInfo[playerid][pVida]);
        
DOF2::SetFloat(File"Colete"PlayerInfo[playerid][pColete]);
        
DOF2::SetInt(File"Skin"PlayerInfo[playerid][pSkin]);
        
DOF2::SetInt(File"Level"PlayerInfo[playerid][pLevel]);
        
DOF2::SetInt(File"Dinheiro"PlayerInfo[playerid][pDinheiro]);
        
        
DOF2::SaveFile();
    }
    return 
1;
}
stock Nome(playerid)
{
    new 
yName[MAX_PLAYER_NAME];
    
GetPlayerName(playeridyNamesizeof(yName));
    return 
yName;

Nгo testei pq to sem o GTA, ta baixando aqui! teste ai.
Reply
#6

Bem, ainda nao testei, falta mais uma parte, mas assim, poderia fazer assim para pegar os cargos?

PHP код:
pInfo[playerid][Ajudante] = DOF2_SetBool(gfile"Ajudante"); 
Reply
#7

PHP код:
DOF2_GetBool(gfile"Ajudante"); 
SetBool = Seta um valor booleano, ou seja 0 ou 1. Use SetInt se for assumir qualquer outro valor inteiro.
GetBool = Carrega um valor ou seja 0 ou 1..
Reply
#8

Obrigado pela dica, mas para cargo estou usando bool(true ou false), mesmo assim obrigado!
Reply
#9

Seria melhor definir 1 e utilizar int (1 = ajudante, 2 = moderador, 3 = dono, etc).
Reply
#10

Quote:
Originally Posted by ipsLuan
Посмотреть сообщение
Seria melhor definir 1 e utilizar int (1 = ajudante, 2 = moderador, 3 = dono, etc).
existe vantagens para esse tipo de organizaзгo?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)