12.10.2013, 22:08
Aqui vai um rбpido tutorial de como criar um sistema temporario.
- O que irei precisar?
- De uma include para o Salvamento, sera usada no tutorial a DOF2.
- Da include a_samp.
- Da include ConvertDays, Download Aqui.
- De uma include de processamento de comandos, no tutorial irei usar ZCMD + SSCANF.
- Criando o sistema temporario
- Instalaremos as includes no GameMode
pawn Код:#include <a_samp>
// Usaremos algumas callback's e nativas dela.
#include <ConvertDays>
// Trabalharemos os sistemas temporarios com ela.
#include <DOF2>
// Salvaremos as informaзхes com ela.
#include <zcmd>
// Criaremos os comandos com ela.
#include <sscanf>
// Trabalharemos com os parametros do ZCMD com ela. - Criando a define TempSystem
pawn Код:#define TempSystem "/TempSystem/%s.ini" // Troque TempSystem pela pasta em que ficaram os seus sistemas temporarios. - Criando a variavel que armazenaremos os dados do sistema temporбrio
pawn Код:new TemporarySystem[MAX_PLAYERS]; - Vamos setar o TemporarySystem assim que ele conectar(Logicamente que se for um sistema de ban ele, nгo continuarб online e precisarб ser kickado.):
pawn Код:public OnPlayerConnect(playerid) // Esta callback й chamada quando o jogador se conecta ao servidor
{
TemporarySystem[playerid] = 0; // Setaremos o tempo de TemporarySystem para 0, para nгo haver bug's
new string[70], pname[MAX_PLAYER_NAME]; // criaremos uma variavel para armazenar os textos a serem enviados e o nome do jogador.
GetPlayerName(playerid, pname, sizeof(pname)); // Pegamos o nome do jogador
format(string, sizeof(string), TempSystem, pname); // salvamos na string um texto que equivale a um arquivo que esta ou nгo salvo como nickdojogador.ini
if(DOF2_FileExists(string)) // Caso o arquivo exista continuarб
{
TemporarySystem[playerid] = DOF2_GetInt(string, "Dias"); // Pegaremos os dias do TemporarySystem.
if(VerifyExpiredDays(TemporarySystem[playerid])) // Caso tenha expirado
{
SendClientMessage(playerid, -1, "Seu tempo de TemporarySystemName expirou!"); // Enviamos a mensagem ao player.
TemporarySystem[playerid] = 0; TemporarySystem[playerid] = 0; // Setaremos o tempo de TemporarySystem para 0, pois nгo existe mais TemporarySystemName pro playerid.
}
else // caso nгo tenha expirado
{
format(string,sizeof(string), "Vocк tкm %s de TemporarySystemName", ConvertToDays(TemporarySystem[playerid])); // formataremos a mensagem a ser envaida
SendClientMessage(playerid, -1, string); // Enviamos a mensagem
}
}
return 1; // retornamos o valor 1(verdadeiro)
} - Criando o comando de setagem do sistema temporario
pawn Код:CMD:settempsystem(playerid, params[]) // definimos um comando, tambem definimos que nele usaremos o playerid e os params(parametros).
{
new id, days, pname[MAX_PLAYER_NAME]; // o id do jogador que receberб o beneficio do sistema temporario, uma tambem para o nome do jogador, e os dias do sistema temporario.
if(sscanf(params, "ud", id, days)) // Pega os parametros e joga nas variaveis.
return SendClientMessage(playerid, 0xFF0000AA, "Uso Correto: /setvip [id] [dias]"); // Envia caso nгo for possivel pegar os parametros e jogar nas variaveis.
if(IsPlayerAdmin(playerid)) // Se o jogador estiver logado na rcon continuarб.
{
if(days < 0) return SendClientMessage(playerid, 0xFF0000AA, "Digite um numero de dias validos!"); // Se os dias forem menores que 0 retornarб este erro.
if(IsPlayerConnected(id)) // Se o jogador (id) estiver conectado continuarб.
{
GetPlayerName(id, pname, sizeof(pname)); // Pegamos o nome do jogador
TemporarySystem[id] = ConvertDays(days); // Daremos ao jogador o total de dias ja convertidos.
new string[85]; // criaremos uma variavel para armazenar os textos a serem enviados.
format(string, sizeof(string), "** Vocк deu %d dias de TemporarySystemName para %s.", days, pname); // pegaremos o texto e enviaremos para string.
SendClientMessage(playerid, -1, string); // Enviaremos a mensagem ao jogador que solicitou o comando
format(string, sizeof(string), "** Vocк recebeu %d dias de TemporarySystemName.", days, pname); // pegaremos o texto e enviaremos para string.
SendClientMessage(playerid, -1, string); // Enviaremos a mensagem ao jogador que solicitou o comando
format(string, sizeof(string), TempSystem, pname); // salvamos na string um texto que equivale a um arquivo que esta ou nгo salvo como nickdojogador.ini
DOF2_CreateFile(TempSystem); // Criaremos o arquivo.
DOF2_SetInt(TempSystem, "Dias", TemporarySystem[id]); // Salvaremos os dias.
DOF2_SaveFile(); // Salvaremos o arquivo.
}
else // Caso nгo esteja logado na conectado...
return SendClientMessage(playerid, 0xFF0000AA, "ERRO: Este jogador nгo estб conectado!"); // retornarб este ERRO.
}
else // Caso nгo esteja logado na Rcon...
return SendClientMessage(playerid, 0xFF0000AA, "ERRO: Vocк nгo estб logado na RCON"); // retornarб este ERRO.
return true; // retornamos que o comando foi executado com sucesso.
}
Se Tiver duvidas, comente, as explicaзхes estгo do lado das funзхes.
- Creditos
- DanDRT - Tutorial
- Willian Luigi - Apoio moral e ajuda na include ConvertDays :3