传奇商铺购买成功触发脚本设置英雄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

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

若用新变量做详细播报:

[@BuyShopItem]
IF

ACT

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

做购买日志可写文本:

[@BuyShopItem]
IF

ACT

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

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

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

[@BuyShopItem]
IF

EqualS0双倍经验丹
ACT

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

IF

EqualS0特戒碎片
ACT

SendMsg6购买特戒碎片成功,记录消费并赠送积分
INCHUMAN商铺消费积分1
SaveVarHUMAN商铺消费积分..\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

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

按价格写消费积分:

[@商铺购买]
IF

TRYVAL>0$PARAM(3)
ACT

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

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

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

[@商铺购买]
IF

EQUAL$PARAM(4)1
ACT

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

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

个人商店摆摊购买触发

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

[@BuyUserShopItem]
IF

ACT

SendMsg6你购买了摆摊物品,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

CALCVARHUMAN商铺消费+<M0>
SAVEVARHUMAN商铺消费..\QuestDiary\数据文件\商铺消费Save.txt

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

[@main]
IF

ACT

SAY

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

[@exchange1]
IF

CHECKVARHUMAN商铺消费>999
ACT

CALCVARHUMAN商铺消费-1000
SAVEVARHUMAN商铺消费..\QuestDiary\数据文件\商铺消费Save.txt
Give元宝箱1
SendMsg6返利兑换成功
ELSEACT

MessageBox消费积分不足1000

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

排错清单

购买后无任何提示:QFunction-0未放@BuyShopItem,或M2未重载函数脚本,或功能开关未开。
只部分物品触发:Equal/S0判断名错,商铺显示名和StdItems名不一致,用物品ID判断更稳。
全服刷屏严重:@BuyShopItem里不要对所有物品SendMsg0,按价格阈值或指定物品名才全服播报,普通消耗品只私聊。
写入日志卡服:高频购买别在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函数脚本后用一个新号实购验证。
[顶部]