传奇商铺购买成功触发脚本设置英雄GOMGEE与Blue全引擎返利日志教程

来源: 作者: 点击:
传奇人物在商铺购买物品成功后的触发,主要写在Q-Function/QFunction-0函数脚本里。不同引擎标签和返回变量不一样,Hero、GOM、GEE常用@BuyShopItem,Blue常用@商铺购买或@shopping,个人商店摆摊购买是另一套@BuyUserShopItem,不要混用。

Hero与GOM/GEE的@BuyShopItem

脚本文件位置在Mir200\Envir\QFunction-0.txt或Q-Function.txt,按所用M2实际文件名写。购买成功触发[@BuyShopItem],基础变量:S0为购买物品名字,M0为物品价格。 新版本GOM扩展后可用S1货币名称、M1货币类型、M2商品数量、M3批量购买数量。

全服提示写法:

[@BuyShopItem]
IF

ACT

SendMsg 5 %s通过商铺购买了<S0>,价格是<M0>

若用新变量做详细播报:

[@BuyShopItem]
IF

ACT

SendMsg 5 玩家<%s>购买商铺物品<S0>,货币<S1>,类型<M1>,总价<M0>,数量<M2>,批量<M3>

做购买日志可写文本:

[@BuyShopItem]
IF

ACT

WriteLog ..\Envir\BuyLog\buylog.txt <%s> <S0> <M0>

WriteLog路径按服务端实际建目录,单服高并发购买别写太复杂判断,避免函数脚本卡顿。

按物品名返利示例,购买指定物品送绑定材料:

[@BuyShopItem]
IF

Equal S0 双倍经验丹
ACT

SendMsg 6 购买双倍经验丹成功,额外赠送绑定金币袋1个
Give 绑定金币袋 1

IF

Equal S0 特戒碎片
ACT

SendMsg 6 购买特戒碎片成功,记录消费并赠送积分
INC HUMAN 商铺消费积分 1
SaveVar HUMAN 商铺消费积分 ..\QuestDiary\数据文件\商铺积分Save.txt

Equal对中文物品名要和实际StdItems名称完全一致,差一个字不触发。用S0判断只适合按物品名处理;若商铺同一功能有多档名称,逐条Equal或改用物品ID判断。

功能开关方面,部分Hero/M2资料提到默认技能类触发需要在功能设置、其他控制里开启后才生效;商铺购买触发若完全不进@BuyShopItem,先检查QFunction-0是否被M2加载、脚本段名是否拼错、M2功能设置里商铺触发开关是否开启,再清缓存重载函数脚本。

Blue引擎@商铺购买与@shopping

Blue新版本商铺购买可用[@商铺购买],返回PARAM(0)物品名字、PARAM(1)数量、PARAM(2)货币名称、PARAM(3)价格、$PARAM(4)是否赠送,0自己买、1赠他人。

基础提示:

[@商铺购买]
IF

TRUE
ACT

SENDMSG 5 商铺购买:物品<PARAM(0)> 数量<PARAM(1)> 货币<PARAM(2)> 价格<PARAM(3)> 赠送<$PARAM(4)>

按价格写消费积分:

[@商铺购买]
IF

TRYVAL > 0 $PARAM(3)
ACT

CALCVAL HUMAN 商铺消费 $PARAM(3)
SAVEVAR HUMAN 商铺消费 ..\QuestDiary\数据文件\商铺消费Save.txt
SENDMSG 6 已记录商铺消费<$PARAM(3)>,当前累计可在返利NPC查询

Blue部分资料还有[@shopping]标签,临时变量返回物品名称、价格、外观、购买数量等,适合做商城埋点;具体变量名以所用Blue版本QFunction文档为准,不要直接把Hero的S0/M0套到Blue里。

赠送场景处理,别人给你买礼包时用$PARAM(4)判断:

[@商铺购买]
IF

EQUAL $PARAM(4) 1
ACT

