[Ajuda] Bug Sistema Salvamento
#1

Olб amigos e amigas do fуrum, eu estou a enfrentar um seguinte problema "Quando й para carregar o ficheiro e setar todos os itens ele nгo carrega, tipo eu seto o jogador de moderador, mas na hora de carregar ele fica sem moderador. Nгo sei se o erro esta no CarregarConta ou no SalvarContas, por isso postei as duas stock's. Caso queiram meu sistema de login eu posso passar aqui!

pawn Код:
stock CarregarConta(playerid)
{
    new Contas[40], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, 32);
    format(Contas, 40, "Jogadores/%s.ini", Nome);
    if(DOF2_FileExists(Contas))
    {
        Informacoes[playerid][Gps] = DOF2_GetInt(Contas, "Gps");
        Informacoes[playerid][Skin] = DOF2_GetInt(Contas, "Skin");
        Informacoes[playerid][Sexo] = DOF2_GetInt(Contas, "Sexo");
        Informacoes[playerid][Level] = DOF2_GetInt(Contas, "Level");
        Informacoes[playerid][Lider] = DOF2_GetInt(Contas, "Lider");
        GivePlayerMoney(playerid, DOF2_GetInt(Contas, "Grana"));
        Informacoes[playerid][Membro] = DOF2_GetInt(Contas, "Membro");
        Informacoes[playerid][Moderador] = DOF2_GetInt(Contas, "Moderador");
    }
    return 1;
}
Salvar Ficheiro:

pawn Код:
stock SalvarConta(playerid)
{
    new Contas[40], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, 32);
    format(Contas, 40, "Jogadores/%s.ini", Nome);
    if(DOF2_FileExists(Contas))
    {
        Informacoes[playerid][Skin] = GetPlayerSkin(playerid);
        DOF2_SetInt(Contas, "Gps", Informacoes[playerid][Sexo]);
        DOF2_SetInt(Contas, "Skin", Informacoes[playerid][Skin]);
        DOF2_SetInt(Contas, "Sexo", Informacoes[playerid][Sexo]);
        DOF2_SetInt(Contas, "Level", Informacoes[playerid][Skin]);
        DOF2_SetInt(Contas, "Senha", Informacoes[playerid][Senha]);
        DOF2_SetInt(Contas, "Grana", Informacoes[playerid][Grana]);
        DOF2_SetInt(Contas, "Lider", Informacoes[playerid][Lider]);
        DOF2_SetInt(Contas, "Membro", Informacoes[playerid][Membro]);
        DOF2_SetInt(Contas, "Moderador", Informacoes[playerid][Moderador]);
        DOF2_SaveFile();
    }
    return 1;
}
Reply
#2

Vocк estб colocando a stock nas publics, para que faзa as stocks funcionarem?
Reply
#3

sim:

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new Contas[70], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, sizeof(Nome));
    format(Contas, sizeof(Contas),"Jogadores/%s.ini",Nome);
//Login
    if(dialogid == 1)
    {
        if(response == 0)
        {
            SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!");
            Kick(playerid);
        }
        if(!strlen(inputtext))
        {
            ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Logar","Cancelar");
        }
        else
        {
            Informacoes[playerid][Senha] = DOF2_GetInt(Contas, "Senha");
            if(strlen(inputtext) == Informacoes[playerid][Senha])
            {
                CarregarConta(playerid);
                SpawnPlayer(playerid);
            }
        }
    }
//Registro
    if(dialogid == 2)
    {
        if(response == 0)
        {
            SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!");
            Kick(playerid);
        }
        if(!strlen(inputtext))
        {
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Registrando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Registrar","Cancelar");
        }
        else
        {
            Informacoes[playerid][Senha] = strlen(inputtext);
            DOF2_CreateFile(Contas);
            DOF2_SetString(Contas, "Senha", Informacoes[playerid][Senha]);
            DOF2_SaveFile();
            GivePlayerMoney(playerid, 1000);
            SetPlayerVirtualWorld(playerid, 1);
            SetPlayerPos(playerid, 1643.0941,-2262.9111,13.4867);
            SetPlayerCameraPos(playerid, 1643.0941,-2262.9111,13.4867);
            SetPlayerCameraLookAt(playerid, 1643.2544,-2249.0349,13.3228);
            ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,"{FFFFFF}Escolha seu Sexo","{FFFF00}Vocк й Homem ou Mulher?","Homem","Mulher");
         }
    }
