SA-MP Forums Archive
[Ajuda] Ajudinha aqui por favor - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Ajudinha aqui por favor (/showthread.php?tid=384697)



Ajudinha aqui por favor - lucaskill66 - 13.10.2012

Estou mechendo com DOF2 a pouco tempo e queria saber tipo criar seila uma public para salvar ateraзхes automaticamente porque ele sу salva quando da /q +rep pra quem ajudar.

Sistema de Registro/Login:

pawn Код:
//------------------INCLUDES----------------------------------------------------
#include    a_samp
#include    DOF2
//------------------DEFINES-----------------------------------------------------
#define     DIALOG_REGISTRO         1
#define     DIALOG_LOGAR            2
//------------------NEWS--------------------------------------------------------
enum pInfo
{
    pSenha,
    pMatou,
    pMorreu,
    pDinheiro,
    pLevel,
    pAdmin,
    pOrganizacao,
    pCargo

}

new PlayerInfo[MAX_PLAYERS][pInfo];
new Erro[MAX_PLAYERS];

//------------------PUBLICS-----------------------------------------------------
public OnGameModeInit()
{
    SetGameModeText("Nome");
    return 1;
}
public OnGameModeExit()
{
    DOF2_Exit();
    return 1;
}
public OnPlayerConnect(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    if(DOF2_FileExists(arquivo))
    {
        ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк й Registrado, digite sua senha para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
    }
    else
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Vocк ainda nгo й Registrado, digite uma senha para se registrar!", "Confirma", "Cancelar");
    }
    SpawnPlayer(playerid);
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    if(dialogid == DIALOG_REGISTRO)
    {
        if(!strval(inputtext))
        {
            ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Digite apenas nъmeros!\nDigite sua senha novamente para se registrar!", "Confirma", "Cancelar");
            return 1;
        }
        if(!response)
        {
            Kick(playerid);
            return 1;
        }
        else
        {
            PlayerInfo[playerid][pSenha] = strval(inputtext);
            DOF2_CreateFile(arquivo);
            DOF2_SetInt(arquivo, "Senha", PlayerInfo[playerid][pSenha]);
            DOF2_SetInt(arquivo, "Matou", PlayerInfo[playerid][pMatou]);
            DOF2_SetInt(arquivo, "Morreu", PlayerInfo[playerid][pMorreu]);
            DOF2_SetInt(arquivo, "Dinheiro", PlayerInfo[playerid][pDinheiro]);
            DOF2_SetInt(arquivo, "Level", PlayerInfo[playerid][pLevel]);
            DOF2_SetInt(arquivo, "AdminLevel", PlayerInfo[playerid][pAdmin]);
            DOF2_SetInt(arquivo, "Organizaзгo", PlayerInfo[playerid][pOrganizacao]);
            DOF2_SetInt(arquivo, "Cargo", PlayerInfo[playerid][pCargo]);
            DOF2_SaveFile();
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
        }
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!strval(inputtext))
        {
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Digite apenas nъmeros!\nDigite sua senha cadastrada para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
            return 1;
        }
        if(!response)
        {
            Kick(playerid);
            return 1;
        }
        else
        {
            PlayerInfo[playerid][pSenha] = DOF2_GetInt(arquivo, "Senha");
            if(strval(inputtext) == PlayerInfo[playerid][pSenha])
            {
                PlayerInfo[playerid][pMatou] = DOF2_GetInt(arquivo, "Matou");
                PlayerInfo[playerid][pMorreu] = DOF2_GetInt(arquivo, "Morreu");
                PlayerInfo[playerid][pDinheiro] = DOF2_GetInt(arquivo, "Dinheiro");
                PlayerInfo[playerid][pLevel] = DOF2_GetInt(arquivo, "Level");
                PlayerInfo[playerid][pAdmin] = DOF2_GetInt(arquivo, "AdminLevel");
                GivePlayerMoney(playerid, PlayerInfo[playerid][pDinheiro]);
                SpawnPlayer(playerid);
            }
            else
            {
                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
                Erro[playerid]++;
                if(Erro[playerid] == 5)
                {
                    SendClientMessage(playerid, -1, "Sua conta estб banida por errar 5 vezes a sua senha, contacte o Admin para retirar seu Ban!");
                    Ban(playerid);
                    return 1;
                }
            }
        }
    }
    return 1;
}
public OnPlayerDisconnect(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    if(DOF2_FileExists(arquivo))
    {
        PlayerInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
        DOF2_SetInt(arquivo, "Senha", PlayerInfo[playerid][pSenha]);
        DOF2_SetInt(arquivo, "Matou", PlayerInfo[playerid][pMatou]);
        DOF2_SetInt(arquivo, "Morreu", PlayerInfo[playerid][pMorreu]);
        DOF2_SetInt(arquivo, "Dinheiro", PlayerInfo[playerid][pDinheiro]);
        DOF2_SetInt(arquivo, "Level", PlayerInfo[playerid][pLevel]);
        DOF2_SetInt(arquivo, "AdminLevel", PlayerInfo[playerid][pAdmin]);
        DOF2_SetInt(arquivo, "Organizaзгo", PlayerInfo[playerid][pOrganizacao]);
        DOF2_SetInt(arquivo, "Cargo", PlayerInfo[playerid][pCargo]);
        DOF2_SaveFile();
    }
    return 1;
}



