OnDialogResponse ES
From SA-MP Wiki
Description:
Esta callback es llamada cuando un jugador responde a un diálogo (usando ShowPlayerDialog), ya sea por presionar un botón (button1 o button2), presionando ENTER/ESC o haciendo doble clic en un ítem (si el diálogo es estilo "lista").
(playerid, dialogid, response, listitem, inputtext[])
playerid | ID del jugador que respondió al diálogo. |
dialogid | ID del diálogo que fue respondido. Esta ID se asigna durante la creación del mismo con ShowPlayerDialog. |
response | Si el botón presionado fue el primero (button1) ésto devolverá 1, caso contrario (button2) devolverá 0. |
listitem | ID del ítem seleccionado. |
inputtext[] | El texto que ingresó el jugador en la caja del diálogo (si el diálogo era estilo DIALOG_STYLE_INPUT/PASSWORD) |
Return Values:
Retornando 0 en esta callback, el diálogo pasará a otro script en caso de que no se encontrara ninguna ID que coincida con ésta (ID) dentro del callback de tu gamemode.
Ejemplo: (Cuando se tienen muy pocos diálogos)
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == 4) { if(!response) return SendClientMessage(playerid, 0xFF0000FF, "Cancelado"); // Presionó el button2 (o ESC) new string[128]; format(string, 128, "Seleccionaste el item %i de la lista", listitem); return SendClientMessage(playerid, 0xFFFF00FF, string); } return 0; }
Ejemplo 2: (Cuando se tienen muchos diálogos)
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) // "switch" es mucho más organizado y optimizado que usando muchas "if"s { case 1: // Diálogo cuya ID es 1 (usando DIALOG_STYLE_LIST) { if(!response) return SendClientMessage(playerid, 0xFF0000FF, "Cancelado"); switch(listitem) // Buscamos el ítem seleccionado { case 0: // ítem 1 { // Lo que sucederá al seleccionar el 1º ítem del diálogo 1. } case 1: //item 2 { // Lo que sucederá al seleccionar el 2º ítem del diálogo 1. } case 2: //item 3 { // Lo que sucederá al seleccionar el 3º ítem del diálogo 1. } //Aca podemos continuar agregando más ítems, según lo que tenga el diálogo. } } case 2: // Diálogo cuya ID es 2 (usando DIALOG_STYLE_INPUT) { if(!response) return SendClientMessage(playerid, 0xFF0000FF, "Cancelado"); new name[MAX_PLAYER_NAME], string[128]; GetPlayerName(playerid, name, MAX_PLAYER_NAME); format(string, 128, "El jugador %s(%i) dice %s", name, playerid, inputtext); return SendClientMessageToAll(0x00FF00FF, string); } case 3: // Diálogo cuya ID es 3 { if(!response) return SendClientMessage(playerid, 0xFF0000FF, "Cancelado"); if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, 0xFF0000FF, "Error: Necesitas $1000 para curarte."); SetPlayerHealth(playerid, 100); GivePlayerMoney(playerid, -1000); return SendClientMessage(playerid, 0x00FF00FF, "Server: Has sido curado."); } // Aquí podemos continuar agregando mas diálogos. } return 0; //Si retornas 1, el callback no seguirá siendo ejecutado en otros filterscripts. }
Ten en cuenta que la ID del diálogo no depende de su estilo (DIALOG_STYLE_*).
Funciones relacionadas
Las siguientes funciones pueden ser útiles, ya que éstas están relacionadas con esta función de alguna u otra manera.
- ShowPlayerDialog Utilizada para la creacion de dialogos.