传奇服务端合成脚本 物品组合合成规则及完整脚本代码

来源: 作者: 点击:
本文提供传奇服务端物品合成脚本,严格按照两种物品组合合成规则编写,可直接适配服务端,无需额外修改核心逻辑,仅需根据自身服务端物品ID替换对应参数即可。
脚本核心逻辑分为两种合成模式,两种模式独立运行、互不冲突,可同时添加至服务端脚本文件中,玩家可根据自身材料情况选择对应合成方式,具体规则及脚本如下。
第一种合成模式:物品A+物品B合成,合成成功获得物品C,合成失败则失去所有参与合成的材料(物品A和物品B),无任何返还。
以示例为准,对应物品分别为:物品A=乌木剑、物品B=黑铁矿、物品C=铁剑,该组合的具体脚本代码如下,可直接复制使用,替换物品ID即可适配不同物品合成需求。
-- 物品A+物品B合成脚本(乌木剑+黑铁矿=铁剑)
function Synthesize1(player)
-- 定义合成所需物品及数量(1代表单个,可根据需求修改数量)
local itemA = 1001 -- 乌木剑物品ID,自行替换为自身服务端对应ID
local itemB = 1002 -- 黑铁矿物品ID,自行替换为自身服务端对应ID
local itemC = 1003 -- 铁剑物品ID,自行替换为自身服务端对应ID
local numA = 1
local numB = 1
local numC = 1

-- 检测玩家是否拥有足够材料
if player:HasItem(itemA, numA) and player:HasItem(itemB, numB) then
-- 随机生成合成成功率(0-100,可自行修改,数字越大成功率越高)
local successRate = 50
local randomNum = math.random(1, 100)

-- 合成成功逻辑
if randomNum <= successRate then
-- 扣除合成材料
player:RemoveItem(itemA, numA)
player:RemoveItem(itemB, numB)
-- 给予合成结果物品
player:AddItem(itemC, numC)
player:SendMsg("合成成功!获得【"..player:GetItemName(itemC).."】x"..numC)
else
-- 合成失败逻辑(失去所有材料)
player:RemoveItem(itemA, numA)
player:RemoveItem(itemB, numB)
player:SendMsg("合成失败!所有材料已消耗")
end
else
-- 材料不足提示
player:SendMsg("合成材料不足,请确保拥有【"..player:GetItemName(itemA).."】x"..numA.."和【"..player:GetItemName(itemB).."】x"..numB)
end
end

-- 绑定合成触发指令(可修改为NPC触发、物品触发,此处以指令触发为例)
RegisterCommand("hecheng1", Synthesize1)
脚本说明:上述脚本中,物品ID(1001、1002、1003)需替换为自身传奇服务端中对应物品的实际ID,合成成功率(50)可自由调整,比如调整为60则成功率提升,调整为30则成功率降低。触发方式默认是指令触发,玩家输入“hecheng1”即可触发合成,若需要改为NPC触发,可将最后一行指令绑定替换为NPC对话触发逻辑,无需修改核心合成代码。
第二种合成模式:物品A+物品B+物品D合成,合成成功获得物品C,合成失败仅失去物品B和物品D,返还物品A,保障玩家核心材料不丢失。
同样以示例为准,对应物品分别为:物品A=乌木剑、物品B=黑铁矿、物品D=金矿、物品C=铁剑,该组合的具体脚本代码如下,与第一种模式逻辑兼容,可同时添加使用。
-- 物品A+物品B+物品D合成脚本(乌木剑+黑铁矿+金矿=铁剑)
function Synthesize2(player)
-- 定义合成所需物品及数量(1代表单个,可根据需求修改数量)
local itemA = 1001 -- 乌木剑物品ID,与第一种模式保持一致,可自行替换
local itemB = 1002 -- 黑铁矿物品ID,与第一种模式保持一致,可自行替换
local itemD = 1004 -- 金矿物品ID,自行替换为自身服务端对应ID
local itemC = 1003 -- 铁剑物品ID,与第一种模式保持一致,可自行替换
local numA = 1
local numB = 1
local numD = 1
local numC = 1