SENDMSG 6 收到好友商铺赠送:<PARAM(0)> 数量<PARAM(1)>
GameGoldLog 赠送商铺物品 PARAM(0) PARAM(3)

GameGoldLog不是全引擎通用,按Blue实际命令名替换;没有就用WriteLog写文本。

个人商店摆摊购买触发

玩家在别人摊位买东西不走@BuyShopItem,GOM/摆摊体系用@BuyUserShopItem,返回内容含物品ID、货币名、货币类型、价格;上架用@ConfirmShopItemUp,下架用@ConfirmShopItemDown。 若要做“玩家互买收税/记录”,在QFunction-0写:

[@BuyUserShopItem]
IF

ACT

SendMsg 6 你购买了摆摊物品,ID<STR(1)>,货币<STR(2)>,类型<STR(3)>,价格<STR(4)>

变量占位按所用摆摊插件/引擎文档调整,老摆摊、太极摆摊、Hero仿店变量不同,别硬抄。

购买后自动绑定或限制交易

商铺卖特殊材料、礼包码类物品,购买成功想直接绑定,可在@BuyShopItem用Give绑定物或检测S0后BindItem。Hero/GOM绑定命令按版本支持情况写,不支援就用“购买后通过NPC领取绑定物”替代,减少函数脚本出错。Blue绑定可结合QFunction物品触发或商铺购买后执行BindItem,具体看Blue绑定文档。

消费返利完整思路

建QuestDiary\数据文件\商铺积分Save.txt存人物变量。@BuyShopItem里按M0累加:

[@BuyShopItem]
IF

ACT

CALCVAR HUMAN 商铺消费 + <M0>
SAVEVAR HUMAN 商铺消费 ..\QuestDiary\数据文件\商铺消费Save.txt

NPC查询和兑换另写QuestDiary菜单:

[@main]
IF

ACT

SAY

当前商铺消费积分:<$HUMAN(商铺消费)>
<累计满1000兑元宝箱>/@exchange1

[@exchange1]
IF

CHECKVAR HUMAN 商铺消费 > 999
ACT

CALCVAR HUMAN 商铺消费 - 1000
SAVEVAR HUMAN 商铺消费 ..\QuestDiary\数据文件\商铺消费Save.txt
Give 元宝箱 1
SendMsg 6 返利兑换成功
ELSEACT

MessageBox 消费积分不足1000

GOM新变量用M0总价,Hero老变量也用M0;Blue用$PARAM(3)总价写CALCVAL。变量名引擎不通,分开维护两套脚本。

排错清单

购买后无任何提示:QFunction-0未放@BuyShopItem,或M2未重载函数脚本,或功能开关未开。
只部分物品触发:Equal/S0判断名错,商铺显示名和StdItems名不一致,用物品ID判断更稳。
全服刷屏严重:@BuyShopItem里不要对所有物品SendMsg 0,按价格阈值或指定物品名才全服播报,普通消耗品只私聊。
写入日志卡服:高频购买别在QF做复杂循环、数据库直写;只WriteLog或存变量,定期由NPC汇总。
Blue不触发:确认版本支持@商铺购买,Envir下QFunction加载正常,$PARAM变量按官方文档取,不用S0/M0硬套。
摆摊购买误接商铺返利:摆摊走@BuyUserShopItem,官方商城走@BuyShopItem,分别写段,避免返利规则串到玩家互卖。

版本落地顺序

先确定引擎类型:Hero/GOM/GEE用QFunction-0的@BuyShopItem,Blue用@商铺购买或按版本文档的@shopping,摆摊单独@BuyUserShopItem。再确定要做全服喊话、消费日志、积分返利还是赠送绑定。小范围写一个物品名测试,确认S0/M0或$PARAM返回正确,再扩展到全商铺。最后把积分存盘、NPC兑换、日志目录分开,避免函数脚本过重。修改前备份QFunction-0、QuestDiary和相关Save文本,重载M2函数脚本后用一个新号实购验证。