传奇套装NPC购买商城脚本教程:元宝金币扣费发货职业分类限购库存全套配置

来源: 作者: 点击:
MirServer\Mir200\Envir\MerChant.txt里加NPC注册行。格式按地图号、X、Y、名称、方向、外观、属沙、脚本文件名排列。盟重3线示例写:

3 330 320 套装商城使者 0 8 0 套装商城使者-3.txt

脚本文件名必须和Market_Def里的txt一致。换地图就改第一列地图号和XY。外观8是普通商人,想用其他外形按你版本NpcDef或外观列表换数字。属沙填0,不进沙巴克逻辑。

Market_Def新建套装商城使者-3.txt。最基础元宝商城主菜单写:

[@main]
欢迎进入套装商城,下列套装使用元宝购买\
1.战神套装1000元宝\
2.法师套装1000元宝\
3.道士套装1000元宝\
4.混搭三系套餐2800元宝\
5.查看购买规则与限购\
\
购买战神套装\
购买法师套装\
购买道士套装\
购买三系套餐\
查看规则\

[@buy_zs]
IF

CHECKGAMEGOLD >999
ACT

TAKEGAMEGOLD 1000
GIVE 战神头盔 1
GIVE 战神项链 1
GIVE 战神手镯 1
GIVE 战神戒指 1
GIVE 战神腰带 1
GIVE 战神靴子 1
GIVE 战神勋章 1
SENDMSG 6 已购买战神套装,请检查背包
BREAK
ELSESAY

元宝不足1000,无法购买战神套装\

[@buy_fs]
IF

CHECKGAMEGOLD >999
ACT

TAKEGAMEGOLD 1000
GIVE 法神头盔 1
GIVE 法神项链 1
GIVE 法神手镯 1
GIVE 法神戒指 1
GIVE 法神腰带 1
GIVE 法神靴子 1
GIVE 法神勋章 1
SENDMSG 6 已购买法师套装,请检查背包
BREAK
ELSESAY

元宝不足1000,无法购买法师套装\

[@buy_dao]
IF

CHECKGAMEGOLD >999
ACT

TAKEGAMEGOLD 1000
GIVE 天尊头盔 1
GIVE 天尊项链 1
GIVE 天尊手镯 1
GIVE 天尊戒指 1
GIVE 天尊腰带 1
GIVE 天尊靴子 1
GIVE 天尊勋章 1
SENDMSG 6 已购买道士套装,请检查背包
BREAK
ELSESAY

元宝不足1000,无法购买道士套装\

[@buy_all]
IF

CHECKGAMEGOLD >2799
ACT

TAKEGAMEGOLD 2800
GIVE 战神头盔 1
GIVE 战神项链 1
GIVE 战神手镯 1
GIVE 战神戒指 1
GIVE 战神腰带 1
GIVE 战神靴子 1
GIVE 战神勋章 1
GIVE 法神头盔 1
GIVE 法神项链 1
GIVE 法神手镯 1
GIVE 法神戒指 1
GIVE 法神腰带 1
GIVE 法神靴子 1
GIVE 法神勋章 1
GIVE 天尊头盔 1
GIVE 天尊项链 1
GIVE 天尊手镯 1
GIVE 天尊戒指 1
GIVE 天尊腰带 1
GIVE 天尊靴子 1
GIVE 天尊勋章 1
SENDMSG 6 已购买三系套装套餐,请检查背包
BREAK
ELSESAY

元宝不足2800,无法购买三系套餐\

[@rule]
套装价格为示例,按物品DB名称修改\
购买前确认背包空格大于套装件数\
元宝命令按引擎调整,老版本可用CHECKYRMB/TAKEYRMB或其他点券命令\
出现扣费不发联系管理查脚本日志\

