Advertisement
Aninhaah

Tutorial - /Equipar simples e em dialog

Feb 20th, 2012
325
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 9.83 KB | None | 0 0
  1. #include <a_samp>
  2. /*----------------------------------Filter Script + Tutorial - Sistema de equipar simples para RP -------------------
  3. [--------------------------------------Criado por Aninhaah (humildadeforever) ---------------------]
  4. */
  5.  
  6. #define DIALOG_EQUIPAR 1
  7.  
  8. public OnPlayerCommandText(playerid, cmdtext[])
  9. {
  10.     new cmd[156], idx;
  11.     cmd = strtok(cmdtext, idx);
  12.     if (strcmp(cmd, "/equiparsimples", true) == 0)/* Vai verificar quando o player digitar /equiparsimples
  13.     para executar a função do cmd*/
  14.     {
  15.         new equipamento[50];/* Essa linha e a de baixo vai ser para poder usar o comando da seguinte forma: /equipar 1,
  16.         /equipar 2, /equipar 3,etc*/
  17.         equipamento = strtok(cmdtext, idx);//vai tipo que dar um espaço no cmd, para ser colocado o numero
  18.         if(!strval(equipamento)) return SendClientMessage(playerid,-1,"Use /equiparsimples [ID]");
  19.         //A linha acima manda uma mensagem pro jogador caso ele não use /equipar e um numero.
  20.         if(PlayerInfo[playerid][Org] != 1) return SendClientMessage(playerid,-1,"Você não pode usar esse comando.");
  21.         /*A linha acima é para verificar se o player é de uma certa org para usar o comando, se não for vai aparecer a mensagem
  22.         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
  23.         Existe varios metodos de setar e verificar a org do player, varia de GM pra GM, varios GMs RP se usa da seguinte forma:
  24.         PlayerInfo[playerid][pMember] ou [pMembro] para verificar se é membro, e PlayerInfo[playerid][pLeader] ou [pLider] para verificar se é lider
  25.         */
  26.         if(!IsPlayerInRangeOfPoint(playerid,3.0, 1234.4321,5678.8765,1012.2110)) return SendClientMessage(playerid,-1,"Voce não esta no local para equipar");
  27.         //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
  28.         if(strcmp(equipamento, "1", true) == 0)
  29.         {
  30.             ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem para dar as outras
  31.             SendClientMessage(playerid,-1,"Você recebeu o equipamento numero 1");//Manda mensagem pro player dizendo que ele recebeu o equipamento 1
  32.             GivePlayerWeapon(playerid,24,100);//Dá uma desert eagle pro jogador com 100 munições
  33.             GivePlayerWeapon(playerid,25,100);//Dá uma Shotgun pro jogador com 100 munições.
  34.             // ID das armas em > http://wiki.sa-mp.com/wiki/Weapons
  35.             //IMPORTANTE! NAO PODE DAR 2 ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1
  36.         }
  37.         else if(strcmp(equipamento, "2", true) == 0)
  38.         {
  39.             if(PlayerInfo[playerid][Cargo] < 2) return SendClientMessage(playerid,-1,"Você não tem cargo para pegar esse equipamento.");
  40.             /* A linha acima manda uma mensagem pro jogador caso o cargo dele for menor que 2
  41.             > maior. < menor. <= menor ou igual. >= maior ou igual. == igual. o -1 nos SendClientMessage é onde fica a cor, que no caso o -1 é o branco
  42.             */
  43.             ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem para dar as outras
  44.             SendClientMessage(playerid,-1,"Você recebeu o equipamento numero 2");//Manda mensagem pro player dizendo que ele recebeu o equipamento 2
  45.             GivePlayerWeapon(playerid,24,100);//Dá uma desert eagle pro jogador com 100 munições
  46.             GivePlayerWeapon(playerid,25,100);//Dá uma Shotgun pro jogador com 100 munições.
  47.             GivePlayerWeapon(playerid,29,100);//Dá uma MP5 pro jogador com 100 munições
  48.             //IMPORTANTE! NAO PODE DAR 2 ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1
  49.         }
  50.         else if(strcmp(equipamento, "3", true) == 0)
  51.         {
  52.             if(PlayerInfo[playerid][Cargo] < 3) return SendClientMessage(playerid,-1,"Você não tem cargo para pegar esse equipamento.");
  53.             // A linha acima manda uma mensagem pro jogador caso o cargo dele for menor que 3
  54.             ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem para dar as outras
  55.             SendClientMessage(playerid,-1,"Você recebeu o equipamento numero 3");//Manda mensagem pro player dizendo que ele recebeu o equipamento 3
  56.             GivePlayerWeapon(playerid,24,100);//Dá uma desert eagle pro jogador com 100 munições
  57.             GivePlayerWeapon(playerid,25,100);//Dá uma Shotgun pro jogador com 100 munições.
  58.             GivePlayerWeapon(playerid,29,100);//Dá uma MP5 pro jogador com 100 munições
  59.             GivePlayerWeapon(playerid,33,100);//Dá um Country Rifle pro jogador com 100 munições.
  60.             GivePlayerWeapon(playerid,36,100);//Dá uma HS Rocket pro jogador com 100 munições
  61.             //IMPORTANTE! NAO PODE DAR 2 ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1
  62.         }
  63.         else { SendClientMessage(playerid,-1,"Os IDs  é de 1 a 3"); }
  64.         // A linha acima é pra enviar uma mensagem caso o jogador digite um id que nao seja, 1,2 ou 3
  65.         return 1;
  66.     }
  67.     if(strcmp(cmd, "/equipardialog", true) == 0)/* Vai verificar quando o player digitar /equipardialog
  68.     para executar a função do cmd*/
  69.     {
  70.         if(PlayerInfo[playerid][Org] != 2) return SendClientMessage(playerid,-1,"Você não pode usar esse comando.");
  71.         /*A linha acima é para verificar se o player é de uma certa org para usar o comando, se não for vai aparecer a mensagem
  72.         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
  73.         */
  74.         if(!IsPlayerInRangeOfPoint(playerid,3.0, 1234.4321,5678.8765,1012.2110)) return SendClientMessage(playerid,-1,"Voce não esta no local para equipar");
  75.         //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
  76.         ShowPlayerDialog(playerid,DIALOG_EQUIPAR,DIALOG_STYLE_LIST,"Equipando","Equipamento 1\nEquipamento 2\nEquipamento 3","Equipar","Cancelar");
  77.         /* ---------------------------- Explicando o ShowPlayerDialog ---------------
  78.         playerid - pra quem vai ser mostrado o dialog
  79.         DIALOG_EQUIPAR - ID do Dialog que foi definido no topo do GM
  80.         DIALOG_STYLE_LIST - Estilo do Dialog (existe o LIST, INPUT, PASSWORD E MSGBOX)
  81.         "Equipando"  - Vai ser tipo que um "titulo" do Dialog.
  82.         "Equipamento 1\nEquipamento 2\nEquipamento 3 - Serão as opções da lista no dialog
  83.         "Equipar" - Botão para equipar
  84.         "Cancelar" - Vai fechar o dialog e não receberá nenhum equipamento*/
  85.         return 1;
  86.     }
  87.     return 0;
  88. }
  89.  
  90. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  91. {
  92.         if(dialogid == DIALOG_EQUIPAR)
  93.         {// vai verificar o id do diaog
  94.             if(!response) return SendClientMessage(playerid,-1,"Você não quer mais se equipar.");
  95.             //a linha acima manda uma mensagem pro player se ele cancelar (apertar o segundo botao)
  96.             if(listitem == 0)//Primeira opção da lista ("Equipamento 1")
  97.             {//chave que abre o que vai acontecer ao clicar na primeira opção
  98.                 ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem para dar as outras
  99.                 SendClientMessage(playerid,-1,"Você recebeu o equipamento numero 1");//Manda mensagem pro player dizendo que ele recebeu o equipamento 1
  100.                 GivePlayerWeapon(playerid,24,100);//Dá uma desert eagle pro jogador com 100 munições
  101.                 GivePlayerWeapon(playerid,25,100);//Dá uma Shotgun pro jogador com 100 munições.
  102.                 // ID das armas em > http://wiki.sa-mp.com/wiki/Weapons
  103.             }//chave que fecha as funções da primeira opçao
  104.             else if(listitem == 1)// Segunda opção da lista ("Equipamento 2")
  105.             {//chave que abre o que vai acontecer ao clicar na segunda opção
  106.                 if(PlayerInfo[playerid][Cargo] < 2) return SendClientMessage(playerid,-1,"Você não tem cargo para pegar esse equipamento.");
  107.                 // A linha acima manda uma mensagem pro jogador caso o cargo dele for menor que 2
  108.                 ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem para dar as outras
  109.                 SendClientMessage(playerid,-1,"Você recebeu o equipamento numero 2");//Manda mensagem pro player dizendo que ele recebeu o equipamento 2
  110.                 GivePlayerWeapon(playerid,24,100);//Dá uma desert eagle pro jogador com 100 munições
  111.                 GivePlayerWeapon(playerid,25,100);//Dá uma Shotgun pro jogador com 100 munições.
  112.                 GivePlayerWeapon(playerid,29,100);//Dá uma MP5 pro jogador com 100 munições
  113.             //IMPORTANTE! NAO PODE DAR 2 ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1
  114.             }//chave que fecha as funções da segunda opçao
  115.             else if(listitem == 2)//terceira opção da lista ("Equipamento 3")
  116.             {//chave que abre o que vai acontecer ao clicar na terceira opção
  117.                 if(PlayerInfo[playerid][Cargo] < 3) return SendClientMessage(playerid,-1,"Você não tem cargo para pegar esse equipamento.");
  118.                 // A linha acima manda uma mensagem pro jogador caso o cargo dele for menor que 3
  119.                 ResetPlayerWeapons(playerid); //Primeiro retira todas armas que ele tem para dar as outras
  120.                 SendClientMessage(playerid,-1,"Você recebeu o equipamento numero 3");//Manda mensagem pro player dizendo que ele recebeu o equipamento 3
  121.                 GivePlayerWeapon(playerid,24,100);//Dá uma desert eagle pro jogador com 100 munições
  122.                 GivePlayerWeapon(playerid,25,100);//Dá uma Shotgun pro jogador com 100 munições.
  123.                 GivePlayerWeapon(playerid,29,100);//Dá uma MP5 pro jogador com 100 munições
  124.                 GivePlayerWeapon(playerid,33,100);//Dá um Country Rifle pro jogador com 100 munições.
  125.                 GivePlayerWeapon(playerid,36,100);//Dá uma HS Rocket pro jogador com 100 munições
  126.                 //IMPORTANTE! NAO PODE DAR 2 ARMAS DO MESMO SLOT, POIS ELA SERA SUBSTITUIDA E FICARA APENAS 1
  127.             }//chave que fecha as funções da terceira opção
  128.             return 1;
  129.         }//termina o dialog de equipar
  130.         return 1;
  131. }
  132.  
  133.  
  134.  
  135. stock strtok(const string[], &index)
  136. {
  137.     new length = strlen(string);
  138.     while ((index < length) && (string[index] <= ' '))
  139.     {
  140.         index++;
  141.     }
  142.  
  143.     new offset = index;
  144.     new result[20];
  145.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  146.     {
  147.         result[index - offset] = string[index];
  148.         index++;
  149.     }
  150.     result[index - offset] = EOS;
  151.     return result;
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement