27.06.2012, 14:53
(
Последний раз редактировалось leonardo1434; 04.07.2012 в 04:34.
)
Bom, Olб Pessoal. Como eu estava sem nada para fazer resolvi criar meu primeiro tutorial, Claramente dedicado aos mais novatos. 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.
Links para 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.
Код:
//////////////////////////////////////////////////////////////////////////////// // // // // >>>> Tutorial Criado por leonardo1434 // // >>>> Acesse meu blog para mais informaзхes: http://leonardo1434.blogspot.com.br // >>> 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="https://sampwiki.blast.hk/wiki/TextDrawCreate"]https://sampwiki.blast.hk/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="https://sampwiki.blast.hk/wiki/CreatePlayerTextDraw"]https://sampwiki.blast.hk/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 a todo estante. // 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.(******)(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.
Links para 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)