目录
1. 核心变量与文件配置
2. 会员购买与时间叠加脚本
3. 登录自动检测与权限回收
4. 定时清理过期名单
一、核心变量与文件配置
HERO引擎实现限时会员需依赖个人变量存储时间戳,配合文本文件记录名单。需在 !Setup.txt 中确认以下参数:
- 变量定义:使用 Human 变量记录会员到期时间(如 H99),使用 G 变量记录会员等级(如 G10)。
- 文件路径:在 QuestDiary 目录下创建 VIP会员系统 文件夹,内含 VIP名单.txt 用于记录活跃会员。
初始化设置
在 QManage.txt 的 [@Login] 段加入以下脚本,用于玩家登录时加载会员状态:
[@Login]
#IF
#ACT
LOADVAR HUMAN H99 ..QuestDiaryVIP会员系统个人变量H99.txt
CALCVAR G10 = 0
; 后续加入时间检测逻辑
二、会员购买与时间叠加脚本
在NPC脚本中实现购买逻辑,核心是处理时间叠加。需计算新的到期时间并保存变量。
NPC脚本示例(体验会员)
[@main]
请选择会员套餐:\
<体验会员/@@BuyVip(1)> 1天 \
<周会员/@@BuyVip(7)> 7天 \
<月会员/@@BuyVip(30)> 30天
@@BuyVip
#IF
CHECKGAMEGOLD > 999 ; 假设体验会员免费,检查金币或其他货币
#ACT
; 读取当前到期时间
LOADVAR HUMAN H99 ..QuestDiaryVIP会员系统个人变量H99.txt
; 获取当前时间戳(秒)
FORMATSTR ...QuestDiaryVIP会员系统NowTime.txt
; 叠加逻辑:如果已过期则从当前时间算起,未过期则累加
CALCVAR HUMAN H99 = <$STR(H99)> > <$STR(S0)> ? <$STR(H99)> + <$PARAM(0)> * 86400 : <$STR(S0)> + <$PARAM(0)> * 86400
; 更新会员等级变量(1为体验,2为周,3为月,可根据$PARAM调整)
CALCVAR G10 = 1
; 保存变量
SAVEVAR HUMAN H99 ..QuestDiaryVIP会员系统个人变量H99.txt
; 记录到总名单(去重)
ADDTextListEx ..QuestDiaryVIP会员系统VIP名单.txt <$USERNAME>
; 扣费
GAMEGOLD - 1000
SENDMSG 6 购买成功!会员到期时间:<$HUMAN(H99)>
#ELSEACT
SENDMSG 6 元宝不足!
关键点
• 累计逻辑:通过 CALCVAR 判断当前时间 S0 与旧到期时间 H99 的关系,实现时间叠加。
- 参数化:使用 $PARAM(0) 传递天数,复用同一段脚本。
三、登录自动检测与权限回收
玩家登录时需自动检查会员状态,过期则自动降级。
QManage.txt 登录扩展
[@Login]
; 加载变量
LOADVAR HUMAN H99 ..QuestDiaryVIP会员系统个人变量H99.txt
#IF
LARGE H99 <$STR(S0)> ; 判断是否过期
#ACT
; 会员有效,设置权限(如使用CheckLevelName配合地图条件)
CALCVAR G10 = 1
; 可选:发送剩余时间消息
SENDMSG 6 会员剩余时间:<$HUMAN(H99)>
#ELSEACT
; 会员过期
CALCVAR G10 = 0
; 从名单移除
DELTextList ..QuestDiaryVIP会员系统VIP名单.txt <$USERNAME>
SENDMSG 6 会员已到期!
四、定时清理过期名单
为防止名单文件过大,需设置定时任务清理过期记录。
机器人脚本(AutoRunRobot.txt)
[AutoRun]
; 每天凌晨1点执行清理
CleanVipList 0 1
机器人脚本(RobotManage.txt)
[@CleanVipList]
#IF
#ACT
; 读取名单文件
LoadTextList ..QuestDiaryVIP会员系统VIP名单.txt
; 遍历名单
GetListString ..QuestDiaryVIP会员系统VIP名单.txt <$STR(S0)>
; 循环检查每个玩家
Loop
#IF
; 检查该玩家的H99变量文件
CHECKVAR HUMAN H99 ..QuestDiaryVIP会员系统个人变量H99.txt
Small H99 <$STR(S0)> ; 对比当前时间
#ACT
; 从名单中删除过期者
DELTextList ..QuestDiaryVIP会员系统VIP名单.txt <$STR(S0)>
#ELSEACT
Break
地图权限控制
在 MapInfo.txt 中配置会员地图:
[VIP地图 HERO]
; 检查G10变量值
CheckLevelName > 0
此方案通过 HUMAN 变量存储时间,G 变量控制权限,配合机器人脚本实现全自动清理,满足HERO引擎下的限时会员需求。

