传奇物品兑换脚本主要依靠CHECKITEM、TAKE、GIVE、GAMEGOLD、GAMEDIAMOND等命令完成。常见用途包括装备合成、材料兑换、货币提取、积分换装和限购兑换。脚本通常放在Mir200EnvirMarket_Def目录下,双击类物品兑换则需要配合QFunction-0.txt触发。
一、基础兑换结构
兑换脚本的基本流程是先检测物品数量,再扣除物品,最后发放目标物品。
[@ExchangeMain]
IF
CHECKITEM 黄金战刀 2
ACT
TAKE 黄金战刀 2
GIVE 新家神兵 1
SENDMSG 7 兑换成功,已获得新家神兵。
BREAK
ELSESAY
背包内黄金战刀不足2把,无法兑换。
CHECKITEM用于检测背包物品数量,TAKE用于扣除物品,GIVE用于发放物品。
二、货币兑换脚本
货币兑换常用于元宝、金刚石、灵符、火龙币等互转。
[@GoldToDiamond]
IF
CHECKGAMEGOLD >= 100
ACT
GAMEGOLD - 100
GAMEDIAMOND + 100
SENDMSG 7 已用100元宝兑换100金刚石。
BREAK
ELSESAY
元宝不足100,无法兑换。
GAMEGOLD和GAMEDIAMOND分别对应元宝和金刚石,具体命令名称以当前引擎为准。
三、物品兑换货币
背包中的兑换券、元宝包裹、金刚石包裹等物品,双击后通常通过QFunction-0.txt触发。物品数据库中的触发序号需要与QFunction-0.txt中的标签序号一致。
[@StdModeFunc188]
IF
CHECKITEM 100元宝包裹 1
ACT
TAKE 100元宝包裹 1
GAMEGOLD + 100
SENDMSG 7 你使用了100元宝包裹,获得100元宝。
BREAK
如果物品类型为双击触发,必须确认数据库中触发编号与QFunction脚本标签编号对应,否则双击不会生效。
四、装备合成兑换
装备合成需要检测多件材料,并限制背包空间。
[@Synthesis]
IF
CHECKITEM 玄铁 10
CHECKITEM 黑铁矿石 5
CHECKBAGGAGE
ACT
TAKE 玄铁 10
TAKE 黑铁矿石 5
GIVE 玄铁战刃 1
SENDMSG 7 合成成功,获得玄铁战刃。
BREAK
ELSESAY
材料不足或背包已满,无法合成。
CHECKBAGGAGE用于检测背包是否有空位,避免合成后物品无法发放。
五、积分兑换装备
积分兑换适合活动NPC或赞助NPC使用。
[@PointExchange]
IF
LARGE P0 99
CHECKBAGGAGE
ACT
DEC P0 100
GIVE 赤月战甲 1
SENDMSG 7 已消耗100积分兑换赤月战甲。
BREAK
ELSESAY
积分不足或背包已满。
P0为角色私有变量,可用于记录个人积分。若积分来自全服活动,也可改用G变量记录行会或全服数值。
六、限购兑换写法
限购兑换可使用逻辑变量[n]实现每人一次限制。
[@LimitExchange]
IF
CHECK [101] 0
CHECKITEM 龙魂石 5
ACT
TAKE 龙魂石 5
GIVE 龙魂战靴 1
SET [101] 1
SENDMSG 7 兑换成功,每人限兑一次。
BREAK
ELSESAY
已兑换过或龙魂石不足。
逻辑变量[n]初始值为0,SET设置为1后再次点击将不再满足条件。
七、NPC入口脚本
NPC入口负责展示兑换列表。
[@main]
IF
ACT
SAY
物品兑换中心\
\
<装备合成/@Synthesis>\
<货币兑换/@GoldToDiamond>\
<积分兑换/@PointExchange>\
<限购兑换/@LimitExchange>\
<退出/@exit>
脚本文件保存为ANSI编码,修改后需在M2控制台重新加载NPC。
八、注意事项
物品名称必须与物品数据库完全一致,多字、少字都会导致检测失败。
TAKE默认扣除背包物品,若需回收身上装备,部分引擎支持CHECKITEMW和TAKEW。
GIVE发放前建议检测背包空间,避免发放失败。
货币命令名称可能因引擎不同而变化,例如GAMEGOLD、GOLDCOUNT、GAMEDIAMOND需按当前版本确认。
双击兑换物品必须确认数据库触发序号与QFunction-0.txt标签序号对应。
限购变量不能在不同功能中重复占用同一编号,否则会导致限制失效。
传奇装备物品兑换NPC脚本写法:CHECKITEM TAKE GIVE与货币合成限制配置
来源:
作者:
点击:

