[@main]
#ACT
;判断玩家今日是否已经领取
CHECKVAR HUMAN 15BAtkDay < GLOBALVAR DAY
#IF
ISADMIN
#ACT
MESSAGE 管理员不受领取限制,可直接测试效果
BREAK
#IF
CHECKVAR HUMAN 15BAtkDay < GLOBALVAR DAY
#ACT
MESSAGE 你可以领取今日1.5倍攻击增益,点击确认领取
BREAK
#ELSEACT
MESSAGE 今日1.5倍攻击增益已领取,请明日再来领取
BREAK
[@领取增益]
#IF
CHECKVAR HUMAN 15BAtkDay < GLOBALVAR DAY
#ACT
;标记领取日期
CALCVAR HUMAN 15BAtkDay = GLOBALVAR DAY
SAVEVAR HUMAN 15BAtkDay ..\QuestDiary\玩家变量\15倍攻击领取.txt
;添加攻击倍数buff,持续时间单位秒,这里设置3600秒一小时
POWERRATE 150 3600
MESSAGE 领取成功,获得1小时1.5倍攻击效果,下线效果消失
BREAK
#ELSEACT
MESSAGE 今日领取次数已用完,明天再来
BREAK
[@关闭]
#ACT
MESSAGE 你关闭了领取面板
BREAK
变量需要提前在引擎变量配置文件内注册,玩家变量15BAtkDay,用于记录上次领取的日期数字,全局变量DAY由引擎自动读取服务器当日天数,无需手动赋值。脚本放置路径一般为QuestDiary文件夹下,新建独立脚本文件,在NPC文本内加载该脚本段。
POWERRATE命令是3K引擎内置倍率指令,第一个参数代表百分比数值,填写150就是1.5倍攻击,第二个参数为增益持续秒数,可自行修改时长。增益属于临时状态,角色下线后倍率效果直接清除,只保留领取日期标记,保证一天只能领取一次。
需要注意变量保存文件路径,文件夹不存在的情况下要手动创建对应目录,否则变量无法正常写入保存,会出现重复领取的漏洞。测试的时候可以用管理员账号,修改玩家变量数值来模拟跨天场景,验证领取限制逻辑是否生效。如果想要buff不随下线消失,不能使用POWERRATE,需要改用状态标识加登录触发器持续检测,一般日常领取的活动使用POWERRATE就可以满足需求。
NPC外观文本配置,在NPC定义文件中,填写对应的NPC名称,调用[@main]作为对话入口,按钮文字设置领取增益,跳转[@领取增益]标签,关闭按钮跳转[@关闭]。每次服务器重启不会重置玩家已领取标记,因为玩家变量写入本地文本持久存储,依靠全局DAY日期判断跨天,不需要定时任务重置数据。
部分版本会存在倍率指令冲突,若身上已有其他攻击倍率,后触发的倍率会覆盖前面的数值,设计活动时要考虑同类增益互斥逻辑,可在脚本增加额外变量判断,检测玩家身上是否存在同类倍率状态,增加对应提示文字。
3K传奇引擎NPC脚本实现每日限时领取1.5倍攻击增益功能代码
来源:
作者:
点击:

