Olá Pessoal, no meu sistema de cadastro/login possuem as funções de carregar e salvar a conta do player em DOF2. Porém um erro que veio a acontecer, é que  cada vez que o player loga, ele recebe a mais (EX: Cada player começa com 50k, e ao logar ele recebe mais 50k e assim sucessivamente). Ja repassei o código varias vezes porém não acho nada de errado. Se alguém souber e poder me ajudar ficarei agardecido!
FUNÇÕES
	
	
	
Código:
#define Contas "Contas/%s.ini" //armazenamento dos dados na pasta contas//
#define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)
#define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)
#define Dialog_Registro      0 //DIALOG DO REGISTRO
#define Dialog_Login           1 //DIALOG DO LOGIN
enum InfoPlayer{
     Senha,
     Dinheiro
};
new Player[MAX_PLAYERS][InfoPlayer]; //VARIAVEL QUE ARMAZENA OS DADOS DO PLAYER(ENUM)
new Erro[MAX_PLAYERS]; //ARMAZENA O ERRO DA SENHACódigo:
public OnGameModeExit()
{
    DOF2_Exit(); //Finalizando a include DOF2//
    return 1;
}
public OnPlayerRequestClass(playerid, classid){
    if(DOF2_FileExists( GetPlayerArquivo( playerid ) ) ){ //verifica se tem conta ou não
        ShowPlayerDialog( playerid, Dialog_Login, DIALOG_STYLE_PASSWORD, "{B40404}SanAndreas Vida Real |Entrar|", "{FFFFFF}Bem-Vindo(a) de Volta ao Nosso Servidor!\n\nPor Favor Digite a Sua Senha Para Entrar!","Entrar","Sair");
    }else{
        ShowPlayerDialog( playerid, Dialog_Registro, DIALOG_STYLE_PASSWORD, "{B40404}SanAndreas Vida Real |Cadastro|", "{FFFFFF}Seja Muito Bem-Vindo(a) Em Nosso Servidor!\n\nPor Favor Insira uma Senha Segura Para Se Cadastrar!", "Cadastrar","Sair");
    }
    
    InterpolateCameraPos(playerid, 1441.803222, -1725.681884, 14.531348, 1561.565307, -1709.853637, 60.931102, 10000);
    InterpolateCameraLookAt(playerid, 1445.357421, -1728.683471, 16.363838, 1557.271606, -1711.242919, 58.778495, 10000);
    return 1;
}Código:
public OnPlayerConnect(playerid)
{
    LoadPlayer(playerid); //Carrega a Conta do Player
    return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    SavePlayer(playerid); //SALVA A CONTA DO PLAYER
    return 1;
}Código:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid){
        case Dialog_Registro:{
            if( response ){
            if( strlen( inputtext ) < 5 || strlen( inputtext ) > 20 || !strlen( inputtext ) ){
                  ShowPlayerDialog( playerid, Dialog_Registro ,DIALOG_STYLE_PASSWORD, "SanAndreas Vida Real |Registro|", "Sua Senha Deve Conter No Mínimo 5 Caracteres!\nE No Máximo 20!\nTente Novamente!","Registrar","Sair" );
                return 1;
            }
            // Criar Arquivo E Colocar Os Valores //
            DOF2_CreateFile( GetPlayerArquivo( playerid ) );
            DOF2_SetString( GetPlayerArquivo( playerid ),"Senha", inputtext );
            DOF2_SetInt( GetPlayerArquivo( playerid ), "Dinheiro",50000);
         
            SendClientMessage(playerid, 0x19B519FF, "{FFFFFF}|SanAndreas Vida Real| Registrado Com Sucesso!.");
            ShowPlayerDialog( playerid, Dialog_Login ,DIALOG_STYLE_PASSWORD, "{FFFFFF}SanAndreas Vida Real |Login|", "Digite Sua Senha Registrada Abaixo Para Fazer O Login!","Logar","Sair" );
         }
         
         else Kick( playerid );
    }
    case Dialog_Login:{
        if( response ){
            if( strlen( inputtext ) < 5 || strlen( inputtext ) > 20 || !strlen( inputtext ) ){
                   SendClientMessage( playerid, -1, "{19B519}|SanAndreas Vida_Real|» {FFFFFF}Digite Sua Senha Corretamente!." );
                   ShowPlayerDialog( playerid, Dialog_Login, DIALOG_STYLE_PASSWORD, "|SanAndreas Vida_Real| Login","Digite Sua Senha Para Entrar!","Entrar","Sair");
                return 1;
            }
            
            if( strcmp( inputtext, DOF2_GetString( GetPlayerArquivo( playerid ), "Senha" )) == 0 ){
                LoadPlayer( playerid );
                
                SendClientMessage(playerid, 0x19B519FF, "SanAndreas Vida Real » {FFFFFF}Logado Com Sucesso!.");
            }else{
                Erro[ playerid ] ++; // Aquivo adiciona + 1 a variavel erro...
                if ( Erro[ playerid ] == 5 ){ 
                    SavePlayer(playerid); 
                    Kick ( playerid ); 
                    } // se a variavel chegar a 5, kicka o player pois ele errou 5 vezes a senha.
                SendClientMessage( playerid, -1, "{FFFFFF}|SanAndreas Vida Real| Digite Sua Senha Corretamente!." );
                ShowPlayerDialog( playerid, Dialog_Login, DIALOG_STYLE_PASSWORD, "|SanAndreas Vida Real Login|","Digite Sua Senha Para Entrar!","Entrar","Sair");
                }
            }else{
             SavePlayer( playerid );
             Kick( playerid );
            }
        }
    }
    return 1;
}FUNÇÕES
Código:
GetPlayerArquivo(playerid){
    new ArquivoPlayer[ 30 ];
    format( ArquivoPlayer, sizeof( ArquivoPlayer ), Contas, GetPlayerNameEx( playerid ) );
    return ArquivoPlayer;
}
stock GetPlayerNameEx(playerid){
    new Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, sizeof(Nome));
    return Nome;
}
SavePlayer(playerid){
    if( DOF2_FileExists( GetPlayerArquivo( playerid ) ) ){
        DOF2_CreateFile(GetPlayerArquivo(playerid));
        DOF2_SetInt( GetPlayerArquivo( playerid ), "Dinheiro", GetPlayerMoney( playerid ));
        DOF2_SaveFile();
    }
    
    return 1;
}
LoadPlayer(playerid){
    if( DOF2_FileExists( GetPlayerArquivo( playerid ) ) ){
        Player[ playerid ][ Dinheiro ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Dinheiro" );
        GivePlayerMoney( playerid, Player[ playerid] [ Dinheiro ] );
    }
    return 1;
}
forward Kicka(p); public Kicka(p) { //KICKAR
    #undef Kick
    Kick(p);
    #define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)
    return 1;
}
forward Bana(p); public Bana(p) {//BANIR
    #undef Ban
    Ban(p);
    #define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)
    return 1;
}Acadêmico em Engenharia de Software na Universidade do Estado de Santa Catarina - UDESC
Discord: Burunu#7448

	   
	