Re: Ajudinha aqui por favor - arakuta - 13.10.2012

pawn Код:
stock Salvar(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    if(DOF2_FileExists(arquivo))
    {
        PlayerInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
        DOF2_SetInt(arquivo, "Senha", PlayerInfo[playerid][pSenha]);
        DOF2_SetInt(arquivo, "Matou", PlayerInfo[playerid][pMatou]);
        DOF2_SetInt(arquivo, "Morreu", PlayerInfo[playerid][pMorreu]);
        DOF2_SetInt(arquivo, "Dinheiro", PlayerInfo[playerid][pDinheiro]);
        DOF2_SetInt(arquivo, "Level", PlayerInfo[playerid][pLevel]);
        DOF2_SetInt(arquivo, "AdminLevel", PlayerInfo[playerid][pAdmin]);
        DOF2_SetInt(arquivo, "Organizaзгo", PlayerInfo[playerid][pOrganizacao]);
        DOF2_SetInt(arquivo, "Cargo", PlayerInfo[playerid][pCargo]);
        DOF2_SaveFile();
    }
    return 1;
}
Agora chame essa stock quando vocк quiser... com Salvar(playerid); Como se fosse uma funзгo comun


Re: Ajudinha aqui por favor - lucaskill66 - 13.10.2012

Quote:
Originally Posted by arakuta
Посмотреть сообщение
pawn Код:
stock Salvar(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    if(DOF2_FileExists(arquivo))
    {
        PlayerInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
        DOF2_SetInt(arquivo, "Senha", PlayerInfo[playerid][pSenha]);
        DOF2_SetInt(arquivo, "Matou", PlayerInfo[playerid][pMatou]);
        DOF2_SetInt(arquivo, "Morreu", PlayerInfo[playerid][pMorreu]);
        DOF2_SetInt(arquivo, "Dinheiro", PlayerInfo[playerid][pDinheiro]);
        DOF2_SetInt(arquivo, "Level", PlayerInfo[playerid][pLevel]);
        DOF2_SetInt(arquivo, "AdminLevel", PlayerInfo[playerid][pAdmin]);
        DOF2_SetInt(arquivo, "Organizaзгo", PlayerInfo[playerid][pOrganizacao]);
        DOF2_SetInt(arquivo, "Cargo", PlayerInfo[playerid][pCargo]);
        DOF2_SaveFile();
    }
    return 1;
}
Agora chame essa stock quando vocк quiser... com Salvar(playerid); Como se fosse uma funзгo comun
Mais tipo qualquer alteraзгo que acontecer na conta do do player exemplo dar um level para ele jб vai salvar na hora?


Re: Ajudinha aqui por favor - arakuta - 13.10.2012

Quando ele for aumentar level, junto a isso chame essa stock.
Stock substitui uma funзгo, entгo faзa isso por exemplo

pawn Код:
CMD:upar(playerid)
{
    PlayerInfo[playerid][pLevel] ++;
    Salvar(playerid);
}



Re: Ajudinha aqui por favor - lucaskill66 - 13.10.2012

Quote:
Originally Posted by arakuta
Посмотреть сообщение
Quando ele for aumentar level, junto a isso chame essa stock.
Stock substitui uma funзгo, entгo faзa isso por exemplo

pawn Код:
CMD:upar(playerid)
{
    PlayerInfo[playerid][pLevel] ++;
    Salvar(playerid);
}
Intendi intгo sу chamar a stock

@EDIT +REP pra vocк cara.


Re: Ajudinha aqui por favor - arakuta - 13.10.2012

Complementando, stocks tambйm economizam muitas linhas!
Se a mesma for chamada de vбrios lugares


Re: Ajudinha aqui por favor - jonathan_scripter - 14.11.2012

pode se usar publics tambem
eu axo mais lento

no topo do GM

pawn code:
Quote:

forward Salvar(playerid);

fora das callbacks
ou no fim do gm

pawn CODE:
Quote:

public Salvar(playerid)
{
new arquivo[40], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, 32);
format(arquivo, 40, "Contas/%s.ini", name);
if(DOF2_FileExists(arquivo))
{
PlayerInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
DOF2_SetInt(arquivo, "Senha", PlayerInfo[playerid][pSenha]);
DOF2_SetInt(arquivo, "Matou", PlayerInfo[playerid][pMatou]);
DOF2_SetInt(arquivo, "Morreu", PlayerInfo[playerid][pMorreu]);
DOF2_SetInt(arquivo, "Dinheiro", PlayerInfo[playerid][pDinheiro]);
DOF2_SetInt(arquivo, "Level", PlayerInfo[playerid][pLevel]);
DOF2_SetInt(arquivo, "AdminLevel", PlayerInfo[playerid][pAdmin]);
DOF2_SetInt(arquivo, "Organizaзгo", PlayerInfo[playerid][pOrganizacao]);
DOF2_SetInt(arquivo, "Cargo", PlayerInfo[playerid][pCargo]);
DOF2_SaveFile();
}
return 1;
}

agr salvando.
em OnPlayerDisconnect
pawn CODE:
Quote:

Salvar(playerid);