部分GOM、GEE版本把元宝写成GAMEGOLD,判断用CHECKGAMEGOLD,扣费用GAMEGOLD - 数值,发放用GIVE 物品 数量。Hero、LEG部分版本用CHECKGAMEGOLD、TAKEGAMEGOLD;若你服务端元宝字段是游戏币点券,就替换成对应命令名。金币商城把CHECKGAMEGOLD换成CHECKGOLD,TAKEGAMEGOLD换成TAKEMONEY或TAKE金币,价格按金币数值改。

按职业自动卖一套,主菜单加职业判断入口:

[@main]
选择职业套装购买,元宝支付\
战士套装\
法师套装\
道士套装\
返回主菜单\

[@buy_jobzs]
IF

CHECKJOB 1
CHECKGAMEGOLD >999
ACT

TAKEGAMEGOLD 1000
GIVE 战神头盔 1
GIVE 战神项链 1
GIVE 战神手镯 1
GIVE 战神戒指 1
GIVE 战神腰带 1
GIVE 战神靴子 1
GIVE 战神勋章 1
SENDMSG 6 已按战士职业发放战神套装
BREAK
ELSEIF

CHECKJOB 2
SAY

本入口仅售战士套装,请用法师入口\
ELSEIF

CHECKJOB 3
SAY

本入口仅售战士套装,请用道士入口\
ELSESAY

元宝不足或职业不匹配,无法购买\

[@buy_jobfs]
IF

CHECKJOB 2
CHECKGAMEGOLD >999
ACT

TAKEGAMEGOLD 1000
GIVE 法神头盔 1
GIVE 法神项链 1
GIVE 法神手镯 1
GIVE 法神戒指 1
GIVE 法神腰带 1
GIVE 法神靴子 1
GIVE 法神勋章 1
SENDMSG 6 已按法师职业发放法神套装
BREAK
ELSEIF

CHECKJOB 1
SAY

本入口仅售法师套装,请用战士入口\
ELSEIF

CHECKJOB 3
SAY

本入口仅售法师套装,请用道士入口\
ELSESAY

元宝不足或职业不匹配,无法购买\

[@buy_jobdao]
IF

CHECKJOB 3
CHECKGAMEGOLD >999
ACT

TAKEGAMEGOLD 1000
GIVE 天尊头盔 1
GIVE 天尊项链 1
GIVE 天尊手镯 1
GIVE 天尊戒指 1
GIVE 天尊腰带 1
GIVE 天尊靴子 1
GIVE 天尊勋章 1
SENDMSG 6 已按道士职业发放天尊套装
BREAK
ELSEIF

CHECKJOB 1
SAY

本入口仅售道士套装,请用战士入口\
ELSEIF

CHECKJOB 2
SAY

本入口仅售道士套装,请用法师入口\
ELSESAY

元宝不足或职业不匹配,无法购买\

CHECKJOB参数按你引擎职业编号改,常见1战士2法师3道士,部分版本编号不同。

做限购用个人数字变量。假设N1记录战神套装已购次数,每人限1次:

[@buy_zs_limit]
IF

CHECKVAR N1 >0
SAY

战神套装每个角色限买1次,已购买过\
ELSEIF

CHECKGAMEGOLD >999
ACT

TAKEGAMEGOLD 1000
GIVE 战神头盔 1
GIVE 战神项链 1
GIVE 战神手镯 1
GIVE 战神戒指 1
GIVE 战神腰带 1
GIVE 战神靴子 1
GIVE 战神勋章 1
MOV N1 1
SAVEVAR N1 套装限购.txt
SENDMSG 6 已购买战神套装,限购次数已记录
BREAK
ELSESAY

元宝不足1000,无法购买战神套装\

读取变量在[@main]前或点击购买前载入:

[@loadlimit]
ACT

LOADVAR N1 套装限购.txt
GOTO @main

部分版本用HUMANVAR、P1、N$变量,命令名不同就按M2变量文档换。个人变量适合按角色限购,全服总库存用全局G变量或文本变量,逻辑写成进入购买段先读全局库存变量,大于0再扣费发货并把全局库存减1,等于0提示已售罄。

