playerid - ID do player para qual o dialog abrirб dialogid - ID do dialog, sempre alternado, para nгo haver conflitos com outros dialogs style - Estilo do dialog, (0, 1, 2, 3) caption[] - Titulo do dialog, й como um header que fica bem na ponta em cima do dialog. info[] - Informaзхes que virгo a aparecer quando o dialog й aberto. button1[] - Botгo 1, com um texto afirmando uma opзгo. button2[] - Botгo 2, afirmando uma opзгo oposta ao botгo 1 ----------------------------------------------------------------------------------------- Style: temos como style, a interface ao todo de um dialog. 0 = DIALOG_STYLE_MSGBOX, uma janela de mensagem apenas. 1 = DIALOG_STYLE_INPUT, uma janela de escrita, ъtil para pegar valores. 2 = DIALOG_STYLE_LIST, uma janela de lista, vбrias opзхes em um dialog. 3 = DIALOG_STYLE_PASSWORD, uma janela semelhante ao INPUT, mas ъtil para senhas e cуdigos secretos. ------------------------------------------------------------------------------------------- Assim origina-se o cуdigo nativo de um dialog: ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[]);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Tнtulo", "Este й um dialog estilo: DIALOG_STYLE_MSGBOX\n","Botгo 1", "Botгo 2");
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Tнtulo", "Este й um dialog estilo: DIALOG_STYLE_INPUT\n", "Botгo 1", "Botгo 2");
ShowPlayerDialog(playerid, 3, DIALOG_STYLE_LIST, "Tнtulo", "DIALOG_STYLE_LIST\nopзгo 1\nopзгo 2\nopзгo 3", "Botгo 1", "Botгo 2");
ShowPlayerDialog(playerid, 4, DIALOG_STYLE_PASSWORD, "Tнtulo", "Este й um dialog estilo: DIALOG_STYLE_PASS, semelhante ao INPUT\n", "Botгo 1", "Botгo 2");
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}
playerid - ID do player para qual o dialog dб a resposta
dialogid - ID do dialog que executarб a resposta para o playerid
response - Resposta do dialog, true(1) = botгo 1, false(0) = botгo 2
listitem - ID da opзгo de um dialog caso seja DIALOG_STYLE_LIST.
inputtext[] - Valor digitado entre DIALOG_STYLE_INPUT & DIALOG_STYLE_PASSWORD
-----------------------------------------------------------------------------------------
Exemplo de como eu criaria um dialog de boas-vindas:
public OnPlayerSpawn(playerid)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Seja bem vindo", "Olб, seja bem vindo ao server \"Nome do Server\" \nSe precisar de ajuda procure um de nossos admins", "Continuar", "Cancelar");
return 1;
}
Como foi meu primeiro dialog, usei 1 por nгo ter outro dialog com o mesmo valor...
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1) //Para responder as opзхes do dialog, fiz uma comparaзгo entre dialogid e o valor do dialog que eu criei.
{
if(response) //if(response) condiзгo true, poderia ser if(response == true) ou if(response == 1), como visto mais acima true(1) = botгo 1
{
SendClientMessage(playerid, -1, "Vocк clicou em continuar.");
return 1;
}
if(!response) //if(!response) condiзгo false, poderia ser if(response == false) ou if(response == 0), como visto mais acima false(0) = botгo 2
{
SendClientMessage(playerid, -1, "Vocк clicou em cancelar.");
return 1;
}
return 1;
}
return 1;
}
response, !response, й onde comeзa a diferenзa de quando o player clica no botгo 1 ou botгo 2.
Caso clique no botгo 1, SendClientMessage(playerid, -1, "Vocк clicou em continuar.");
Caso clique no botгo 2, SendClientMessage(playerid, -1, "Vocк clicou em cancelar.");
CMD:skin(playerid)
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Escolha de skins", "Digite o valor de uma skin.", "Confirmar", "Cancelar");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 2)
{
if(response)
{
new skinValor = strval(inputtext);
SetPlayerSkin(playerid, skinValor);
return 1;
}
return 1;
}
return 1;
}
//new skinValor = strval(inputtext); variбvel nova cujo valor й oque o player digitou no inputtext,
// strval( ) foi apenas para transformar o que ele digitou para integer, nъmero inteiro.
CMD:vida(playerid)
{
ShowPlayerDialog(playerid, 3, DIALOG_STYLE_INPUT, "Escolha o id", "Digite o id do player que desejas setar vida", "Confirmar", "Cancelar");
return 1;
}
new id;
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 3)
{
if(response)
{
id = strval(inputtext);
new strLocal[60];
format(strLocal, sizeof(strLocal), "Digite o valor da vida que desejar setar para o ID:[%d]", id);
ShowPlayerDialog(playerid, 4, DIALOG_STYLE_INPUT, "Escolha vida", strLocal, "Confirmar", "Cancelar");
return 1;
}
return 1;
}
if(dialogid == 4)
{
if(response)
{
new Float:Vida = strval(inputtext);
SetPlayerHealth(id, Vida);
return 1;
}
return 1;
}
return 1;
}
//Da mesma forma do exemplo anterior, sendo que agora podemos escolher o ID para qual iremos dar vida...
// new id = strval(inputtext); Transformamos o inputtext em integer e atribuimos o valor а nova Variбvel (id)
//a variбvel foi definida globalmente para nгo ter problema para pegar o valor novamente quando for escolher o valo da vida
//new Float:Vida = strval(inputtext); transformamos o inputtext em integer e atribuimos а Float Vida.
//o format que eu fiz nгo й necessбrio caso seja algo mais simples que nгo mostre o ID do player e etc.
//format(strLocal, sizeof(strLocal), "Digite o valor da vida que desejar setar para o ID:[%d]", id);
else return false; //Apуs todo if(response), pois else й o contrбrio de if, logo o contrбrio do botгo 1 й o 2
CMD:teleportar(playerid)
{
ShowPlayerDialog(playerid, 5, DIALOG_STYLE_MSGBOX, "Teleport", "Para onde desejar ir ?", "LS", "LV");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 5)
{
if(response)
{
SetPlayerPos(playerid, 1243.2365,-1692.5746,16.1976);
SendClientMessage(playerid, -1, "Vocк foi teleportado para Los Santos");
return 1;
}
if(!response)
{
SetPlayerPos(playerid,1958.3783, 1343.1572, 15.3746);
SendClientMessage(playerid, -1, "Vocк foi teleportado para Las Venturas");
return 1;
}
return 1;
}
return 1;
}
if(dialogid == x)
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case 1:
{
switch(response)
{
case 0:
{
//...
return 1;
}
case 1:
{
//...
return 1;
}
}
return 1;
}
}
return 1;
}
Muito bom, Levou meu resp +
Quizer por uma corzinha .-. {Codico da cor [;} |
O fуrum tava precisando de um tutorial assim para novatos, tanto й que pensei que seria o Jonathan Feitosa
o criador do tуpico. Parabйns, уtima explicaзгo vai ajudar muito, +rep para servir de Incentivo! |