给人物增加攻击、防御、血量这类附加属性,搭配时间自动清除机制,多用于药水、卷轴、增益buff、活动奖励效果,整套逻辑依靠人物变量与计时器实现,修改前备份脚本目录,防止语法错误造成人物属性读取异常。
基础实现思路,执行增益指令的时候,先给人物写入一组临时属性,同时创建计时器记录持续时长。计时到达之后自动执行指令,移除之前附加的属性。脚本需要增加状态判断,人物身上已经存在同类buff时,禁止重复叠加,或者选择刷新持续时间,两种处理方式按需选择。
脚本核心触发段可以放在物品双击[@OnUse]、NPC领取[@OnPickUp]或者技能释放[@MagSelfFunc]内。以物品双击举例,玩家双击增益道具,脚本先做判断,检测人物身上对应的buff变量数值是否大于0。变量大于0代表增益效果正在生效,发送提示文字告知玩家效果无法叠加,直接终止脚本执行。变量等于0,则执行属性增加命令,写入人物变量标记buff状态,开启计时器。
基础脚本示例,[@OnUse]
#IF
CHECKVARHUMAN攻击增益>0
#ACT
SENDMSG7当前增益效果尚未结束,无法再次使用
#ELSEACT
MOVHUMAN攻击增益1
CHANGEATTR+ATTACK10
SENDMSG7获得攻击提升10点,持续120秒
TIMER120@清除攻击增益
[@清除攻击增益]
#ACT
CHANGEATTR-ATTACK10
MOVHUMAN攻击增益0
SENDMSG7攻击增益效果已经消失
脚本中CHANGEATTR是属性增减指令,加号代表增加属性,减号代表移除属性,后面填写属性类型和数值。TIMER后面数字单位为秒,到达时间自动调用对应的标签段,完成属性还原。人物变量用来标记buff状态,避免多次使用道具重复叠加属性。
需要设置刷新时间机制,可以修改判断逻辑,检测变量大于0时不拦截,直接重置计时器。触发后先关闭原有计时器,重新开启新计时,同时重置变量计时标记,实现再次使用道具刷新增益时长。这种模式适合可以刷新的buff,每次使用都会重置倒计时,不会叠加属性数值。
处理人物下线问题,部分引擎计时器在角色下线之后会直接销毁,人物重新登录,附加属性不会自动清除,变量标记却已经丢失,造成属性永久保留在人物身上。解决办法是在人物登录触发[@OnLogin]增加校验代码,角色上线时读取buff变量,变量不为空就重新开启计时器,变量为空则清除残留属性。也可以在增益生效时,把buff名称、剩余时长写入人物存储字段,上线读取字段恢复计时与属性。
多类buff同时生效时,每一种增益单独设置专属人物变量和独立计时器,不要共用同一个变量,防止不同buff之间互相干扰。例如攻击增益、防御增益、血量上限增益分别使用不同变量名称,计时标签单独命名,时间到了只清除对应属性,不会误删其他生效buff。
测试步骤,新建角色双击增益道具,查看人物面板属性是否提升,观察屏幕提示。等待倒计时结束,确认属性自动回落。连续多次双击道具,验证叠加限制逻辑是否生效。测试角色中途下线,等待一段时间重新登录,检查属性是否出现异常残留。多人同时测试,多名角色叠加不同buff,查看引擎日志是否出现计时报错。
常见故障排查,计时结束属性没有清除,优先核对计时器标签名称是否完全一致,标签名存在空格、错别字会导致无法触发清除代码。增益重复叠加,缺少人物变量状态判断,每次使用道具没有检测buff是否存在,每次都执行增加属性指令,补充变量判断即可修复。角色下线重登属性永久保留,就是没有处理登录校验,在[@OnLogin]增加buff状态检测代码。使用道具没有任何效果,检查脚本保存后是否重载,核对脚本语法,查看M2日志定位错误行。
属性增减数值需要合理设置,数值过高容易破坏战斗平衡。测试阶段使用较小数值验证功能,确认逻辑稳定之后再调整最终参数。计时器时长按需修改,修改TIMER后的数字,重载脚本即可生效,不需要改动数据库。全部调试完成,记录每一类buff对应的变量名称、计时器标签、属性增减数值。后续新增同类限时增益,复制现有脚本结构,更换变量名、属性类型和计时参数即可快速完成配置。如果需要移除这套限时属性功能,注释对应的脚本触发段,重载脚本,已经生效的buff计时结束后自动消失。
基础实现思路,执行增益指令的时候,先给人物写入一组临时属性,同时创建计时器记录持续时长。计时到达之后自动执行指令,移除之前附加的属性。脚本需要增加状态判断,人物身上已经存在同类buff时,禁止重复叠加,或者选择刷新持续时间,两种处理方式按需选择。
脚本核心触发段可以放在物品双击[@OnUse]、NPC领取[@OnPickUp]或者技能释放[@MagSelfFunc]内。以物品双击举例,玩家双击增益道具,脚本先做判断,检测人物身上对应的buff变量数值是否大于0。变量大于0代表增益效果正在生效,发送提示文字告知玩家效果无法叠加,直接终止脚本执行。变量等于0,则执行属性增加命令,写入人物变量标记buff状态,开启计时器。
基础脚本示例,[@OnUse]
#IF
CHECKVARHUMAN攻击增益>0
#ACT
SENDMSG7当前增益效果尚未结束,无法再次使用
#ELSEACT
MOVHUMAN攻击增益1
CHANGEATTR+ATTACK10
SENDMSG7获得攻击提升10点,持续120秒
TIMER120@清除攻击增益
[@清除攻击增益]
#ACT
CHANGEATTR-ATTACK10
MOVHUMAN攻击增益0
SENDMSG7攻击增益效果已经消失
脚本中CHANGEATTR是属性增减指令,加号代表增加属性,减号代表移除属性,后面填写属性类型和数值。TIMER后面数字单位为秒,到达时间自动调用对应的标签段,完成属性还原。人物变量用来标记buff状态,避免多次使用道具重复叠加属性。
需要设置刷新时间机制,可以修改判断逻辑,检测变量大于0时不拦截,直接重置计时器。触发后先关闭原有计时器,重新开启新计时,同时重置变量计时标记,实现再次使用道具刷新增益时长。这种模式适合可以刷新的buff,每次使用都会重置倒计时,不会叠加属性数值。
处理人物下线问题,部分引擎计时器在角色下线之后会直接销毁,人物重新登录,附加属性不会自动清除,变量标记却已经丢失,造成属性永久保留在人物身上。解决办法是在人物登录触发[@OnLogin]增加校验代码,角色上线时读取buff变量,变量不为空就重新开启计时器,变量为空则清除残留属性。也可以在增益生效时,把buff名称、剩余时长写入人物存储字段,上线读取字段恢复计时与属性。
多类buff同时生效时,每一种增益单独设置专属人物变量和独立计时器,不要共用同一个变量,防止不同buff之间互相干扰。例如攻击增益、防御增益、血量上限增益分别使用不同变量名称,计时标签单独命名,时间到了只清除对应属性,不会误删其他生效buff。
测试步骤,新建角色双击增益道具,查看人物面板属性是否提升,观察屏幕提示。等待倒计时结束,确认属性自动回落。连续多次双击道具,验证叠加限制逻辑是否生效。测试角色中途下线,等待一段时间重新登录,检查属性是否出现异常残留。多人同时测试,多名角色叠加不同buff,查看引擎日志是否出现计时报错。
常见故障排查,计时结束属性没有清除,优先核对计时器标签名称是否完全一致,标签名存在空格、错别字会导致无法触发清除代码。增益重复叠加,缺少人物变量状态判断,每次使用道具没有检测buff是否存在,每次都执行增加属性指令,补充变量判断即可修复。角色下线重登属性永久保留,就是没有处理登录校验,在[@OnLogin]增加buff状态检测代码。使用道具没有任何效果,检查脚本保存后是否重载,核对脚本语法,查看M2日志定位错误行。
属性增减数值需要合理设置,数值过高容易破坏战斗平衡。测试阶段使用较小数值验证功能,确认逻辑稳定之后再调整最终参数。计时器时长按需修改,修改TIMER后的数字,重载脚本即可生效,不需要改动数据库。全部调试完成,记录每一类buff对应的变量名称、计时器标签、属性增减数值。后续新增同类限时增益,复制现有脚本结构,更换变量名、属性类型和计时参数即可快速完成配置。如果需要移除这套限时属性功能,注释对应的脚本触发段,重载脚本,已经生效的buff计时结束后自动消失。