批量数量购买用输入整数。单件装备商城示例:

[@main]
输入数量购买超级金创药,单价500金币\
批量购买\
返回\

[@inputbuy]
ACT

INPUINTEGER 请输入购买数量
GOTO @do_buy\n1

[@do_buy]
IF

CHECKGOLD >0
ACT

CALCVAR N2 * N1 500
IF

CHECKGOLD > <$N2>
ACT

TAKEMONEY <$N2>
GIVE 超级金创药 <$N1>
SENDMSG 6 成功购买超级金创药<$N1>个
BREAK
ELSESAY

金币不足或数量输入错误\

上面输入和计算命令按引擎调整,有些版本用INPUTINTEGER、MOV、INC、CALC,有些用N1直接参加计算。数量必须为正整数,负数量或大数量要在#IF里加范围判断,例如N1大于0且小于1000,避免刷数量导致扣费异常。

套装商城如果用M2自带商铺而不是NPC文本,进M2查看、列表信息、商铺,按分类加物品,价格填元宝或金币,支付类型选对应货币,购买限制填1或指定次数,保存后重载商铺。文本NPC适合做整包套装、职业判断、活动折扣;M2商铺适合做单件标准售卖。

物品名称必须和StdItems.DB完全一致。战神头盔在DB里若叫战神盔,脚本写战神头盔会扣费不发。先用GM命令GIVE 战神头盔 1自检,能发再写进商城;不能发先改DB名称或改脚本名称。

扣费不发货按下面顺序查:
1. M2脚本日志看报错行,定位Market_Def对应txt行号。
2. 核对TAKEXXX和GIVE是否在同一#IF、#ACT块,先扣费后发货。
3. 核对物品名、空格、全角符号,所有命令用英文半角。
4. 元宝命令不对会直接不扣或报错,GOM类试GAMEGOLD -,Hero类试TAKEGAMEGOLD,LEG类按本服命令表试。
5. 改完在M2查看、列表信息、重新加载、重新加载NPC脚本;部分版本必须重启M2。
6. 文本脚本编码用ANSI或UTF-8无BOM,带BOM经常点击无反应。

变量报错重点看个人变量和全局变量混用。个人限购用N或HUMAN类,全服库存用G类并在GlobalVal.ini初始化;变量未赋值先做MOV N1 0再参与计算,避免空值导致购买数量、总价错误。

套装价格梯度可在主菜单分普通、精良、极品三档:

[@main]
元宝套装商城\
普通战神套500元宝\
精良战神套1000元宝\
极品战神套2000元宝\
普通法神套500元宝\
精良法神套1000元宝\
极品法神套2000元宝\
普通天尊套500元宝\
精良天尊套1000元宝\
极品天尊套2000元宝\
返回\

每个按钮对应一个购买标签,判断元宝、扣除、发对应七件。精良和极品若只在普通基础上加属性,不要在NPC里改基础属性,先把精良、极品物品在DB建独立名称,例如精良战神头盔、极品战神头盔,NPC直接GIVE独立物品,避免用脚本改装备属性导致回存异常。

活动折扣用时间段变量或全局开关。M2机器人或QManage每天开活动,把全局G1置1,NPC购买段判断:

[@buy_zs_sale]
IF

CHECKVAR G1 >0
CHECKGAMEGOLD >699
ACT

TAKEGAMEGOLD 700
GIVE 战神头盔 1
GIVE 战神项链 1
GIVE 战神手镯 1
GIVE 战神戒指 1
GIVE 战神腰带 1
GIVE 战神靴子 1
GIVE 战神勋章 1
SENDMSG 6 活动价购买战神套装成功
BREAK
ELSEIF

CHECKGAMEGOLD >999
ACT

TAKEGAMEGOLD 1000
GIVE 战神头盔 1
GIVE 战神项链 1
GIVE 战神手镯 1
GIVE 战神戒指 1
GIVE 战神腰带 1
GIVE 战神靴子 1
GIVE 战神勋章 1
SENDMSG 6 原价购买战神套装成功
BREAK
ELSESAY

