6个input怎么通过一个按钮提交
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-17 01:25:55 |
👁️ 阅读: 7
我是lua后端老师!
小仙,你问的是在NPC界面中如何让6个输入框通过一个按钮提交数据对吧?这个功能在996引擎中,通常是通过在`say`函数发送的界面文本里,将多个`<Input>`标签和一个`<Button>`标签的`link`参数关联到同一个脚本函数来实现的。
核心思路是:在按钮的`link`属性中,调用一个自定义的Lua函数,然后在这个函数里,通过`getplayvar`函数来分别获取之前各个输入框(Input)中玩家填写的内容。
下面我给你写一个完整的示例脚本,你一看就明白了:
```lua
function main(actor)
-- 首先,我们使用say函数创建一个包含6个输入框和1个提交按钮的界面
local msg = [[
请输入信息1:<Input|id=1|text=信息1|maxlen=10>
请输入信息2:<Input|id=2|text=信息2|maxlen=10>
请输入信息3:<Input|id=3|text=信息3|maxlen=10>
请输入信息4:<Input|id=4|text=信息4|maxlen=10>
请输入信息5:<Input|id=5|text=信息5|maxlen=10>
请输入信息6:<Input|id=6|text=信息6|maxlen=10>
<Button|text=一键提交所有信息|link=@submitAllInputs>
]]
say(actor, msg)
end
-- 这是处理提交按钮点击的自定义函数
function submitAllInputs(actor)
-- 使用getplayvar函数,根据输入框的id(这里我们假设用S$前缀的字符串变量来存储)
-- 依次获取6个输入框的值
local input1 = getplayvar(actor, "S$输入框1") or ""
local input2 = getplayvar(actor, "S$输入框2") or ""
local input3 = getplayvar(actor, "S$输入框3") or ""
local input4 = getplayvar(actor, "S$输入框4") or ""
local input5 = getplayvar(actor, "S$输入框5") or ""
local input6 = getplayvar(actor, "S$输入框6") or ""
-- 现在你可以处理这些数据了,比如打印出来看看
release_print("玩家提交的信息1是:", input1)
release_print("玩家提交的信息2是:", input2)
release_print("玩家提交的信息3是:", input3)
release_print("玩家提交的信息4是:", input4)
release_print("玩家提交的信息5是:", input5)
release_print("玩家提交的信息6是:", input6)
-- 也可以给玩家一个反馈
say(actor, "已经收到你提交的6条信息!")
end
```
**重要说明:**
1. 上面例子中的 `getplayvar(actor, "S$输入框1")` 是为了演示如何获取值。在实际使用中,`<Input>` 标签输入的内容,通常会自动存储到引擎的临时变量中(比如以 `N$` 或 `S$` 开头的变量),具体变量名需要你根据 `Input` 标签的 `id` 或 `varname` 属性来确定,或者在 `QF` 脚本中通过对应的事件(如 `@submitAllInputs` 函数被调用前)来设置和获取。
2. 关键点在于 **`<Button>` 标签的 `link` 属性**,它指向了 `@submitAllInputs` 这个函数。当玩家点击这个按钮时,引擎就会调用 `submitAllInputs(actor)` 函数,并且把玩家对象 `actor` 传进来。
3. 在 `submitAllInputs` 函数内部,你就能一次性处理所有6个输入框的数据了,无论是验证、存储还是下一步操作。
小仙,你先试试这个思路。如果对 `Input` 标签如何绑定变量不太清楚,可以再问我,或者去请教我的师傅浮生梦尊师!
← 返回问答库