SSGamers - 13 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 13 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 13 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    [Tutorial] Tutorial de como criar um dialog

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11644
    Moedas : 1032955
    Data de inscrição : 06/10/2011
    Idade : 29
    Localização : Brasil

    [Tutorial]  Tutorial de como criar um dialog Empty [Tutorial] Tutorial de como criar um dialog

    Mensagem por Weslley_Script Qua 15 Mar 2023 - 7:46

    Criando um dialog

    Vendo que muitos tem dъvidas sobre como criar um dialog vou aqui fazer uma coisa rбpida de como cria-lo..

    Primeiramente vocк tem que conhecer as funзхes..


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])]

    Este й o callback onde vocк irб colocar as funзхes de cada dialog.

    playerid - ID do player a qual estб sendo mostrado o dialog e ocorrerб a funзгo.
    dialogid - ID do dialogo criado. Й extremamente importante que vocк coloque sempre ids diferentes, e de preferкncia em ordem crescente. E para uma maior organizaзгo, vocк pode usar defines. Ex: #define DialogoDeRegistro 1
    response - Й usado para gerenciar os dois botхes.
    listitem - Й usado para gerenciar os itens da lista conforme a ordem. listitem 1, 2, 3 e quantos vocк estiver colocado. Usado no estilo DIALOG_STYLE_LIST.
    inputtext - Й usado para pegar o texto(string[]) digitado pelo jogador na caixa. Usado no estilo DIALOG_STYLE_INPUT.


    ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[]);

    Funзгo usada para criar o dialog.

    playerid - ID do player a ser exibido o dialog.
    dialogid - ID de ordem do dialog criado. Й extremamente importante que vocк coloque sempre ids diferentes, e de preferкncia em ordem crescente. E para uma maior organizaзгo, vocк pode usar defines. Ex: #define DialogoDeRegistro 1
    style - Estilo do dialog a ser criado. Existem 3 tipos:
    0 - DIALOG_STYLE_MSGBOX - Estilo que sу mostra uma mensagem na caixa.
    1 - DIALOG_STYLE_INPUT - Estilo onde abre uma caixa com uma mensagem, e um espaзo para o player digitar.
    2 - DIALOG_STYLE_LIST - Exibe uma lista de itens para ser selecionado e ocorrer a funзгo para tal id.

    caption[] - Usado para colocar o texto do cabeзalho.

    info[] - Usado para escrever o conteъdo que aparecerб dentro do dialog.

    button1[] - Texto que aparecerб no botгo nъmero 1.

    button2[] - Texto que aparecerб no botгo nъmero 2.

    Para criar um dialog й simples. Vamos comeзar com o estilgo MSGBOX:

    Primeiramente crie-o com a funзгo ShowPlayerDialog:
    pawn Код:
    #define DialogBoxEx 1
    new str[256];
    format(str, sizeof(str), "%d < Mostra o ID do Player \n Aqui serб o texto a ser introduzido no dialog.\n Vocк terб que determinar um valor correto na variбvel criada de acordo \n com o tamanho do seu texto", playerid);

    ShowPlayerDialog(playerid, DialogBoxEx, DIALOG_STYLE_MSGBOX, "Cabeзalho", str, "Ok", "Cancelar");
    Este dialog criado, nгo necessitarб inicialmente de usar o callback OnDialogResponse, a nгo ser para algumas funзхes desejadas, como usar variбveis, timers e etc.

    Agora com o estilo DIALOG_STYLE_INPUT:
    pawn Код:

    Código:
    #define DialogInputEx 2
    new str[512];
    format(str, sizeof(str), "%d < Mostra o ID do Player \n Aqui serб o texto a ser introduzido no dialog.\n Vocк terб que determinar um valor correto na variбvel criada de acordo \n com o tamanho do seu texto \n Abaixo o Player digitarб um texto", playerid);


    ShowPlayerDialog(playerid, DialogInputEx, DIALOG_STYLE_INPUT, "Cabeзalho", str, "Ok", "Cancelar");

    //Agora vocк irб no OnDialogResponse e colocarб a funзгo apуs ele ter apertado OK.

    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
        if(dialogid == DialogInputEx)//identifica o id do dialog.
        {
            if(response)//Caso ele clique no primeiro botгo
            {
                new Nome[64];
                GetPlayerName(playerid, Nome, sizeof(nome));
                if(!strcmp(inputtext, Nome, true)) //Identifica se o texto digitado й igual ao seu nome/nick do jogo.
                {
                    SendClientMessage(playerid, COR, "Parabйns! Vocк sabe seu nome e por isso ganharб 1000 Reais!!!");
                    GivePlayerMoney(playerid, 1000);
                    return 1;
                }
            }
            else //caso ele click no segundo botгo
            {
                SendClientMessage(playerid, COR, "Vocк clicou no segundo botгo, o dialog desaparecerб que nem mбgica e vocк serб kickado!!!!!");
                Kick(playerid);
            }
        }
        return 1;
    }


    Agora com o estilo DIALOG_STYLE_LIST:
    pawn Код:

    Código:
    new Clicado[MAX_PLAYERS];//Usado para armazenar o ID do player clicado

    public OnPlayerClickPlayer(playerid, clickedplayerid, source) //Quando o player clicar em outro player (No Tab)
    {
        if(IsPlayerAdmin(playerid))
        {
          new str[64] = "Ir atй\nTrazer\nKickar\nBanir"; //Para cada item use "/n" o que pularб uma linha para o prуximo item.
          ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Opзхes - Administrador", str, "Selecionar", "Cancelar"); //mostrarб o dialog
            Clicado[playerid] = clickedplayerid;//armazenarб o id do player clicado
        }
        return 1;
    }



    //Agora no OnDialogResponse


    Código:
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])//Dialog criado por [VGS]Mac_OC
    {
        new string[128];
       
        if(dialogid == 0)
        {
            if(IsPlayerAdmin(playerid))//verifica se o player й administrador, caso nгo queira sу para administrador, retire-o
            {
            if(response)//botгo 1
            {
              new Float:Coord[3];
              if(listitem == 0)//Item 0 da lista( й o primeiro da lista)
              {
                        GetPlayerPos(Clicado[playerid], Coord[0], Coord[1], Coord[2]);
                        new intid = GetPlayerInterior(Clicado[playerid]);
                        if(IsPlayerInAnyVehicle(playerid))
                        {
                            new vid = GetPlayerVehicleID(playerid);
                            SetVehiclePos(vid, Coord[0], Coord[1]+4, Coord[2]+4);//teleportarб o veiculo
                            SetPlayerInterior(playerid, intid);
                            LinkVehicleToInterior(vid, intid);
                        }
                        else
                        {
                            SetPlayerInterior(playerid, intid);
                            SetPlayerPos(playerid, Coord[0], Coord[1]+4, Coord[2]+4);//teleportarб o player
                        }
                        format(string, sizeof(string), "Vocк se teleportou atй %s(id: %d)", PlayerName(Clicado[playerid]), Clicado[playerid]);
                        SendClientMessage(playerid, Cor_Verde, string);
                        return 1;
              }
             
              else if(listitem == 1)//item da lista 1 (segundo da lista) farб com que traga o player
              {
                        GetPlayerPos(playerid, Coord[0], Coord[1], Coord[2]);
                        new intid = GetPlayerInterior(playerid);
                        if(IsPlayerInAnyVehicle(Clicado[playerid]))
                        {
                            new vid = GetPlayerVehicleID(Clicado[playerid]);
                            SetVehiclePos(vid, Coord[0], Coord[1]+4, Coord[2]+4);
                            SetPlayerInterior(Clicado[playerid], intid);
                            LinkVehicleToInterior(vid, intid);
                        }
                        else
                        {
                            SetPlayerInterior(Clicado[playerid], intid);
                            SetPlayerPos(Clicado[playerid], Coord[0], Coord[1]+4, Coord[2]+4);
                        }
                        format(string, sizeof(string), "Vocк trouxe %s(id: %d) atй vocк.", PlayerName(Clicado[playerid]), Clicado[playerid]);
                        SendClientMessage(playerid, Cor_Verde, string);
                        return 1;
                    }
                   
                    else if(listitem == 2)
                    {
                    format(string, sizeof(string),"%s foi kickado por %s ", PlayerName(Clicado[playerid]), PlayerName(playerid));
                    SendClientMessageToAll(Cor_Vermelho, string);
                    Kick(Clicado[playerid]);
                    return 1;

                    }
                   
                    else if(listitem == 3)
                    {
                        format(string, sizeof(string), "%s foi kickado por %s ", PlayerName(Clicado[playerid]), PlayerName(playerid));
                        SendClientMessageToAll(Cor_Vermelho, string);
                        Ban(Clicado[playerid]);
                      return 1;

                    }
               }
            }
            return 1;
        }
        return 0;
    }


    Quem tiver erro de PlayerName, crie uma variavel e use o GetPlayerName, ou adicionem essa funзгo ao seu mode:
    pawn Код:
    stock PlayerName(playerid)

    Código:
    {
        new Nome[MAX_PLAYER_NAME];
        GetPlayerName(playerid, Nome, MAX_PLAYER_NAME);
        return Nome;
    }


    Espero que tenham entendido
    Qualquer dъvida, postem ai.

    Obs: Qualquer erro informem



    Creditos: speliarmos



    [Tutorial]  Tutorial de como criar um dialog D07Xwqb
    [Tutorial]  Tutorial de como criar um dialog Yjab9HN

      Data/hora atual: Qua 27 Nov 2024 - 3:24