元宝不足,无法购买战神套装\

G变量命令名不同版本可能为CHECKOGLOBAL、CHECKGLVAR、G1等,按本服全局变量文档替换。

背包空格检测可加在#IF里,部分引擎支持CHECKITEMSCOUNT或检测空位命令;若引擎没有,就在主菜单提示预留7个空格,购买失败先查背包满。满包扣费不发货时,标准写法是先检测空位,再扣费,再发货;没有空位直接提示,不执行TAKE。

NPC不显示检查MerChant.txt地图号、坐标、文件名;点击无反应检查Market_Def文件名、[@main]标签、编码、M2是否重载;购买无扣费检查货币命令;扣费不发检查物品名和DB;限购失效检查变量是否保存、是否用了全局变量导致所有人共享、是否每次进NPC重新LOAD覆盖。

完整可抄版简化结构放最后,替换物品名和价格即可:

MerChant.txt
3 330 320 套装商城使者 0 8 0 套装商城使者-3.txt

套装商城使者-3.txt
[@main]
套装商城首页\
战神套1000元宝\
法神套1000元宝\
天尊套1000元宝\
三系套餐2800元宝\
购买规则\

[@zs]
IF

CHECKGAMEGOLD >999
ACT

TAKEGAMEGOLD 1000
GIVE 战神头盔 1
GIVE 战神项链 1
GIVE 战神手镯 1
GIVE 战神戒指 1
GIVE 战神腰带 1
GIVE 战神靴子 1
GIVE 战神勋章 1
SENDMSG 6 已发放战神套装
BREAK
ELSESAY

元宝不足\

[@fs]
IF

CHECKGAMEGOLD >999
ACT

TAKEGAMEGOLD 1000
GIVE 法神头盔 1
GIVE 法神项链 1
GIVE 法神手镯 1
GIVE 法神戒指 1
GIVE 法神腰带 1
GIVE 法神靴子 1
GIVE 法神勋章 1
SENDMSG 6 已发放法神套装
BREAK
ELSESAY

元宝不足\

[@dao]
IF

CHECKGAMEGOLD >999
ACT

TAKEGAMEGOLD 1000
GIVE 天尊头盔 1
GIVE 天尊项链 1
GIVE 天尊手镯 1
GIVE 天尊戒指 1
GIVE 天尊腰带 1
GIVE 天尊靴子 1
GIVE 天尊勋章 1
SENDMSG 6 已发放天尊套装
BREAK
ELSESAY

元宝不足\

[@allset]
IF

CHECKGAMEGOLD >2799
ACT

TAKEGAMEGOLD 2800
GIVE 战神头盔 1
GIVE 战神项链 1
GIVE 战神手镯 1
GIVE 战神戒指 1
GIVE 战神腰带 1
GIVE 战神靴子 1
GIVE 战神勋章 1
GIVE 法神头盔 1
GIVE 法神项链 1
GIVE 法神手镯 1
GIVE 法神戒指 1
GIVE 法神腰带 1
GIVE 法神靴子 1
GIVE 法神勋章 1
GIVE 天尊头盔 1
GIVE 天尊项链 1
GIVE 天尊手镯 1
GIVE 天尊戒指 1
GIVE 天尊腰带 1
GIVE 天尊靴子 1
GIVE 天尊勋章 1
SENDMSG 6 已发放三系套餐
BREAK
ELSESAY

元宝不足\

[@rule]
套装件数以DB实际名称为准\
改价只改CHECKGAMEGOLD和TAKE数值\
职业限定加CHECKJOB\
限购加个人变量并SAVEVAR\

保存后M2重载NPC脚本,进游戏找NPC逐套购买,看是否扣对应元宝、背包出七件、再次购买是否触发限购、重启M2后限购变量是否仍在。全服库存把每个购买段加全局变量判断,售完置0并提示已售罄。