OnDialogResponse PT
From SA-MP Wiki
Descrição:
Esta Callback é chamada quando um player responde a um dialog mostrado, usando ShowPlayerDialog clicando um botão, pressionar ENTER / ESC ou clicando duas vezes em um item da lista (se estiver usando um dialog de estilo lista [DIALOG_STYLE_LIST] ).
(playerid, dialogid, response, listitem, inputtext[])
playerid | ID do jogador que respondeu ao dialog. |
dialogid | ID do dialog que o jogador respondeu, Definidas em ShowPlayerDialog. |
response | 1 Para botão esquerdo e 0 para botão direito (Se usar somente um botão, sempre será 1) |
listitem | ID do item da lista, selecionada pelo jogador (começa em 0) (somente se usar DIALOG_STYLE_LIST). |
inputtext[] | O texto digitado no dialog pelo jogador ou o texto do item da lista selecionado. |
Valores de retorno:
Retornar 0 nesta callback vai passar o dialog para outro script caso nenhum código correspondente for encontrado.
Exemplo de uso:
DIALOG_STYLE_MSGBOX
// Define o ID do dialog #define DIALOG_RULES 1 // Em algum comando ShowPlayerDialog(playerid, DIALOG_RULES, DIALOG_STYLE_MSGBOX, "Regras", "- Sem cheater\n- Sem spam\n- Respeite os administradores\n\nVocê concorda com esta regras?", "Sim", "Não"); public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_RULES) { if(response) // Se clicou no botão 'Sim' ou apertou enter { SendClientMessage(playerid, COLOR_GREEN, "Obrigado por concordar com as regras do servidor!"); } else // Caso pressione ESC ou click no botão 'Não' { KickWithMessage(playerid, COLOR_RED, "Você precisa concordar com as regras para jogar aqui!"); } return 1; / } return 0; // Você precisa retornar 0 aqui! Assim como OnPlayerCommandText. }
DIALOG_STYLE_INPUT/DIALOG_STYLE_PASSWORD
#define DIALOG_LOGIN 2 // Em algum comando ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Por favor, insira sua senha:", "Login", "Cancelar"); public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_LOGIN) { if(!response) // Se pressionou ESC ou click no botão 'Cancelar' { KickWithMessage(playerid, COLOR_RED, "Você precisa se logar para jogar!"); } else // Se clicou no botão 'Login' ou apertou enter { if(CheckPassword(playerid, inputtext)) // Função imaginaria para comparar a senha, se esta correta ou não. { SendClientMessage(playerid, COLOR_RED, "Você esta logado!"); } else { SendClientMessage(playerid, COLOR_RED, "Falha no Login!"); // Re-mostra o dialog de Login ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Por favor, insira sua senha:", "Login", "Cancelar"); } } return 1; // Lidamos com um dialog, então retornamos 1. Assim como OnPlayerCommandText. } return 0; // Você precisa retornar 0 aqui! Assim como OnPlayerCommandText. }
DIALOG_STYLE_LIST
#define DIALOG_WEAPONS 3 // Em algum comando ShowPlayerDialog(playerid, DIALOG_WEAPONS, DIALOG_STYLE_LIST, "Armas", "Desert Eagle\nAK-47\nCombat Shotgun", "Selecionar", "Fechar"); public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_WEAPONS) { if(response) // Se clicou no botão 'Selecionar' ou apertou enter { // Dê a arma if(listitem == 0) // Caso selecione o primeiro item - Desert Eagle { GivePlayerWeapon(playerid, WEAPON_DEAGLE, 14); } if(listitem == 1) // Caso selecione o segundo item - AK-47 { GivePlayerWeapon(playerid, WEAPON_AK47, 120); } if(listitem == 2) // Caso selecione o terceiro item - Combat Shotgun { GivePlayerWeapon(playerid, WEAPON_SHOTGSPA, 28); } } return 1; // Lidamos com um dialog, então retornamos 1. Assim como OnPlayerCommandText. } return 0; // Você precisa retornar 0 aqui! Assim como OnPlayerCommandText. }
Função KickWithMessage:
forward KickPublic(playerid); public KickPublic(playerid) { Kick(playerid); } stock KickWithMessage(playerid, color, message[]) { SendClientMessage(playerid, color, message); SetTimerEx("KickPublic", 1000, 0, "d", playerid); }
Funções Relacionadas
As seguintes funções podem ser úteis, pois estão relacionadas a esta callback.
- ShowPlayerDialog: Mostra um dialog a um jogador.