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 Код:
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
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