[Tutorial] Usando DIALOGS

9 de jan. de 2013.
Bom, neste tutorial, vou ensinar a usar as dialogs, todos os estilos. Que são MSGBOX, LIST, INPUT e PASSWORD. Eu quis criá-lo porque eu realmente não tinha nada para fazer agora e me deu uma vontade de criar um tutorial, prestem atenção porque eu vou tentar ser o mais claro possível.

Tutorial:
Bom, para iniciar o tutorial, devo explicar que para criar uma dialog, precisa-se definir o ID dela no topo do GameMode / FilterScript. 

Da seguinte maneira:

pawn Code:
#define DIALOG_NOME [ID]
Função da dialog:
pawn Code:
ShowPlayerDialog(playerid,DIALOG_ID,ESTILO_DA_DIALOG,"TITULO","MENSAGEM","BOTAO 1","BOTAO 2");
Para começar vou ensinar a criar o estilo de dialog mais simples e fácil de todas.

DIALOG_STYLE_MSGBOX

Bom, esta dialog é aquela dialog simples, com uma mensagem e os botões. 

Vamos fazer um exemplo deste dialog:
pawn Code:
// TOPO: #define DIALOG_CREDITOS 1 CMD:creditos(playerid) {     ShowPlayerDialog(playerid,DIALOG_CREDITOS,DIALOG_STYLE_MSGBOX,"CRÉDITOS DO TUTORIAL","Tutorial foi criado por HeyHoLetsGo","OK","Sair") }
Explicando:
ShowPlayerDialog = Função para chamar uma dialog;
playerid = ID do player que vai ver a dialog;
DIALOG_CREDITOS = ID da dialog;
DIALOG_STYLE_MSGBOX = Estilo da dialog, neste caso é a MSGBOX;
"CRÉDITOS DO TUTORIAL" = Esta primeira string é para o título;
"Tutorial foi criado por HeyHoLetsGo" = Menságem que vai aparecer dentro da dialog!

Esta é a mais fácil de todas, mas caso você queira que os botões tenham alguma função, então faz o seguinte:

Na callback OnDialogResponse, faremos o seguinte:
pawn Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {     if(dialogid == DIALOG_CREDITOS)     {         if(response)         {             SendClientMessage(playerid,-1,"[ ! ] Você clicou em OK!");         }         else         {             SendClientMessage(playerid,-1,"[ ! ] Você clicou em Sair!");         }     }     return 1; }
Explicando:

public OnDialogResponse = Chamamos a callback que para fazer as funções das dialogs;
if(dialogid == DIALOG_CREDITOS) = Chamamos as funções da DIALOG_CREDITOS;
if(response) = Se clicar no primeiro botão, no caso, OK;
else = Se clicar no segundo, no caso, Sair.

Pronto! Agora os botões desta dialogs, quando forem apertados, mostrarão a função que você colocou, no caso deste exemplo, mostrará uma mensagem ao player.

Observação: 

