SA-MP Forums Archive
[Tutorial] /Equipar simples e em dialog - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] /Equipar simples e em dialog (/showthread.php?tid=319823)



/Equipar simples e em dialog - humildadeforever - 20.02.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 Код:
#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 > https://sampwiki.blast.hk/wiki/Weapons
            //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 > https://sampwiki.blast.hk/wiki/Weapons
            }//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


Re: /Equipar simples e em dialog - Lucas_Alemao - 20.02.2012

achei meio bagunзado pra ler, seria melhor se separasse tudo em varios [ pawn ], mas oq vale й a intenзгo....


Re: /Equipar simples e em dialog - humildadeforever - 20.02.2012

O prуximo eu faзo mais organizado entгo Vlw...


Re: /Equipar simples e em dialog - 4LiSs0N - 21.02.2012

Na minha opiniгo ta bom Vai me ajudar muito


Re: /Equipar simples e em dialog - humildadeforever - 21.02.2012

Quote:
Originally Posted by 4LiSs0N
Посмотреть сообщение
Na minha opiniгo ta bom Vai me ajudar muito
Vlw


Re: /Equipar simples e em dialog - Deagle™ - 21.02.2012

Quote:
Originally Posted by Lucas_Alemao
Посмотреть сообщение
achei meio bagunзado pra ler, seria melhor se separasse tudo em varios [ pawn ], mas oq vale й a intenзгo....
Falou tudo.


Re: /Equipar simples e em dialog - [FFC]Twister - 22.02.2012

como o lucas alemao falo , poderia ser separado os comandos mais oq vale e o resultado e ele ta 10/10

entao parabens