[Ajuda]Salvamento em Dini.
#1

Gostaria de que alguem me desse uma luz '-'
Queria aprender a salvar informaзхes como:
Level
Level de Admin
Dinheiro '----'
Ja tentei e nгo consegui.
Este que fiz nгo funciona:
pawn Код:
public RegistrarPlayer(playerid, password[])
{
    if(IsPlayerConnected(playerid))
    {
            new string3[32];
            new playername3[MAX_PLAYER_NAME];
            GetPlayerName(playerid, playername3, sizeof(playername3));
            format(string3, sizeof(string3), "Contas3/%s.ini", playername3);
            new File: hFile = fopen(string3, io_write);
            if (hFile)
            {
                strmid(PlayerInfo[playerid][pSenha], password, 0, strlen(password), 255);
                new var[32];
                format(var, 32, "Key=%s\n", PlayerInfo[playerid][pSenha]);fwrite(hFile, var);
                PlayerInfo[playerid][pGrana] = GetPlayerMoney(playerid);
                format(var, 32, "Administrador=0\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
                format(var, 32, "Dinheiro=150000\n",PlayerInfo[playerid][pGrana]);fwrite(hFile, var);
                format(var, 32, "Spawn=0\n",PlayerInfo[playerid][pSpawn]);fwrite(hFile, var);
                format(var, 32, "Skin=23\n",PlayerInfo[playerid][pSkin]);fwrite(hFile, var);
                format(var, 32, "Level=%s\n",PlayerInfo[playerid][pLevel]);fwrite(hFile, var);
                fclose(hFile);
-
pawn Код:
public UpdatedasContas(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        if(gPlayerLogged[playerid])
        {
            new string3[32];
            new playername3[MAX_PLAYER_NAME];
            GetPlayerName(playerid, playername3, sizeof(playername3));
            format(string3, sizeof(string3), "Contas3/%s.ini", playername3);
            new File: hFile = fopen(string3, io_write);
            if (hFile)
            {
                new var[32];
                format(var, 32, "Key=%s\n", PlayerInfo[playerid][pSenha]);fwrite(hFile, var);
                PlayerInfo[playerid][pGrana] = GetPlayerMoney(playerid);
                format(var, 32, "Administrador=%s\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
                format(var, 32, "Dinheiro=%s\n",PlayerInfo[playerid][pGrana]);fwrite(hFile, var);
                format(var, 32, "Spawn=%s\n",PlayerInfo[playerid][pSpawn]);fwrite(hFile, var);
                format(var, 32, "Skin=%s\n",PlayerInfo[playerid][pSkin]);fwrite(hFile, var);
                format(var, 32, "Level=%s\n",PlayerInfo[playerid][pLevel]);fwrite(hFile, var);
                fclose(hFile);
            }
        }
    }
    return 1;
}
-
pawn Код:
public LogarPlayer(playerid,password[])
{
    new string2[64];
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername2, sizeof(playername2));
    format(string2, sizeof(string2), "Contas3/%s.ini", playername2);
    new File: UserFile = fopen(string2, io_read);
    if ( UserFile )
    {
        new PassData[256];
        new keytmp[256], valtmp[256];
        fread( UserFile , PassData , sizeof( PassData ) );
        keytmp = ini_GetKey( PassData );
        if( strcmp( keytmp , "Key" , true ) == 0 )
        {
            valtmp = ini_GetValue( PassData );
            strmid(PlayerInfo[playerid][pSenha], valtmp, 0, strlen(valtmp)-1, 255);
        }
        if(strcmp(PlayerInfo[playerid][pSenha],password, true ) == 0 )
        {
                new key[ 256 ] , val[ 256 ];
                new Data[ 256 ];
                while ( fread( UserFile , Data , sizeof( Data ) ) )
                {
                    key = ini_GetKey( Data );
                    if( strcmp( key , "Administrador" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pAdmin] = strval( val ); }
                    if( strcmp( key , "Dinheiro" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pGrana] = strval( val ); }
                    if( strcmp( key , "Spawn" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pSpawn] = strval( val ); }
                    if( strcmp( key , "Skin" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pSkin] = strval( val ); }
                    if( strcmp( key , "Level" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pLevel] = strval( val ); }
                }
                fclose(UserFile);
        }
        else
        {
            SendClientMessage(playerid, BRANCO, "Erro: Senha incorreta.");
            SendClientMessage(playerid, RED, "use: /logar(senha)");
            fclose(UserFile);
            return 1;
        }
        SpawnPlayer(playerid);
        SetSpawnInfo(playerid, PlayerInfo[playerid][pSpawn], PlayerInfo[playerid][pSkin],0.0,0.0,0.0,0,0,0,0,0,0,0);
    }
    return 1;
}
-
pawn Код:
public SalvarContas()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            UpdatedasContas(i);
        }
    }
}
Alguem pode me dizer oque esta errado?
Sim o /gmx esta programado para salvar.
Reply
#2

Isso nгo й Dini.
Reply
#3

Oque preciso postar entгo ? '-'
Nгo intendo nada disso.
Reply
#4

Leia esse tуpico > https://sampforum.blast.hk/showthread.php?tid=327041

Nele fiz um breve tutorial na utilizaзгo de DOF2, que й bem superior a Dini
Reply
#5

Um simples exemplo de como salvar usando SII:
pawn Код:
#define CallBack_%1(%2) \
        forward_%1(%2); \
        public_%1(%2)

#define P_PASTA             "/Users/%s.ini"

new wh[44];

stock GetName(playerid)
{
    new aName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
    return aName;
}

//Agora й sу colocar isso na callback OnGameModeInit:

/*
    new st = 0;
    while(++st < MAX_PLAYERS)
    {
        if(IsPlayerConnected(st))
        {
            SetTimer("SalvarTodos",60000 * 1, true);
        }
    }

    de 1 em 1 minuto irб salvar as contas dos players conectados.
    Ou vocк pode fazer diferente, pode colocar para salvar quando o player disconnectar.
*/



CallBack SalvarTodos()
{
    new st = 0;
    while(++st < MAX_PLAYERS)
    {
        format(wh,sizeof(wh), P_PASTA, GetName(st));
        if(INI_Exist(wh))
        {
            INI_Open(wh);
            INI_WriteInt("Level", GetPlayerScore(st));
            INI_WriteInt("Procurado", GetPlayerWantedLevel(st));
            INI_WriteInt("Dinheiro", GetPlayerMoney(st));
            INI_Save();
            INI_Close();
        }
        else
        {
            INI_Create(wh);
            INI_Open(wh);
            INI_WriteInt("Level", GetPlayerScore(st));
            INI_WriteInt("Procurado", GetPlayerWantedLevel(st));
            INI_WriteInt("Dinheiro", GetPlayerMoney(st));
            INI_Save();
            INI_Close();
        }
    }
    return true;
}
or read: http://forum.sa-mp.com/showthread.ph...03#post1741703
Reply
#6

Gente, consegui bastante coisa, mas o principal nгo :\
Salvar o level de administrador.
Alguem pode me ajudar?
Reply
#7

Este topico fala tudo >> https://sampforum.blast.hk/showthread.php?tid=320022 << salvamento em dini + PlayerInfo isso deve te ajudar. me da +rep?
Reply
#8

Caro Igor,

Vocк entende o que й "%i" ou "%f" ou "%s"?

%i = Integers ou Inteiros
%f = Floats, ou nъmeros quebrados
%s = String, ou textos

Vocк estб salvando o level de admin como String, porйm ele й um nъmero!
ERRADO:
pawn Код:
format(var, 32, "Administrador=%s\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
format(var, 32, "Dinheiro=%s\n",PlayerInfo[playerid][pGrana]);fwrite(hFile, var);
CORRETO:
pawn Код:
format(var, 32, "Administrador=%i\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
format(var, 32, "Dinheiro=%i\n",PlayerInfo[playerid][pGrana]);fwrite(hFile, var);
Reveja os outros e concerte!

Espero ter ajudado
Sugiro ultilizar esse sistema (fwrite) apenas para escrever, pois ele й o mais veloz do sa-mp, agora para ler ultilize o sistema de gerenciamento "DOF2".

Att,

Ricop522
Reply
#9

Nгo funcionou, tem outro cуdigo alem desse meu para salvamento de admin? ;s
Reply
#10

pawn Код:
// A pasta Contas3 deve existir

new VBNome[MAX_PLAYER_NAME],VBString[32];
GetPlayerName(playerid, VBNome, sizeof(VBNome));
format(VBString, sizeof(VBString), "Contas3/%s.ini", VBNome);

DOF2_SetInt(VBString,"Admin",PlayerInfo[playerid][pAdmin]);
DOF2_SaveFile();
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)