Aqui vai um rápido tutorial de como criar um sistema temporário.
- O que vou precisar?
[list="box-sizing: border-box; margin-bottom: 10px; color: rgb(51, 51, 51); font-family:"][*]De uma include para o Salvamento, será usado no tutorial a DOF2.
[*]Da inclui a_samp.
[*]Da include ConvertDays, Download Aqui .
[*]De uma include de processamento de comandos, no tutorial vou esperar ZCMD + SSCANF.
[/list]
- Criando o sistema temporario
[list="box-sizing: border-box; margin-bottom: 10px; color: rgb(51, 51, 51); font-family:"][*]Instalaremos como inclui no GameMode
peão Код:
- Código:
#include <a_samp>
// Usaremos alguns callback's e nativos dela.
#include <ConvertDays>
// Trabalharemos os sistemas temporários com ela.
#include <DOF2>
// Salvaremos as informações com ela.
#include <zcmd>
// Criamos os comandos com ela.
#include <sscanf>
// Trabalharemos com os parâmetros do ZCMD com ela.
[*]Criando um TempSystem definido
peão Код:
- Código:
#define TempSystem "/TempSystem/%s.ini" // Troque TempSystem pela pasta em que permaneceram os seus sistemas temporários.
[*]Criando a variável que armazenamos os dados do sistema temporário
peão Код:
- Código:
novo Sistema Temporário [ 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.):
peão Код:
- Código:
public OnPlayerConnect ( playerid ) // Este callback é chamado quando o jogador se conecta ao servidor
{
TemporarySystem [ playerid ] = 0 ; // Definiremos 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 continueб
{
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 ; // Setamos 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ê tem %s de TemporarySystemName" , ConvertToDays ( TemporarySystem [ playerid ] ) ) ; // formataremos a mensagem a ser enviada
SendClientMessage ( playerid, - 1 , string ) ; // Enviamos a mensagem
}
}
return 1 ; // retornamos o valor 1(verdadeiro)
}
[*]Criando o comando de setagem do sistema temporario
peão Код:
- Código:
CMD : settempsystem ( playerid, params [ ] ) // definimos um comando, também definimos que nele usaremos o playerid e os params(parametros).
{
novo id, dias, pname [ MAX_PLAYER_NAME ] ; // o id do jogador que recebeá o benefício do sistema temporário, uma também para o nome do jogador, e os dias do sistema temporário.
if ( sscanf ( params, "ud" , id, days ) ) // Pega os parametros e joga nas variaveis.
return SendClientMessage ( ID do jogador, 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 ( dias < 0 ) return SendClientMessage ( playerid, 0xFF0000AA, "Digite um número de dias válidos!" ) ; // Se os dias menores foram que 0 retornará este erro.
if ( IsPlayerConnected ( id ) ) // Se o jogador (id) estiver conectado continueб.
{
GetPlayerName ( id, pname, sizeof ( pname ) ) ; // Pegamos o nome do jogador
TemporarySystem [ id ] = ConvertDays ( days ) ; // Daremos ao jogador o total de dias ja convertidos.
nova string [ 85 ] ; // criaremos uma variável para armazenar os textos a serem enviados.
formato ( string, sizeof ( string ) ,"** Você deu %d dias de TemporarySystemName para %s." , dias, pname ) ; // pegaremos o texto e enviaremos para string.
SendClientMessage ( playerid, -1 , string ) ; // Enviaremos uma 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 uma 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_SalvarArquivo ( ) ;// Salvaremos o arquivo.
}
else // Caso não esteja conectado na conexão...
return SendClientMessage ( playerid, 0xFF0000AA, "ERRO: Este jogador não está conectado!" ) ; // retornará este ERRO.
}
else // Caso não esteja logado no Rcon...
return SendClientMessage ( playerid, 0xFF0000AA, "ERRO: Você não está logado na RCON" ) ; // retornará este ERRO.
retornar verdadeiro; // retornamos que o comando foi executado com sucesso.
}
[/list]
Se Tiver dúvidas, comente, as explicações estão do lado das funções.
- Creditos
[list="box-sizing: border-box; margin-bottom: 10px; color: rgb(51, 51, 51); font-family:"][*]DanDRT - Tutorial
[*]Willian Luigi - Apoio moral e ajuda na include ConvertDays :3
[/list]