OnDialogResponse回调函数

From SA-MP Wiki

Jump to: navigation, search



当一个玩家按下由 ShowPlayerDialog 产生的对话框上的任何按钮的时候,这个回调将会被调用。


参数表:
(playerid, dialogid, response, listitem, inputtext[])
playerid点击对话框按钮的 玩家ID 。
dialogidShowPlayerDialog 指定的 对话框ID 。
response1 为第一个按钮, 0 为第二个按钮。
listitem玩家选择的 列表项ID 。
inputtext[]玩家在输入对话框里输入的文本 。


返回如果检查 对话框ID 以后发现不是你的脚本弹出的对话框,请返回 0 让其他脚本处理。
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(!IsPlayerAdmin(playerid)) return 0; // 这段脚本只允许管理员使用
    if(dialogid == 1)
    {
        if(!response) return SendClientMessage(playerid, 0xFFFFFFFF, "你取消了!");
        new message[128];
        format(message, sizeof(message), "你回答了: %s", inputtext);
        SendClientMessage(playerid, 0xFFFFFFFF, message);
        return 1;
    }
    return 0;
}

范例用法

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid) // 检查 对话框ID
    {
        case 1:
        {
            if(!response)
            {
                SendClientMessage(playerid, 0xFF0000FF, "你取消了。");
                return 1; // 我们已处理了此对话框
            }
 
            switch(listitem) // 使用switch远快于使用if-elseif-else结构
            {
                case 0: // listitem 的值始于 0 ,而非 1
                {
                    // 玩家点击第一个列表项的时候将发生什么?
                }
                case 1:
                {
                    // 然后第二个选项做什么?
                }
                case 2:
                {
                    // 在这儿继续 ;)
                }
                // 在此添加你的对话框1的更多 列表项 (listitems) 处理
 
            }
 
        }
        // 在此添加你更多的对话框
 
    }
    return 0; // 如果你返回 '''1''' 将不会再调用其他 附加脚本(Fliterscripts) 的这个函数。
}

有关联的函数回调

以下回调函数可能会对你有所帮助,他们可能跟这个函数有直接关系或间接关系。

In other languages