跳到主要内容

对话框样式

备注
  • OnDialogResponse回调中:
    • 按下button1会将response设为1
    • 按下button2会将response设为0
  • 所有对话框都可选配按钮 2,留空则不显示(如首个示例)。玩家无法点击隐藏按钮,但按 ESC 键仍会触发OnDialogResponseresponse=0
  • ShowPlayerDialog支持在以下字符串中使用颜色嵌入:​caption​(标题)、info​(内容)、button1button2
public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
{
printf("玩家id = %d, 对话框id = YOUR_DIALOGID, 响应 = %d, 列项 = %d, 输入文本 = '%s' (长度: %d)", playerid, response, listitem, inputtext, strlen(inputtext));
return 1;
}

样式 0: DIALOG_STYLE_MSGBOX

显示效果:

备注
  • ​**\t**​ 添加制表符(增加间距)
  • ​**\n**​ 创建新行
  • 颜色嵌入效果在换行后依然持续
ShowPlayerDialog(playerid, YOUR_DIALOGID, DIALOG_STYLE_MSGBOX, "标题", "信息\n\t信息", "按钮 1", "");

响应输出

备注
  • listitem​ 固定为 ​**-1**
  • inputtext​ 始终为空
// 点击按钮
playerid = 0, dialogid = YOUR_DIALOGID, response = 1, listitem = -1, inputtext = '' (size: 0)

// 按ESC键(当按钮2隐藏时)
playerid = 0, dialogid = YOUR_DIALOGID, response = 0, listitem = -1, inputtext = '' (size: 0)

样式 1: DIALOG_STYLE_INPUT

显示效果:

备注
  • ​**\t**​ 添加制表符(增加间距)
  • ​**\n**​ 创建新行
  • 颜色嵌入效果在换行后依然持续
ShowPlayerDialog(playerid, YOUR_DIALOGID, DIALOG_STYLE_INPUT, "标题", "在下面输入信息:", "按钮 1", "按钮 2");

响应输出

备注
  • listitem​ 固定为 ​**-1**
  • inputtext​ 包含用户输入的文本(含颜色代码)
// 输入"input"后点击左按钮
playerid = 0, dialogid = YOUR_DIALOGID, response = 1, listitem = -1, inputtext = '输入' (size: 5)

// 输入"input"后点击右按钮
playerid = 0, dialogid = YOUR_DIALOGID, response = 0, listitem = -1, inputtext = '输入' (size: 5)

样式 2: DIALOG_STYLE_LIST

显示效果:

备注
  • ​**\t**​ 添加制表符(增加间距)
  • ​**\n**​ 创建新行
  • 颜色嵌入效果在制表符后依然持续
ShowPlayerDialog(playerid, YOUR_DIALOGID, DIALOG_STYLE_LIST, "Caption", "项 0\n{FFFF00}项 1\n项 2", "按钮 1", "按钮 2");

响应输出

备注
  • listitem​ 表示选中项的索引(从 0 开始)
  • inputtext​ 返回选中项的文本内容(不含颜色代码)
// 选择第一项后点击左按钮
playerid = 0, dialogid = YOUR_DIALOGID, response = 1, listitem = 0, inputtext = '项 0' (size: 6)

// 选择第二项后点击右按钮
playerid = 0, dialogid = YOUR_DIALOGID, response = 0, listitem = 1, inputtext = '项 1' (size: 6)

样式 3: DIALOG_STYLE_PASSWORD

备注
  • 功能类似 ​DIALOG_STYLE_INPUT

显示效果:

备注
  • ​**\t**​ 添加制表符(增加间距)
  • ​**\n**​ 创建新行
ShowPlayerDialog(playerid, YOUR_DIALOGID, DIALOG_STYLE_PASSWORD, "标题", "在下面输入私密信息:", "按钮 1", "按钮 2");

响应输出

备注
  • listitem​ 固定为 ​**-1**
  • inputtext​ 返回用户输入的明文
// 输入"input"后点击左按钮
playerid = 0, dialogid = YOUR_DIALOGID, response = 1, listitem = -1, inputtext = '输入' (size: 5)

// 输入"input"后点击右按钮
playerid = 0, dialogid = YOUR_DIALOGID, response = 0, listitem = -1, inputtext = '输入' (size: 5)

样式 4: DIALOG_STYLE_TABLIST

备注
  • 功能类似 ​DIALOG_STYLE_LIST

显示效果:

备注
  • ​**\t**​ 创建新列
  • ​**\n**​ 创建新行
  • 颜色嵌入效果在换行/制表后重置
  • 首行内容作为表头显示
ShowPlayerDialog(playerid, YOUR_DIALOGID, DIALOG_STYLE_TABLIST, "标题",
"Deagle\t$5000\t100\n\
{FF0000}Sawnoff\t{33AA33}$5000\t100\n\
Pistol\t$1000\t50",
"按钮 1", "按钮 2");
备注
  • listitem​ 表示选中项的索引(从 0 开始)
  • inputtext​ 返回选中项首列文本(不含颜色代码)
// 选择第一项后点击左按钮
playerid = 0, dialogid = YOUR_DIALOGID, response = 1, listitem = 0, inputtext = 'Deagle' (size: 6)

// 选择第二项后点击右按钮
playerid = 0, dialogid = YOUR_DIALOGID, response = 0, listitem = 1, inputtext = 'Sawnoff' (size: 7)

样式 5: DIALOG_STYLE_TABLIST_HEADERS

备注
  • 功能类似 ​DIALOG_STYLE_LIST

显示效果:

备注
  • ​**\t**​ 创建新列
  • ​**\n**​ 创建新行
  • 颜色嵌入效果在换行/制表后重置
  • 首行内容作为固定表头显示
ShowPlayerDialog(playerid, YOUR_DIALOGID, DIALOG_STYLE_TABLIST_HEADERS, "标题",
"表头 1\t表头 2\t表头 3\n\
项 1 列 1\t项 1 列 2\t项 1 列 3\n\
{FF0000}项 2 列 1\t{33AA33}项 2 列 2\t项 2 列 3",
"按钮 1", "按钮 2");
备注
  • listitem​ 表示选中项的索引(从 0 开始)
  • inputtext​ 返回选中项首列文本(不含颜色代码)
// 选择第一项后点击左按钮
playerid = 0, dialogid = YOUR_DIALOGID, response = 1, listitem = 0, inputtext = '项 1 列 1' (size: 15)

// 选择第二项后点击右按钮
playerid = 0, dialogid = YOUR_DIALOGID, response = 0, listitem = 1, inputtext = '项 2 列 1' (size: 15)