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

HERO引擎限时会员脚本写法时间累计与自动清理教程

热度:
HERO引擎编写限时会员脚本,核心需实现一日、七日、三十日会员时效配置,支持多份三十日会员时间累计,到期自动移除会员名单。脚本依赖变量存储时效、名单文件管理权限、定时判定逻辑,全程无需复杂数据库操作,按以下步骤即可实现。

首先搭建会员名单与变量存储基础,需在Mirserver\Mir200\Envir\MapQuest_Def目录下,新建VipList.txt主会员名单、Vip1Day.txt一日会员名单、Vip7Day.txt七日会员名单、Vip30Day.txt三十日会员名单。主名单控制核心权限,细分名单便于区分时效类型,同时通过字符型变量U1存储每个角色的会员到期时间戳,确保时间累计精准。

NPC购买脚本是核心环节,需分别编写一日、七日、三十日会员的触发逻辑,重点实现三十日会员时间叠加功能。以常见NPC对话脚本为例,先设置购买选项,再通过判定变量实现时效累计,脚本格式如下:

(@Main)
\<会员办理:/FCOLOR=254>一日体验会员(消耗XX货币)/@Vip1Day\
\<七日会员(消耗XX货币)/@Vip7Day>三十日会员(消耗XX货币)/@Vip30Day\
\<查询会员时效/@CheckVip>\

(@Vip1Day)
#if
CHECKGAMEGOLD>XX//判定货币是否充足
#act
MOVP1<$UTCNow>//获取当前时间戳
INCP186400//加一日(86400秒)
MOVP2<$STR(U1)>//读取已有到期时间戳
#if
LARGEP2<$UTCNow>//判定已有会员未到期
#act
INCP1P2//叠加时间
#elseact
MOVP1<$UTCNow>
INCP186400
#endif
MOVU1<$STR(P1)>//存储新到期时间戳
ADDNAMELIST..\MapQuest_Def\VipList.txt//加入主会员名单
ADDNAMELIST..\MapQuest_Def\Vip1Day.txt//加入一日会员名单
GAMEGOLD-XX//扣除货币
SendMsg7恭喜办理一日体验会员,到期时间自动顺延!
BREAK

七日会员脚本逻辑与一日会员一致,仅需将INCP186400改为INCP1604800(七日总秒数),并加入Vip7Day.txt名单。三十日会员需单独优化累计逻辑,支持多份叠加,只需将秒数改为2592000(三十日总秒数),无论是否已有会员时效,均直接叠加时间戳,确保多份购买可累计时长。

会员到期自动清理需通过全局触发脚本实现,在MapQuest_Def目录下的QFunction-0.txt中添加定时判定逻辑,玩家每次上线或触发指定动作时执行校验,脚本如下:

(@CheckVipExpire)
#if
CHECKNAMELIST..\MapQuest_Def\VipList.txt//判定为会员
#act
MOVP1<$UTCNow>
MOVP2<$STR(U1)>
#if
LARGEP1P2//当前时间超过到期时间
#act
DelNameList..\MapQuest_Def\VipList.txt//移除主名单
DelNameList..\MapQuest_Def\Vip1Day.txt//移除对应细分名单
DelNameList..\MapQuest_Def\Vip7Day.txt
DelNameList..\MapQuest_Def\Vip30Day.txt
MOVU10//清空到期时间变量
SendMsg5你的会员已到期,特权已收回!
#elseact
UnixToStr<$STR(P2)>S10//时间戳转可读格式
DECP2<$STR(P1)>
DIVP260
DIVP260
DIVP224//计算剩余天数
SendMsg7会员到期时间:<$STR(S1)>,剩余<$STR(P2)>天!
#endif
BREAK

为确保清理逻辑生效,需将@CheckVipExpire触发点绑定到玩家上线事件。在Envir目录下的LoginScript.txt中添加一行“#ACTGOTO@CheckVipExpire”,玩家每次登录时自动校验时效,同时可在NPC查询功能中关联该触发点,方便玩家主动查看。

权限关联与细节优化不可遗漏。所有会员特权(如属性加成、专属地图进入)需在对应脚本中添加CHECKNAMELIST..\MapQuest_Def\VipList.txt判定,仅主名单内角色可触发。若需区分会员等级特权,可在细分名单中分别判定,例如七日会员额外开放某功能,只需添加CHECKNAMELIST..\MapQuest_Def\Vip7Day.txt判定。

时间累计准确性排查是关键,需注意变量类型为字符型,避免数字溢出。测试时可购买一份三十日会员,记录到期时间戳,再购买一份,通过UnixToStr命令转换后查看是否叠加为六十日。若出现时间异常,检查脚本中P1、P2变量的运算逻辑,确保LARGE判定条件正确。

特殊情况处理:若玩家删除角色后残留会员记录,需定期手动清空四份名单文件,或在脚本中添加角色在线判定,仅对在线角色保留时效记录。部分定制HERO引擎支持ADDUSERDATE、DELUSERDATE命令,可替代名单文件操作,直接通过命令管理时效,脚本可简化为ADDUSERDATEVipList.txt30(三十日),叠加时重复执行命令即可。

总结:HERO引擎限时会员脚本核心在于时间戳变量运算、名单文件管理、全局校验触发。按上述步骤编写NPC购买脚本、到期清理脚本,即可实现一日、七日、三十日会员时效控制,支持三十日会员时间累计,到期自动清理名单,全程适配引擎特性,无需额外插件支持。
[顶部]