[Tutorial] /Equipar simples e em dialog

23 de dez. de 2012.
Bom, não tinha nada pra fazer, aí resolvi criar um tutorial, só que não tinha nenhuma ideia maneira pra fazer, então fiz isso mesmo, pode ser útil pra algumas pessoas, não sei...
É meu primeiro tutorial, podem criticar , dar sugestões, etc.
Acho que ficou bem explicadinho e tals! 
Tem o comando /equiparsimples, que é no metodo /equiparsimples [ID] e tem o /equipardialog que é em dialog.
Ele é melhor pra RP, pois tem função pra ver se o player ta em certo local, verifica se é de certa org, se tem certo cargo,etc.
Totalmente testado e funcionando perfeitamente.
Tá ai:

pawn Code:
#include <a_samp> /*----------------------------------Filter Script + Tutorial - Sistema de equipar simples para RP ------------------- [--------------------------------------Criado por Aninhaah (humildadeforever) ---------------------] */ #define DIALOG_EQUIPAR 1 public OnPlayerCommandText(playerid, cmdtext[]) {     new cmd[156], idx, tmp[156];     cmd = strtok(cmdtext, idx);     if (strcmp(cmd, "/equiparsimples", true) == 0)/* Vai verificar quando o player digitar /equiparsimples     para executar a função do cmd*/     {         new equipamento[50];/* Essa linha e a de baixo vai ser para poder usar o comando da seguinte forma: /equipar 1,         /equipar 2, /equipar 3,etc*/         equipamento = strtok(cmdtext, idx);//vai tipo que dar um espaço no cmd, para ser colocado o numero         if(!strval(equipamento)) return SendClientMessage(playerid,-1,"Use /equiparsimples [ID]");         //A linha acima manda uma mensagem pro jogador caso ele não use /equipar e um numero.         if(PlayerInfo[playerid][Org] != 1) return SendClientMessage(playerid,-1,"Você não pode usar esse comando.");         /*A linha acima é para verificar se o player é de uma certa org para usar o comando, se não for vai aparecer a mensagem         Ali o != quer dizer "Diferente de 1", ou seja se o player for de qualquer org que não seja a 1, vai aparecer a mensagem         Existe varios metodos de setar e verificar a org do player, varia de GM pra GM, varios GMs RP se usa da seguinte forma:         PlayerInfo[playerid][pMember] ou [pMembro] para verificar se é membro, e PlayerInfo[playerid][pLeader] ou [pLider] para verificar se é lider         */         if(!IsPlayerInRangeOfPoint(playerid,3.0, 1234.4321,5678.8765,1012.2110)) return SendClientMessage(playerid,-1,"Voce não esta no local para equipar");         //A linha acima manda uma mensagem pro jogador caso ele não esteja no local ou perto do local onde deve ser digitado o comando         if(strcmp(equipamento, "1", true) == 0)         {             ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem, para dar as outras             SendClientMessage(playerid,-1,"Você recebeu o equipamento numero 1");//Manda mensagem pro player dizendo que ele recebeu o equipamento 1             GivePlayerWeapon(playerid,24,100);//Dá uma desert eagle pro jogador com 100 munições             GivePlayerWeapon(playerid,25,100);//Dá uma Shotgun pro jogador com 100 munições.             // ID das armas em > [url]http://wiki.sa-mp.com/wiki/Weapons[/url]             //IMPORTANTE! NAO PODE DAR 2 OU MAIS ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1         }         else if(strcmp(equipamento, "2", true) == 0)         {             if(PlayerInfo[playerid][Cargo] < 2) return SendClientMessage(playerid,-1,"Você não tem cargo para pegar esse equipamento.");             /* A linha acima manda uma mensagem pro jogador caso o cargo dele for menor que 2             > maior. < menor. <= menor ou igual. >= maior ou igual. == igual. o -1 nos SendClientMessage é onde fica a cor, que no caso o -1 é o branco             */             ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem, para dar as outras             SendClientMessage(playerid,-1,"Você recebeu o equipamento numero 2");//Manda mensagem pro player dizendo que ele recebeu o equipamento 2             GivePlayerWeapon(playerid,24,100);//Dá uma desert eagle pro jogador com 100 munições             GivePlayerWeapon(playerid,25,100);//Dá uma Shotgun pro jogador com 100 munições.             GivePlayerWeapon(playerid,29,100);//Dá uma MP5 pro jogador com 100 munições             //IMPORTANTE! NAO PODE DAR 2 OU MAIS ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1         }         else if(strcmp(equipamento, "3", true) == 0)         {             if(PlayerInfo[playerid][Cargo] < 3) return SendClientMessage(playerid,-1,"Você não tem cargo para pegar esse equipamento.");             // A linha acima manda uma mensagem pro jogador caso o cargo dele for menor que 3             ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem, para dar as outras             SendClientMessage(playerid,-1,"Você recebeu o equipamento numero 3");//Manda mensagem pro player dizendo que ele recebeu o equipamento 3             GivePlayerWeapon(playerid,24,100);//Dá uma desert eagle pro jogador com 100 munições             GivePlayerWeapon(playerid,25,100);//Dá uma Shotgun pro jogador com 100 munições.             GivePlayerWeapon(playerid,29,100);//Dá uma MP5 pro jogador com 100 munições             GivePlayerWeapon(playerid,33,100);//Dá um Country Rifle pro jogador com 100 munições.             GivePlayerWeapon(playerid,36,100);//Dá uma HS Rocket pro jogador com 100 munições             //IMPORTANTE! NAO PODE DAR 2 OU MAIS ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1         }         else { SendClientMessage(playerid,-1,"Os IDs  é de 1 a 3"); }         // A linha acima é pra enviar uma mensagem caso o jogador digite um id que nao seja, 1,2 ou 3         return 1;     }     if(strcmp(cmd, "/equipardialog", true) == 0)/* Vai verificar quando o player digitar /equipardialog     para executar a função do cmd*/     {         if(PlayerInfo[playerid][Org] != 2) return SendClientMessage(playerid,-1,"Você não pode usar esse comando.");         /*A linha acima é para verificar se o player é de uma certa org para usar o comando, se não for vai aparecer a mensagem         Ali o != quer dizer "Diferente de 2", ou seja se o player for de qualquer org que não seja a 2, vai aparecer a mensagem         */         if(!IsPlayerInRangeOfPoint(playerid,3.0, 1234.4321,5678.8765,1012.2110)) return SendClientMessage(playerid,-1,"Voce não esta no local para equipar");         //A linha acima manda uma mensagem pro jogador caso ele não esteja no local ou perto do local onde deve ser digitado o comando         ShowPlayerDialog(playerid,DIALOG_EQUIPAR,DIALOG_STYLE_LIST,"Equipando","Equipamento 1\nEquipamento 2\nEquipamento 3","Equipar","Cancelar");         /* ---------------------------- Explicando o ShowPlayerDialog ---------------         playerid - pra quem vai ser mostrado o dialog         DIALOG_EQUIPAR - ID do Dialog que foi definido no topo do GM         DIALOG_STYLE_LIST - Estilo do Dialog (existe o LIST, INPUT, PASSWORD E MSGBOX)         "Equipando"  - Vai ser tipo que um "titulo" do Dialog.         "Equipamento 1\nEquipamento 2\nEquipamento 3 - Serão as opções da lista no dialog         "Equipar" - Botão para equipar         "Cancelar" - Vai fechar o dialog e não receberá nenhum equipamento*/         return 1;     }     return 0; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {         if(dialogid == DIALOG_EQUIPAR)         {// vai verificar o id do diaog             if(!response) return SendClientMessage(playerid,-1,"Você não quer mais se equipar.");             //a linha acima manda uma mensagem pro player se ele cancelar (apertar o segundo botao)             if(listitem == 0)//Primeira opção da lista ("Equipamento 1")             {//chave que abre o que vai acontecer ao clicar na primeira opção                 ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem para dar as outras                 SendClientMessage(playerid,-1,"Você recebeu o equipamento numero 1");//Manda mensagem pro player dizendo que ele recebeu o equipamento 1                 GivePlayerWeapon(playerid,24,100);//Dá uma desert eagle pro jogador com 100 munições                 GivePlayerWeapon(playerid,25,100);//Dá uma Shotgun pro jogador com 100 munições.                 // ID das armas em > [url]http://wiki.sa-mp.com/wiki/Weapons[/url]             }//chave que fecha as funções da primeira opçao             else if(listitem == 1)// Segunda opção da lista ("Equipamento 2")             {//chave que abre o que vai acontecer ao clicar na segunda opção                 if(PlayerInfo[playerid][Cargo] < 2) return SendClientMessage(playerid,-1,"Você não tem cargo para pegar esse equipamento.");                 // A linha acima manda uma mensagem pro jogador caso o cargo dele for menor que 2                 ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem para dar as outras                 SendClientMessage(playerid,-1,"Você recebeu o equipamento numero 2");//Manda mensagem pro player dizendo que ele recebeu o equipamento 2                 GivePlayerWeapon(playerid,24,100);//Dá uma desert eagle pro jogador com 100 munições                 GivePlayerWeapon(playerid,25,100);//Dá uma Shotgun pro jogador com 100 munições.                 GivePlayerWeapon(playerid,29,100);//Dá uma MP5 pro jogador com 100 munições             //IMPORTANTE! NAO PODE DAR 2 ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1             }//chave que fecha as funções da segunda opçao             else if(listitem == 2)//terceira opção da lista ("Equipamento 3")             {//chave que abre o que vai acontecer ao clicar na terceira opção                 if(PlayerInfo[playerid][Cargo] < 3) return SendClientMessage(playerid,-1,"Você não tem cargo para pegar esse equipamento.");                 // A linha acima manda uma mensagem pro jogador caso o cargo dele for menor que 3                 ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem para dar as outras                 SendClientMessage(playerid,-1,"Você recebeu o equipamento numero 3");//Manda mensagem pro player dizendo que ele recebeu o equipamento 3                 GivePlayerWeapon(playerid,24,100);//Dá uma desert eagle pro jogador com 100 munições                 GivePlayerWeapon(playerid,25,100);//Dá uma Shotgun pro jogador com 100 munições.                 GivePlayerWeapon(playerid,29,100);//Dá uma MP5 pro jogador com 100 munições                 GivePlayerWeapon(playerid,33,100);//Dá um Country Rifle pro jogador com 100 munições.                 GivePlayerWeapon(playerid,36,100);//Dá uma HS Rocket pro jogador com 100 munições                 //IMPORTANTE! NAO PODE DAR 2 ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1             }//chave que fecha as funções da terceira opção             return 1;         }//termina o dialog de equipar         return 1; } stock strtok(const string[], &index) {     new length = strlen(string);     while ((index < length) && (string[index] <= ' '))     {         index++;     }     new offset = index;     new result[20];     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))     {         result[index - offset] = string[index];         index++;     }     result[index - offset] = EOS;     return result; }


E no pastebin: http://pastebin.com/6cHmxqL0

0 comentários:

Postar um comentário