Eis Aki Um Pequeno e Básico Sistema De Admin Para Iniciantes em Pawn para Criarem Seu Proprio GM
Primeiramente baixe o include Dini
Coloque no topo:
#include
#include
#define PASTAPLAYERS "Registro"
Crie essas variaveis enumeradas:
enum gAdmin
{
bool:Logado,
Nivel
}
new AdminInfo[MAX_PLAYERS][gAdmin];
new GivePlayerid;
new Nome[24];
new string[200];
Explicação:
bool:Logado Serve para verificar se o player está logado ou não.
Nivel serve para poder ter um nível.
___________________
-> Começando:
-------------------------
Crie:
CMD:registrar(playerid, params[])
{
return 1;
}
Info: Não pode conter Números Maiúsculos na parte do comando.
Agora adicione:
CMD:registrar(playerid, params[])
{
GetPlayerName(playerid, Nome, 24);
format(string, sizeof(string),"%s.txt", Nome);
if(fexist(string)) return cmd_logar(playerid, params[]);
static Senha;
if(sscanf(params,"d", Senha[playerid])) return SendClientMessage(playerid, Cor,"[ERRO]: Correto é:/Registrar [Senha]");
dini_Create(string);
AdminInfo[playerid][Logado] = true;
dini_Set(string, "Nome", Nome);
dini_Set(string, "Senha", Senha);
dini_Set(string, "Nivel", AdminInfo[playerid][Nivel]);
SendClientMessage(playerid, Cor,"[INFO]: Registrado com suscesso!");
return 1;
}
Explicando:
if(sscanf(params,"d", Senha[playerid])) return SendClientMessage(playerid, Vermelho,"[ERRO]: Correto é: /Registrar [Senha]); Serve para verficar se a utilização do código está correcta.
GetPlayerName(playerid, Nome, 24): Serve para pegar nome do player.
if(fexist(string)) return cmd_logar(playerid, params[]): Se o Nome do playe estiver registrado ele Rerediciona para login.
AdminInfo[playerid][Logado] = true; para dizer que está logado.
___________________
Agora faremos o 'Login'
Crie também:
CMD:logar(playerid, params[])
{
GetPlayerName(playerid, Nome, 24);
format(string, sizeof(string),"%s.txt", Nome);
if(!fexist(string)) return cmd_registrar(playerid, params);
static Senha;
if(sscanf(params,"d", Senha[playerid])) return SendClientMessage(playerid, Cor,"[ERRO]: Correto é:/logar [Senha]");
if(strcmp(dini_Get(string, "Senha"), inputtext, true) != 0) return SendClientMessage(playerid, Cor,"[ERRO]: Senha Icorreta!");
AdminInfo[playerid][Logado] = true;
dini_Get(string, "Nivel"); AdminInfo[playerid][Nivel] = dini_Int(string,"Nivel");
SendClientMessage(playerid, Cor,"[INFO]: Logado com suscesso!");
return 1;
}
Explicando:
if(!fexist(string)) return cmd_registrar(playerid, params[]); Verifica se o player existe, se não existir ele rerediciona para registro.
if(sscanf(params,"d", Senha[playerid])) Verifica se utilização do comando está correta.
if(strcmp(dini_Get(string, "Senha"), inputtext, true) != 0) Verifica se a senha está correta.
AdminInfo[playerid][Logado] = true; Bota como "Logado".
dini_Get(string, "Nivel"); AdminInfo[playerid][Nivel] = dini_Int(string,"Nivel"); Pega o Nivel do Player.
___________________
Sistema de níveis
-------------------------------
Crie logo abaixo dos outros comandos:
CMD:setlevel(playerid, params[])
{
if(!IsPlayerAdmin(playerid))
if(AdminInfo[playerid][Nivel] < 5) return SendClientMessage(playerid, Cor,"[ERRO]: Seu nível é insuficiente para setar como admin ou não está logado na rcon.");
static Level = 0;
if(sscanf(params, "ud", GivePlayerid, Level) return SendClientMessage(playerid, Cor,"[ERRO]: Correto: /SetNivel [ID] [Nivel].");
if(Level > 5 || Level < 0) return SendClientMessage(playerid, Cor,"[ERRO]:Bote Nivel Maior que 1 e menor que 5!.");
if(AdminInfo[GivePlayerid][Nivel] == Level) return SendClientMessage(playerid, Cor,"[ERRO]: Este player já tem este nível.");
AdminInfo[GivePlayerid][Nivel] == Level;
SendClientMessage(GivePlayerid, cor, "[INFO]: Parabéns, você é um adminstrador");
return 1;
}
Explicando:
if(!IsPlayerAdmin(playerid)) if(AdminInfo[playerid][Nivel] < 5) return SendClientMessage(playerid, Cor,"[ERRO]: Seu nível é insuficiente para setar como admin ou não está logado na rcon."); Verifica se o Player que digitou é administrador logado na Rcon ou Admin Master.
if(sscanf(params, "ud", GivePlayerid, Level) Verifica se o comando está sendo utilizado corretamente.
if(Level > 5 || Level < 0) Verifica se o nível que o Adminstrador deu é incorreto.
if(AdminInfo[GivePlayerid][Nivel] == Level) Verifica se o Player já tem este nível.
AdminInfo[GivePlayerid][Nivel] == Level; dá nivel para player.
____________________
Final
--------------------------------
Crie "Copiosadamente" estes códigos.
public OnPlayerDisconnect(playerid, reason)
{
if(AdminInfo[playerid][Logado] == true)
{
dini_Set(string, "Nivel", AdminInfo[playerid][Nivel]);
}
return 1;
}
Info: os códigos acima serve para salvar o nível quando player logado/registrado sair.
Primeiramente baixe o include Dini
Coloque no topo:
#include
#include
#define PASTAPLAYERS "Registro"
Crie essas variaveis enumeradas:
enum gAdmin
{
bool:Logado,
Nivel
}
new AdminInfo[MAX_PLAYERS][gAdmin];
new GivePlayerid;
new Nome[24];
new string[200];
Explicação:
bool:Logado Serve para verificar se o player está logado ou não.
Nivel serve para poder ter um nível.
___________________
-> Começando:
-------------------------
Crie:
CMD:registrar(playerid, params[])
{
return 1;
}
Info: Não pode conter Números Maiúsculos na parte do comando.
Agora adicione:
CMD:registrar(playerid, params[])
{
GetPlayerName(playerid, Nome, 24);
format(string, sizeof(string),"%s.txt", Nome);
if(fexist(string)) return cmd_logar(playerid, params[]);
static Senha;
if(sscanf(params,"d", Senha[playerid])) return SendClientMessage(playerid, Cor,"[ERRO]: Correto é:/Registrar [Senha]");
dini_Create(string);
AdminInfo[playerid][Logado] = true;
dini_Set(string, "Nome", Nome);
dini_Set(string, "Senha", Senha);
dini_Set(string, "Nivel", AdminInfo[playerid][Nivel]);
SendClientMessage(playerid, Cor,"[INFO]: Registrado com suscesso!");
return 1;
}
Explicando:
if(sscanf(params,"d", Senha[playerid])) return SendClientMessage(playerid, Vermelho,"[ERRO]: Correto é: /Registrar [Senha]); Serve para verficar se a utilização do código está correcta.
GetPlayerName(playerid, Nome, 24): Serve para pegar nome do player.
if(fexist(string)) return cmd_logar(playerid, params[]): Se o Nome do playe estiver registrado ele Rerediciona para login.
AdminInfo[playerid][Logado] = true; para dizer que está logado.
___________________
Agora faremos o 'Login'
Crie também:
CMD:logar(playerid, params[])
{
GetPlayerName(playerid, Nome, 24);
format(string, sizeof(string),"%s.txt", Nome);
if(!fexist(string)) return cmd_registrar(playerid, params);
static Senha;
if(sscanf(params,"d", Senha[playerid])) return SendClientMessage(playerid, Cor,"[ERRO]: Correto é:/logar [Senha]");
if(strcmp(dini_Get(string, "Senha"), inputtext, true) != 0) return SendClientMessage(playerid, Cor,"[ERRO]: Senha Icorreta!");
AdminInfo[playerid][Logado] = true;
dini_Get(string, "Nivel"); AdminInfo[playerid][Nivel] = dini_Int(string,"Nivel");
SendClientMessage(playerid, Cor,"[INFO]: Logado com suscesso!");
return 1;
}
Explicando:
if(!fexist(string)) return cmd_registrar(playerid, params[]); Verifica se o player existe, se não existir ele rerediciona para registro.
if(sscanf(params,"d", Senha[playerid])) Verifica se utilização do comando está correta.
if(strcmp(dini_Get(string, "Senha"), inputtext, true) != 0) Verifica se a senha está correta.
AdminInfo[playerid][Logado] = true; Bota como "Logado".
dini_Get(string, "Nivel"); AdminInfo[playerid][Nivel] = dini_Int(string,"Nivel"); Pega o Nivel do Player.
___________________
Sistema de níveis
-------------------------------
Crie logo abaixo dos outros comandos:
CMD:setlevel(playerid, params[])
{
if(!IsPlayerAdmin(playerid))
if(AdminInfo[playerid][Nivel] < 5) return SendClientMessage(playerid, Cor,"[ERRO]: Seu nível é insuficiente para setar como admin ou não está logado na rcon.");
static Level = 0;
if(sscanf(params, "ud", GivePlayerid, Level) return SendClientMessage(playerid, Cor,"[ERRO]: Correto: /SetNivel [ID] [Nivel].");
if(Level > 5 || Level < 0) return SendClientMessage(playerid, Cor,"[ERRO]:Bote Nivel Maior que 1 e menor que 5!.");
if(AdminInfo[GivePlayerid][Nivel] == Level) return SendClientMessage(playerid, Cor,"[ERRO]: Este player já tem este nível.");
AdminInfo[GivePlayerid][Nivel] == Level;
SendClientMessage(GivePlayerid, cor, "[INFO]: Parabéns, você é um adminstrador");
return 1;
}
Explicando:
if(!IsPlayerAdmin(playerid)) if(AdminInfo[playerid][Nivel] < 5) return SendClientMessage(playerid, Cor,"[ERRO]: Seu nível é insuficiente para setar como admin ou não está logado na rcon."); Verifica se o Player que digitou é administrador logado na Rcon ou Admin Master.
if(sscanf(params, "ud", GivePlayerid, Level) Verifica se o comando está sendo utilizado corretamente.
if(Level > 5 || Level < 0) Verifica se o nível que o Adminstrador deu é incorreto.
if(AdminInfo[GivePlayerid][Nivel] == Level) Verifica se o Player já tem este nível.
AdminInfo[GivePlayerid][Nivel] == Level; dá nivel para player.
____________________
Final
--------------------------------
Crie "Copiosadamente" estes códigos.
public OnPlayerDisconnect(playerid, reason)
{
if(AdminInfo[playerid][Logado] == true)
{
dini_Set(string, "Nivel", AdminInfo[playerid][Nivel]);
}
return 1;
}
Info: os códigos acima serve para salvar o nível quando player logado/registrado sair.