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

传奇HERO引擎限时会员脚本:多档累计与到期清理

热度:
HERO引擎实现“累计时长+到期清理”的会员系统,核心在于利用文本名单记录与个人变量双轨制。以下为完整脚本方案,支持体验卡、周卡、月卡叠加,并自动清理过期数据。

一、核心命令与文件准备

1.关键脚本命令

•时间名单操作:ADDNAMEDATETIMELIST(增加名单时间)、CHECKNAMEDATETIMELIST(检测剩余时间)、DELNAMEDATELIST(删除名单)。

-变量运算:CALCVAR(用于天数累计计算)。
•文件路径:脚本涉及的文件均存放在MirServer\Mir200\Envir\QuestDiary\目录下。

2.建立会员名单文件

在QuestDiary文件夹内新建会员系统目录,并创建以下文件:
-VIP名单.txt:用于存储所有会员的到期时间戳。
•VIP天数记录.txt:用于备份玩家的总剩余天数(防丢档)。

二、NPC脚本:会员购买与时间叠加

在任意NPC(如土城会员使者)中添加以下脚本,实现三种档位的购买与时间累计。
[@main]
欢迎使用限时会员系统。\\
<购买体验会员/@@InpDay> 需1000元宝 剩余时间:<$HUMAN(VIPDAY)>天\\
<购买周卡会员/@@InpWeek> 需5000元宝 剩余时间:<$HUMAN(VIPWEEK)>天\\
<购买月卡会员/@@InpMonth> 需20000元宝 剩余时间:<$HUMAN(VIPMONTH)>天\\
<查看我的会员状态/@CheckVIP>\\
<关闭/@exit>

[@@InpDay]
#ACT
MOVP91
MOVP81000
GOTO@BuyConfirm

[@@InpWeek]
#ACT
MOVP97
MOVP85000
GOTO@BuyConfirm

[@@InpMonth]
#ACT
MOVP930
MOVP820000
GOTO@BuyConfirm

[@BuyConfirm]
#if
CHECKGAMEGOLD<<$STR(P8)>
#act
MESSAGEBOX元宝不足!
BREAK
#elseact
GAMEGOLD-<$STR(P8)>
ADDNAMEDATETIMELIST..\QuestDiary\会员系统\VIP名单.txt<$STR(P9)>00
CALCVARHUMANVIPDAY+<$STR(P9)>
SAVEVARHUMANVIPDAY..\QuestDiary\会员系统\VIP天数记录.txt
SENDMSG6购买成功!会员时长增加<$STR(P9)>天,当前总剩余天数:<$HUMAN(VIPDAY)>天。
SENDMSG0玩家【%s】成功购买%d天会员,享受专属特权!0<$STR(P9)>

[@CheckVIP]
#if
CHECKNAMEDATETIMELIST..\QuestDiary\会员系统\VIP名单.txt1S$到期时间N$剩余天N$剩余时N$剩余分
#act
MESSAGEBOX会员状态:有效\n到期时间:<$STR(S$到期时间)>\n剩余:<$STR(N$剩余天)>天<$STR(N$剩余时)>小时\n累计剩余天数:<$HUMAN(VIPDAY)>天
#elseact
MESSAGEBOX你不是会员或会员已过期。


脚本逻辑说明:
•累计原理:使用ADDNAMEDATETIMELIST直接修改名单文件中的到期时间(自动叠加),同时用CALCVAR增加个人变量VIPDAY用于显示。

-防丢机制:每次购买后使用SAVEVAR将变量保存到文本,并在QManage.txt的[@Login]段加入加载代码。

三、物品脚本:会员卡双击使用

若需通过道具(如“体验会员卡”)激活,在物品数据库(StdItems.DB)设置物品,并在QFunction-0.txt中添加双击脚本。
;体验会员卡(1天)
[@StdModeFuncX1]
#ACT
ADDNAMEDATETIMELIST..\QuestDiary\会员系统\VIP名单.txt100
CALCVARHUMANVIPDAY+1
SAVEVARHUMANVIPDAY..\QuestDiary\会员系统\VIP天数记录.txt
SENDMSG6体验会员激活成功,时长增加1天!
BREAK

;月卡会员卡(30天)
[@StdModeFuncX2]
#ACT
ADDNAMEDATETIMELIST..\QuestDiary\会员系统\VIP名单.txt3000
CALCVARHUMANVIPDAY+30
SAVEVARHUMANVIPDAY..\QuestDiary\会员系统\VIP天数记录.txt
SENDMSG6月卡激活成功,时长增加30天!
BREAK


四、权限检测与地图进入控制

在需要限制会员的地图触发条件(如地图代码或NPC对话)中,加入检测脚本。
#if
NOTCHECKNAMEDATETIMELIST..\QuestDiary\会员系统\VIP名单.txt1S1N1N2N3
#act
MESSAGEBOX仅限会员进入,请先购买会员!
BREAK
;否则允许进入地图


五、到期自动清理名单设置

HERO引擎的CHECKNAMEDATETIMELIST命令自带清理机制。当参数设置为1时,检测到过期会自动从VIP名单.txt中删除该行记录。

手动清理脚本(GM命令):
若需手动清理所有过期数据,可在GM命令脚本中添加:
[@AdminCleanVIP]
#if
#act
CHECKNAMEDATETIMELIST..\QuestDiary\会员系统\VIP名单.txt1S1N1N2N3
SENDMSG6已强制清理所有过期会员记录。


六、机器人脚本定时校正

为防止玩家离线导致变量显示与实际名单不同步,可在RobotManage.txt中设置每日凌晨校正。
;每日0点执行
[@DailyReset]
#IF
HOUR00
MIN00
#ACT
;读取名单剩余时间同步到变量(此处需根据实际变量设计逻辑)
;若名单已过期,变量归零
#if
NOTCHECKNAMEDATETIMELIST..\QuestDiary\会员系统\VIP名单.txt1S1N1N2N3
#act
MOVHUMANVIPDAY0
SAVEVARHUMANVIPDAY..\QuestDiary\会员系统\VIP天数记录.txt


七、常见报错与调试

1.路径错误:确保..\QuestDiary\会员系统\VIP名单.txt路径存在,且服务端有写入权限。
2.变量未保存:务必在购买脚本和登录脚本中配套使用SAVEVAR和LOADVAR,防止重启后天数归零。
3.时间不叠加:检查ADDNAMEDATETIMELIST参数是否正确,该命令是直接修改文件中的时间戳,天然支持累计。

此方案通过“名单文件+变量”的双重保险,完美实现了HERO引擎下的多档位会员时长累计与自动化清理。
[顶部]