//Sexo
    if(dialogid == 3)
    {
        if(response == 0)
        {
            SpawnPlayer(playerid);
            SetPlayerSkin(playerid, 40);
            Informacoes[playerid][Sexo] = 2;
            Informacoes[playerid][Skin] = 40;
            SendClientMessage(playerid,-1,"Sistema: Vocк й mulher!");
            ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...", "Obrigado por registrar-se em nosso servidor\nDigite a senha abaixo para logar-se", "Logar", "Cancelar");
        }
        else
        {
               SpawnPlayer(playerid);
            SetPlayerSkin(playerid, 23);
            Informacoes[playerid][Sexo] = 1;
            Informacoes[playerid][Skin] = 23;
            SendClientMessage(playerid,-1,"Sistema: Vocк й homem!");
            ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...", "Obrigado por registrar-se em nosso servidor\nDigite a senha abaixo para logar-se", "Logar", "Cancelar");
    }
        return 1;
}
Reply
#4

brazucas olhe esse meu topico estava com a mesma duvida e й dof 2 talvez ajude vc https://sampforum.blast.hk/showthread.php?tid=362464

o cara resolveu meu problema
Reply
#5

velho, o meu й em tudo que ta bugado kkk;
Reply
#6

Quote:
Originally Posted by Brazuca[]s
Посмотреть сообщение
sim:

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new Contas[70], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, sizeof(Nome));
    format(Contas, sizeof(Contas),"Jogadores/%s.ini",Nome);
//Login
    if(dialogid == 1)
    {
        if(response == 0)
        {
            SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!");
            Kick(playerid);
        }
        if(!strlen(inputtext))
        {
            ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Logar","Cancelar");
        }
        else
        {
            Informacoes[playerid][Senha] = DOF2_GetInt(Contas, "Senha");
            if(strlen(inputtext) == Informacoes[playerid][Senha])
            {
                CarregarConta(playerid);
                SpawnPlayer(playerid);
            }
        }
    }
//Registro
    if(dialogid == 2)
    {
        if(response == 0)
        {
            SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!");
            Kick(playerid);
        }
        if(!strlen(inputtext))
        {
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Registrando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Registrar","Cancelar");
        }
        else
        {
            Informacoes[playerid][Senha] = strlen(inputtext);
            DOF2_CreateFile(Contas);
            DOF2_SetString(Contas, "Senha", Informacoes[playerid][Senha]);
            DOF2_SaveFile();
            GivePlayerMoney(playerid, 1000);
            SetPlayerVirtualWorld(playerid, 1);
            SetPlayerPos(playerid, 1643.0941,-2262.9111,13.4867);
            SetPlayerCameraPos(playerid, 1643.0941,-2262.9111,13.4867);
            SetPlayerCameraLookAt(playerid, 1643.2544,-2249.0349,13.3228);
            ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,"{FFFFFF}Escolha seu Sexo","{FFFF00}Vocк й Homem ou Mulher?","Homem","Mulher");
         }
    }
//Sexo
    if(dialogid == 3)
    {
        if(response == 0)
        {
            SpawnPlayer(playerid);
            SetPlayerSkin(playerid, 40);
            Informacoes[playerid][Sexo] = 2;
            Informacoes[playerid][Skin] = 40;
            SendClientMessage(playerid,-1,"Sistema: Vocк й mulher!");
            ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...", "Obrigado por registrar-se em nosso servidor\nDigite a senha abaixo para logar-se", "Logar", "Cancelar");
        }
        else
        {
               SpawnPlayer(playerid);
            SetPlayerSkin(playerid, 23);
            Informacoes[playerid][Sexo] = 1;
            Informacoes[playerid][Skin] = 23;
            SendClientMessage(playerid,-1,"Sistema: Vocк й homem!");
            ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...", "Obrigado por registrar-se em nosso servidor\nDigite a senha abaixo para logar-se", "Logar", "Cancelar");
    }
        return 1;
}
Quero dizer se vocк colocou alguma coisa a respeito da stock SalvarConta no OnPlayerConnect, ou tambйm alguma coisa do CarregarConta no OnPlayerConnect ou OnPlayerSpawn.
Reply
#7

salvarconta em disconnect
carregar conta em connect
Reply
#8

pawn Код:
stock CarregarConta(playerid)
{
    new Contas[41], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, 25);
    format(Contas, 41, "Jogadores/%s.ini", Nome);
    if(DOF2_FileExists(Contas))
    {
        Informacoes[playerid][Gps] = DOF2_GetInt(Contas, "Gps");
        Informacoes[playerid][Skin] = DOF2_GetInt(Contas, "Skin");
        Informacoes[playerid][Sexo] = DOF2_GetInt(Contas, "Sexo");
        Informacoes[playerid][Level] = DOF2_GetInt(Contas, "Level");
        Informacoes[playerid][Lider] = DOF2_GetInt(Contas, "Lider");
        GivePlayerMoney(playerid, DOF2_GetInt(Contas, "Grana"));
        Informacoes[playerid][Membro] = DOF2_GetInt(Contas, "Membro");
        Informacoes[playerid][Moderador] = DOF2_GetInt(Contas, "Moderador");
    }
    return 1;
}
Salvar Ficheiro:

