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

传奇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.txt100
SENDMSG6成功领取1天体验会员,时间已累计!
BREAK

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

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


权限检测与自动清理逻辑

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

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

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


常见配置错误排查

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

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

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