______________________________________________________________________________________________
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.
---------------------------------------------------------------------------------------------------
A Segunda Callback é a "OnFilterScriptExit()".
Bom essa Callback é Quando A FS é Desligada.
Não tenho Muito oque falar dela.
---------------------------------------------------------------------------------------------------
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
---------------------------------------------------------------------------------------------------
A Quarta Callback é a "public OnGameModeExit()".
Ou Seja Quando O GAMEMODE é desligado
---------------------------------------------------------------------------------------------------
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
---------------------------------------------------------------------------------------------------
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.
---------------------------------------------------------------------------------------------------
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.
----------------------------------------------------------------------------------------------------
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.
----------------------------------------------------------------------------------------------------
A Nona Callback é a "OnPlayerDeath(playerid, killerid, reason)".
Esta Callback é responsavel Pela Morte Do Player, Ou Seja Quando O Player Morrer.
---------------------------------------------------------------------------------------------------
A Decima Callback é a "OnPlayerCommandText(playerid, cmdtext[])".
Esta Callback é Responsavel Pelos Comando Do Servidor.
------------------------------------------------------------------------------------------------
A Decima Primera Callback é a "OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)".
Esta Callback é responsavel quando o player entra no carro.
------------------------------------------------------------------------------------------------
A Decima Segunda Callback é a "OnPlayerExitVehicle(playerid, vehicleid)".
Esta é responsavel Quando O player sai do carro
------------------------------------------------------------------------------------------------
A Decima Terçeira Callback é a "OnPlayerText(playerid, text[])".
Esta é Responsavel Pelo que o Player Digita.Ou Seja oque o Player Ira digitar.
BOM GENTE É ISSO ESPERE QUE SEJA AJUDE TODOS.
CRITICAS ERROS DUVIDA PODEM FALAR.
Creditos : ExpressxD,[LF]Player Por Ajudar OnPlayerText
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:
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:
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:
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:
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:
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:
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:
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:
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.
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;
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 }
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.
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)
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)
______________________________________________________________________________________________