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

传奇HERO引擎限时会员脚本实现:支持累计与自动清理

热度:
在HERO引擎中实现限时会员系统,需结合变量存储、时间计算和定时检测机制。以下为完整方案,包含一天、七天、三十天体验卡处理,支持多张月卡时间累加,并在到期后自动移除会员权限。

一、基础设置

在M2管理端开启用户自定义变量保存
打开!Setup.txt,确保以下参数为1:
SaveUserVar=1


定义会员标识变量
使用U[会员到期时间]存储Unix时间戳,单位为秒。

二、购买/激活脚本(放入QFunction.txt)

;一天体验卡(物品编号假设为1001)
[@Item1001]
IF
CHECKITEM10011
ACT
MOVS086400;一天秒数
GOTO@AddVipTime

;七天体验卡(物品编号1002)
[@Item1002]
IF
CHECKITEM10021
ACT
MOVS0604800;七天秒数
GOTO@AddVipTime

;三十天体验卡(物品编号1003)
[@Item1003]
IF
CHECKITEM10031
ACT
MOVS02592000;三十天秒数
GOTO@AddVipTime

[@AddVipTime]
;获取当前Unix时间
CALCS1UNIXTIME
;读取已有到期时间
LOADVARHUMANU[会员到期时间]S2
;若无记录或已过期,从当前时间起算;否则累加
IF
SMALLS2S1
ACT
MOVS2S1
ELSE
;正常累加
ACT
;无操作,保留S2原值
;计算新到期时间
CALCS3S2+S0
SAVEVARHUMANU[会员到期时间]S3
DELITEM10011;删除对应物品(按实际编号调整)
SENDMSG5恭喜!会员时间已更新,当前有效期至

三、登录检测(放入QManage.txt)

[@Login]
;登录时检查会员状态
CALCS1UNIXTIME
LOADVARHUMANU[会员到期时间]S2
IF
LARGES2S1
;仍在有效期内,赋予会员权限(如添加称号、开启功能等)
CHANGEJOB10;假设10为会员职业标识,或使用其他方式标记
ELSE
;已过期,清除权限
CHANGEJOB0;恢复普通职业
SAVEVARHUMANU[会员到期时间]0;清零变量

四、定时清理(通过M2内置计划任务)

HERO引擎支持在!RunTime.txt中设置定时执行脚本。创建该文件并添加:

;每日凌晨2点执行全服会员检测
02:00:00#RUNSCRIPTCheckAllVip

然后在QFunction.txt中添加全局检测函数:

[@CheckAllVip]
;此脚本由M2调用,遍历所有在线玩家
;引擎自动传入当前角色名到
CALCS1UNIXTIME
LOADVARHUMANU[会员到期时间]S2
IF
SMALLS2S1
;已过期,清除权限
CHANGEJOB0
SAVEVARHUMANU[会员到期时间]0

五、关键说明

Unix时间戳通过CALCS1UNIXTIME获取,避免日期格式转换问题。
时间累加逻辑:若当前存储的到期时间早于系统时间,视为过期,重新从当前时间起算;否则在原到期时间上叠加新时长。
CHANGEJOB仅为示例,实际可替换为给予特殊称号、开启地图权限、修改属性等操作。
!RunTime.txt需放在D:MirServerMir200目录下(路径依实际安装位置调整),M2启动后自动加载。
所有变量操作必须大写(如U[会员到期时间]),HERO引擎区分大小写。

此方案无需外部工具,完全基于HERO引擎原生指令实现,确保会员时间准确累计,并在到期后自动清理权限。
[顶部]