传奇HERO引擎限时会员脚本写法(支持时间累计)

来源: 作者: 点击:
针对HERO引擎实现“一天/周/月会员”且支持多次购买累计时间、到期自动清理名单的需求,核心在于使用ADDNAMEDATETIMELIST命令进行时间叠加,并利用CHECKNAMEDATETIMELIST命令的删除参数实现自动清理。以下为完整脚本方案。

核心命令与文件配置

在编写脚本前,需在服务端Mir200\Envir\QuestDiary\目录下创建会员数据文件:VIPDay.txt(天)、VIPWeek.txt(周)、VIPMonth.txt(月)。脚本中使用的关键命令说明:

- 时间累加:ADDNAMEDATETIMELIST 文件路径 天数 小时 分钟。该命令直接增加指定时长,若玩家已存在记录,则新时间会与剩余时间累加,满足“多个一月会员累计”需求。
- 自动清理:CHECKNAMEDATETIMELIST 文件路径 1 变量1 变量2 变量3 变量4。第二个参数设为“1”时,检测到过期会自动从名单中删除该玩家记录。

物品触发脚本(双击道具生效)

此方案通过“使用类物品”触发,适合制作会员卡。在物品数据库中设置物品StdMode=2,AniCount字段填入触发编号(如100)。

在QFunction-0.txt中添加以下脚本:
;一天体验会员
[@StdModeFunc100]
#IF
#ACT
ADDNAMEDATETIMELIST ..\QuestDiary\VIPDay.txt 1 0 0
SENDMSG 6 成功领取1天体验会员,时间已累计!
BREAK

;一星期会员
[@StdModeFunc101]
#IF
#ACT
ADDNAMEDATETIMELIST ..\QuestDiary\VIPWeek.txt 7 0 0
SENDMSG 6 成功领取7天会员,时间已累计!
BREAK

;一个月会员(按30天计)
[@StdModeFunc102]
#IF
#ACT
ADDNAMEDATETIMELIST ..\QuestDiary\VIPMonth.txt 30 0 0
SENDMSG 6 成功领取30天会员,时间已累计!
BREAK


权限检测与自动清理逻辑

在NPC脚本或地图触发中,使用检测命令实现“到期自动清理名单”及权限判断。
[@VIPCheck]
;检测天卡(参数1表示过期删除)
#IF
CHECKNAMEDATETIMELIST ..\QuestDiary\VIPDay.txt 1 S$到期时间 N$剩余天 N$剩余时 N$剩余分
#ACT
SENDMSG 6 会员状态:体验会员,剩余时间 <$STR(N$剩余天)>天
#ELSEACT
GOTO @CheckWeek ;若天卡过期/无记录,检测周卡

[@CheckWeek]
;检测周卡
#IF
CHECKNAMEDATETIMELIST ..\QuestDiary\VIPWeek.txt 1 S$到期时间 N$剩余天 N$剩余时 N$剩余分
#ACT
SENDMSG 6 会员状态:周会员,剩余时间 <$STR(N$剩余天)>天
#ELSEACT
GOTO @CheckMonth

[@CheckMonth]
;检测月卡
#IF
CHECKNAMEDATETIMELIST ..\QuestDiary\VIPMonth.txt 1 S$到期时间 N$剩余天 N$剩余时 N$剩余分
#ACT
SENDMSG 6 会员状态:月会员,剩余时间 <$STR(N$剩余天)>天
#ELSEACT
SENDMSG 6 你不是会员或已过期!


常见配置错误排查

若脚本无效,重点检查以下两点:

1. 文件路径与编码:确保QuestDiary目录下的.txt文件存在且非只读。文件内容为空即可,引擎会自动写入数据。若手动编辑过文件,必须保存为ANSI编码,否则HERO引擎读取乱码会导致检测失败。
2. 物品绑定对应:确认物品数据库中的AniCount编号与QFunction-0.txt中的@StdModeFunc编号完全一致。例如AniCount=100必须对应[@StdModeFunc100]。

此方案完全依赖文件计时,无需手动清理,引擎会在检测到过期时自动移除名单,适合寝室局域网环境。