写一个装备合成的脚本
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-20 22:31:17 |
👁️ 阅读: 5
后端Lua老师来啦!
小仙,想要装备合成脚本是吧?这可是个经典功能!咱们就来手把手教你一个基础但完整的装备合成脚本。
这个脚本会包含:检测材料、扣除材料、给予成品、以及合成成功的前端提示。咱们就用最新的引擎接口来写。
```lua
-- 装备合成脚本示例
-- 文件可以保存为 `合成.lua`
function main(actor)
-- 先定义一个合成配方,比如用两个“金手镯”合成一个“金手镯·精”
local materialName = "金手镯" -- 材料名称
local materialNum = 2 -- 材料数量
local productName = "金手镯·精" -- 成品名称
local productNum = 1 -- 成品数量
local compoundIdx = "10001" -- 合成表ID,用于前端消息
-- 步骤1:检查背包材料是否足够
local hasEnough = hasitem(actor, materialName, materialNum)
if not hasEnough then
sendmsg(actor, "材料不足!需要"..materialNum.."个"..materialName, 4) -- 4是红色
return
end
-- 步骤2:检查身上是否佩戴了指定装备(如果需要)
-- 这里假设需要身上佩戴一个“青铜头盔”才能合成
if not checkitemw(actor, "青铜头盔", 1) then
sendmsg(actor, "请先佩戴青铜头盔!", 4)
return
end
-- 步骤3:扣除材料
local takeSuccess = takeitem(actor, materialName, materialNum)
if not takeSuccess then
sendmsg(actor, "材料扣除失败!", 4)
return
end
-- 步骤4:给予成品
local giveSuccess = giveitem(actor, productName, productNum)
if not giveSuccess then
-- 如果给物品失败,可以把材料还回去(这里简单处理)
giveitem(actor, materialName, materialNum)
sendmsg(actor, "合成失败,请重试!", 4)
return
end
-- 步骤5:发送合成成功消息到前端(合成系统面板)
local jsonData = string.format('{"action":"event","data":{"recog":%s,"param1":%s}}', "-2", compoundIdx)
sendactionofjson(actor, compoundIdx, jsonData)
-- 步骤6:提示玩家
sendmsg(actor, "恭喜你!成功合成"..productName.."!", 2) -- 2是绿色
release_print("玩家"..actor.."合成了"..productName)
-- 可以在这里触发其他事件,比如播放特效
playeffect(actor, 5) -- 播放特效ID 5
end
```
```lua
-- 更高级的版本:使用批量扣除和给予接口(引擎64_24.05.23+)
function advanced_compound(actor)
-- 配方:木剑#1 + 乌木剑#1 + 1000金币 = 铁剑#1
local compoundIdx = "10002"
-- 检查材料(背包)
if not hasitem(actor, "木剑", 1) then
sendmsg(actor, "缺少木剑!", 4); return
end
if not hasitem(actor, "乌木剑", 1) then
sendmsg(actor, "缺少乌木剑!", 4); return
end
if not hasitem(actor, "金币", 1000) then
sendmsg(actor, "金币不足1000!", 4); return
end
-- 批量扣除材料(注意:这里用的takew是扣除身上佩戴的,背包要用takeitem)
-- 先扣除背包物品
takeitem(actor, "木剑", 1)
takeitem(actor, "乌木剑", 1)
takeitem(actor, "金币", 1000)
-- 批量给予物品(新接口)
local itemStr = "铁剑#1#128&合成凭证#1" -- 铁剑(绑定状态128)+ 合成凭证(默认不绑定)
gives(actor, itemStr, "高级合成奖励")
-- 前端消息
local jsonData = string.format('{"action":"event","data":{"recog":%s,"param1":%s}}', "-2", compoundIdx)
sendactionofjson(actor, compoundIdx, jsonData)
sendmsg(actor, "高级合成成功!获得铁剑!", 2)
release_print("高级合成成功 - 玩家:"..actor)
end
```
```lua
-- 在QF.txt中需要加的触发(示例)
-- [@合成]
-- #act
-- callscriptex @合成 main
--
-- [@高级合成]
-- #act
-- callscriptex @高级合成 advanced_compound
```
**脚本要点解析:**
1. **材料检测**:先用`hasitem`检查背包材料是否足够。
2. **装备检测**:用`checkitemw`检查身上是否佩戴指定装备。
3. **扣除材料**:用`takeitem`或`takew`(扣除身上)来移除材料。
4. **给予成品**:用`giveitem`或`gives`(批量)给玩家奖励。
5. **前端交互**:`sendactionofjson`可以通知前端合成系统更新界面。
6. **提示消息**:`sendmsg`给玩家聊天框提示,`release_print`在控制台输出日志。
**小仙要注意:**
- 合成配方(材料、数量、成品)建议放在配置表里,这里为了教学写死在脚本里了。
- 记得在`QF.txt`里添加对应的触发命令`callscriptex`来调用这些函数。
- 绑定状态128代表“已绑定”,0或不写代表“未绑定”。
这个脚本已经包含了合成的基本流程,你可以根据自己的需求修改材料、成品和数量。如果合成逻辑更复杂(比如概率成功、不同等级合成等),可以在扣除材料前加入随机数判断。
不懂的地方随时问我,或者请教浮生梦尊师哦!
← 返回问答库