客户端函数

显示单条文本内容

进行单条内容的对话,适用于一些简单的、只有一句话的场景。
基本构造:ShowText( name, elements, callback, [autoFace] )
示例代码:

local name    = '二手车行' -- 对话主体名字
local element = '您好,欢迎来到二手车行,请问有什么可以帮您?' -- 对话内容,支持传入文本或数组
local autoFace = false -- 可选,是否自动聚焦到玩家自身
exports.zerodream_interact:ShowText(name, element, function()
    ZeroDream.Hud.SendNotification('用户交互结束')
end)

显示多条文本内容

进行多条内容的对话,适用于复杂对话场景
基本构造:ShowMultipleText( name, elements, callback, stepCallback, autoFace )
示例代码:

local name     = '^1自言自语' -- 对话主体名字,支持彩色代码
local autoFace = true        -- 可选,是否自动聚焦到玩家自身
local elements = {           -- 对话内容,此处应传入数组
    '这是一段测试文本,用于检测^1多段文本^0显示功能是否正常。',
    '这是第二条对话,接下来你会进入一个选择界面',
    { type = 'button', buttons = { -- 支持显示按钮
        { text = '接受', value = 'yes' }, -- 这里是第一个按钮
        { text = '拒绝', value = 'no' },  -- 这里是第二个按钮
    } },
    '接下来你会进入一个输入界面',
    { type = 'input', title = '姓名', placeholder = '输入您的名字', value = 'Akkariin' }, -- 也可以显示输入框
}

exports.zerodream_interact:ShowMultipleText(name, elements, function()
    ZeroDream.Hud.SendNotification('用户交互结束')
end, function(e)
    ZeroDream.Hud.SendNotification('当前步骤:' .. e.step)
    if step.data then
        ZeroDream.Hud.SendNotification('用户输入内容:' .. e.data)
    end
end, autoFace)

聚焦相机到角色实体

将相机聚焦到指定实体,可用于对话中展示正在说话的角色。
基本构造:FaceCameraToPed( ped, status )
示例代码:

local ped = PlayerPedId() -- 要聚焦的实体
exports.zerodream_interact:FaceCameraToPed(ped, true)
Wait(5000)
exports.zerodream_interact:FaceCameraToPed(false, false)

对话内容模板

对于单条文本内容,支持输入字符串和数组类型的对话内容。当输入内容为字符串时,直接会显示该字符串作为对话内容,当输入类型为数组时,应遵守以下格式标准:

  • type: button
    • buttons: 按钮组,可以有多个按钮
      • text: 按钮文字内容
      • value: 按钮实际数值(文本或数字)
  • type: input
    • title: 输入框标题
    • value: 输入框当前值
    • placeholder: 输入框提示内容

具体可以参考上面的示例

同步阻塞单条对话

代码将会阻塞运行,直到对话结束,适用于一些需要阻塞执行的场景。
基本构造:ShowTextSync( name, element )
示例代码:

local name    = '二手车行' -- 对话主体名字
local element = '您好,欢迎来到二手车行,请问有什么可以帮您?' -- 对话内容,支持传入文本或数组
exports.zerodream_interact:ShowTextSync(name, element)
-- 以下代码会在对话结束之后才执行
TriggerEvent('zerodream_sellcar:action')

同步阻塞多条对话

代码将会阻塞运行,直到对话结束,适用于一些需要阻塞执行的场景。请注意:步骤仍然只能通过回调传输。
基本构造:ShowMultipleTextSync( name, elements, autoFace, stepCallback )
示例代码:

local name     = '^1自言自语' -- 对话主体名字,支持彩色代码
local autoFace = true        -- 可选,是否自动聚焦到玩家自身
local elements = {           -- 对话内容,此处应传入数组
    '这是一段测试文本,用于检测^1多段文本^0显示功能是否正常。',
    '这是第二条对话,接下来你会进入一个选择界面',
    { type = 'button', buttons = { -- 支持显示按钮
        { text = '接受', value = 'yes' }, -- 这里是第一个按钮
        { text = '拒绝', value = 'no' },  -- 这里是第二个按钮
    } },
    '接下来你会进入一个输入界面',
    { type = 'input', title = '姓名', placeholder = '输入您的名字', value = 'Akkariin' }, -- 也可以显示输入框
}

exports.zerodream_interact:ShowMultipleText(name, elements, autoFace, function(e)
    ZeroDream.Hud.SendNotification('当前步骤:' .. e.step)
    if step.data then
        ZeroDream.Hud.SendNotification('用户输入内容:' .. e.data)
    end
end)