[Tutorial] Usando DIALOGS
#1

INTRODUЗГO
Iae manolada! Suaves? Bom, neste tutorial, eu 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 tuto ' >_<. Bom, 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 GM/FS! Da seguinte maneira:
pawn Код:
#define DIALOG_NOME [ID]
Funзгo da dialog:
pawn Код:
ShowPlayerDialog(playerid,DIALOG_ID,ESTILO_DA_DIALOG,"TITULO","MENSAGEM","BOTAO 1","BOTAO 2");
Certo, entгo vamos comeзar o tutorial...

Para comeзar vou ensinar a criar o estilo de dialog mais sнmples e fбcil de todas.

DIALOG_STYLE_MSGBOX

Bom, esta dialog й aquela dialog sнmples, com uma mensagem e os botхes. Vamos fazer um exemplo desta dialog:

pawn Код:
// 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 jogador 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!

Sнmples! 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 Код:
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 On‌DialogResponse = 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 apertados, mostrarгo as funзхes que vocк colocou, no caso deste exemplo, mostrarб uma mensбgem ao jogador.

OBS: Caso vocк queira que as dialogs tenha apenas UM botгo, deixe a string do botгo 2 em branco! Exemplo:
pawn Код:
ShowPlayerDialog(playerid,DIALOG_ID,DIALOG_STYLE,"TITULO","MENSAGEM","BOTГO 1","");
Sнmples esta dialog... 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 jogador. Este nгo й tгo sнmples quanto ao MSGBOX. Entгo vamos ver como funciona, veja o exemplo abaixo:

pawn Код:
// TOPO:
#define DIALOG_LISTA ID

CMD:dialoglist(playerid)
{
    ShowPlayerDialog(playerid,DIALOG_LISTA,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_LISTA = 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 puderam 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 а esta lista:

Na callback OnDialogResponse:

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_LISTA)
    {
        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_LISTA) = 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 нtem...

Entгo, esta dialog tambйm nгo tem complicaзхes! Basta pegar o 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 mais 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, mas vocк pode substituir por PASSWORD se nгo quiser que apareзa o texto que estб sendo digitado.

pawn Код:
// TOPO:
#define DIALOG_POR_TEXTO ID

CMD:dialoglist(playerid)
{
    ShowPlayerDialog(playerid,DIALOG_POR_TEXTO,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_POR_TEXTO = 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б facil, mas agora vamos ver como utilizamos oque foi escrito na caixa de escrever:

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_POR_TEXTO)
    {
        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_POR_TEXTO) = 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",inputtext = 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 dificil, basta treinar!

COMENTБRIOS
Bem, para ser sincero, dialogs nгo й uma coisa difнcil, isto requer treino e estudo, crie dialogs e vб treinando que vocк conseguirб fazer qualquer coisa com elas. As dialogs sгo muito importantes, й uma das coisas que vocк mais precisa saber para criar um bom sistema! Espero que vocкs tenham gostado, se tiverem perguntas deixem nos comentбrios! Tambйm aceito crнticas, deixe nos comentбrios tambйm. Se vocк acha que eu expliquei alguma coisa errada, tambйm fale nos comentбrios que consertarei o mais breve possнvel! Obrigado a todos, e bons trabalhos!
Reply
#2

Diminuindo as letras fica otimo
Reply
#3

Eu ainda estava usando zoom, mas fora a fonte gostei.
rep++;
Reply
#4

Legal, Otimo tutorial bem explicado!
Reply
#5

Muito bom, irб ajudar muitos!
Reply
#6

Voзк й Cego?

Nem deu vontade de ler com essas letras.
Reply
#7

Vocк й cegoІ

pawn Код:
new Escreveu[128];
            new Mensagem[128];
            format(Escreveu,sizeof(Escreveu),"%s",inputtext);
            format(Mensagem,sizeof(Mensagem),"[ ! ] Vocк escreveu: %s",Escreveu);
            SendClientMessage(playerid,-1,Mensagem);

Reply
#8

Quote:
Originally Posted by Japa3D
Посмотреть сообщение
Voзк й Cego?

Nem deu vontade de ler com essas letras.
Ei mano, com letra 4 vocк precisa de уculos pra ler, com 5 eu sou cego Mano eu to ficando loco...

@Schocc

Quote:

INTRODUЗГO
Iae manolada! Suaves? Bom, neste tutorial, eu 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 tuto ' >_<. Bom, prestem atenзгo porque eu vou tentar ser o mais claro possнvel.
Ok, pode comeзar a fazer um melhor

@[Full]Garfield[XDB]
Calma, ja arrumei! '-'
Reply
#9

Quote:
Originally Posted by [Full]Garfield[XDB]
Посмотреть сообщение
Vocк й cegoІ

pawn Код:
new Escreveu[128];
            new Mensagem[128];
            format(Escreveu,sizeof(Escreveu),"%s",inputtext);
            format(Mensagem,sizeof(Mensagem),"[ ! ] Vocк escreveu: %s",Escreveu);
            SendClientMessage(playerid,-1,Mensagem);

KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK' LOL

@topic

Bem Legal
Reply
#10

Quote:
Originally Posted by Jonathan_Feitosa
Посмотреть сообщение
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK' LOL

@topic

Bem Legal
Vlw, e bem antes eu de vc comentar eu ja tinha arrumado o erro ' -.-

@Topic
Arrumei o tamanho da fonte...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)