当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇服务端每日充值土豪NPC脚本完整搭建,NPC配置与Quest脚本编写教程

热度:
实现每日充值土豪NPC,核心分为NPC对话界面搭建、每日充值判定逻辑、元宝发放、每日重置标记,整套脚本适配GOM引擎,需要用到NPC脚本文件、QFunction‑0全局脚本,搭配标记变量记录玩家每日充值状态,防止重复领取奖励,完成NPC添加、脚本编写、文件放置、重载生效整套流程。

NPC文件放置位置,在Envir\Market_Def文件夹内新建NPC文本,文件命名为每日充值.txt,NPC的坐标配置写入Envir\MapInfo.txt,在对应地图添加NPC信息,格式示例:盟重省330330每日充值每日充值.txt0,保存MapInfo.txt,重启M2或者重载NPC配置,游戏内即可刷出对应NPC。

NPC脚本基础框架,[@main]作为NPC打开后的主界面,先读取标记变量判断玩家今日是否已经领取过每日充值奖励,使用标记变量[101]记录每日领取状态,1代表已经领取,0代表未领取。NPC对话输出充值档位说明,设置不同充值档位按钮,点击按钮跳转对应脚本标签,同时加入充值金额检测,检测玩家累计充值元宝数量。

每日充值判定逻辑,GOM引擎没有原生每日充值统计,需要依靠变量记录每日充值总额,借助QFunction‑0的[@OnUserLogIn]登录触发标签,实现每日零点重置标记。玩家登录游戏的时候,判断系统时间,到达新的一天,把[101]标记重置为0,同时清空每日充值统计变量N1,N1用来存放当日累计充值元宝。充值元宝的事件,在QFunction‑0中[@OnAddGameGold]标签,玩家获得元宝的时候,把获得元宝数值累加进N1变量,统计当日总充值额度。

NPC脚本示例代码,[@main]
#IFCHECK[101]1
#ACT
#SAY你今日已经领取过每日充值奖励,明日再来!\\<返回/@main>
#ELSEACT
#SAY每日充值土豪福利\\
<充值1000元宝领取/@chongzhi1000>\\
<充值5000元宝领取/@chongzhi5000>\\
<充值10000元宝领取/@chongzhi10000>\\
<返回/@main>

[@chongzhi1000]
#IFLARGEN1999
#ACT
SET[101]1
GAMEGOLD+500
SENDMSG6恭喜领取每日充值1000档位奖励,获得500元宝!
#SAY领取成功,获得500元宝!\\<返回/@main>
#ELSEACT
#SAY你今日累计充值未达到1000元宝,无法领取!\\<返回/@main>

[@chongzhi5000]
#IFLARGEN14999
#ACT
SET[101]1
GAMEGOLD+3000
SENDMSG6恭喜领取每日充值5000档位奖励,获得3000元宝!
#SAY领取成功,获得3000元宝!\\<返回/@main>
#ELSEACT
#SAY你今日累计充值未达到5000元宝,无法领取!\\<返回/@main>

[@chongzhi10000]
#IFLARGEN19999
#ACT
SET[101]1
GAMEGOLD+8000
SENDMSG6恭喜领取每日充值10000档位奖励,获得8000元宝!
#SAY领取成功,获得8000元宝!\\<返回/@main>
#ELSEACT
#SAY你今日累计充值未达到10000元宝,无法领取!\\<返回/@main>

QFunction‑0.txt脚本配置,实现每日重置与充值统计,打开QFunction‑0.txt,在文件末尾添加两段标签。
[@OnUserLogIn]
#IFCHECKDATE><$YESTERDAY>
#ACT
MOVN10
SET[101]0
SENDMSG6每日充值数据已重置,可以参与今日充值活动。

[@OnAddGameGold]
#ACT
INCN1<$STR(S0)>

[@OnAddGameGold]为元宝增加触发事件,玩家每获得元宝,会把新增元宝数值存入S0变量,INCN1<$STR(S0)>\(STR(S0)>完成当日充值总额累加。CHECKDATE><\)CHECKDATE><$YESTERDAY>判断是否跨天,跨天之后重置统计变量N1和领取标记[101],实现每日清零,每天可以重新参与活动。

文件编码与存放规范,所有脚本txt文件保存编码必须为ANSI格式,不能使用UTF‑8编码,中文目录、文件名不要带有多余空格。NPC脚本放置在Envir\Market_Def目录,QFunction‑0.txt放置在Envir目录。修改完成脚本后,M2控制台执行重载NPC脚本,重载QFunction脚本,不执行重载,修改的代码不会加载生效。

变量说明,N1为数字变量,用来记录玩家当日累计充值元宝;[101]标记变量,0代表未领取奖励,1代表已经领取;<$YESTERDAY>为引擎内置日期变量,用来判断日期切换,实现每日重置。

常见功能异常处理,玩家跨天之后依旧显示已经领取奖励,检查[@OnUserLogIn]登录触发脚本是否正常执行,确认重载QFunction脚本,标记变量是否被正确重置。充值元宝之后N1数值不增长,检查[@OnAddGameGold]标签是否书写正确,部分GOM版本该事件只对GAMEGOLD元宝生效,对金币GOLD不触发。领取奖励后可以重复领取,确认SET[101]1写在领券作内部,领取完成后开启标记,阻止二次领取。

扩展玩法修改,可以在领取奖励的时候增加物品奖励,在#ACT区块添加GIVE命令发放装备道具,也可以增加声望、称号、专属BUFF奖励。可以增加多档位,新增更多充值等级,复制标签修改对应数值即可。可以增加限制,设置每日只能领取最高一档奖励,领取任意档位之后直接标记为已领取。

脚本语法注意点,所有符号必须为英文半角符号,#IF条件判断之后必须写#ACT,不能直接写#SAY输出对话。每段分支执行完成后,可添加BREAK终止脚本执行,避免代码继续向下运行。M2控制台可以查看脚本报错日志,定位语法错误的文件与行号。

NPC地图坐标修改,MapInfo.txt内NPC配置,修改地图名称、XY坐标,可以把NPC放到土城、比奇等其他地图,修改对应坐标数字即可。如果需要NPC在游戏内显示指定名字,修改MapInfo.txt内NPC名称字段,保存之后重载NPC配置生效。

区分充值类型,当前脚本统计所有元宝增加,包含脚本发放、卡密充值、GM给予元宝。如果只想统计玩家卡密充值的元宝,需要修改逻辑,不使用[@OnAddGameGold],改用卡密脚本内累加N1变量,只有卡密兑换元宝的时候才增加统计数值,区分GM发放和玩家实际充值。
[顶部]