SSGamers - 10 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[Tutorial] » Sistema de Admin com DOF2 e ZCMD!

Weslley_Script
Weslley_Script
SS - Fundador
SS - Fundador


Steam Steam : WeslleySSGames
Zello : WeslleySSGames
Mensagens : 9468
Moedas : 1025850
Data de inscrição : 06/10/2011
Idade : 26
Localização : Brasil

[Tutorial] » Sistema de Admin com DOF2 e ZCMD! Empty [Tutorial] » Sistema de Admin com DOF2 e ZCMD!

Mensagem por Weslley_Script Qui 26 Ago 2021 - 16:28

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!
Código PHP:
Código:
#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:
Código:
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:
Código:
new pInfo[MAX_PLAYERS][Player]; 
 
O código terá que ficar assim:


Código PHP:
Código:
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: escreveu:Código PHP:
Código:
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:
Código:
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:
Código:
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:
Código:
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:
Código:
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:
Código:
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:
Código:
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:
Código:
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 [Tutorial] » Sistema de Admin com DOF2 e ZCMD! Biggrin

Podem deixar críticas afinal ninguém e perfeito!

Obs: Não consegui upar as includes aqui sorry :/
Creditos: Rochazig



[Tutorial] » Sistema de Admin com DOF2 e ZCMD! D07Xwqb
[Tutorial] » Sistema de Admin com DOF2 e ZCMD! Yjab9HN

    Data/hora atual: Qua 8 Dez 2021 - 20:16