04/10/2020 09:59
(Esta mensagem foi modificada pela última vez a: 27/10/2020 19:07 por Rochazig.)
SISTEMA DE ADMIN
Venho aqui tentar ensinar um sistema Admin básico para vocês usarem como base em sua GameMode!
Primeiramente vamos declarar as nossas includes!
Primeiramente vamos declarar as nossas includes!
Código PHP:
#include a_samp
#include ZCMD
#include DOF2
#include sscanf2
1.1 - VARIÁVEIS
Vamos começar pelas variáveis, primeiro iremos criar um enum para colocar os dados do jogador!
Código PHP:
enum Player
{
Admin
}
Explicação:
Um Enum é uma enumeração para suas variáveis, isso facilita para você não precisar criar por exemplo 50 variáveis para os dados do seu Jogador!
A Variável "Admin" que nós declaramos ela ira armazenar o Admin Level do seu Jogador!
Depois de ter declarado o Enum vamos criar uma New para que podemos utilizar essa variável que nós colocamos no nosso Enum!
Código PHP:
new pInfo[MAX_PLAYERS][Player];
O código terá que ficar assim:
Código PHP:
enum Player
{
Admin
}
new pInfo[MAX_PLAYERS][Player];
Para que serve o "MAX_PLAYERS"?
O MAX_PLAYERS Pega a quantidade se slots do seu servidor e verifica os Jogadores Online, e com isso nós podemos utilizar o "playerid".
2 - COMANDO PARA SETAR O ADMIN!
Agora iremos fazer o comando para dar Admin ao Jogador! Para nós fazermos isso iremos usar a Include "ZCMD" e a "DOF2" Para armazenamos os Dados!
Obs: O ZCMD Pode ser substituído pelo Pawn.CMD!
Vamos fazer a base do comando!
Citar:Código PHP:CMD:daradmin(playerid, params[])
{
return 1;
}
Está e a base de um comando usando a Include "ZCMD"!
CMD:daradmin é o nome do comando ou seja o /daradmin!
o params são os parâmetros que serão usados junto do "sscanf2"!
Com a nossa base do Comando feito iremos declarar algumas variáveis dentro do Comando!
Código PHP:
CMD:daradmin(playerid, params[])
{
new id, level, strganhou[256], strdeu[256], nomedeu[MAX_PLAYER_NAME], nomeganhou[MAX_PLAYER_NAME];
return 1;
}
Agora com as variáveis declaradas vamos fazer uma verificação com o Admin-Rcon para poder usar este comando!
Código PHP:
CMD:daradmin(playerid, params[])
{
new id, level, strganhou[256], strdeu[256], nomedeu[MAX_PLAYER_NAME], nomeganhou[MAX_PLAYER_NAME];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Você não tem autorização para usar este comando!");
return 1;
}
Agora vamos usar o "sscanf2" para verificar se o Autor do comando está digitando os valores certos!
Código PHP:
if(sscanf(params, "dd", id, level)) return SendClientMessage(playerid, 0xFF0000FF, "Use /daradmin [ID] [LEVEL]");
O que é este "dd"?
Este "dd" são os tipos dos valores!
o "d" é um valor numérico!
o "i" é um valor inteiro!
o "f" é valor float, ou seja um número decimal!
o "s" é uma String!
Agora vamos fazer a função que da a tag de admin ao jogador!
Código PHP:
CMD:daradmin(playerid, params[])
{
new id, level, strganhou[256], strdeu[256], nomedeu[MAX_PLAYER_NAME], nomeganhou[MAX_PLAYER_NAME];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Você não tem autorização para usar este comando!");
if(sscanf(params, "dd", id, level)) return SendClientMessage(playerid, 0xFF0000FF, "Use /daradmin [ID] [LEVEL]");
//FUNÇÃO
GetPlayerName(playerid, nomedeu, MAX_PLAYER_NAME);
GetPlayerName(playerid, nomeganhou, MAX_PLAYER_NAME);
format(strganhou, sizeof(strganhou), "O Admin %s te deu Admin Level %d!", nomedeu, level);
format(strdeu, sizeof(strdeu), "Voce deu Admin Level %d para %s[%d]", level, nomeganhou, id);
SendClientMessage(playerid, 0x00FF00FF, strdeu);
SendClientMessage(id, 0x00FF00FF, strganhou);
pInfo[id][Admin] = level;
return 1;
}
O GetPlayerName pega o Nick do Jogador e coloca em uma variável, no nosso caso e a nomeganhou e nomedeu!
O %s e %d é a mesma premissa do "s" e "d" mas ali formata a mensagem com os dados: id do jogador e o level!
Agora vamos fazer uma stock para Salvar os dados!
Código PHP:
stock SalvarDados(playerid)
{
new arquivo[40], pnome[MAX_PLAYER_NAME];
GetPlayerName(playerid, pnome, MAX_PLAYER_NAME);
format(arquivo, sizeof(arquivo), "Contas/%s.ini", pnome); //Aqui nos formatamos o arquivo aonde será guardado a conta do nosso jogador!
if(!DOF2_FileExists(arquivo)) DOF2_CreateFile(arquivo) // Aqui nos verificamos se a conta do jogador existe, se não cria uma!
DOF2_SetInt(arquivo, "Admin", pInfo[playerid][Admin]);
DOF2_SaveFile();
return 1; // returna true
}
Agora vamos Colocar a Função"DOF2_Exit();" e a SalvarDados no OnGameModeExit()
Código PHP:
public OnGameModeExit()
{
DOF2_Exit();
for(new i = 0; i < MAX_PLAYERS; i++) // Um loop para pegar todos os Jogador Onlines!
{
SalvarDados(i); // Salva os Dados de todos os Jogadores que estiverem Online!
}
return 1;
}
E vamos colocar o SalvarDados no Nosso Comando também!
Código PHP:
CMD:daradmin(playerid, params[])
{
new id, level, strganhou[256], strdeu[256], nomedeu[MAX_PLAYER_NAME], nomeganhou[MAX_PLAYER_NAME];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Você não tem autorização para usar este comando!");
if(sscanf(params, "dd", id, level)) return SendClientMessage(playerid, 0xFF0000FF, "Use /daradmin [ID] [LEVEL]");
//FUNÇÃO
GetPlayerName(playerid, nomedeu, MAX_PLAYER_NAME);
GetPlayerName(playerid, nomeganhou, MAX_PLAYER_NAME);
format(strganhou, sizeof(strganhou), "O Admin %s te deu Admin Level %d!", nomedeu, level);
format(strdeu, sizeof(strdeu), "Voce deu Admin Level %d para %s[%d]", level, nomeganhou, id);
SendClientMessage(playerid, 0x00FF00FF, strdeu);
SendClientMessage(id, 0x00FF00FF, strganhou);
pInfo[id][Admin] = level;
SalvarDados(id); //Salva os Dados do Jogador!
return 1;
}
Esse foi o tutorial, espero que vocês tenham gostado! Ainda estou me acostumando a esse novo fórum então foi bem simples esse tutorial
Podem deixar críticas afinal ninguém e perfeito!
Obs: Não consegui upar as includes aqui sorry :/
[projeto] Brasil New Roleplay