传奇商铺灵符对换按钮触发配置、元宝换灵符脚本与无反应排查完整教程

来源: 作者: 点击:
商铺灵符对换按钮是否触发,取决于商铺配置、脚本段名称、货币检测命令、灵符发放命令、背包空格和按钮绑定是否全部连通。无元宝点击有提示、有元宝无反应,基本是扣费或发灵符那段断了;完全不弹界面,重点查商铺加载、NPC脚本路径和按钮Command。

一、商铺灵符兑换文件位置

英雄合击、部分GOM/GEE版本会把货币兑换放在商铺目录,不一定是普通NPC。

Mir200\Envir\Shop:商铺货币转换、灵符兑换、元宝转灵符常放这里,依靠引擎商铺模块加载,不一定在Npcs.txt注册。

Mir200\Envir\Market_Def\Shop.txt 或对应商铺NPC目录:部分版本用Market_Def里的商铺NPC写对话和兑换段。

Mir200\BuyItemList.txt:记录商铺物品、价格、兑换数量。灵符条目若写错比例,会出现能打开但兑换异常。

Mir200\Envir\QuestDiary:自定义灵符NPC、变量存灵符点、每日兑换限制放这里。

M2控制台商铺/商城/货币配置:开商铺前要在M2勾选允许商铺购买、绑定元宝或灵符字段;不勾的话前端按钮可能灰掉或点击无响应。

二、元宝换灵符商铺脚本

通用逻辑是检测输入数量、检测元宝、扣元宝、加灵符、回提示。Max/部分合击可用W2接收输入框数量,脚本段例如:

[@ShopLingfu]
if

large W2 0
small W2 1001
CHECKGAMEGOLD ?
act

GAMEGOLD -
GAMEGIRD +
Messagebox 对换成功!
elseact

Messagebox 对不起,你的元宝不够本次对换!

上面W2为输入数量变量,large W2 0表示大于0,small W2 1001表示不超过1000;CHECKGAMEGOLD ?按引擎替换成实际元宝检测,扣费用GAMEGOLD -,发灵符用GAMEGIRD +。不同引擎命令名可能不同,有的写GameGold -、GameGird +,有的写TAKEGAMEGOLD、GIVEGAMEGIRD,按本服命令表改。

固定比例简化版,适合商铺单按钮:

[@Exchange10]
if

CHECKGAMEGOLD 100
CHECKBAGSPACE 1
act

GAMEGOLD - 100
GAMEGIRD + 10
Messagebox 兑换成功,获得10灵符
break
elseact

Messagebox 元宝不足或背包已满
break

CHECKBAGSPACE 1用于避免灵符作为物品发放时背包满导致静默失败。若灵符是货币字段而非背包物品,可去掉背包检测,只保留扣元宝加灵符字段。

三、灵符换物品、灵符换元宝脚本

灵符若走物品库,用CHECKITEM检测、TAKE扣除、GIVE发放;灵符若走独立货币字段,用CHECKGAMEGIRD或引擎灵符检测命令。物品版示例:

[@LingfuToItem]
if

CHECKITEM 灵符 10
CHECKBAGSPACE 2
act

TAKE 灵符 10
GIVE 高级强化石 1
SENDMSG 7 使用10灵符兑换高级强化石成功
break
elseact

SENDMSG 7 灵符不足10个或背包空间不足
break

货币字段版示例,假设引擎支持CHECKGAMEGIRD和GAMEGIRD:

[@LingfuToGold]
if

CHECKGAMEGIRD 1
act

GAMEGIRD - 1
GAMEGOLD + 20
SENDMSG 7 1灵符兑换20元宝成功
break
elseact

SENDMSG 7 灵符不足
break

战神类Pascal NPC可用This_Player.GetBagItemCount检测灵符礼包,再用This_Player.Take和This_Player.Give发奖励;这种写法适合手游/战神引擎,不通用于标准LegendM2文本脚本。

用变量存灵符点、做庄园灵符仙子时,可用CHECKVAR、CALCVAR、SAVEVAR记录。示例思路:

检测灵符点大于9则扣10并跳发奖;
不足则SENDMSG提示数量不足;
每次兑换后SAVEVAR写回QuestDiary\数据文件\灵符点.txt。

四、商铺按钮如何绑脚本

标准商铺:M2商铺管理添加灵符商品,填写名称、花费元宝、获得灵符数量、库存和等级限制;客户端商铺界面点购买,引擎直接调BuyItemList或Shop目录对应逻辑,不需要手写[@Main]按钮。

自定义主界面按钮:改服务端Button.ini,设按钮ID、显示等级、坐标、Command;Command指向NPC编号或脚本段。文本NPC里写:

[@CallNPC1001]
act

goto @ItemExchange

[@ItemExchange]
if

CHECKGAMEGOLD 100
act

GAMEGOLD - 100
GAMEGIRD + 10
SENDMSG 7 灵符兑换成功
break
elseact