pawn Код:
stock SalvarConta(playerid)
{
    new Contas[41], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, 25); // pra que 32? se o nome mбximo й 24 e + 1 pra o fechamento?
    format(Contas, 41, "Jogadores/%s.ini", Nome);
    if(DOF2_FileExists(Contas))
    {
        Informacoes[playerid][Skin] = GetPlayerSkin(playerid);
        DOF2_SetInt(Contas, "Gps", Informacoes[playerid][Sexo]);
        DOF2_SetInt(Contas, "Skin", Informacoes[playerid][Skin]);
        DOF2_SetInt(Contas, "Sexo", Informacoes[playerid][Sexo]);
        DOF2_SetInt(Contas, "Level", Informacoes[playerid][Skin]);
        DOF2_SetInt(Contas, "Senha", Informacoes[playerid][Senha]);
        DOF2_SetInt(Contas, "Grana", Informacoes[playerid][Grana]);
        DOF2_SetInt(Contas, "Lider", Informacoes[playerid][Lider]);
        DOF2_SetInt(Contas, "Membro", Informacoes[playerid][Membro]);
        DOF2_SetInt(Contas, "Moderador", Informacoes[playerid][Moderador]);
        DOF2_SaveFile();
    }
    return 1;
}
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new Contas[41], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, sizeof(Nome));
    format(Contas, sizeof(Contas),"Jogadores/%s.ini",Nome);
//Login
    if(dialogid == 1)
    {
        if(response == 0)
        {
            SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!");
            Kick(playerid);
        }
        if(!strlen(inputtext)) // strlen й usado para medir o tamanho da string, caso ele nгo tenha digitado nada, irб executar isto abaixo.
        {
            ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Logar","Cancelar");
        }
        else // caso ele tenha digitado alguma coisa, vai medir o tamanho da string da pasta contas com a que ele digitou, se medir o mesmo tamanho ele logar, isto й errado.
        {
            Informacoes[playerid][Senha] = DOF2_GetInt(Contas, "Senha");
            if(strlen(inputtext) == Informacoes[playerid][Senha])
            {
                CarregarConta(playerid);
                SpawnPlayer(playerid);
            }
        }
    }
//Registro
    if(dialogid == 2)
    {
        if(response == 0)
        {
            SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!");
            Kick(playerid);
        }
        if(!strlen(inputtext))
        {
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Registrando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Registrar","Cancelar");
        }
        else // se fez a mesma coisa aqui....se a senha tiver o mesmo tamanho mesmo que nгo seja iguais, vocк vai substituir a senha que tem o mesmo tamanho pela velha que tem o mesmo tamanho.
        {
            Informacoes[playerid][Senha] = strlen(inputtext);
            DOF2_CreateFile(Contas);
            DOF2_SetString(Contas, "Senha", Informacoes[playerid][Senha]);
            DOF2_SaveFile();
            GivePlayerMoney(playerid, 1000);
            SetPlayerVirtualWorld(playerid, 1);
            SetPlayerPos(playerid, 1643.0941,-2262.9111,13.4867);
            SetPlayerCameraPos(playerid, 1643.0941,-2262.9111,13.4867);
            SetPlayerCameraLookAt(playerid, 1643.2544,-2249.0349,13.3228);
            ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,"{FFFFFF}Escolha seu Sexo","{FFFF00}Vocк й Homem ou Mulher?","Homem","Mulher");
         }
    }
Eu apenas apontei os erros que fizeste, cabe a vocк conserta-los, sobre as senhas o correto й compara-las e nгo medi-las, entгo deves usar strcmp.

Sobre as stock's, aparentemente estгo corretas pois adicionei + 1 cell para ficar correto, Apenas vi estes erros mas podem haver mais pois hoje estou um pouco desatento.
Reply
#9

Quote:
Originally Posted by leonardo1434
Посмотреть сообщение
pawn Код:
stock CarregarConta(playerid)
{
    new Contas[41], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, 25);
    format(Contas, 41, "Jogadores/%s.ini", Nome);
    if(DOF2_FileExists(Contas))
    {
        Informacoes[playerid][Gps] = DOF2_GetInt(Contas, "Gps");
        Informacoes[playerid][Skin] = DOF2_GetInt(Contas, "Skin");
        Informacoes[playerid][Sexo] = DOF2_GetInt(Contas, "Sexo");
        Informacoes[playerid][Level] = DOF2_GetInt(Contas, "Level");
        Informacoes[playerid][Lider] = DOF2_GetInt(Contas, "Lider");
        GivePlayerMoney(playerid, DOF2_GetInt(Contas, "Grana"));
        Informacoes[playerid][Membro] = DOF2_GetInt(Contas, "Membro");
        Informacoes[playerid][Moderador] = DOF2_GetInt(Contas, "Moderador");
    }
    return 1;
}
Salvar Ficheiro:

