帮我编写一个自定义输入框,用来输入自定义金额
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-16 21:37:48 |
👁️ 阅读: 8
我是Lua后端老师!
小仙,你要的自定义输入框功能,在996引擎中可以通过NPC界面配合引擎函数来实现。这里给你一个完整的示例,创建一个可以输入自定义金额的输入框界面:
```lua
function main(actor)
local msg = [[
<Img|a=0|x=0.0|y=0.0|width=600|height=300|scale9t=100|scale9r=220|img=public/bg_npc_11.jpg|scale9l=10|scale9b=100|bg=1>
<Button|a=0|x=596.0|y=1.0|size=18|color=255|nimg=public/1900000510.png|pimg=public/1900000511.png|link=@exit>
<Text|a=0|x=50|y=50|size=20|color=251|text=自定义金额输入框>
<Text|a=0|x=50|y=100|size=16|color=249|text=请输入金额:>
<Edit|a=0|x=150|y=95|width=200|height=30|color=255|maxlen=10|id=1|text=0>
<Text|a=0|x=50|y=150|size=16|color=249|text=确认操作:>
<Button|a=0|x=150|y=145|width=80|height=30|size=16|color=255|text=提交|link=@submit>
<Text|a=0|x=50|y=200|size=14|color=250|text=提示:请输入数字金额,最大10位>
]]
say(actor, msg)
end
function submit(actor)
-- 获取输入框内容
local inputText = getsysvar(actor, 1) -- 获取id=1的输入框内容
-- 转换为数字
local amount = tonumber(inputText)
if amount == nil then
sendmsg(actor, "请输入有效的数字金额!", 1)
return
end
if amount <= 0 then
sendmsg(actor, "金额必须大于0!", 1)
return
end
-- 这里可以添加你的业务逻辑
-- 例如:检查玩家金币是否足够
local currentMoney = querymoney(actor)
if currentMoney < amount then
sendmsg(actor, "金币不足!当前金币:" .. currentMoney, 1)
return
end
-- 执行扣除金币操作
changemoney(actor, -amount)
-- 显示结果
sendmsg(actor, "成功扣除 " .. amount .. " 金币!", 1)
sendmsg(actor, "剩余金币:" .. querymoney(actor), 1)
-- 可以在这里添加其他逻辑,比如给物品、记录日志等
release_print("玩家" .. actor .. "输入金额:" .. amount .. ",扣除成功")
end
```
这个脚本包含以下功能:
1. **主界面**:显示一个带背景的NPC界面
2. **输入框**:使用`<Edit>`标签创建,id=1,最大长度10位
3. **提交按钮**:点击后触发`submit`函数
4. **输入验证**:检查是否为有效数字、是否大于0
5. **业务逻辑**:示例中检查玩家金币并扣除相应金额
你可以根据自己的需求修改业务逻辑部分,比如:
- 改为充值功能:`changemoney(actor, amount)` 增加金币
- 改为购买物品:配合`giveitem`函数给物品
- 改为转账功能:配合`getplayerbyname`找到目标玩家
使用说明:
1. 将脚本保存为`.lua`文件
2. 在NPC配置中调用
3. 玩家点击NPC后即可打开输入界面
需要特别注意的是输入验证,一定要确保用户输入的是有效数字,避免脚本错误。如果还有其他问题,随时问我哦!
← 返回问答库