传奇装备物品兑换NPC脚本写法:CHECKITEM TAKE GIVE与货币合成限制配置

来源: 作者: 点击:
传奇物品兑换脚本主要依靠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标签序号对应。
限购变量不能在不同功能中重复占用同一编号,否则会导致限制失效。