pawn Код:
stock SalvarConta(playerid)
{
    new Contas[41], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, 25); // pra que 32? se o nome mбximo й 24 e + 1 pra o fechamento?
    format(Contas, 41, "Jogadores/%s.ini", Nome);
    if(DOF2_FileExists(Contas))
    {
        Informacoes[playerid][Skin] = GetPlayerSkin(playerid);
        DOF2_SetInt(Contas, "Gps", Informacoes[playerid][Sexo]);
        DOF2_SetInt(Contas, "Skin", Informacoes[playerid][Skin]);
        DOF2_SetInt(Contas, "Sexo", Informacoes[playerid][Sexo]);
        DOF2_SetInt(Contas, "Level", Informacoes[playerid][Skin]);
        DOF2_SetInt(Contas, "Senha", Informacoes[playerid][Senha]);
        DOF2_SetInt(Contas, "Grana", Informacoes[playerid][Grana]);
        DOF2_SetInt(Contas, "Lider", Informacoes[playerid][Lider]);
        DOF2_SetInt(Contas, "Membro", Informacoes[playerid][Membro]);
        DOF2_SetInt(Contas, "Moderador", Informacoes[playerid][Moderador]);
        DOF2_SaveFile();
    }
    return 1;
}
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new Contas[41], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, sizeof(Nome));
    format(Contas, sizeof(Contas),"Jogadores/%s.ini",Nome);
//Login
    if(dialogid == 1)
    {
        if(response == 0)
        {
            SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!");
            Kick(playerid);
        }
        if(!strlen(inputtext)) // strlen й usado para medir o tamanho da string, caso ele nгo tenha digitado nada, irб executar isto abaixo.
        {
            ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Logando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Logar","Cancelar");
        }
        else // caso ele tenha digitado alguma coisa, vai medir o tamanho da string da pasta contas com a que ele digitou, se medir o mesmo tamanho ele logar, isto й errado.
        {
            Informacoes[playerid][Senha] = DOF2_GetInt(Contas, "Senha");
            if(strlen(inputtext) == Informacoes[playerid][Senha])
            {
                CarregarConta(playerid);
                SpawnPlayer(playerid);
            }
        }
    }
//Registro
    if(dialogid == 2)
    {
        if(response == 0)
        {
            SendClientMessage(playerid,-1,"Sistema: Vocк foi kickado por cancelar o login!");
            Kick(playerid);
        }
        if(!strlen(inputtext))
        {
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Registrando...","Vocк digitou uma senha invalida\nDigite uma senha valida abaixo","Registrar","Cancelar");
        }
        else // se fez a mesma coisa aqui....se a senha tiver o mesmo tamanho mesmo que nгo seja iguais, vocк vai substituir a senha que tem o mesmo tamanho pela velha que tem o mesmo tamanho.
        {
            Informacoes[playerid][Senha] = strlen(inputtext);
            DOF2_CreateFile(Contas);
            DOF2_SetString(Contas, "Senha", Informacoes[playerid][Senha]);
            DOF2_SaveFile();
            GivePlayerMoney(playerid, 1000);
            SetPlayerVirtualWorld(playerid, 1);
            SetPlayerPos(playerid, 1643.0941,-2262.9111,13.4867);
            SetPlayerCameraPos(playerid, 1643.0941,-2262.9111,13.4867);
            SetPlayerCameraLookAt(playerid, 1643.2544,-2249.0349,13.3228);
            ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,"{FFFFFF}Escolha seu Sexo","{FFFF00}Vocк й Homem ou Mulher?","Homem","Mulher");
         }
    }
Eu apenas apontei os erros que fizeste, cabe a vocк conserta-los, sobre as senhas o correto й compara-las e nгo medi-las, entгo deves usar strcmp.

Sobre as stock's, aparentemente estгo corretas pois adicionei + 1 cell para ficar correto, Apenas vi estes erros mas podem haver mais pois hoje estou um pouco desatento.
Valeu cara, funcionou o sistema mais rep para tu
Reply
#10

Desculpe-me pelo doublet, mas й que nгo esta salvando a grana/level e outros itens do salvamento!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)