商铺灵符对换按钮是否触发,取决于商铺配置、脚本段名称、货币检测命令、灵符发放命令、背包空格和按钮绑定是否全部连通。无元宝点击有提示、有元宝无反应,基本是扣费或发灵符那段断了;完全不弹界面,重点查商铺加载、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、按钮三套入口互相覆盖。
传奇商铺灵符对换按钮触发配置、元宝换灵符脚本与无反应排查完整教程
来源:
作者:
点击:

