Tutoriais

______________________________________________________________________________________________

By: Matrix

Bom Neste Tutorial irei Falar Um Pouco Das Callbacks (Public), e sua funções.
Bom Vamos Começar !

OBS:Não irei Colocar Todas Agora. Apenas Irei Colocar As Mais Utilizadas. e tambem São Muitas (40).


Bom A Primeira Callback é a "OnFilterScriptInit()".Bom o nome dela ja Diz, é para Criação de FS (FILTERSCRIPT).
Tais Como Colocar Objetos, Funções, Nome Da Fs Entre Outras Coisas.

pawn Code:
public OnFilterScriptInit() {     print("\n--------------------------------------");     print(" Nome da Sua FS ");// Nome Que Deseja Por Que Serar Printado no Console Assim que Ligar o Server.     print("--------------------------------------\n");     return 1; }

---------------------------------------------------------------------------------------------------

A Segunda Callback é a "OnFilterScriptExit()".
Bom essa Callback é Quando A FS é Desligada.
Não tenho Muito oque falar dela.

pawn Code:
public OnFilterScriptExit() {     return 1; }

---------------------------------------------------------------------------------------------------

A Terçeira Callback é a "public OnGameModeInit()".
Bom ela é a responsavel Por O GameMode.
Nela Você Poem Objetos, Funções, Pickups, 3DTextLabel, Menus, TextDraw Entre Outras Muitas Coisas

pawn Code:
public OnGameModeInit() {     SetGameModeText("Blank Script");//NOME DO GAME MODE.     CreateStaticPickup(ID PICKUP, TIPO DE RESPAWN, PosX, PosY, PosZ);// Para Criação de Pickup     AddPlayerClass(ID SKIN, PosX, PosY, PosZ, Rot, Arma1, Ballas1, Armas2, Ballas2, Armas3, Ballas3);//ONDE O PLAYER IRA NASCER, OU SEJA PRIMEIRO SPAWN.     return 1; }

---------------------------------------------------------------------------------------------------

A Quarta Callback é a "public OnGameModeExit()".
Ou Seja Quando O GAMEMODE é desligado
pawn Code:
public OnGameModeExit() {     return 1; }

---------------------------------------------------------------------------------------------------

A Quinta CallBack é a "public OnPlayerRequestClass(playerid, classid)".
Essa é a responsavel Para o seleção de skin, Ou Seja Quando O Player Escolher as Skin Desejada
pawn Code:
public OnPlayerRequestClass(playerid, classid) {     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);// Quando O Player Spawna     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);// Seta A Camera     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);// Onde A Camera Ira Forcar.     return 1; }

---------------------------------------------------------------------------------------------------

A Sexta Callback é a "public OnPlayerConnect(playerid)".
Ela é a responsavel Para o Player que Connecta, Ou seja Quando O Player Connecta No Server.
Nela Você Pode Colocar Tudo que o Player Ira Fazer Quando Connectar, Ou Tudo que o Server ira fazer Quando ele Entrar. Como Um Sistema de Login.
pawn Code:
public OnPlayerConnect(playerid) {     new string[128], pname[MAX_PLAYER_NAME];//Aqui irar amarzena o nome do player     GetPlayerName(playerid, pname, sizeof(pname));//aqui pega o nome do player     format(string, sizeof(string)," %s entrou no servidor.", pname);//aqui é o que ira ser executado     SendClientMessageToAll(-1, string);//aqui ira mandar a mensagem para todos o players online     return 1; }

---------------------------------------------------------------------------------------------------

A Sétima Callback é a "OnPlayerDisconnect(playerid, reason)".
Ela é Responsavel quando o Player é desconnectado do Server, Ou Seja Quando ele Sai.
Nela Você Pode Colocar Tudo que Acontece quando um player Sai do Server.
pawn Code:
public OnPlayerDisconnect(playerid, reason) {     new string[128], pname[MAX_PLAYER_NAME];//Aqui irar amarzena o nome do player     GetPlayerName(playerid, pname, sizeof(pname));//aqui pega o nome do player     format(string, sizeof(string)," %s saiu do Servidor.", pname);//aqui é o que ira ser executado     SendClientMessageToAll(-1, string);//aqui ira mandar a mensagem para todos o players online     return 1; }

----------------------------------------------------------------------------------------------------

A Oitava Callback é a "OnPlayerSpawn(playerid)".
Ela é a responsavel Pelo Spawn Do Players. Ou Seja Onde o player ira spawna. Ou Quando Morrer.
Muito Utilizado Para Spawna Para Gangs.
pawn Code:
public OnPlayerSpawn(playerid) {     SetPlayerPos(playerid, PosX, PosY, PosZ);//Aqui onde O Player Ira Spawna.     GivePlayerWeapon(playerid, IDARMA, BALLAS);//Aqui irar Dar arma Para o Player.     return 1; }

----------------------------------------------------------------------------------------------------

A Nona Callback é a "OnPlayerDeath(playerid, killerid, reason)".
Esta Callback é responsavel Pela Morte Do Player, Ou Seja Quando O Player Morrer.
pawn Code:
public OnPlayerDeath(playerid, killerid, reason) {     SetPlayerHealth(killerid, 100);//Seta o HP do Matador a 100     return 1; }

---------------------------------------------------------------------------------------------------

A Decima Callback é a "OnPlayerCommandText(playerid, cmdtext[])".
Esta Callback é Responsavel Pelos Comando Do Servidor.
pawn Code:
public OnPlayerCommandText(playerid, cmdtext[]) {     if (strcmp("/seucomando", cmdtext, true, 10) == 0)     {         SetPlayerHealth(playerid, 100);//seta o HP do Player A 100.         GivePlayerMoney(playerid, 5000);// Dar Grana Para o Player         SendClienMessage(playerid, Cor, "Sua Frase"); // Manda a Mensagem Para o Player.         return 1;     }     return 0; }

------------------------------------------------------------------------------------------------

A Decima Primera Callback é a "OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)".
Esta Callback é responsavel quando o player entra no carro.
pawn Code:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) {     SendClientMessage(playerid, COR, "Você entro No Carro);//Manda a mensagem para o player que entrar no carro     return 1; }

------------------------------------------------------------------------------------------------

A Decima Segunda Callback é a "OnPlayerExitVehicle(playerid, vehicleid)".
Esta é responsavel Quando O player sai do carro
pawn Code:
public OnPlayerExitVehicle(playerid, vehicleid) {     SendClientMessage(playerid, COR, "Você saiu do carro);//Manda Uma Messagem dizendo que saio do carro.     return 1; }

------------------------------------------------------------------------------------------------

A Decima Terçeira Callback é a "OnPlayerText(playerid, text[])".
Esta é Responsavel Pelo que o Player Digita.Ou Seja oque o Player Ira digitar.
pawn Code:
public OnPlayerText(playerid, text[]) {     new string[128];     SetPlayerChatBubble(playerid, text, 0xFF0000FF, 100.0, 10000); // 0xFF0000FF = Vermelho, podendo ser alterado tabem, [ Oque o Player Digita Aparece encima da cabeça do player ]     format(string,sizeof(string),"[ID: %d] %s",playerid,text); // Player ID + Texto que digita apertando f6 ou t     SendPlayerMessageToAll(playerid,string);     return 0; }

BOM GENTE É ISSO ESPERE QUE SEJA AJUDE TODOS.
CRITICAS ERROS DUVIDA PODEM FALAR.
Creditos : 
ExpressxD,[LF]Player Por Ajudar OnPlayerText
______________________________________________________________________________________________

Operadores Relacionais


Bom, como o próprio titulo já diz, são operadores que são usados para comparar mais de um itém dentro de uma mesma função IF, vou explicar basicamente como usar cada um deles, e darei exemplos, caso estiver faltando alguma coisa, favor me avisar, que vou tentar fazer este tutorial, completo sobre o assunto... Bom, Vamos Iniciar:


Comparador: " == ", Significado: Igual
Explicação: Bom, este comparador como já diz no próprio significado, compara funções igualadas, Vou dar um exemplo prático, usando níveis de administrador.


Exemplo Prático:


pawn Code:
if(PlayerInfo[playerid][pAdmin] == 1) // Está Afirmando que Nesta Função, o Nível de Administrador não é nem menor nem maior, é igualado ao valor 1.


Comparador: " < ", Significado: Menor
Explicação: Bom, este comparador, como ja diz no significado, verifica se algo é menor que o valor denominado em alguma função.


Exemplo Prático:


pawn Code:
if(PlayerInfo[playerid][pAdmin] < 1) // Novamente, Aí nesta função, verificará se o valor de administrador, está setado abaixo de 1 para o jogador, ou seja, se ele for menor que nível 1 de administrador, retornará uma mensagem, ou outra coisa a escolha do programador.


Comparador: " > ", Significado: Maior
Explicação: Quase a mesma coisa do menor, porém este comparador verificará se o valor seja de administrador, ou de quaisquer outra váriavel é maior que a determinada, aqui vou utilizar um exemplo com dinheiro.


Exemplo Prático:


pawn Code:
if(GetPlayerMoney(playerid) > 5000) // Bom, aqui nos permite executar alguma função qualquer escolhida, se o valor de dinheiro do jogador ser maior que 5000, caso contrário, terá uma falha na execução.


Comparador: " <= ", Significado: Menor ou Igual
Explicação: Bom, este comparador verificará quase a mesma coisa que os outros citados acima, porém há uma diferença, este comparador verifica se o valor determinado é igualado ao valor que será digitado, ou menor que ele.


Exemplo Prático:


pawn Code:
if(GetPlayerScore(playerid) <= 500) // Aqui, ele executará funções apenas para maiores que isto, ou para menores também, vai depender do que o programador fizer, é normal, quase todos os casos, os mesmos proíbirem a ação com menos que o valor especificado.


Comparador: " >= ", Significado: Maior ou Igual
Explicação: Bom, este comparador verificará quase a mesma coisa que os outros citados acima, porém há uma diferença, este comparador verifica se o valor determinado é igualado ao valor que será digitado, ou maior que ele.


Exemplo Prático:


pawn Code:
if(GetPlayerScore(playerid) >= 500) // Aqui, executará funções, para valores maiores ou iguais que 500, que é o definido na função, mas como eu disse anteriormente, vai depender muito do programador.


Comparador: " != ", Significado: Diferente
Explicação: Bom, esse é o ponto onde mais tive dúvidas nesse estudo sobre os Operadores, bom, ele verifica basicamente, se algo é diferente de outro.


Exemplo Prático:


pawn Code:
if(Organizacao[playerid] != Org1) // Bom, aí ele verificará certamente a variável Organização, verificará se é diferente da definição "Org1", caso for diferente, executará uma proibição de algo, definido pelo programador, caso não for diferente, executará a função normal a ser executada.


Operadores Lógicos


Operador: " || " - Significado: Ou.
Explicação: Basicamente, ele pega duas variáveis definidas na função e verifica se é uma "OU" outra, caso contrário, retorna false, independente dos casos.


Exemplo Prático:


pawn Code:
if(PlayerInfo[playerid][pAdmin] > 1 || IsPlayerAdmin(playerid)); // Aqui, ele verificará se o Nível definido do Administrador é maior que 1, ou se ele é master admin, ou seja Administrador RCON, Caso contrario, será executado false na função.


Operador: " && " - Significado: E.
Explicação: Basicamente, ele faz a mesma função da anterior, porém com uma diferença, || Diz se é uma OU outra, esta aqui, verifica as duas dizendo, Esta e Esta, Caso Contrário, não é verdadeiro.


Exemplo Prático:


pawn Code:
if(PlayerInfo[playerid][pAdmin] > 1 && IsPlayerAdmin(playerid)); // Mesma Função utilizada no outro, porém essa verificará se ele é administrador nível maior que 1 e Admin RCON, Caso contrário retornará false.
Créditos: FuneraL
 ______________________________________________________________________________________________

Tutorial sobre o básico do pawn


Ola pessoal do eletro samp,  resolvi fazer este tutorial sobre o básico do pawn.

Nesse tutorial irei ensinar algumas funções básicas sobre o pawn,
irei ensinar como criar comandos simples e comandos com restrições, irei ensinar as funções basicas das if
E também irei explicar para que serve uma variavel e a diferença de uma variavel global e local

Primeiramente para que serve uma variável?
R:
Uma variável serve para definir algo por exemplo:
#define Detetive 1

Nesta variável eu estarei definindo o emprego detetive para 1.
ou também podemos fazer assim
new Detetive;
Detetive = 1;
desse modo também estarei definindo detetive para 1.

Dois qual a diferença de uma variável global para um variável local?
R:
A variável global é aquela que define no topo do Game mode.
O que isso significa?
Isso significa que ela poderá ser usada para varias funções, sem ter que defini a novamente.

E o que significa uma variável local?
R:
Uma variável local é aquela que você define no local da função por exemplo:
pawn Code:
CMD:meunome(playerid) {   new PlayerName[MAX_PLAYER_NAME];// Aqui estou definindo uma variavel local, ela esta dentro do comando ela esta entre as chaves   new String[20];     format(String, sizeof(String),  " Seu nome é %s", PlayerName);    SendClientMessage(playerid, -1, string);  return true;
Você se pergunta qual sentido disso?
R:
O sentido disso é que essas variável só ira funcionar entre essas chaves, elas estão praticamente presas entre essas chaves.

Terceira parte: Funções básicas do pawn

Uma das funções mais basica do pawn é as if que significa se em português por exemplo:

pawn Code:
CMD:vida(playerid, params[]) {     if(PlayerInfo[playerid][Admin] >= 1) // o sentido desse código é se o playerinfo do admin for = ou maior que 1, o que estiver dentro das chaves ira acontecer {   SetPlayerHealth(playerid, 100)  }   if(PlayerInfo[playerid][Admin]  =< 0)// e aqui a if quer dizer e se o player info da pessoa for = ou menor que zero o que estiver dentro das chaves ira ocorrer.   {       SendClientMessage(playerid, -1, "[ERRO]Você não tem permissão para usar esse comando");    } return true; }

Agora vamos para o mais avançado, já que agora você já sabe um pouco mais sobre a linguagem pawn.

Irei ensinar como criar um comando simples

Na public OnPlayerCommandText
OBS: todos comando devem ser na public onplayer command text

Irei criar um comando em strcmp

pawn Code:
if (strcmp("/vida", cmdtext, true, 10) == 0) {    return 1; } // Esse é o comando limpo sem nenhuma função agora irei dar um exemplo de um comando com alguma função if (strcmp("/vida", cmdtext, true, 10) == 0) { // abre as chaves do comando para ler o que esta dentro do comando    SetPlayerHealth(playerid, 100);//Essa função ira setar 100 de life para o player  }
Explicações:
playerid: Pegar o id do player
100: é o tanto de health que vai setar para o player

Agora vamos com o modo mais avançado que é os comandos com restrições

pawn Code:
if (strcmp("/vida", cmdtext, true, 10) == 0) {    SetPlayerHealth(playerid, 100);    return 1;  } //esse é o comando sem restrição nenhuma agora irei dar uma exemplo de comando com restrição if (strcmp("/vida", cmdtext, true, 10) == 0) {    if(PlayerInfo[playerid][Admin] =< 0) return SendClientMessage(playerid, -1 "[ERRO] Você não permissão para usar este comando"); // esse if sera pra mandar uma mensagem pro player caso ele não for admin   if(PlayerInfo[playerid][Admin] >= 1) // Já nesse if verifica se o player tem level 1 de admin {// caso ele tenha ira acontecer o que tem dentro das chaves    SetPlayerHealth(playerid, 100); }    return 1;  }

é pessoal meu tutorial é isso. Espero que gostem fiz mais por não ter nada pra fazer.
Espero que ajude os novatos, e se verem algum erro me avise.



Créditos: Matheus_Alcapone
 
 ______________________________________________________________________________________________ 
Bom, Olá Pessoal. Este tutorial, irá clarificar como funciona tal função, o que é tal coisa e ensinando a criar comandos.

O seguinte tutorial conta com as seguintes características :

- Sistema de login/registro
- Sistema de Administração
- TextDraw's
- Criando duelos.
- Criando pickup's.


Lembre-se, isto é apenas o ponta pé inicial para sua longa jornada criando o seu gamemode ao seu estilo.

pawn Code:
//////////////////////////////////////////////////////////////////////////////// // // // //            >>>>     Tutorial Criado por leonardo1434 // //       >>>>     Acesse meu blog para mais informações: [url]http://leonardo1434.blogspot.com.br[/url] //     >>>   Tutorial Sobre Criação de GameModes <<< // // ///////////////////////////////////////////////////////////////////////////////// /* Formatos da string: %b   Numero Bínario %c   Caracter %d   Números %f   Floats - Numeros quebrados. %i   Inteiros. %s   Insere uma string, podendo contas numeros,letras,inteiros e etc. %x   Insere numeros em Hex. %%   Insere a porcentagem. Zamaroth Editor 1.0 ( Criador de textdraw's, bem útil ) Ao criar um textdraw lembre-se, Textdraw's para todos >>> [URL="http://wiki.sa-mp.com/wiki/TextDrawCreate"]http://wiki.sa-mp.com/wiki/TextDrawCreate[/URL] Textdraw bem útil para a criaçãode textdraw's visíveis para todos, podendo cria-las para também para cada player, porém tem necessidade de ser destruída ao disconnect. Textdraw's para cada player >>> [URL="http://wiki.sa-mp.com/wiki/CreatePlayerTextDraw"]http://wiki.sa-mp.com/wiki/CreatePlayerTextDraw[/URL] Bom, está textdraw é bem útil criando uma textdraw para cada player e também sem a necessidade de destruir ao player disconectar. MAX_PLAYERS  valor 500 slots isso terá um slot para cada jogador, possivelmente ligado , para que você saiba os dados para um jogador não irá interferir com os dados para um outro jogador. (by Schocc) */ // Includes #include <a_samp> #include <SII> #include <zcmd> #include <sscanf2> // Definições do id da dialog. #define DIALOG_REGISTRO 5555 #define DIALOG_LOGAR 6666 #define DIALOG_BOX 7777 #define DIALOG_BAN 8888 // Definições opcionais. #define chatkill // mostra quem matou e a causa da morte, Caso não queira isto, Apenas colocar comentar, ficando assim: //#define chatkill #define Times // Deixei a opção de definir os times ou não fica a seu gosto, Caso não, modificar para: //#define Times. //#define comswitch //  Está opção é apenas para mostrar como funciona o switch - Está comentada pois, Na minha Opnição às vezes utilizando pode occorer uma confunsão, caso queira. apenas descomentar. #define semswitch // Está opção é apenas para mostrar como funciona o switch. Caso não queira,modificar para: //#define armas #define armas // Bom, Está função é para caso queira dar armas para ambos os times, Caso não queira,modificar para: //#define armas #define mensagenss // Irá mostrar as mensagens ao player se desconectar. Caso não queira,modificar para: //#define mensagenss #define status // Irá mostrar o stats de cada jogador em uma textdraw própria, Matou & Mortes. Caso não queira,modificar para: //#define status #define pastadesalvamento "Contas3/%s.ini" // modificar a seu gosto, está é a pasta onde será salvo as contas. #define pastadebanimento "Contas3/Banidos%s.ini" // modificar a seu gosto, está é a pasta onde será salvo os banidos. #define skintime0 167 // Time 0, mudar a seu gosto. #define skintime1 217 // Time 1, mudar a seu gosto. #define statsatual // Bom, Está função irá atualizar o stats mais rápido, ao invés de só atualiza-lo no onplayerdisconnect. Vai atualia-la com um settimer. // Nomes do Times. #define NomeDoTime0 0 // Apenas Modificar á seu gosto. #define NomeDoTime1 1 // Apenas Modificar á seu gosto. // Cores. #define amarelo 0xFFFF00AA // Cor do time 0. #define azul 0x33CCFFAA // Cor do time 1 // Bom veja aqui, Estamos trabalhando com enum's,Tradução de enum é enumerator, Bem semelhante a array "new",Porém é uma constante. enum pInfo {     pSenha,     pScore,     pDinheiro,     pAdmin,     pMata,     pMortes,     pVip,     pAvisos, } new PlayerInfo[MAX_PLAYERS][pInfo]; // Está função é basicamente criando um array Para todos os jogadores e ligando com o enum pInfo, Assim podendo ser usado para acessar/inserir dados nas váriaveis. // Lembre-se enum's não sao váriaveis,Apenas são atribuídas as váriaveis. new bool:tanox1[MAX_PLAYERS]; // Está var vai setar ele no x1. jogador no x1 ou não ! // Pode fazer sem a bool? Sim ! Apenas setar  a var para ambos os playerid ! new x1 = 0; // Está var irá contar quantos tem no x1. new times[MAX_PLAYERS]; // Bom, Eu não adicionei está Var ao enum, Poís muitos novatos poderiam confundir, Está função é para armazenar os Times. // TextDraw's new PlayerText:matou[MAX_PLAYERS]; // Textdraw para cada jogador. new PlayerText:morreu[MAX_PLAYERS];// Textdraw para cada jogador. new PlayerText:ping[MAX_PLAYERS];// Textdraw para cada jogador. // Pickups, Bom iremos criar picukups é muito díficil ? Não. new pickupvida; // Podemos usar assim, que é apenas um var. // new tele[50]; ou assim, Tornando-se 50 array's. ex: tele[0],tele[1] e assim pod diante. //forwards forward atualizartext(playerid); // forward é uma regra da línguagem pawn.(Nunca entendi muito bom porque tem está regra D:) forward stats(playerid); // Mesma coisa citada acima. main() // Isto irá printar no console. {     print("\n----------------------------------");     print(" Qualquer titulo que desejas");     print("----------------------------------\n"); } public OnGameModeInit() {     // Cordenadas aleátorias, Modifica-las a seu gosto.     #if defined Times     AddPlayerClass(0,1234,1234,25,1234,0,0,0,0,-1,-1); // Classe/time 0, Sempre começará do 0.     AddPlayerClass(1,1234,1234,25,1234,0,0,0,0,-1,-1); // Classe/time 1 , e assim por diante.     #endif     AddPlayerClass(0,1234,1234,25,1234,0,0,0,0,-1,-1); // Caso não seja definido os Times, Sempre deixar no mínimo um addplayerclss, se não irá bugar.     pickupvida = CreatePickup(1240, 2, 1234,1234,2); // aqui, Defindo a pickup vida.     return 1; } public OnGameModeExit() {     return 1; } public OnPlayerRequestClass(playerid, classid) // Está função é chamada quando o jogador está a selecionar os skins. {     SetPlayerInterior(playerid,14); // Interior     SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);// Posição do jogador     SetPlayerFacingAngle(playerid, 270.0);//Posição do ângulo     SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);// Posição da camera     SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);// Posição da camera     #if defined Times     if(classid == 0) // Classe/time 0     {        GameTextForPlayer(playerid,"~y~Classe/Time 0",3000,3); // Isso fará com que a mensagem tenha letras grandes.     }     if(classid == 1) // Classe/time 1     {        GameTextForPlayer(playerid,"~b~Classe/Time 1",3000,3); // Isso fará com que a mensagem tenha letras grandes.     }     #endif     return 1; } public OnPlayerConnect(playerid) {     if (fexist(contas(playerid)))//Caso a conta exista mostra isso.     {         ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD,"Logar","Digite sua senha abaixo para efetuar login.","Logar","Sair");     }     else//Caso não exista mostra isso.     {         ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD,"Registração","Digite sua senha abaixo para se registrar","Registrar","Sair");     }     #if defined status     matou[playerid] = CreatePlayerTextDraw(playerid,496.000000, 99.000000, "Matou:"); // Cria a textdraw     PlayerTextDrawBackgroundColor(playerid,matou[playerid], 255);//Texto de fundo     PlayerTextDrawFont(playerid,matou[playerid], 1);//Fonte     PlayerTextDrawLetterSize(playerid,matou[playerid], 0.500000, 1.000000);//Tamanho da letra     PlayerTextDrawColor(playerid,matou[playerid], 65535); //Cor     PlayerTextDrawSetOutline(playerid,matou[playerid], 0);//Fora da linha     PlayerTextDrawSetProportional(playerid,matou[playerid], 1);//Proporção     PlayerTextDrawSetShadow(playerid,matou[playerid], 0);//Escuridão.     morreu[playerid] = CreatePlayerTextDraw(playerid,496.000000, 110.000000, "Mortes:");     PlayerTextDrawBackgroundColor(playerid,morreu[playerid], 255);     PlayerTextDrawFont(playerid,morreu[playerid], 1);     PlayerTextDrawLetterSize(playerid,morreu[playerid], 0.500000, 1.000000);     PlayerTextDrawColor(playerid,morreu[playerid], 65535);     PlayerTextDrawSetOutline(playerid,morreu[playerid], 0);     PlayerTextDrawSetProportional(playerid,morreu[playerid], 1);     PlayerTextDrawSetShadow(playerid,matou[playerid], 0);     ping[playerid] = CreatePlayerTextDraw(playerid,5.000000, 432.000000, "Ping:");     PlayerTextDrawBackgroundColor(playerid,ping[playerid], 255);     PlayerTextDrawFont(playerid,ping[playerid], 1);     PlayerTextDrawLetterSize(playerid,ping[playerid], 0.500000, 1.000000);     PlayerTextDrawColor(playerid,ping[playerid],  -65281);     PlayerTextDrawSetOutline(playerid,ping[playerid], 0);     PlayerTextDrawSetProportional(playerid,ping[playerid], 1);     PlayerTextDrawSetShadow(playerid,ping[playerid], 0);     new tempo[MAX_PLAYERS]; // Criando uma var para todos os players.     tempo[playerid] = SetTimer("atualizartext",1000,true); // Usando a var para criar um timer para cada player, Assim a cada 1 segundo será atualizado.     #endif     //Bom Aqui começar o Sistema de Banimento, Fiz o MÁXIMO que pude para deixa bem direto & claro !     new nome[MAX_PLAYER_NAME],Ip[30],lol[128],Hora, Minuto, Segundo, Dia, Mes, Ano,arquivo[128],administrador[24], motivoban[128];     GetPlayerName(playerid, nome, sizeof(nome));//formata o nome     GetPlayerIp(playerid, Ip, sizeof(Ip));//formata o ip.     format(arquivo, sizeof(arquivo), pastadebanimento, nome);//formata a pasta com o nome     if(fexist(arquivo))//abre a pasta, checa se o nome do player está banido.     {//vai ler tudo isso.         if(INI_Open(arquivo))//Abre o arquivo.         {           INI_ReadString(administrador, "Admin");// Lendo a string...           INI_ReadString(motivoban, "MotivoBan");// Lendo a string...           Dia = INI_ReadInt("Dia");// Lendo as numeros.           Mes = INI_ReadInt("Mes");// Lendo as numeros.           Ano = INI_ReadInt("Ano");// Lendo as numeros.           Hora = INI_ReadInt("Hora");// Lendo as numeros           Minuto = INI_ReadInt("Minuto");// Lendo a string...           Segundo = INI_ReadInt("Segundo");// Lendo as numeros  // Aqui embaixo, Formatando a string.           format(lol, sizeof(lol), "[SERVER] Seu nick está banido.\n\                                     [SERVER]: Admin: %s | Data: %d/%d/%d | Hora: %d:%d:%d | Motivo: %s ]", administrador, Dia, Mes, Ano, Hora, Minuto, Segundo, motivoban);           ShowPlayerDialog( playerid, DIALOG_BAN, DIALOG_STYLE_MSGBOX, "Você está banido !", lol, "Ok...", "");//mostrando a dialog para o player           INI_Close();//fecha poís estava lendo e não inserindo.         }         Kick(playerid);//kicka o playerid banido.     }     return 1; } public OnPlayerDisconnect(playerid, reason) {     if(INI_Open(contas(playerid))) // Função que abre a stock contas, está localizada ao fim do gm.     {       INI_WriteInt("Admin",PlayerInfo[playerid][pAdmin]); // Está inserindo as informações do jogador.       INI_WriteInt("Vip",PlayerInfo[playerid][pVip]); // Está inserindo as informações do jogador.       INI_WriteInt("Score",PlayerInfo[playerid][pScore]); // Está inserindo as informações do jogador.       INI_WriteInt("Mata",PlayerInfo[playerid][pMata]); // Está inserindo as informações do jogador.       INI_WriteInt("Mortes",PlayerInfo[playerid][pMortes]); // Está inserindo as informações do jogador.       INI_WriteInt("Avisos",PlayerInfo[playerid][pAvisos]); // Está inserindo as informações do jogador.       INI_WriteInt("Dinheiro",GetPlayerMoney(playerid)); // Está inserindo as informações do jogador.       INI_Save(); // Salvando as informações do jogador       INI_Close(); // Fechando as informações do jogador     }     #if defined mensagenss     new mensagens[70],nome[MAX_PLAYER_NAME];     GetPlayerName(playerid, nome, sizeof(nome));     switch(reason) // Como o swicth foi já explicado, é apenas uma transição entre definições.     {         case 0: format(mensagens, sizeof(mensagens), "%s Saiu do servidor. (Problema de Conexão)", nome);         case 1: format(mensagens, sizeof(mensagens), "%s Saiu do servidor. (Saindo/Saiu)", nome);         case 2: format(mensagens, sizeof(mensagens), "%s Saiu do servidor. (Kickado / Banido)", nome);     }     #endif     return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {     switch(dialogid)     {         case DIALOG_REGISTRO:         {             if (!response) return Kick(playerid); // Caso ele clice em Sair.             if (response)             {                 if(!strlen(inputtext)) {//Caso ele não tenha digitado nada. mostra à dialog                 ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registrando...","Você digitou uma senha inválida, Por Favor digitar à senha !","Registro","Sair");                 }                 if(INI_Open(contas(playerid))) {                 INI_WriteString("Senha",inputtext); // Pegando o que player digitou na dialog.                 INI_WriteInt("Admin",0); // Inserindo as informações iniciais                 INI_WriteInt("Vip",0);// Inserindo as informações iniciais                 INI_WriteInt("Score",0);// Inserindo as informações iniciais                 INI_WriteInt("Mata",0);// Inserindo as informações iniciais                 INI_WriteInt("Mortes",0);// Inserindo as informações iniciais                 INI_WriteInt("Avisos",0);// Inserindo as informações iniciais                 INI_WriteInt("Dinheiro",0);// Inserindo as informações iniciais                 INI_Save();//Salvando                 INI_Close();//Fechando                 // Ao se registrar vai mostrar está dialog.                 ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD,"Logando...","Digitar sua senha abaixo para efetuar login.","Logar","Sair");             }         }     }         case DIALOG_LOGAR:         {             if (!response) return Kick (playerid); // Caso ele clice em Sair.             if(response)             {                 if(!strlen(inputtext)) {//Caso ele não tenha digitado nada                 ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logando...","Você digitou uma senha inválida, Por Favor digitar à senha !","Logar","Sair");                 }                 if(INI_Open(contas(playerid))) {//Abrindo a pasta contas.                 INI_ReadString(PlayerInfo[playerid][pSenha],"Senha",30);// Lendo a senha que foi salva ao se registrar                 if(strcmp(inputtext,PlayerInfo[playerid][pSenha],false))//Caso erre a senha será mostrada está dialog.                 {                   ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logando...","Você digitou uma senha inválida, Por Favor digitar à senha !","Logar","Sair");                 }                 else                 {                   ResetPlayerMoney(playerid); // Reseta o dinheiro                   PlayerInfo[playerid][pAdmin] = INI_ReadInt("Admin"); //Lendo o que foi inserido..                   PlayerInfo[playerid][pVip] = INI_ReadInt("Vip");//Lendo o que foi inserido..                   SetPlayerScore(playerid,INI_ReadInt("Score"));//Lendo o que foi inserido..                   PlayerInfo[playerid][pMata] = INI_ReadInt("Mata");//Lendo o que foi inserido..                   PlayerInfo[playerid][pMortes] = INI_ReadInt("Mortes");//Lendo o que foi inserido..                   PlayerInfo[playerid][pAvisos] = INI_ReadInt("Avisos");//Lendo o que foi inserido..                   GivePlayerMoney(playerid,INI_ReadInt( "Dinheiro"));//Lendo o que foi inserido..                 }                 INI_Close(); // Fecha, não precisa salvar, poís apenas está carregando o stats do jogador, e não adicionando/editando.                 }             }         }     }     return 1; } public OnPlayerDeath(playerid, killerid, reason) // Ao jogador morre, está public é chamada. {     #if defined chatkill     SendDeathMessage(killerid, playerid, reason); // mostra quem matou e a causa da morte.     #endif     if(killerid != INVALID_PLAYER_ID) // Se o id é valido.     {         PlayerInfo[killerid][pMata]++; // Ira aumentar os kills ao matar alguém.         PlayerInfo[killerid][pScore]++; // Ira aumentar o Score ao matar alguém         SetPlayerScore(killerid, PlayerInfo[killerid][pScore]); // Vai setar o score que foi aumentado.         GivePlayerMoney(killerid, 100); // Vai Dar o dinheiro a quem matou.         // PlayerInfo[killerid][pDinheiro] +=100   <<< Poderia ser usado assim támbem, porém necessitária de uma atualização constante do stats.     }     PlayerInfo[playerid][pMortes]++; // Ira aumentar as mortes ao morrer.     if(tanox1[playerid] ==  true) // se ta tanox1 é 1 e também é o jogador que matou, irá executar a função abaixo.     {        PlayerInfo[killerid][pMata] = false; // setando a var como falsa, assim não contando no stats os kills.        PlayerInfo[killerid][pScore] = false; // setando a var como falsa, assim não contando no stats o score.        PlayerInfo[playerid][pMortes] = false; // setando a var como falsa, assim não contando no stats as mortes.        SpawnPlayer(playerid); // Ao morrer vai dar respawn.        SpawnPlayer(killerid);// Ao matarr vai dar respawn.        tanox1[playerid] = false;// Setando a bool como false, assim dizendo que não está mais no x1.        tanox1[killerid] = false; // Setando a bool como false, assim dizendo que não está mais no x1.        x1 = 0; // setando a var x1 para 0.        GivePlayerMoney(killerid,10000); // Dando dinheiro para o que matou.        new string[60],nome[MAX_PLAYER_NAME],nomevitima[MAX_PLAYER_NAME];        GetPlayerName(killerid,nome,sizeof(nome)); // formatando o nome de quem matou        GetPlayerName(playerid,nomevitima,sizeof(nomevitima)); // formatando o nome de quem morreu        format(string, sizeof(string),"%s Matou %s no X1 !",nome, nomevitima);//formatando a string        SendClientMessageToAll(-1,string);// enviando para todos a string.     }     return 1; } public OnPlayerSpawn(playerid) {   SetPlayerInterior(playerid,0);   #if defined comswitch   switch(times[playerid]) // O que é um switch ? é basicamente uma transação entre definições.   {     case 0: // Classe/Time 0     {       SetPlayerPos(playerid,1234,1234,10); // Aqui é para onde o time 0 será teleportado, ao dar spawn.       #if defined armas       GivePlayerWeapon(playerid,4,1); // Está função irá dar um knife para todos os jogadores do time 0.       GivePlayerWeapon(playerid,24,1000); // Está função ira dar uma desert eagle para todos os jogadores do time 0 com 1000 balas.       GivePlayerWeapon(playerid,26,1000); // Está função ira dar uma sawn off para todos os jogadores do time 1 com 1000 balas.       #endif       SetPlayerSkin(playerid,skintime0);       SetPlayerColor(playerid,amarelo); // Vai definir a cor do time 0 para amarelo.       SendClientMessage(playerid,amarelo,"Você é do time 0!"); // Esta mensagem será enviada a todos que derem Spawn e somente se, Forém do time 0.     }     case 1: // Classe/Time 1     {       SetPlayerPos(playerid,1234,1234,10); // Aqui é para onde o time 1 será teleportado, ao dar spawn.       #if defined armas       GivePlayerWeapon(playerid,4,1); // Está função irá dar um knife para todos os jogadores do time 1.       GivePlayerWeapon(playerid,24,1000); // Está função ira dar uma desert eagle para todos os jogadores do time 1 com 1000 balas.       GivePlayerWeapon(playerid,26,1000); // Está função ira dar uma sawn off para todos os jogadores do time 1 com 1000 balas.       #endif       SetPlayerSkin(playerid,skintime1);// seta a skin do time.       SetPlayerColor(playerid,azul); // set a cor do time.       SendClientMessage(playerid,azul,"Você é do time 1! "); // Esta mensagem será enviada a todos que derem Spawn e somente se, Forém do time 1.     }   }   #endif   #if defined semswitch   if(times[playerid] == NomeDoTime0) // classe/Time 0   {       SetPlayerPos(playerid,1234,1234,10); // Aqui é para onde o time 0 será teleportado, ao dar spawn.       #if defined armas       GivePlayerWeapon(playerid,4,1); // Está função irá dar um knife para todos os jogadores do time 0.       GivePlayerWeapon(playerid,24,1000); // Está função ira dar uma desert eagle para todos os jogadores do time 0 com 1000 balas.       GivePlayerWeapon(playerid,26,1000); // Está função ira dar uma sawn off para todos os jogadores do time 1 com 1000 balas.       #endif       SetPlayerSkin(playerid,skintime0);// seta a skin do time.       SetPlayerColor(playerid,amarelo); // Vai definir a cor do time 0 para amarelo.       SendClientMessage(playerid,amarelo,"Você é do time 0!"); // Esta mensagem será enviada a todos que derem Spawn e somente se, Forém do time 0.   }   else if(times[playerid] == NomeDoTime1) // Classe/ Time 0   {       SetPlayerPos(playerid,1234,1234,10); // Aqui é para onde o time 1 será teleportado, ao dar spawn.       #if defined armas       GivePlayerWeapon(playerid,4,1); // Está função irá dar um knife para todos os jogadores do time 1.       GivePlayerWeapon(playerid,24,1000); // Está função ira dar uma desert eagle para todos os jogadores do time 1 com 1000 balas.       GivePlayerWeapon(playerid,26,1000); // Está função ira dar uma sawn off para todos os jogadores do time 1 com 1000 balas.       #endif       SetPlayerSkin(playerid,skintime1);// seta a skin do time.       SetPlayerColor(playerid,azul); // Vai definir a cor do time 1 para azul       SendClientMessage(playerid,azul,"Você é do time 1! "); // Esta mensagem será enviada a todos que derem Spawn e somente se, Forém do time 1.   }   #endif   #if defined status   PlayerTextDrawShow(playerid, matou[playerid]); // mostrando a textdraw ao dar spawn   PlayerTextDrawShow(playerid, morreu[playerid]); // mostrando a textdraw ao dar spawn   PlayerTextDrawShow(playerid, ping[playerid]); // mostrando a textdraw ao dar spawn   #endif   #if defined statsatual   new tempo2[MAX_PLAYERS];   tempo2[playerid] = SetTimer("stats",5000,true); // Usando a var para criar um timer para cada player, Assim a cada 5 segundo será atualizado.   #endif } public OnPlayerPickUpPickup(playerid, pickupid) // Bom, ao passa sobre o pickup está public é chamada. {     if(pickupid == pickupvida) // Comparando, compara se o pickup é igual a var que nomeamos no ínicio.     {       new Float:Vida;       GetPlayerHealth(playerid,Vida); // Pega a vida que ele está no momento.       SetPlayerHealth(playerid,Vida +20); // E adicionar +20 de vida.     }     return 1; } // COMANDOS CMD:daradmin(playerid,params[]) {    new ID,Level,string[128],nomevitima[MAX_PLAYER_NAME],nome[MAX_PLAYER_NAME];    if(PlayerInfo[playerid][pAdmin] < 5 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params,"ui",ID,Level)) return SendClientMessage(playerid,-1,"/daradmin [ID] [LEVEL]!"); // Caso o jogador digite parametros errados, irá aparecer está mensagem.    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Prevenção, Caso um admin usar seus poderes em outro admin, é necessário que seu level seja maior ou igual ao da vítima,Caso contrário retornará a mensagem    if (!IsPlayerConnected(ID)) return SendClientMessage(playerid,-1,"Jogador não está conectado! "); // Checa se a vítima está conectada, Caso contrário retorna a mensagem    if ( Level < 0 || Level > 5 )  return SendClientMessage(playerid,-1,"Admin level entre 0 - 5 "); // Compara os leveis, Caso seja menor que 0 ou maior que 5 retorna a mensagem    PlayerInfo[ID][pAdmin] = Level; // Setando o level da vítima ao Level escolhido pelo playerid.    GetPlayerName(playerid,nome,sizeof(nome)); // Formatando o nome do playerid    GetPlayerName(ID,nomevitima,sizeof(nomevitima)); // Formatando o nome da vítima    format(string,sizeof(string),"Administrador:%s setou como admin %s level %d",nome,nomevitima,PlayerInfo[ID][pAdmin]); // Formatando o Texto, e mostrando quem deu,quem recebeu,    SendClientMessageToAll(-1,string); // Enviando a string.    return 1; } CMD:pspawn(playerid,params[]) {    new ID,nomevitima[MAX_PLAYER_NAME],nome[MAX_PLAYERS];    if(PlayerInfo[playerid][pAdmin] < 1 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!");// Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params,"u",ID)) return SendClientMessage(playerid,-1,"/pspawn [ID/NOME]");// Caso o jogador digite parametros errados, irá aparecer está mensagem.    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,-1,"Sem Autorização!");// Prevenção, Caso um admin usar seus poderes em outro admin, é necessário que seu level seja maior ou igual ao da vítima,Caso contrário retornará a mensagem    if (!IsPlayerConnected(playerid)) return SendClientMessage(playerid,-1,"Jogador não está conectado! ");// Checa se a vítima está conectada, Caso contrário retorna a mensagem    SpawnPlayer(ID);//da spawn na vítima    new String[35];    GetPlayerName(ID,nomevitima,sizeof(nomevitima));//formata o nome    format( String, sizeof String, "%s deu spawn em %s ",nome,nomevitima);//formata o texto    SendClientMessage(ID, -1, String );//envia pra todos.    return 1; } CMD:darvip(playerid,params[]) {    new ID,Level,string[70],nomevitima[MAX_PLAYER_NAME],nome[MAX_PLAYER_NAME];    if(PlayerInfo[playerid][pAdmin] < 5 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params,"ui",ID,Level)) return SendClientMessage(playerid,-1,"/darvip [ID] [LEVEL]!"); // Caso o jogador digite parametros errados, irá aparecer está mensagem.    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Prevenção, Caso um admin usar seus poderes em outro admin, é necessário que seu level seja maior ou igual ao da vítima,Caso contrário retornará a mensagem    if (!IsPlayerConnected(ID)) return SendClientMessage(playerid,-1,"Jogador não está conectado! "); // Checa se a vítima está conectada, Caso contrário retorna a mensagem    if ( Level < 0 || Level > 3 )  return SendClientMessage(playerid,-1,"Vip level entre 0 - 3 "); // Compara os leveis, Caso seja menor que 0 ou maior que 5 retorna a mensagem    PlayerInfo[ID][pVip] = Level; // Setando o level da vítima ao Level escolhido pelo playerid.    GetPlayerName(playerid,nome,sizeof(nome)); // Formatando o nome do playerid    GetPlayerName(ID,nomevitima,sizeof(nomevitima)); // Formatando o nome da vítima    format(string,sizeof(string),"Administrador:%s setou como Vip %s level %d",nome,nomevitima,PlayerInfo[ID][pVip]); // Formatando o Texto, e mostrando quem deu,quem recebeu.    SendClientMessageToAll(-1,string); // Enviando a string.    return 1; } CMD:x1(playerid,params[]) {    new nome[MAX_PLAYERS],string[27];    if(sscanf(params,"")) return SendClientMessage(playerid,-1,"/x1"); // Caso o jogador digite parametros errados, irá aparecer está mensagem.    x1++;    if(x1 == 2) return SendClientMessage(playerid,-1,"Já tem 2 no x1."); // Caso tenha 2 pessaos, vai retornar está mensagem.    if(tanox1[playerid] == true) return SendClientMessage(playerid,-1,"Você já esta no x1"); // Caso ele já esteja no x1, assim evitando spam.    SetPlayerPos(playerid,1234,1234,1234); // Colocar aqui as cordenadas do x1.    format(string,sizeof(string),"%s Entrou no x1 ! ",nome);//formatando a mensagem    SendClientMessageToAll(-1,string); //enviando a mensagem para todos.    tanox1[playerid] = true; //setando a var para o playerid.    return 1; } CMD:sairx1(playerid,params[]) {    new nome[MAX_PLAYERS],string[37];    if(sscanf(params,"")) return SendClientMessage(playerid,-1,"/sairx1"); // Caso o jogador digite parametros errados, irá aparecer está mensagem.    if(x1 == 2) return SendClientMessage(playerid,-1,"Já tem 2 no x1."); // Caso tenha 2 pessaos, vai retornar está mensagem.    format(string,sizeof(string),"%s Saiu do X1 ! ",nome);//formatando a mensagem    SendClientMessageToAll(-1,string); //enviando a mensagem para todos.    tanox1[playerid] = false; //setando a var para o playerid.    SpawnPlayer(playerid);    return 1; } CMD:avisar(playerid,params[]) {    new ID,string[128],nomevitima[MAX_PLAYER_NAME],nome[MAX_PLAYER_NAME];    if(PlayerInfo[playerid][pAdmin] < 3 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params,"us[128]",ID,string)) return SendClientMessage(playerid,-1,"/avisar [ID] [MOTIVO]!"); // Caso o jogador digite parametros errados, irá aparecer está mensagem.    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Prevenção, Caso um admin usar seus poderes em outro admin, é necessário que seu level seja maior ou igual ao da vítima,Caso contrário retornará a mensagem    if (!IsPlayerConnected(ID)) return SendClientMessage(playerid,-1,"Jogador não está conectado! "); // Checa se a vítima está conectada, Caso contrário retorna a mensagem    PlayerInfo[ID][pAvisos]++; // Setando o level da vítima ao Level escolhido pelo playerid.    GetPlayerName(playerid,nome,sizeof(nome)); // Formatando o nome do playerid    GetPlayerName(ID,nomevitima,sizeof(nomevitima)); // Formatando o nome da vítima    format(string,sizeof(string),"Administrador:%s Avisou %s Motivo: %s",nome,nomevitima,string); // Formatando o Texto, e mostrando quem deu,quem recebeu.    SendClientMessageToAll(-1,string); // Enviando a string.    format(string,sizeof(string),"Agora você tem %d avisos ! 3 avisos = KICK !",PlayerInfo[ID][pAvisos]); // Formatando o texto !    SendClientMessage(playerid,-1,string); // Enviando a string.    if(PlayerInfo[ID][pAvisos] == 3)    {    format(string,sizeof(string),"%s foi kickado por ter 3 avisos",nomevitima);    SendClientMessageToAll(-1,string);    PlayerInfo[ID][pAvisos] = 0;    Kick(ID);    }    return 1; } CMD:stats(playerid,params[]) {   new string[70],id,ping2[MAX_PLAYERS],nome[MAX_PLAYERS],score2[MAX_PLAYERS];   ping2[id] = GetPlayerPing(id); // geta o ping.   score2[id] = GetPlayerScore(id);//geta o score   GetPlayerName(id, nome, sizeof(nome));//formata o nome   format(string, sizeof(string), "Nome: %s\nMata %d - Mortes %d - Score: %d  - Ping: %d", nome,PlayerInfo[id][pMata],PlayerInfo[id][pMortes],score2[id],ping2[id]);//formata o texto   ShowPlayerDialog(playerid, 4000, DIALOG_STYLE_MSGBOX,"Status",string,"Ok !","");//mostra string em dialog.   return 1; } CMD:setaviso(playerid,params[]) {    new ID,Aviso,string[128],nomevitima[MAX_PLAYER_NAME],nome[MAX_PLAYER_NAME];    if(PlayerInfo[playerid][pAdmin] < 5 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params,"ui",ID,Aviso)) return SendClientMessage(playerid,-1,"/setaviso [ID] [AVISOS]!"); // Caso o jogador digite parametros errados, irá aparecer está mensagem.    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Prevenção, Caso um admin usar seus poderes em outro admin, é necessário que seu level seja maior ou igual ao da vítima,Caso contrário retornará a mensagem    if (!IsPlayerConnected(ID)) return SendClientMessage(playerid,-1,"Jogador não está conectado! "); // Checa se a vítima está conectada, Caso contrário retorna a mensagem    if ( Aviso < 0 || Aviso > 2 )  return SendClientMessage(playerid,-1,"Avisos entre 0 - 2"); // Compara os warns, Caso seja menor que 0 ou maior que 2 retorna a mensagem    PlayerInfo[ID][pAvisos] = Aviso; // Setando os avisos da vítima aos avisos escolhidos pelo playerid.    GetPlayerName(playerid,nome,sizeof(nome)); // Formatando o nome do playerid    GetPlayerName(ID,nomevitima,sizeof(nomevitima)); // Formatando o nome da vítima    format(string,sizeof(string),"Administrador:%s setou o numero de avisos de %s para %d",nome,nomevitima,PlayerInfo[ID][pAvisos]); // Formatando o Texto, e mostrando quem deu,quem recebeu.    SendClientMessageToAll(-1,string); // Enviando a string.    return 1; } CMD:setmata(playerid,params[]) {    new ID,mata,string[128],nomevitima[MAX_PLAYER_NAME],nome[MAX_PLAYER_NAME];    if(PlayerInfo[playerid][pAdmin] < 5 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!");    if(sscanf(params,"ui",ID,mata)) return SendClientMessage(playerid,-1,"/setmata [ID/NOME] [NUMERO DE KILLS]");// Caso o jogador digite parametros errados, irá aparecer está mensagem.    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,-1,"Sem Autorização!");// Prevenção, Caso um admin usar seus poderes em outro admin, é necessário que seu level seja maior ou igual ao da vítima,Caso contrário retornará a mensagem    if (!IsPlayerConnected(ID)) return SendClientMessage(playerid,-1,"Jogador não está conectado! ");// Checa se a vítima está conectada, Caso contrário retorna a mensagem    if ( mata < 0 || mata > 9999999 )  return SendClientMessage(playerid,-1,"Matar de  0 - 99999999 ");// Compara os mata, Caso seja menor que 0 ou maior que 9999999 retorna a mensagem    PlayerInfo[ID][pMata] = mata;// Setando o mata da vítima ao mata escolhido pelo playerid.    GetPlayerName(playerid,nome,sizeof(nome));// Formatando o nome do playerid    GetPlayerName(ID,nomevitima,sizeof(nomevitima));// Formatando o nome da vítima    format(string,sizeof(string),"%s setou para %s total de kills %d",nome,nomevitima,PlayerInfo[ID][pMata]);// Formatando o Texto, e mostrando quem deu,quem recebeu.    SendClientMessageToAll(-1,string);//enviando para todos    return 1; } CMD:setmortes(playerid,params[]) {    new ID,Mortes,string[70],nomevitima[MAX_PLAYER_NAME],nome[MAX_PLAYER_NAME];    if(PlayerInfo[playerid][pAdmin] < 5 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!");    if(sscanf(params,"ui",ID,Mortes)) return SendClientMessage(playerid,-1,"/setmortes [ID/NOME] [NUMERO DE MORTES]!");    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,-1,"Sem Autorização!");    if (!IsPlayerConnected(ID)) return SendClientMessage(playerid,-1,"Jogador não está conectado! ");// Checa se a vítima está conectada, Caso contrário retorna a mensagem    if ( Mortes < 0 || Mortes > 9999999 )  return SendClientMessage(playerid,-1,"Mortes 0 - 9999999 ");// Compara os mata, Caso seja menor que 0 ou maior que 9999999 retorna a mensagem    PlayerInfo[ID][pMortes] = Mortes;// Setando o mortes da vítima ao mortes escolhido pelo playerid.    GetPlayerName(playerid,nome,sizeof(nome));// Formatando o nome do playerid    GetPlayerName(ID,nomevitima,sizeof(nomevitima));// Formatando o nome da vítima    format(string,sizeof(string),"%s Setou para %s o total de mortes %d",nome,nomevitima,PlayerInfo[ID][pMortes]); // Formatando o Texto, e mostrando quem deu,quem recebeu.    SendClientMessageToAll(-1,string);//enviando para todos    return 1; } CMD:ir(playerid,params[]) {    new id,Float:x,Float:y,Float:z,nomevitima[MAX_PLAYER_NAME],nome[MAX_PLAYER_NAME],string[60];    if(PlayerInfo[playerid][pAdmin] < 1 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 1 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params,"u",id)) return SendClientMessage(playerid,-1,"/ir [ID] ");  // Caso o jogador digite parametros errados, irá aparecer está messagem.    if (!IsPlayerConnected(id)) return SendClientMessage(playerid,-1,"Jogador não está conectado! "); // Checa se a vítima está conectada, Caso contrário retorna a mensagem    GetPlayerPos(id,x,y,z); // Pega a posição da vítima.    SetPlayerPos(playerid,x,y,z); // Seta a posição do playerid, até a vítima.    GetPlayerName(playerid,nome,sizeof(nome)); // Formatando o nome do playerid    GetPlayerName(id,nomevitima,sizeof(nomevitima)); // Formatando o nome da vítima    for(new i=0;i<MAX_PLAYERS;i++) // Loop para mandar a mensagem para todos os administradores.    {       if (IsPlayerConnected(i)) // Checando se o jogador está conectado, assim o loop será mais rápido.       {         if(PlayerInfo[i][pAdmin] >= 1) // Checa se o jogador tem o level maior ou igual à 1.         {           format(string,sizeof(string),"Administrador:%s se teleportou até %s",nome,nomevitima); // Formatando o Texto, e mostrando quem deu,quem recebeu.           SendClientMessage(i,-1,string); // Caso seja verdade que é maior ou igual à 1, irá enviar a mensagem.         }       }    }    return 1; } CMD:pegar(playerid,params[]) {    new id,Float:x,Float:y,Float:z,nomevitima[MAX_PLAYER_NAME],nome[MAX_PLAYER_NAME],string[60];    if(PlayerInfo[playerid][pAdmin] < 1 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 1 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params,"u",id)) return SendClientMessage(playerid,-1,"/ir [ID] ");  // Caso o jogador digite parametros errados, irá aparecer está messagem.    if (!IsPlayerConnected(id)) return SendClientMessage(playerid,-1,"Jogador não está conectado! "); // Checa se a vítima está conectada, Caso contrário retorna a mensagem    GetPlayerPos(playerid,x,y,z); // Pega a sua posição    SetPlayerPos(id,x,y,z); // Seta a posição do da vítima até você    GetPlayerName(playerid,nome,sizeof(nome)); // Formatando o nome do playerid    GetPlayerName(id,nomevitima,sizeof(nomevitima)); // Formatando o nome da vítima    for(new i=0;i<MAX_PLAYERS;i++) // Loop para mandar a mensagem para todos os administradores.    {       if (IsPlayerConnected(i)) // Checando se o jogador está conectado, assim o loop será mais rápido.       {         if(PlayerInfo[i][pAdmin] >= 1) // Checa se o jogador tem o level maior ou igual à 1.         {           format(string,sizeof(string),"Administrador:%s Puxou %s",nome,nomevitima); // Formatando o Texto, e mostrando quem deu,quem recebeu.           SendClientMessage(i,-1,string); // Caso seja verdade que é maior ou igual à 1, irá enviar a mensagem.         }       }    }    return 1; } CMD:tapa(playerid,params[]) {    new id,Float:x,Float:y,Float:z,nomevitima[MAX_PLAYER_NAME],nome[MAX_PLAYER_NAME],string[60];    if(PlayerInfo[playerid][pAdmin] < 1 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 1 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params,"u",id)) return SendClientMessage(playerid,-1,"/tapa [ID] ");// Caso o jogador digite parametros errados, irá aparecer está messagem.    GetPlayerPos(id,x,y,z); // Pega a posição da vítima    SetPlayerPos(id,x,y,z+10); // Seta a posição da vítima um pouco alta.    GetPlayerName(playerid,nome,sizeof(nome)); // Formatando o nome do playerid    GetPlayerName(id,nomevitima,sizeof(nomevitima)); // Formatando o nome da vítima    format(string,sizeof(string),"Administrador:%s Deu uma tapa em %s !",nome,nomevitima); // Formatando o Texto, e mostrando quem deu,quem recebeu.    SendClientMessageToAll(-1,string); // Envia a string para todos, ao invés de somente admins.    return 1; } CMD:dardinheiro(playerid,params[]) // Está função irá acrescentar a quantidade atual de dinheiro {    new id,dinheiro,nome[MAX_PLAYER_NAME],string[60],nomevitima[MAX_PLAYER_NAME];    if(PlayerInfo[playerid][pAdmin] < 5 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params,"ui",id,dinheiro)) return SendClientMessage(playerid,-1,"/dardinheiro [id] [quantidade] ");// Caso o jogador digite parametros errados, irá aparecer está messagem.    GetPlayerMoney(id); // Pega a quantidade de dinheiro da vítima    GivePlayerMoney(id,dinheiro); // Dá o dinheiro para a vítima    GetPlayerName(playerid,nome,sizeof(nome)); // Formatando o nome do playerid    GetPlayerName(playerid,nomevitima,sizeof(nomevitima)); // Formatando o nome da vítima    format(string,sizeof(string),"Administrador:%s deu para %s a quantidade de cash: %i",nome,nomevitima,dinheiro);// Formatando o Texto, e mostrando quem deu,quem recebeu.    SendClientMessageToAll(-1,string); // Envia a string para todos, ao invés de somente admins.    return 1; } CMD:resetardinheiro(playerid,params[]) // Está função irá resetar e dar o dinheiro escolhido. {    new id,dinheiro,nome[MAX_PLAYER_NAME],string[60],nomevitima[MAX_PLAYER_NAME];    if(PlayerInfo[playerid][pAdmin] < 5 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params,"ui",id,dinheiro)) return SendClientMessage(playerid,-1,"/resetardinheiro [id] [quantidade] ");// Caso o jogador digite parametros errados, irá aparecer está messagem.    ResetPlayerMoney(id); // Reseta o dinheiro ra vítima    GivePlayerMoney(id,dinheiro); // Dá o dinheiro para a vítima    GetPlayerName(playerid,nome,sizeof(nome)); // Formatando o nome do playerid    GetPlayerName(playerid,nomevitima,sizeof(nomevitima)); // Formatando o nome da vítima    format(string,sizeof(string),"Administrador:%s deu para %s a quantidade de cash: %i",nome,nomevitima,dinheiro);// Formatando o Texto, e mostrando quem deu,quem recebeu.    SendClientMessageToAll(-1,string); // Envia a string para todos, ao invés de somente admins.    return 1; } CMD:a(playerid,params[]) {    new string[128],string2[128],nome[MAX_PLAYER_NAME];    if(PlayerInfo[playerid][pAdmin] == 0 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja igual 0 e também não sejam um rcon admin Retornar a mensagem.    if(sscanf(params,"s[128]",string)) return SendClientMessage(playerid,-1,"/a [texto]  "); // Caso o jogador digite parametros errados, irá aparecer está messagem.    GetPlayerName(playerid,nome,sizeof(nome));//formata o nome do playerid    for(new i=0;i<MAX_PLAYERS;i++)    {      if(PlayerInfo[i][pAdmin] >= 1 ) // Vai mandar a mensagem para todos que tiverem o level maior ou igual a 1.      {      format(string2,sizeof(string2),"{F81414}%s: {FFFFFF}%s",nome,string);//formatando a sting.      SendClientMessage(i,-1,string2);//enviando-a para todos que são iguais ou maiores que o level 1.      }    }    return 1; } CMD:admins(playerid,params[]) {    new string[128],nome[MAX_PLAYER_NAME],countando;    if(PlayerInfo[playerid][pAdmin] >= 0 && !IsPlayerAdmin( playerid ) )    if(sscanf(params,"")) return SendClientMessage(playerid,-1,"/admins"); // Caso o jogador digite parametros errados, irá aparecer está messagem.    GetPlayerName(playerid,nome,sizeof(nome));//formata o nome do playerid    for(new i=0;i<MAX_PLAYERS;i++)    {      if(PlayerInfo[i][pAdmin] >= 1 )// Vai pegar todos os que forem iguais ou superiores a o level 1..      {      countando++;      format(string,sizeof(string),"{F81414}%s - Level %i\n",nome,PlayerInfo[i][pAdmin]);//formatando a sting.      }    }    if(countando == 0)return ShowPlayerDialog( playerid, 1245, DIALOG_STYLE_MSGBOX, "Lista De Admins","Nenhum Admin online no momento!","Ok...", "");//Caso a array contando seja 0, ou seja, não tenha aumentado.significa que não tinha admin online, então retorna a dialog.    ShowPlayerDialog( playerid, 1244, DIALOG_STYLE_MSGBOX, "Lista De Admins",string,"Ok...", "");//mostrando a dialog para o player caso tenha admins.    return 1; } CMD:viplist(playerid,params[]) {    new string[128],nome[MAX_PLAYER_NAME],countando;    if(PlayerInfo[playerid][pAdmin] >= 0 && !IsPlayerAdmin( playerid ) )    if(sscanf(params,"")) return SendClientMessage(playerid,-1,"/viplist"); // Caso o jogador digite parametros errados, irá aparecer está messagem.    GetPlayerName(playerid,nome,sizeof(nome));//formata o nome do playerid    for(new i=0;i<MAX_PLAYERS;i++)    {      if(PlayerInfo[i][pVip] >= 1 ) // Vai pegar todos os que forem iguais ou superiores a o level 1..      {      countando++;      format(string,sizeof(string),"{F81414}%s - Vip Level %i\n",nome,PlayerInfo[i][pVip]);//formatando a sting.      }    }    if(countando == 0)return ShowPlayerDialog( playerid, 1247, DIALOG_STYLE_MSGBOX, "Lista de Vips online","Nenhum Vip online no momento!","Ok...", "");//mostrando a dialog para o player    ShowPlayerDialog( playerid, 1248, DIALOG_STYLE_MSGBOX, "Lista de Vips online",string,"Ok...", "");//mostrando a dialog para o player    return 1; } CMD:banir(playerid, params[]) {     new string[256], Dia, Mes, Ano, Hora, Minuto, Segundo,vitima, nomedavitima[MAX_PLAYER_NAME],Motivo[128],nome[MAX_PLAYERS],Ip[15],arquivo[128];     if(PlayerInfo[playerid][pAdmin] < 3 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.     if(sscanf(params, "us[128]", vitima,Motivo)) return SendClientMessage(playerid, -1, "/banir [id] [motivo]");// Caso o jogador digite parametros errados, irá aparecer está messagem.     getdate(Ano, Mes, Dia);//pega a data     gettime(Hora, Minuto, Segundo);//pega o tempo     GetPlayerName(playerid, nome, sizeof(nome));//formata o nome do playerid     GetPlayerName(vitima, nomedavitima, sizeof(nomedavitima)); //formata o nome da vítima     GetPlayerIp(vitima, Ip, sizeof(Ip));//pega o ip - formata o ip.     if(!IsPlayerConnected(vitima)) return SendClientMessage(playerid, -1, "Jogador não está conectado");//caso a vitima não está conectada     format(string, sizeof(string), "Administrador %s baniu %s [Motivo: %s]", nome, nomedavitima, Motivo);//formata a string     SendClientMessageToAll(-1, string);//envia pra todos     format(string, sizeof(string), "%d/%d/%d", Dia, Mes, Ano);//formata a data     format(arquivo, sizeof(arquivo), pastadebanimento, nomedavitima);//formata a pasta onde vai ser salva     if(INI_Open(arquivo))//abre a pasta e o arquivo.     {// vai inserir tudo isto.         INI_WriteString("Admin", nome);         INI_WriteInt("Dia", Dia);         INI_WriteInt("Mes", Mes);         INI_WriteInt("Ano", Ano);         INI_WriteInt("Hora", Hora);         INI_WriteInt("Minuto", Minuto);         INI_WriteInt("Segundo", Segundo);         INI_WriteString("MotivoBan", Motivo);         INI_WriteString("IP", Ip);         INI_Save();         INI_Close();     }     Kick(vitima);//após inserir,kick à vítima.     return 1; } CMD:desbanirconta(playerid, params[]) {     new banido[MAX_PLAYER_NAME], string[45],arquivo[128];     if(PlayerInfo[playerid][pAdmin] < 5 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.     if(sscanf(params, "s[128]", banido)) return SendClientMessage(playerid, -1, "/desbanirconta [nome do banido]");// Caso o jogador digite parametros errados, irá aparecer está messagem.     format(arquivo, sizeof(arquivo), pastadebanimento, banido);//formata a pasta onde foi salva     if(fexist(arquivo))//abre a pasta e o arquivo.     {// Vai ler e procurar por IP.       INI_Open(arquivo);       format(string, sizeof(string), "SERVER : Você desbaniu a conta: %s", banido);// formatando a string.       SendClientMessage(playerid, -1, string);//enviando-a.       format(arquivo, sizeof(arquivo), pastadebanimento, banido);//Defindo a conta       INI_Remove(arquivo);//removendo o nome dele.       INI_Close();     }     else SendClientMessage(playerid,-1, "Conta não está banida");// Caso não esteja banido.     return 1; } CMD:vidatodos(playerid,params[]) {     new string[35],nome[MAX_PLAYER_NAME];     if(PlayerInfo[playerid][pAdmin] < 5 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.     if(sscanf(params, "")) return SendClientMessage(playerid, -1, "/vidatodos");// Caso o jogador digite parametros errados, irá aparecer está messagem.     GetPlayerName(playerid,nome,sizeof(nome));//formatando o nome do playerid.     format(string,sizeof(string),"%s Deu vida para todos!",nome); // formatando o texto.     SendClientMessageToAll(-1,string); // Enviando a menssagem para todos.     for(new i=0;i<MAX_PLAYERS;i++) // Vai pegar todos os jogadores.     {       if(IsPlayerConnected(i)) // Diminui o tempo do loop.       {         SetPlayerHealth(i,100); // Definir a vida de todos os jogadores 100.       }     }     return 1; } CMD:coletetodos(playerid,params[]) {     new string[35],nome[MAX_PLAYER_NAME];     if(PlayerInfo[playerid][pAdmin] < 5 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.     if(sscanf(params, "")) return SendClientMessage(playerid, -1, "/coletetodos");// Caso o jogador digite parametros errados, irá aparecer está messagem.     GetPlayerName(playerid,nome,sizeof(nome));//formatando o nome do playerid.     format(string,sizeof(string),"%s Deu colete para todos!",nome); // formatando o texto.     SendClientMessageToAll(-1,string); // Enviando a menssagem para todos.     for(new i=0;i<MAX_PLAYERS;i++) // Vai pegar todos os jogadores.     {       if(IsPlayerConnected(i)) // Diminui o tempo do loop.       {         SetPlayerArmour(i,100); // Definir o colete de todos os jogadores 100.       }     }     return 1; } CMD:verip(playerid,params[]) {    new ip[15],nome[MAX_PLAYER_NAME],string[50],ID;    if(PlayerInfo[playerid][pAdmin] < 1 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params, "u",ID)) return SendClientMessage(playerid, -1, "/verip [ID");// Caso o jogador digite parametros errados, irá aparecer está messagem.    GetPlayerName(ID,nome,sizeof(nome)); // formata o nome    GetPlayerIp(ID,ip,sizeof(ip)); // formata o ip.    format(string,sizeof(string),"Nome: %s - IP: %d",nome,ip);//formata o texto.    ShowPlayerDialog(playerid, 1222, DIALOG_STYLE_MSGBOX,"IP",string,"Fechar",""); // envia o texto em forma de dialog.    return 1; } CMD:congelar(playerid,params[]) {    new nome[MAX_PLAYER_NAME],nomevitima[MAX_PLAYER_NAME],string[128],ID;    if(PlayerInfo[playerid][pAdmin] < 1 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params, "us[128]",ID,string)) return SendClientMessage(playerid, -1, "/desbanirconta [nome do banido]");// Caso o jogador digite parametros errados, irá aparecer está messagem.    GetPlayerName(playerid,nome,sizeof(nome));//geta o nome do playerid.    GetPlayerName(ID,nomevitima,sizeof(nomevitima)); // geta o nome da vítima    format(string,sizeof(string),"Administrador:%s congelou %s Motivo: %s",nome,nomevitima,string);//formata a string    SendClientMessageToAll(-1,string);//envia a string para todos.    TogglePlayerControllable(ID,0); // congelando.    return 1; } CMD:descongelar(playerid,params[]) {    new nome[MAX_PLAYER_NAME],nomevitima[MAX_PLAYER_NAME],string[128],ID;    if(PlayerInfo[playerid][pAdmin] < 1 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params, "u",ID)) return SendClientMessage(playerid, -1, "/desbanirconta [nome do banido]");// Caso o jogador digite parametros errados, irá aparecer está messagem.    GetPlayerName(playerid,nome,sizeof(nome));//geta o nome do playerid.    GetPlayerName(ID,nomevitima,sizeof(nomevitima)); // geta o nome da vítima    format(string,sizeof(string),"Administrador:%s descongelou %s",nome,nomevitima,string);//formata a string    SendClientMessageToAll(-1,string);//envia a string para todos.    TogglePlayerControllable(ID,1); // congelando.    return 1; } CMD:bc(playerid,params[]) {    new string[128],tempo,letra;    if(PlayerInfo[playerid][pAdmin] < 5 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não seja um rcon admin, Retornar a mensagem.    if(sscanf(params, "s[128]i",string,tempo,letra)) return SendClientMessage(playerid, -1, "/bc [texto] [letra]");// Caso o jogador digite parametros errados, irá aparecer está messagem.    if(letra < 0 || letra > 3) return SendClientMessage(playerid,-1,"Letras de 0 - 3"); // Compara com o que o playerid digitou, menor que 0 ou maior que 3 retorna a mensagem    GameTextForAll(string,5000, letra); // Envia a string para todos.o gametext é uma letra enorme.    return 1; } CMD:kick(playerid,params[]) {    new ID,string[128],lol[128],nome[MAX_PLAYER_NAME],nomevitima[MAX_PLAYER_NAME];    if(PlayerInfo[playerid][pAdmin] < 3 && !IsPlayerAdmin( playerid ) ) return SendClientMessage(playerid,-1,"Sem Autorização!"); // Basicamente diz, Caso o level seja menor que 5 e também não sejam um rcon admin, Retornar a mensagem.    if(sscanf(params,"us[128]",ID,string)) return SendClientMessage(playerid,-1,"/kick [ID] [MOTIVO] ");// Caso o jogador digite parametros errados, irá aparecer está messagem.    GetPlayerName(playerid,nome,sizeof(nome));//formata o nome do playerid.    GetPlayerName(ID,nomevitima,sizeof(nomevitima));//formata o nome da vítima    format(lol,sizeof(lol),"Administrador %s kickou jogador % Motivo: %s",nome,nomevitima,string);//formata o texto.    SendClientMessageToAll(-1,lol); // Manda a mensagem para todos.    Kick(ID); // Kicka a vítima    return 1; } CMD:acmds(playerid,params[]) { } // STOCKS / PUBLICS public stats(playerid) {   #if defined statsatual     if(INI_Open(contas(playerid))) // Função que abre a stock contas, está localizada ao fim do gm.     {       INI_WriteInt("Admin",PlayerInfo[playerid][pAdmin]); // Está inserindo as informações do jogador.       INI_WriteInt("Vip",PlayerInfo[playerid][pVip]); // Está inserindo as informações do jogador.       INI_WriteInt("Score",PlayerInfo[playerid][pScore]); // Está inserindo as informações do jogador.       INI_WriteInt("Mata",PlayerInfo[playerid][pMata]); // Está inserindo as informações do jogador.       INI_WriteInt("Mortes",PlayerInfo[playerid][pMortes]); // Está inserindo as informações do jogador.       INI_WriteInt("Avisos",PlayerInfo[playerid][pAvisos]); // Está inserindo as informações do jogador.       INI_WriteInt("Dinheiro",GetPlayerMoney(playerid)); // Está inserindo as informações do jogador.       INI_Save(); // Salvando as informações do jogador       INI_Close(); // Fechando as informações do jogador   }   #endif } public atualizartext(playerid) {  new matadd[15],morreudd[15],pingdd[10],pingdd2[MAX_PLAYERS];  pingdd2[playerid] = GetPlayerPing(playerid); // Pegando o ping do jogador.  format(matadd, sizeof matadd, "Matou:%d",PlayerInfo[playerid][pMata]); // Formatando a textdraw  format(morreudd, sizeof morreudd, "Mortes:%d",PlayerInfo[playerid][pMortes]); // Formatando a textdraw  format(pingdd, sizeof pingdd, "Ping:%d",pingdd2[playerid]); // Formatando a textdraw  PlayerTextDrawSetString(playerid,matou[playerid], matadd); // Vai atualizar a string, Colocando assim o novo numero.  PlayerTextDrawSetString(playerid,morreu[playerid], morreudd);// Vai atualizar a string, Colocando assim o novo numero.  PlayerTextDrawSetString(playerid,ping[playerid], pingdd);// Vai atualizar a string, Colocando assim o novo numero. } stock contas(playerid) // Uma stock, é basicamente uma função que pode ou não ser usada,evitando erros na copilação sendo normalmente usada na criação de librárias.(Y_less)(Fiquei em dúvida sobre minha definição) {   new conta[64],nome[MAX_PLAYER_NAME]; // Conta é o nome da string, Que será usada para elaborar a formatação do texto, Nome é a função que irá armazenar o nome dos jogadores.   GetPlayerName(playerid,nome,sizeof(nome)); // Formatando o nome do jogadores.   format(conta,30,pastadesalvamento,nome); // Formatando a string, e dizendo onde armazenala e qual nome ela terá, que no caso será o nome do jogador.   return conta; // Retornando a string.   // Lembrete importante, publics não podem retornar strings, Apenas stock's. }


Tenho certeza que este tópico poderá evitar alguns pedidos/informações de comandos.

eu estava a pensar a adicionar um tutorial de sistema de gangs, porém achei que seria um pouco mais avançado, já que este tutorial é dedicado a iniciantes então achei meio que desnecessário.


Bom para finalizar, Deixe suas opiniões sobre o que deixou a desejar, erros que cometi, lembrando que, uma crítica bem construída é sempre bem vinda.


Includes && Créditos ao devidos criadores .
Sscanf2
SII
Zcmd

e Também Créditos à:
- Sa-mp Wiki (como sempre vivendo e aprendendo.)
- Leonardo1434 (Criador do tutorial)
  
______________________________________________________________________________________________