Quantcast
Channel: SA-MP Forums
Viewing all articles
Browse latest Browse all 18226

[Ajuda] Erro ao salvar

$
0
0
Oi galera tudo bom? Espero que sim.

Bom vamos começar.

Eu fiz essa minha GM do zero estudando tudo o que a de disponível no fórum e vendo alguns videos no YouTube, mas infelizmente ela tem alguns erros que alguns eu mesmo irei resolver, mas tem um erro que esta me perturbando e que não consigo resolver de jeito nenhum. O erro é no sistema de login/registro, eu mesmo fiz o sistema de login/registro com os meus conhecimentos, abaixo estará os códios para vocês com um nível superior ao meu analisar.

Aqui esta a public "OnDialogResponse"

Code:

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid){

    case DIALOG_REGISTRO:
    {
        if( response )
        {
            if( strlen( inputtext ) < 3 || strlen( inputtext ) > 15 || !strlen( inputtext ) )
            {

                      ShowPlayerDialog( playerid, DIALOG_REGISTRO ,DIALOG_STYLE_INPUT, "» SERVER", "{FFFFFF}Sua Senha Deve Conter No Mínimo {F50717}5 {FFFFFF}Caracteres!{F50717}\nTente Novamente!","Registrar","Cancelar" );

                return 1;
            }

                        // Criar Arquivo E Colocar Os Valores //
            DOF2_CreateFile( GetPlayerArquivo( playerid ) );
            DOF2_SetString( GetPlayerArquivo( playerid ),"Senha", inputtext );
            DOF2_SetInt( GetPlayerArquivo( playerid ), "Score" ,0 );
            DOF2_SetInt( GetPlayerArquivo( playerid ), "Skin" ,0 );
            DOF2_SetInt( GetPlayerArquivo( playerid ),"Dinheiro", 1500 );
            DOF2_SetInt( GetPlayerArquivo( playerid ), "Admin",0 );
                        DOF2_SaveFile();

                        SendClientMessage(playerid, -1, "{16F00E} | INFO | {16F00E}Você se registrou no servidor,tenha um ótimo jogo!.");

                        new Loginplayer[980];
                        format(Loginplayer, sizeof(Loginplayer), "\n{00FF00}Sua conta foi registrada.{FFFFFF}\n\nSeja bem vindo(a) ao SERVER\n\n\n{FC8403}Usuário(a): {FFFFFF}%s\n\n\n{FC8403}Status da conta: {00FF00}Registrada\n\n{FFFFFF}Insira sua senha abaixo para logar:",GetPlayerNameEx(playerid));
            ShowPlayerDialog( playerid, DIALOG_LOGAR ,DIALOG_STYLE_PASSWORD, "»{F50A0E}Conta", Loginplayer,"Entrar","Cancelar" );

        }
        else Kick( playerid );
    }

        case DIALOG_LOGAR:
    {
        if( response )
        {
            if( strlen( inputtext ) < 3 || strlen( inputtext ) > 15 || !strlen( inputtext ) )
            {

                              SendClientMessage( playerid, -1, "{F50717} | ERRO | {F50717}Digite Sua Senha Corretamente!." );

                                new Loginplayer[980];
                              format(Loginplayer, sizeof(Loginplayer), "\n{FC8403}Usuário(a): {FFFFFF}%s\n\n\n{FC8403}Status da conta: {00FF00}Registrada\n\n{F50A0E}Insira sua senha corretamente!",GetPlayerNameEx(playerid));
                              ShowPlayerDialog( playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "»{F50A0E}Conta", Loginplayer,"Entrar","Cancelar" );

                return 1;
            }
            if( strcmp( inputtext, DOF2_GetString( GetPlayerArquivo( playerid ), "Senha" )) == 0 )
            {

                Player[playerid][Skin] = DOF2_GetInt(GetPlayerArquivo(playerid), "Skin");
                Player[playerid][Admin] = DOF2_GetInt(GetPlayerArquivo(playerid), "Admin");
                Player[playerid][Dinheiro] = DOF2_GetInt(GetPlayerArquivo(playerid), "Dinheiro");
                                GivePlayerMoney(playerid, Player[playerid][Dinheiro]);
                                SetPlayerSkin(playerid, Player[playerid][Skin]);

            }
            else
            {
                Erro[ playerid ] ++; // Aquivo adiciona + 1 a variavel erro...
                if ( Erro[ playerid ] == 3 ){ SavePlayer(playerid); Kick ( playerid ); } // se a variavel chegar a 3, kicka o player pois ele errou 5 vezes a senha.

                                new Loginplayer[980];
                              format(Loginplayer, sizeof(Loginplayer), "\n{FC8403}Usuário(a): {FFFFFF}%s\n\n\n{FC8403}Status da conta: {00FF00}Registrada\n\n{F50A0E}Insira sua senha corretamente!",GetPlayerNameEx(playerid));
                              ShowPlayerDialog( playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "»{F50A0E}Conta", Loginplayer,"Entrar","Cancelar" );

            }
        }
        else{
                SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Você exedeu a quantidade de erros, portanto você foi kickado do servidor!");
        SavePlayer( playerid );
                Kick( playerid );

                }
    }

    }
        return 1;
}


