帮我写个回收脚本
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-05-26 23:54:51 |
👁️ 阅读: 0
我是lua后端老师!
小仙,想要写个回收脚本啊,这个需求很常见!回收功能主要会用到几个关键函数:`addrecyclingtype`(添加回收组别)、`execrecycling`(执行回收)和`autorecycling`(自动回收)。下面我根据你的需求,给你写一个完整的、带NPC界面的回收脚本示例。
这个脚本会包含一个NPC对话界面,让玩家选择要回收的装备类别,然后执行回收操作。我们假设你已经配置好了回收表(cfg_recycle),并且知道装备对应的回收组别(group字段)。
```lua
-- 回收脚本主函数
function main(actor)
-- 构建NPC界面
local msg = [[
<Img|a=0|x=0.0|y=0.0|width=600|height=400|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=250.0|y=30.0|size=20|color=251|text=装备回收系统>
<Text|a=0|x=50.0|y=80.0|size=16|color=249|text=请选择要回收的装备类型:>
<Text|a=0|x=100.0|y=120.0|size=16|color=253|text=⚔️ 武器回收|link=@recycle_weapon>
<Text|a=0|x=100.0|y=160.0|size=16|color=253|text=🛡️ 衣服回收|link=@recycle_clothes>
<Text|a=0|x=100.0|y=200.0|size=16|color=253|text=💎 首饰回收|link=@recycle_jewelry>
<Text|a=0|x=100.0|y=240.0|size=16|color=253|text=📦 全部装备回收|link=@recycle_all>
<Text|a=0|x=100.0|y=280.0|size=16|color=250|text=🔄 执行回收|link=@do_recycle>
<Text|a=0|x=100.0|y=320.0|size=16|color=250|text=🤖 开启自动回收|link=@auto_recycle>
]]
say(actor, msg)
end
-- 回收武器函数
function recycle_weapon(actor)
-- 添加武器回收组别(假设回收表中武器的group是"1")
addrecyclingtype(actor, "1")
sendmsg(actor, "已选择武器回收,点击【执行回收】开始回收!", 1)
gotonow(actor) -- 刷新界面
end
-- 回收衣服函数
function recycle_clothes(actor)
-- 添加衣服回收组别(假设回收表中衣服的group是"2")
addrecyclingtype(actor, "2")
sendmsg(actor, "已选择衣服回收,点击【执行回收】开始回收!", 1)
gotonow(actor)
end
-- 回收首饰函数
function recycle_jewelry(actor)
-- 添加首饰回收组别(假设回收表中首饰的group是"3")
addrecyclingtype(actor, "3")
sendmsg(actor, "已选择首饰回收,点击【执行回收】开始回收!", 1)
gotonow(actor)
end
-- 回收全部装备函数
function recycle_all(actor)
-- 添加多个回收组别,用分号隔开
addrecyclingtype(actor, "1;2;3")
sendmsg(actor, "已选择全部装备回收,点击【执行回收】开始回收!", 1)
gotonow(actor)
end
-- 执行回收函数
function do_recycle(actor)
-- 执行回收操作
execrecycling(actor)
sendmsg(actor, "回收完成!", 1)
-- 回收后清空回收组别,避免下次误操作
delrecyclingtype(actor, "-1")
gotonow(actor)
end
-- 开启自动回收函数
function auto_recycle(actor)
-- 开启自动回收,每10秒检测一次,背包空间少于10格时触发
autorecycling(actor, 10, 10)
sendmsg(actor, "已开启自动回收,当背包空间少于10格时会自动回收已选类型的装备。", 1)
gotonow(actor)
end
```
**脚本使用说明:**
1. **NPC配置**:你需要将这个脚本关联到一个NPC上(在Merchant.txt或类似配置文件中)。
2. **回收表配置**:确保你的`cfg_recycle`表已经正确配置,并且`group`字段的值(如"1"、"2"、"3")与脚本中`addrecyclingtype`函数传入的参数对应。
3. **函数说明**:
* `addrecyclingtype(actor, "1")`:告诉引擎,玩家`actor`想要回收`group`为"1"的装备。你可以一次添加多个组别,用分号隔开,如`"1;2;3"`。
* `execrecycling(actor)`:立即执行一次回收,将背包中符合已添加回收组别的装备回收掉。
* `autorecycling(actor, 10, 10)`:开启自动回收。参数`10`表示每10秒检测一次背包;参数`10`表示当背包空格数少于10格时,自动执行回收。
* `delrecyclingtype(actor, "-1")`:在手动回收完成后,清空玩家所有的回收组别设置,避免影响下一次操作。
4. **扩展**:你可以根据实际需要,在界面上增加更多回收类型(如特戒、材料等),只需要在回收表中配置好对应的`group`,并在脚本中增加对应的按钮和函数即可。
小仙,把这个脚本放到你的NPC脚本文件里试试吧!如果对回收表的配置或者`group`字段的对应关系有疑问,可以再问我,或者去请教我的师傅浮生梦尊者哦!
← 返回问答库