Caso você queira que as dialogs tenha apenas 1 botão, deixe a string do botão 2 em branco! Exemplo: ShowPlayerDialog(playerid,DIALOG_ID,DIALOG_STYLE," TITULO,"MENSAGEM","BOTÃO 1","");

Simples, prestando atenção neste tutorial você vai aprender sem problemas.

DIALOG_STYLE_LIST

Bom, este estilo de dialog é daqueles que mostram uma lista de opções ao player. Este não é tão simples quanto ao MSGBOX. 

Então vamos ver como funciona, veja o exemplo abaixo:
pawn Code:
// TOPO: #define DIALOG_LIST ID CMD:dialoglist(playerid) {     ShowPlayerDialog(playerid,DIALOG_LIST,DIALOG_STYLE_LIST,"ESCOLHA UMA OPÇÃO","Créditos\nFórum\nMenságem","VER","Sair"); }
Explicando:

ShowPlayerDialog = Função para chamar uma dialog;
playerid = ID do player que vai ver a dialog;
DIALOG_LIST = ID da dialog;
DIALOG_STYLE_LIST = Estilo da dialog, neste caso é a LIST;
"ESCOLHA UMA OPÇÃO" = Esta primeira string é para o título;
"Créditos\nFórum\nMenságem" = Lista de opções

Bem, como vocês pudem ver, na segunda string da função, tem umas palavras separadas por \n, bem, estes carácteres nesta função servem para separar as linhas, ou seja, separar as opções, no caso, estas palavras ficariam uma em baixo da outra, formando 3 opções para escolher.

Agora vamos adicionar funções a esta lista:

na callback OnDialogResponse:
pawn Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {     if(dialogid == DIALOG_LIST)     {         if(response)         {             if(listitem == 0)             {                 SendClientMessage(playerid,-1,"[ ! ] Tutorial foi criado por HeyHoLetsGo");             }             if(listitem == 1)             {                 SendClientMessage(playerid,-1,"[ ! ] forum.sa-mp.com");             }             if(listitem == 2)             {                 ShowPlayerMessage(playerid,-1,"[ ! ] Olá! Você escolheu a 3° opção da lista!");             }         }         else         {             SendClientMessage(playerid,-1,"[ ! ] Você clicou em sair e a dialog desapareceu!");     }     return 1; }
Explicando:

if(dialogid == DIALOG_LIST) = Chamamos as funções da DIALOG_CREDITOS;
if(response) = Se clicar no primeiro botão, no caso VER;
if(listitem == 0) = Se selecionar o primeiro item da lista;
if(listitem == 1) = Se selecionar o segundo item da lista;
if(listitem == 2) = Se selecionar o terceiro item da lista;
else = Se clicar no segundo botão, no caso Sair.

Como vocês podem notar, o listitem começa do ZERO, e não do 1, então se começarem do 1, você estará pulando o primeiro item...

Então, esta dialog também não tem complicações! Basta pegar jeito e você faz qualquer coisa com ela fácil fácil! Agora, o próximo estilo de dialog, aliás, os próximos, serãm um pouco complicados, recomendo prestar muita atenção nas explicações para entender!

DIALOG_STYLE_INPUT / DIALOG_STYLE_PASSWORD


Estes estilos de dialog são aqueles que tem um espaço para o jogador escrever. Como vocês podem perceber, eu vou ensinar estas duas dialogs ao mesmo tempo, mas porque? Porque elas são a mesma coisa, a diferença entre elas é porque a INPUT aparece oque o player está digitando, e a PASSWORD aparece aquelas bolinhas "•" no lugar do texto. Eu vou ensinar com os exemplos do INPUT, nas você pode substituir por PASSWORD se não quiser que apareça o texto que está sendo escrito.
pawn Code:
// TOPO: #define DIALOG_INPUT ID CMD:dialoglist(playerid) {     ShowPlayerDialog(playerid,DIALOG_INPUT,DIALOG_STYLE_INPUT,"ESCREVER NOME","Escreva seu nome para mostrar em uma menságem!","OK","Sair"); }
Explicando

ShowPlayerDialog = Função para chamar uma dialog;
playerid = ID do player que vai ver a dialog;
DIALOG_INPUT = ID da dialog;
DIALOG_STYLE_INPUT = Estilo da dialog, neste caso é a INPUT;
"ESCREVER NOME" = Esta primeira string é para o título;
"Escreva seu nome para mostrar em uma menságem!" = Texto da dialog.

Muito bem, até aqui está fácil, mas agora vamos ver como utilizamos oque foi escrito na caixa de escrever:
pawn Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {     if(dialogid == DIALOG_INPUT)     {         if(response)         {             new Mensagem[128];             format(Mensagem,sizeof(Mensagem),"[ ! ] Você escreveu: %s",inputtext);             SendClientMessage(playerid,-1,Mensagem);         }         else         {             SendClientMessage(playerid,-1,"[ ! ] Você clicou em sair e a dialog desapareceu!");         }     }     return 1; }
Explicando
if(dialogid == DIALOG_LIST) = Chamamos as funções da DIALOG_INPUT;
if(response) = Se clicar no primeiro botão, no caso VER;
new Mensagem = Var criada para formatar o texto que irá aparecer;
format(Mensagem,sizeof(Mensagem),"[ ! ] Você escreveu: %s",Escreveu = Formatamos o texto que irá aparecer, repare que eu coloquei o %s, isto serve para que no lugar disto apareça a mensagem, também repare que depois desta string eu coloquei inputtext, isto significa que eu quero que apareça oque foi escrito na dialog no lugar do %s;
else = Se clicar no segundo botão, no caso Sair.

Bem, é isto, para pegar oque foi escrito na dialog, você precisa usar inputtext, e caso o local de escrever seja para escrever apenas números, use strval(inputtext), que irá pegar os números que foi escrito. Então, se quiser colocar o inputtext numa string, use format, ou se quiser colocar o inputtext numa Variável, use variavel = strval(inputtext). Não é tão difícil, basta treinar!

Creditos: 
HeyHoLetsGo

1 comentários:

Unknown disse...

como abro o dialog

Postar um comentário