-- 检测玩家是否拥有足够材料
if player:HasItem(itemA, numA) and player:HasItem(itemB, numB) and player:HasItem(itemD, numD) then
-- 随机生成合成成功率(可与第一种模式设置不同,此处设为60,自行调整)
local successRate = 60
local randomNum = math.random(1, 100)

-- 合成成功逻辑
if randomNum <= successRate then
-- 扣除所有合成材料
player:RemoveItem(itemA, numA)
player:RemoveItem(itemB, numB)
player:RemoveItem(itemD, numD)
-- 给予合成结果物品
player:AddItem(itemC, numC)
player:SendMsg("合成成功!获得【"..player:GetItemName(itemC).."】x"..numC)
else
-- 合成失败逻辑(仅扣除物品B和物品D,返还物品A)
player:RemoveItem(itemB, numB)
player:RemoveItem(itemD, numD)
player:SendMsg("合成失败!返还【"..player:GetItemName(itemA).."】,消耗【"..player:GetItemName(itemB).."】和【"..player:GetItemName(itemD).."】")
end
else
-- 材料不足提示
player:SendMsg("合成材料不足,请确保拥有【"..player:GetItemName(itemA).."】x"..numA.."、【"..player:GetItemName(itemB).."】x"..numB.."和【"..player:GetItemName(itemD).."】x"..numD)
end
end

-- 绑定合成触发指令(与第一种模式指令区分,避免冲突)
RegisterCommand("hecheng2", Synthesize2)
脚本说明:该脚本与第一种模式共享部分物品ID(乌木剑、黑铁矿、铁剑),确保合成逻辑统一,物品D(金矿)的ID需自行替换为服务端实际ID。合成成功率可独立设置,建议比第一种模式稍高,契合“多材料合成更稳妥”的玩家认知。触发指令为“hecheng2”,与第一种模式的“hecheng1”区分,避免玩家误触发。
脚本通用适配说明:两种合成脚本均采用通用lua语法,适配绝大多数传奇服务端(包括商业端、个人端),无需修改语法结构,仅需完成3步操作即可正常使用。第一步,替换所有物品ID为自身服务端对应物品的实际ID,可通过服务端物品数据库查询具体ID;第二步,调整合成成功率(根据自身服务器玩法需求,合理设置,避免过高或过低影响玩家体验);第三步,绑定触发方式,可选择指令触发、NPC触发、物品触发(如合成卷轴触发),触发方式修改仅需调整脚本最后一行的绑定逻辑,核心合成代码无需改动。
补充说明:合成过程中的提示信息可自行修改,比如将“合成成功!获得XXX”改为“合成圆满成功,恭喜获得XXX”,贴合自身服务器的话术风格;材料数量可修改,比如将numB=1改为numB=2,即合成需要2个黑铁矿,适配不同的合成难度需求。
两种合成模式可单独使用,也可同时使用,玩家可根据自身材料储备选择对应的合成方式:材料充足时,可选择第一种模式(仅需两种材料),节省物品D;材料较多、想降低风险时,可选择第二种模式(三种材料),确保物品A不丢失。
脚本调试说明:添加脚本后,建议先使用测试账号进行调试,确认合成成功率、材料扣除、物品给予、提示信息均正常后,再开放给所有玩家使用。调试过程中,若出现材料扣除异常、物品无法给予等问题,优先检查物品ID是否正确、数量设置是否合理,无需修改核心合成逻辑。
此外,可根据自身服务器玩法,在现有脚本基础上添加额外逻辑,比如合成成功时有概率获得额外奖励、合成失败时有极低概率获得特殊物品等,无需改动原有合成规则,仅需在对应成功或失败逻辑中添加奖励代码即可。