SENDMSG 7 元宝不足
break

Button.ini的Command要与脚本段、NPC编号一致;客户端UIConfig或补丁图标不对会不显示按钮。

部分版本商铺“我要充值/灵符对换”按钮走固定段名,例如@ShopLingfu,若在Shop目录没这个段,点按钮就无反应。新建段时保持段名和M2商铺触发名相同,不要只在NPC的[@Main]写菜单。

五、M2与货币字段检查

灵符若作为独立充值货币,先确认M2是否开启灵符字段。未开启时脚本用GAMEGIRD会无效,表现为扣元宝成功但不加灵符。

检查顺序:

M2查看列表信息或商城配置里灵符名称、图标、是否绑定角色数据;
StdItems.db里若把灵符做成物品,确认Name、StdMode、Price、Shape与脚本一致;
BuyItemList.txt里灵符商品价格写成0或格式错会不扣费或点不动;
商铺NPC在Market_Def时,文件名、Npcs.txt注册、地图坐标要一致;纯Shop目录则看引擎是否自动加载;
合击版本商铺脚本改完优先看Mir200\Log\ScriptErr.log,搜索灵符、兑换、未知命令。

六、无反应常见原因

1. 无元宝有提示、有元宝无反应:扣费命令后没有发灵符命令,或发灵符命令名错成GameGrid、GAMEGIRD拼写错。
2. 点按钮完全没弹窗:商铺脚本段名不对、Shop目录未加载、M2未启商铺、Button.ini的Command未绑NPC。
3. 扣元宝不发灵符:灵符字段未开,或灵符按物品发放但物品ID在StdItems.db不存在;用CHECKBAGSPACE可暴露背包满问题。
4. 输入数量兑换失败:W2未传值,或large/small范围把0和超量都拦掉;前端输入框没绑定变量也会一直提示数量错误。
5. 只有GM能换、普通号不能:NPC脚本加了权限、等级、充值合计、职业限制;商铺商品设了最小等级或VIP。
6. 重启后配置丢失:改了BuyItemList或Shop.txt没保存,M2没重新加载商铺;部分版本必须重启DBServer、M2才生效。
7. 自定义按钮不触发:Button.ini命令写错、客户端没更新Button补丁、脚本段[@CallNPCxxx]不存在、QFunction未开自定义按钮支持。
8. 多引擎混用:HERO用一套GAMEGIRD/CHECKGAMEGIRD,GOM可能用另一套;直接复制别的版本脚本不改命令,会整段不执行。

七、完整可落地的灵符对换方案

方案A商铺元宝换灵符:M2商铺新建商品“灵符10个”,花费100元宝,调用Shop目录@ShopLingfu,脚本检测W2数量、CHECKGAMEGOLD、GAMEGOLD -、GAMEGIRD +;不设背包检测如果灵符是货币,设背包检测如果灵符是物品。

方案B主界面按钮换灵符:Button.ini加“灵符兑换”按钮,Command=NPC1001;NPC脚本@CallNPC1001跳@YuanBaoToLingfu,检测CHECKGAMEGOLD 100、CHECKBAGSPACE 1,扣元宝发灵符并SENDMSG。

方案C灵符换材料NPC:地图放灵符仙子,[@Main]列“灵符换强化石/灵符换元宝/灵符换礼包”;每个子段用CHECKITEM或CHECKGAMEGIRD检测,TAKE或GAMEGIRD -扣除,GIVE或GAMEGOLD+发放,失败分支写明不足原因。

方案D变量灵符点:不用物品不用货币字段,全部用人类变量“灵符点”;NPC充值、任务、活动都用CALCVAR加减,SAVEVAR落地。优点是不依赖StdItems;缺点是商铺原生购买要自己写NPC,不能直接用M2商城。

八、测试流程

新建角色进游戏,打开商铺看灵符商品是否显示价格;
用无元宝号点兑换,确认提示元宝不足;
用有元宝但背包满的号点物品灵符,确认提示空格或发不出;
用有元宝正常号点固定比例,确认扣元宝、灵符数变化;
用灵符换物品NPC,先少灵符点一次看拒绝提示,再足灵符点一次看发物品;
改Button.ini后重进客户端,点主界面灵符按钮,确认直接进对应段;
看M2脚本日志和ScriptErr.log,搜灵符相关报错;
合击版本重点看Envir\Shop里是否有足额执行段,不只看不足提示段。

灵符对换按钮出问题按“前端按钮—商铺配置—脚本段名—货币检测—扣费命令—发灵符命令—背包/字段—日志”顺序查,多数情况都是段名不对或GAMEGIRD/GAMEGOLD命令拼错。商铺原生购买尽量用M2商品配置,自定义比例再写Shop脚本;主界面按钮才用Button.ini绑NPC,避免商铺、NPC、按钮三套入口互相覆盖。