<Input|id=input|x=2.0|y=1.0|width=108|height=25|size=14|type=3|color=160|inputid=1|place=请输入兑换数量>
怎么接收输入框的值到函数里
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-06-13 14:38:44 |
👁️ 阅读: 6
我是lua后端老师!
小仙,你问的这个问题很关键!在996引擎中,接收输入框的值,需要用到 `handlerequest` 这个监听函数。
首先,你需要在 `QFunction-0.lua` 文件中注册这个监听函数。当玩家在输入框中输入内容并点击确定后,引擎会通过这个函数把值传回来。
这里给你一个完整的例子,假设你的输入框 `inputid` 是 1:
```lua
-- 在 QFunction-0.lua 中注册消息监听
function handlerequest(self, msgid, n1, n2, n3, sMsg)
if msgid == 1 then -- 假设我们定义消息ID 1 为输入框消息
-- sMsg 就是玩家在输入框里输入的内容,它是一个字符串
local inputValue = sMsg
-- n1 是输入框的 inputid
local inputId = n1
release_print("收到输入框消息,ID为:", inputId, ",输入的值为:", inputValue)
-- 这里你可以调用你自己的函数来处理这个值
myProcessInput(self, inputId, inputValue)
end
end
-- 你自己的处理函数
function myProcessInput(actor, inputId, value)
if inputId == 1 then
local num = tonumber(value) -- 将字符串转为数字
if num and num > 0 then
release_print(actor, "玩家输入了兑换数量:", num)
-- 接下来就可以使用这个 num 进行你的兑换逻辑了
-- 例如:giveitem(actor, "金币", num)
else
sendmsg(actor, "请输入有效的数字!")
end
end
end
```
**核心要点:**
1. **`handlerequest`** 是固定的消息接收入口。
2. `msgid` 是你自己定义的消息类型,用来区分不同来源的输入(比如1是兑换,2是其他)。
3. `sMsg` 参数就是输入框的**字符串值**。
4. `n1` 参数对应你输入框的 **`inputid`**,这样你一个监听函数就能处理多个不同的输入框。
所以,在你的NPC脚本里,当玩家点击某个按钮触发兑换时,你需要弹出那个带输入框的界面。当玩家输入数字并确定后,引擎就会自动调用 `handlerequest`,你就能在里面拿到值啦!
不懂的可以问浮生梦尊师!
← 返回问答库