Aqui está o "GetPlayerArquivo"

Code:

GetPlayerArquivo(playerid)
{
    new ArquivoPlayer[ 30 ];
    format( ArquivoPlayer, sizeof( ArquivoPlayer ), "Contas/%s.ini", GetPlayerNameEx( playerid ) );
    return ArquivoPlayer;
}


Aqui está o "SavePlayer" como mostra na public "OnDialogResponse"

Code:

SavePlayer(playerid)
{
    if( DOF2_FileExists(GetPlayerArquivo(playerid))) DOF2_CreateFile(GetPlayerArquivo(playerid));
    {

                Player[playerid][Dinheiro] = GetPlayerMoney(playerid);
                Player[playerid][Skin] = GetPlayerSkin(playerid);
        DOF2_SetInt(GetPlayerArquivo(playerid), "Skin", Player[playerid][Skin]);
        DOF2_SetInt(GetPlayerArquivo(playerid), "Score", Player[playerid][Score]);
        DOF2_SetInt(GetPlayerArquivo(playerid), "Dinheiro", Player[playerid][Dinheiro]);
        DOF2_SetInt(GetPlayerArquivo(playerid), "Admin", Player[playerid][Admin]);
        DOF2_SaveFile();

    }
    return 1;
}


E por ultimo aqui está a public "OnPlayerDisconnect"

Code:

public OnPlayerDisconnect(playerid, reason)
{
    SavePlayer(playerid);
        return 1;
}


O erro nisso tudo, é que quando eu deslogo do servidor e logo novamente, só esta salvo o meu dinheiro em mãos, mas infelizmente não salva a skin, vou colocar o comando /setskin para vocês analisarem.

Um outro problema é quando morre com a skin. Por exemplo, eu coloco no /setskin pra me dar a skin 230 que é a do mendigo, até ai tudo bem, Posso fazer tudo o que estiver disponível no server, mas se eu morrer, eu spawno com a skin de novato(uma skin que eu escolhi pra quando logarem no server), só que tipo eu morro, mas só pra min que a skin de novato aparece, pra outra pessoa que estiver dentro do server, ela ainda vai continuar vendo a skin 230 do mendigo mas eu vou ver a de novato. Se puderem me ajudar nisso também eu agradeço. <3

Code:

CMD:setskin(playerid, params[])
{
        if(!IsPlayerAdmin(playerid) ) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Comando inválido!");
        new id, skin, jogador[24], admin[24], string[128], strg[128];
        if(sscanf(params, "dd", id, skin)) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Use: /setskin [id] [skin]");
    {
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Jogador invalido!");
                if(skin < 0 || skin > 299) return SendClientMessage(playerid, 0xF50A0EFF,"| ERRO | Só é permidito as skin de 0 a 299!");
                GetPlayerName(id, jogador, 24);
                format(string, sizeof(string), "| SERVER | O(A) Administrador(a) %s trocou sua skin!", GetPlayerNameEx(playerid));
                SetPlayerSkin(id, skin);
                GetPlayerName(playerid, admin, 24);
                SendClientMessage(playerid, 0x0099CCAA, string);
                format(strg, sizeof(strg), "| INFO | Comando efetuado com sucesso!");
                SendClientMessage(playerid, 0x0099CCAA, strg);
        }
        return 1;
}

Já pesquisei em tudo quanto é lugar mas infelizmente não consigo solucionar o problema.

Creio eu que o problema é no comando /setskin, pois eu fiz tudo certinho no resto.

Se alguém puder me ajudar agradeço desde ja. <3

Viewing all articles
Browse latest Browse all 18226

Trending Articles