Vamos usar neste sistema as seguintes includes que podem ser encontradas nogoogle:
DOF2 - ZCMD - SSCANF
Começando:
Primeiro iremos criar uma variável para hospedar o nível de administrador e a variavel que irá hospedar se o administrador está trabalhando ou não. (caso não saiba oque é uma variável você precisa saber o básico antes deste tutorial, então procure o tutorial do garfild.)
Agora iremos entender algumas funções do DOF2:
Agora vamos usar a Callback public OnPlayerConnect para criar/carregar os dados da pasta Admins/NOME DO PLAYER.ini
Agora vamos para a ultima parte que são os comandos. É bem simples, basta usar a seguinte função nos comandos:
Agora basta criar sua criatividade.
Começando:
Primeiro iremos criar uma variável para hospedar o nível de administrador e a variavel que irá hospedar se o administrador está trabalhando ou não. (caso não saiba oque é uma variável você precisa saber o básico antes deste tutorial, então procure o tutorial do garfild.)
pawn Código:
new Administrador[MAX_PLAYERS]; /* Explicação: new = Cria a variável. Administrador = Nome da variável. MAX_PLAYERS = Numero maximo de players do servidor. */ new Trabalhando[MAX_PLAYERS]; // A Explicação da primeira variavel se encaixa nessa tambem..
pawn Código:
DOF2_GetString // Geta um valor de uma string (como o valor %s). DOF2_SetString // Seta um valor de uma string. DOF2_GetInt // Geta um valor numerico. DOF2_SetInt // Seta um valor numerico. DOF2_CreateFile // Cria um arquivo. DOF2_FileExists // Checa se um arquivo existe. DOF2_SaveFile // Salva um arquivo.
pawn Código:
public OnPlayerConnect(playerid) { Trabalhando[playerid] = 0; // Caso o player seja administrador entrar em modo jogo.. new file[70]; // Variavel que irá hospedar os dados do player. new snd[MAX_PLAYER_NAME]; // Variavel que irá hospedar o nome do player. GetPlayerName(playerid, snd, sizeof snd); // Função que geta o nome do player e hospeda na variavel snd. format(file,sizeof file,"Admins/%s.ini",snd); // Irá hospedar os dados do arquivo Admins/nomedoplayer.ini na variavel file. if(DOF2_FileExists(file)) { // Se o arquivo existir.. Administrador[playerid] = DOF2_GetInt(file,"Admin"); /* Aqui irá hospedar o valor da linha 'Admin' do arquivo hospedado na variavel 'file' na variavel Administrador que criamos no começo.. */ } else if(!DOF2_FileExists(file)) { // Se o arquivo não existir.. DOF2_CreateFile(file); // Cria o arquivo hospedado na variavel file. DOF2_SetInt(file,"Admin",0); // Seta a linha 'Admin' para o valor '0' que seria sem admin. DOF2_SaveFile(); // Irá salvar o arquivo acima. Administrador[playerid] = DOF2_GetInt(file,"Admin"); /* Acima criamos e carregamos o arquivo ao mesmo tempo.. */ } return true; }
pawn Código:
if(Administrador[playerid] == 0) return SendClientMessage(playerid,0xC0C0C0AA,"Você não é um administrador!"); // Isso checa se o player que executou o comando é administrador ou não..
Veja alguns comandos:
(/admins - /trabalhar - /kick) - É só uma base para você.
pawn Código:
CMD:admins(playerid,params[]) { #pragma unused params new string[128]; for(new x = 0; x < MAX_PLAYERS; x++) { if(Administrador[i] >= 1) { format(string, sizeof string, "• Admin: %s Nivel: [Normal] Modo: [%s]",Trabalhando[i] ? ("Trabalhando") : ("Jogando")); SendClientMessage(playerid, -1, string); } if(IsPlayerAdmin(i)) { format(string, sizeof string, "• Admin: %s Nivel: [RCON] Modo: [%s]",Trabalhando[i] ? ("Trabalhando") : ("Jogando")); SendClientMessage(playerid, -1, string); } } return 1; } CMD:trabalhar(playerid,params[]) { #pragma unused params new string[128], snd[MAX_PLAYER_NAME]; GetPlayerName(playerid, snd, sizeof snd); if(Administrador[playerid] == 0 || !IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xC0C0C0AA,"Você não é um administrador!"); if(Trabalhando[playerid] == 0) { SetPlayerHealth(playerid, cellmax); Trabalhando[playerid] = 1; } else if(Trabalhando[playerid] == 1) { SetPlayerHealth(playerid, 100); Trabalhando[playerid] = 0; } format(string, sizeof string, ">> O Administrador %s acaba de %s.",snd,Trabalhando[playerid] ? ("entrar no modo trabalho") : ("saiu do modo trabalho")); SendClientMessageToAll(-1,string); return 1; } CMD:kick(playerid,params[]) { new id,motivo[128],string[128],snd[MAX_PLAYER_NAME]; if(Administrador[playerid] == 0 || !IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xC0C0C0AA,"Você não é um administrador!"); if(Trabalhando[playerid] == 0) return SendClientMessage(playerid, 0xC0C0C0AA, "Use: /trabalhar"); if(sscanf(params,"us",id,motivo)) return SendClientMessage(playerid, 0xC0C0C0AA, "Use: /kick [playerid] [motivo]"); GetPlayerName(id,snd,sizeof snd); format(string, sizeof string, ">> O Player %s foi kickado por %s.",snd,motivo); SendClientMessageToAll(-1,string); Kick(id); return 1; }
Creditos: HumildadeAgain
0 comentários:
Postar um comentário