SA-MP Forums Archive
[Tutorial] Vip por Dias - 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)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] Vip por Dias (/showthread.php?tid=463978)



Vip por Dias[ATUALIZADO - Wellington1999 - 14.09.2013

Tutorial Vip Por Dias

Lembrando,eu aprendi fazer e apenas quer encinar para quem vive tentando e nunca consegue
Bom й uma coisa facil de se criar,vamos comeзar, cada linha do Tutorial irei explicar
Comeзando
No topo de seu Gamemode/FS
pawn Код:
#include SII
pawn Код:
enum pInfo
{
pVip,//Armazenarб o Vip
pDias,//Armazenarб os dias do Vip
}
new WInfo[MAX_PLAYERS][pInfo];
Comando vocк utilizarб assim
pawn Код:
COMMAND:darvip(playerid, params[])
{
    new Dias,level,iddele;
    if(!IsPlayerAdmin) return SendClientMessage(playerid, COR_CINZA1, "Vocк nгo tem permissгo para usar esse comando!");
    if(sscanf(params, "ddd", iddele, level,Dias)) return SendClientMessage(playerid, COR_CINZA1, "Use: /darvip  [id] [level] [dias]");
    if(!IsPlayerConnected(iddele)) return SendClientMessage(playerid, COR_CINZA2, "Jogador nгo conectado.");
        WInfo[iddele][pDias] = (gettime() + (Dias * 24 * 60 * 60));//Dias Multipiclando O Tempo * 24 * 60 * 60
    WInfo[iddele][pVip] = level;//Level Vip
    return 1;
}
Mais se vocк quer mandar uma mensagem para o jogador falando quantos dias de vip ele tem
por exemplo
pawn Код:
new String[128];
format(String, sizeof(String), "{DCDCDC}| Forum SA:MP INFORMA | {FFFF00}Vocк й ainda tem %d dias De vip", WInfo[playerid][pDias]);//Chama a variavel que guarda o vip
SendClientMessage(playerid, GetPlayerColor(playerid), String);
irб dar um valor muito grande
faзa assim
pawn Код:
new String[128];
format(String, sizeof(String), "{DCDCDC}| Forum SA:MP INFORMA | {FFFF00}Vocк й ainda tem %d dias De vip", (WInfo[playerid][pDias] - gettime()) / (60 * 60 * 24)//Da um nъmero mais preciso);
SendClientMessage(playerid, GetPlayerColor(playerid), String);
Verificaзгo para ver se o vip venceu
pawn Код:
if(WInfo[playerid][pVip] >= 1)
        {
            VIPVencido[playerid] = 0;
            if(gettime() >= WInfo[playerid][pDias])
            {
                    WInfo[playerid][pVip] = 0;
                    WInfo[playerid][pDias] = 0;
                    SendClientMessage(playerid, COR_VIP, "|BPS INFORMA| Seu VIP venceu. Renove seu VIP para ter seu benefinios novamente!");
                }
        }
Vamo como salvar o Vip
Mexo com SII
entгo vamos LA
Na sua callback/dialog de registro adicione
pawn Код:
INI_WriteInt("Dias", 0);
INI_WriteInt("Vip", 0);

Ja na callback de Login coloque
WInfo[playerid][pDias] = INI_ReadInt("Dias");
WInfo[playerid][pVip] = INI_ReadInt("Vip");
Agora no final do seu gamemode coloque uma stock para salvar as contas
pawn Код:
SalvarContas(playerid)
{
    format(formata[playerid], 69, "Contas/%s.ini", pNome(playerid));//Formata e Use de seu acordo como Players/%s.ini
    if(INI_Open(formata[playerid]))//Abre a conta
    {
        INI_WriteInt("Dias", WInfo[playerid][pDias]);// Salva os Dias do Player
                INI_WriteInt("Vip", WInfo[playerid][pVip]);// Salva os Dias do Player
        INI_Save();//Salva
        INI_Close();//Fecha
    }
    return 1;
}
Callback OnGameModeExit
pawn Код:
for(new i = 0; i < MAX_PLAYERS; i++) //LOop pra salvar a conta de geral
    {
    SalvarContas(x);
    }
pawn Код:
Callback OnPlayerDisconnect

SalvarContas(playerid);
Vip Por Dias Salvando DOF2
Topo do GM/FS
pawn Код:
#include <DOF2>
Salvando
pawn Код:
stock SalvarPlayer(playerid)
{
        if(DOF2_FileExists(ReturnFileUser(playerid)))
        {
                DOF2_SetInt(ReturnFileUser(playerid),"Vip",WInfo[playerid][pVip]);//Salva o VIP, tinha esquecido de colocar pra salvar
                DOF2_SetInt(ReturnFileUser(playerid),"Dias", WInfo[playerid][pDias]);//Salva os dias
                DOF2_SaveFile();//salva os arquivos
        }
}
Carregando os Arquivos
pawn Код:
stock CarregarPlayer(playerid)
{
        if(DOF2_FileExists(ReturnFileUser(playerid)))
        {
 
                WInfo[playerid][pVip] = DOF2_GetInt(ReturnFileUser(playerid),"Vip");
                WInfo[playerid][pDias] = DOF2_GetInt(ReturnFileUser(playerid),"Dias");
        }
}
pawn Код:
public OnPlayerConnect(playerid)
{
CarregarPlayer(playerid);
return 1;
}
pawn Код:
Funзгo de Login

CarregarPlayer(playerid);
pawn Код:
public OnGameModeExit
SalvarPlayer(playerid);
assim ele darб o verdadeiro valor por exemplo 40 Dias,Bom й isso й simples, mais pra quem nгo tinha idйia ta ai



Re: Vip por Dias - zPain - 14.09.2013

Faltou um exemplo de verificaзгo para quando o perнodo acabar.


Re: Vip por Dias - PT - 14.09.2013

e so falta tambem fazer como salvar o vip que o player tem e obter o valor dele ao conectar dnv


Re: Vip por Dias - Wellington1999 - 14.09.2013

Terminando jaja edito


Re: Vip por Dias - PT - 15.09.2013

ae melhorou um pouco mas tem de explicar melhor..


Re: Vip por Dias - Caio_Freeze - 15.09.2013

poderia ter usado DOF2 para salvar jб que a maioria usa DOF2


Re: Vip por Dias - Wellington1999 - 16.09.2013

Vou converter para DOF2, explicar mais , Obrigado a todos


Re: Vip por Dias - zSuYaNw - 16.09.2013

Abre o PAWNO e cria um novo blank script e teste o cуdigo do tutorial(exatamente oque estб no tуpico),
depois verifique os erros que irгo aparecer.


Re: Vip por Dias - zPain - 16.09.2013

O que o Garfield disse acima й de fundamental importвncia em um tutorial.
Vou lhe dar uma dica para futuras postagens do gкnero.

Escreva um script para seu tutorial. Se vocк postar partes do seu game mode para servir de explicaзгo pode ser um problema para leigos.


Re: Vip por Dias - Russo66 - 16.09.2013

" (WInfo[playerid][pDias] - gettime()) / (60 * 60 * 24) "

isso estб errado, irб obter um valor negativo.