21.08.2013, 18:05
Olб,estou criando este tutorial para alguns que ainda nгo tem o sistema de administraзгo, os comandos vгo estar em zCMD!
Bom vamos lб!
1. Coloque estas include no comeзo do GameMode , serгo necessбrias:
1,1 . Coloque estas defines no inicio do GameMode:
2. Coloque isto no comeзo do GameMode:
3. Coloque isso em OnGamemodeExit ou se for FS (OnFilterScriptExit) .
4. Agora vamos criar os comandos, como disse no inнcio, vamos usar zCMD, entгo no final do GameMode coloque isso:
5. Agora vamos criar o sistema de salvamento, em DOF2 .
Em OnPlayerDisconnect coloque isso:
Agora em OnPlayerConnect:
6. Teremos que criar uma stock para verificar o level que vocк digitou no comando /daradmin . No final do GameMode coloque isso:
7. Ops,esqueci de colocar o comando /tiraradmin , entгo vamos colocar em baixo do /daradmin
8. Agora un comando que sу o player admin possa usar:
Bem galera й isso,e o meu 3є tutorial, sem plбgio,explicado, e espero que gostem !
Crйditos:
Bom vamos lб!
1. Coloque estas include no comeзo do GameMode , serгo necessбrias:
pawn Код:
#include <zcmd>
#include <sscanf>
#include <DOF2>
pawn Код:
#define Moderador 1
#define Guardiao 2
#define Admin 3
#define SubDono 4
#define Dono 5
pawn Код:
enum PlayerAdmin
{
Level
}
new pAdmin[MAX_PLAYERS][PlayerAdmin];
Explicaзгo
pawn Код:
enum PlayerAdmin // Isto o ( enum ) й chamado Enumeradores, serve pra armazenar valores, como o LEVEL que armazena o level do admin.
{
Level
}
new pAdmin[MAX_PLAYERS][PlayerAdmin]; // Isso ( new ) й uma Variбvel , й usada para utilizar o Enumerador PlayerAdmin .
pawn Код:
DOF2_Exit();
Explicaзгo
pawn Код:
DOF2_Exit(); // Isso й pra quando o samp-server.exe fechar,a include tambйm,e tambйm nunca se esqueзa de colocar isso! Pode dar alguns warnings ou nгo funcionar a include direito!
pawn Код:
CMD:daradmin(playerid, params[])
{
new id, level, string[256], string2[256], ganhou[MAX_PLAYER_NAME], deu[MAX_PLAYER_NAME];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xAD0000AA, "{00E5FF}Vocк nгo estб autorizado.");
if(sscanf(params, "ud", id, level)) return SendClientMessage(playerid, 0xAD0000AA, "Use /daradmin [ID] [LEVEL]");
if (level < 0 || level > 5) return SendClientMessage(playerid, 0xFF0000FF, "Level invбlido. Use de 1 б 5 .");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xAD0000AA, "Este jogador nгo estб online.");
GetPlayerName(id, ganhou, sizeof(ganhou));
GetPlayerName(playerid, deu, sizeof(deu));
format(string, sizeof(string), "Vocк deu admin level %s para o %s", GetLevelAdmin(level), ganhou);
SendClientMessage(playerid, 0x00F6F6AA, string);
format(string2, sizeof(string2), "O admin %s deu admin level %s para vocк.", deu , GetLevelAdmin(level));
SendClientMessage(id, VERDE, string2);
pAdmin[id][Level] = level;
return 1;
}
Explicaзгo
pawn Код:
CMD:daradmin(playerid, params[])
{
new id, level, string[256], string2[256], ganhou[MAX_PLAYER_NAME], deu[MAX_PLAYER_NAME]; // Variбveis que vamos usar no comando .
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xAD0000AA, "{00E5FF}Vocк nгo estб autorizado."); // Verifica se estб na logado na rcon, se nгo, vai manda a mensagem "Vocк nгo estб autorizado." .
if(sscanf(params, "ud", id, level)) return SendClientMessage(playerid, 0xAD0000AA, "Use /daradmin [ID] [LEVEL]"); // Estamos usando o sscanf, este comando do sscanf server para usar um parвmetro.
if (level < 1 || level > 5) return SendClientMessage(playerid, 0xFF0000FF, "Level invбlido. Use de 1 б 5 ."); // Isso verifica se vocк digitou o level na forma correta, se nгo manda a mensagem "Level invбlido. Use de 1 б 5 ."
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xAD0000AA, "Este jogador nгo estб online."); // Verifica se o id estб online, se nгo, envia a mensagem "Este jogador nгo estб online."
GetPlayerName(id, ganhou, sizeof(ganhou)); // Isso serve para pegar o nome do player.
GetPlayerName(playerid, deu, sizeof(deu)); // Isso serve para pegar o nome do player.
format(string, sizeof(string), "Vocк deu admin level %s para o %s", GetLevelAdmin(level), ganhou); // Formata a mensagem para ser enviada .
SendClientMessage(playerid, 0x00F6F6AA, string); //Envia a mensagem formatada a cima .
format(string2, sizeof(string2), "O admin %s deu admin level %s para vocк.", deu , GetLevelAdmin(level)); // Formata a mensagem para ser enviada .
SendClientMessage(id, VERDE, string2); //Envia a mensagem a cima.
pAdmin[id][Level] = level; //Muda o level do player para o conforme digitado.
return 1;
}
Em OnPlayerDisconnect coloque isso:
pawn Код:
new arquiva[34], playernome[MAX_PLAYER_NAME];
GetPlayerName(playerid, playernome, sizeof(playernome));
format(arquiva, sizeof(arquiva), "Admins/%s", playernome);
if(DOF2_FileExists(arquiva))
{
DOF2_SetInt(arquiva, "Level", pAdmin[playerid][Level]);
DOF2_SaveFile();
}
else
{
DOF2_CreateFile(arquiva);
DOF2_SetInt(arquiva, "Level", pAdmin[playerid][Level]);
DOF2_SaveFile();
}
pawn Код:
new arquivi[34], nomeplayer[MAX_PLAYER_NAME];
GetPlayerName(playerid, nomeplayer, sizeof(nomeplayer));
format(arquivi, sizeof(arquivi), "Admins/%s", nomeplayer);
pAdmin[playerid][Level] = DOF2_GetInt(arquivi, "Level");
Explicaзгo
pawn Код:
new arquiva[34], playernome[MAX_PLAYER_NAME]; //Variбveis que vamos usar .
GetPlayerName(playerid, playernome, sizeof(playernome)); //Geta o nome do player .
format(arquiva, sizeof(arquiva), "Admins/%s", playernome); Formata o local da pasta que vai salvar as contas dos admins .
if(DOF2_FileExists(arquiva)) //Se existir
{
DOF2_SetInt(arquiva, "Level", pAdmin[playerid][Level]); //Criamos o valor de Level na Enum PlayerAdmin,e se a conta existir,atualiza o valor no aquivo da pasta Admin .
DOF2_SaveFile(); //Salva o arquivo .
}
else //Se a conta nгo existir
{
DOF2_CreateFile(arquiva); //Cria o arquivo
DOF2_SetInt(arquiva, "Level", pAdmin[playerid][Level]); //Criamos o valor de Level na Enum PlayerAdmin,e se a conta existir,atualiza o valor no aquivo da pasta Admin .
DOF2_SaveFile(); //Salva o arquivo .
}
pawn Код:
new arquivi[34], nomeplayer[MAX_PLAYER_NAME]; //Variбveis que iremos usar .
GetPlayerName(playerid, nomeplayer, sizeof(nomeplayer)); Geta o nome do player
format(arquivi, sizeof(arquivi), "Admins/%s", nomeplayer); //Formata o local da pasta que vai salvar as contas dos admins .
pAdmin[playerid][Level] = DOF2_GetInt(arquivi, "Level"); //Isso vai carregar o valor Level na pasta Admins,no arquivo da conta do admin .
pawn Код:
stock GetLevelAdmin(levelid)
{
new str[50];
if(levelid == 1)
{
str = "1";
}
else if (levelid == 2)
{
str = "2";
}
else if (levelid == 3)
{
str = "3";
}
else if (levelid == 4)
{
str = "4";
}
else if (levelid == 5)
{
str = "5";
}
return str;
}
Explicaзгo
pawn Код:
stock GetLevelAdmin(levelid)
{
new str[50]; Variбvel para enviar os levels abaixo.
if(levelid == 1) //Verifica se o level й 1 .
{
str = "1"; //Vai mostrar a frase "O admin Nome deu admin level 1 para vocк."
}
else if (levelid == 2) //Verifica se o level й 2 .
{
str = "2"; //Vai mostrar a frase "O admin Nome deu admin level 2 para vocк."
}
else if (levelid == 3) //Verifica se o level й 3 .
{
str = "3"; //Vai mostrar a frase "O admin Nome deu admin level 3 para vocк."
}
else if (levelid == 4) //Verifica se o level й 4 .
{
str = "4"; //Vai mostrar a frase "O admin Nome deu admin level 4 para vocк."
}
else if (levelid == 5) //Verifica se o level й 5 .
{
str = "5"; //Vai mostrar a frase "O admin Nome deu admin level 5 para vocк."
}
return str;
}
pawn Код:
CMD:tiraradmin(playerid, params[])
{
new id, player[MAX_PLAYER_NAME], tirou[MAX_PLAYER_NAME], string[256], string2[256];
if (pAdmin[playerid][Level] != 5) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo estб autorizado.");
if (sscanf(params, "u", id)) return SendClientMessage(playerid, 0xAD0000AA, "Use /tiraradmin [ID] ");
if (pAdmin[id][Level] < 1) return SendClientMessage(playerid, VERMELHO, "Este player nгo й admin ! ");
GetPlayerName(id, player, sizeof(player));
GetPlayerName(playerid, tirou, sizeof(tirou));
format(string, sizeof(string), "Vocк tirou o admin do %s", player);
SendClientMessage(playerid, 0x00F6F6AA, string);
format(string2, sizeof(string2), "O admin %s tirou seu admin.", tirou);
SendClientMessage(id, VERDE, string2);
pAdmin[playerid][Level] = 0;
return 1;
}
Explicaзгo
pawn Код:
CMD:tiraradmin(playerid, params[])
{
new id, player[MAX_PLAYER_NAME], tirou[MAX_PLAYER_NAME], string[256], string2[256]; //Variбveis que iremos usar no comando .
if (pAdmin[playerid][Level] != 5) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo estб autorizado."); // Verifica se й admin level 5, se nгo, vai manda a mensagem "Vocк nгo estб autorizado." .
if (sscanf(params, "u", id)) return SendClientMessage(playerid, 0xAD0000AA, "Use /tiraradmin [ID] "); // Estamos usando o sscanf, este comando do sscanf server para usar um parвmetro.
if (pAdmin[id][Level] < 1) return SendClientMessage(playerid, VERMELHO, "Este player nгo й admin ! "); //Verifica se o player digitado no /tiraradmin й admin ou nгo .
GetPlayerName(id, player, sizeof(player)); //Geta o nome do player .
GetPlayerName(playerid, tirou, sizeof(tirou));//Geta o nome do player .
format(string, sizeof(string), "Vocк tirou o admin do %s", player); //Formata a mensagem que serб enviada .
SendClientMessage(playerid, 0x00F6F6AA, string); //Envia a mensagem a cima .
format(string2, sizeof(string2), "O admin %s tirou seu admin.", tirou); //Formata a mensagem que serб enviada .
SendClientMessage(id, VERDE, string2); //Envia a mensagem acima .
pAdmin[playerid][Level] = 0; Muda o valor Level do player para 0 .
return 1;
}
pawn Код:
CMD:trazer(playerid, params[])
{
if(pAdmin[playerid][Level] < 1) return SendClientMessage(playerid, VERMELHO,"Vocк nгo estб autorizado.");
new id, Float: x, Float: y, Float: z, string[256], string2[256], namep[MAX_PLAYER_NAME], namead[MAX_PLAYER_NAME];
if(sscanf(params, "u", id)) return SendClientMessage(playerid, VERMELHO,"Use /trazer [ID]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, VERMELHO,"Este jogador nгo estб online.");
GetPlayerName(playerid, namead, sizeof(namead));
GetPlayerName(id, namep, sizeof(namep));
format(string, sizeof(string), "Trouxe o player %s atй vocк.", namep);
format(string2, sizeof(string2), "O Administrador %s trouxe vocк atй ele.", namead);
SendClientMessage(playerid, Azul_C, string);
SendClientMessage(id, VERDE, string2);
GetPlayerPos(playerid, x, y, z);
SetPlayerPos(id, x+1, y+1, z);
return 1;
}
Explicaзгo
pawn Код:
CMD:trazer(playerid, params[])
{
if(pAdmin[playerid][Level] < 1) return SendClientMessage(playerid, VERMELHO,"Vocк nгo estб autorizado."); //Verifica se o player й admin se nгo for, manda a mensagem "Vocк nгo estб autorizado." .
new id, Float: x, Float: y, Float: z, string[256], string2[256], namep[MAX_PLAYER_NAME], namead[MAX_PLAYER_NAME]; //Variбveis que iremos usar no comando
if(sscanf(params, "u", id)) return SendClientMessage(playerid, VERMELHO,"Use /trazer [ID]"); //Estamos usando o sscanf, este comando do sscanf server para usar um parвmetro.
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, VERMELHO,"Este jogador nгo estб online."); //Verifica se o player estб online , se nгo envia a mensagem "Este jogador nгo estб online." .
GetPlayerName(playerid, namead, sizeof(namead)); //Pega o nome do player.
GetPlayerName(id, namep, sizeof(namep)); //Pega o nome do player .
format(string, sizeof(string), "Trouxe o player %s atй vocк.", namep); //Formata a mensagem que serб enviada .
format(string2, sizeof(string2), "O Administrador %s trouxe vocк atй ele.", namead); //Formata a mensagem que serб enviada .
SendClientMessage(playerid, Azul_C, string); //Envia a mensagem a cima.
SendClientMessage(id, VERDE, string2); //Envia a mensagem acima.
GetPlayerPos(playerid, x, y, z); //Pega a posiзгo do id digitado no comando .
SetPlayerPos(id, x+1, y+1, z); //Muda a posiзгo do player para o id digitado no comando .
return 1;
}
Crйditos:
xxRaioxx ( Eu , criador do tutorial )
Criador do zCMD
Criador do DOF2
Criador do sscanf
Criador do zCMD
Criador do DOF2
Criador do sscanf