3K传奇引擎斗转星移功能脚本编写教程 伤害转移参数与触发条件配置

来源: 作者: 点击:
3K引擎自带斗转星移机制,该功能实现受到攻击时将部分承受伤害转移至英雄身上,整套逻辑依靠QFunction全局触发脚本实现,不需要额外第三方插件,配置分为人物标记、受伤触发、伤害计算、血量判断几个模块,编写前先确认引擎支持H开头英雄相关指令,提前备份Mir200脚本文件,防止语法错误造成服务端启动异常。

脚本主体放置在QFunction-0.txt内,使用[@OnHurt]受伤触发标签,每次角色受到攻击时引擎自动执行这段脚本。首先增加判断,区分主号与英雄,只有主人物触发斗转星移标记才执行伤害转移逻辑,英雄本身不触发该效果。通过CHECKVAR检测人物变量,变量值为1代表开启斗转星移,变量为0直接跳出脚本,不执行后续伤害转移代码。

获取本次受到的伤害数值,将伤害存入临时变量,设置转移比例,可自定义百分比数值,例如设置百分之四十,代表承受伤害里四成转移给英雄,剩余六成由主人物承担。增加英雄存活状态检测,使用H.ISHEROEXIST和H.ISHUMANDEAD两个条件,英雄不存在或者英雄处于死亡状态时,直接关闭转移逻辑,全部伤害由主人物承受,避免脚本执行报错。

增加英雄血量阈值判断,防止转移伤害直接秒杀英雄。设置英雄最低血量百分比,当英雄当前血量低于设定比例时,停止继续转移伤害,全部伤害回归主人物,避免英雄反复阵亡。读取英雄当前血量与最大血量,计算剩余血量占比,低于阈值就终止脚本。

执行伤害转移指令,扣除英雄对应血量,同时修改主人物本次实际扣血数值。3K引擎支持CHANGEMANHP扣除主号血量,H.CHANGEHUMANHP用来扣除英雄血量,按照预设比例拆分伤害数值。数值计算需要做整数处理,伤害不能出现小数,小数会被引擎自动舍弃,造成实际转移比例和设定不一致。

增加冷却机制,使用全局计时器变量,斗转星移触发后设置冷却时长,冷却期间不再重复触发,防止短时间多次承受伤害时脚本循环执行,大量占用服务器资源。计时器到期之后变量重置,才可以再次触发伤害转移。冷却变量使用人物私有变量,每个角色独立计时,不会互相干扰。

开启状态控制NPC脚本,用于玩家手动开启或者关闭斗转星移。NPC对话内增加选项,点击开启时设置人物变量等于1,发送提示文字告知玩家功能已激活;点击关闭将变量设置为0,提示功能关闭。可以增加消耗道具的逻辑,开启功能需要消耗指定材料,检测背包物品,扣除道具之后再设置标记,没有道具则提示材料不足。

装备触发斗转星移的拓展写法,在[@OnTakeOn]穿戴装备触发标签内增加判断,检测穿戴装备是否带有指定标记,穿戴装备自动开启斗转星移变量,脱下装备自动清除变量,关闭伤害转移效果。多件装备叠加时可以设置多段转移比例,装备数量越多,转移伤害比例越高,增加装备搭配玩法。

需要区分斗转星移和反弹伤害,反弹伤害是攻击者受到伤害,斗转星移是承受的伤害转移到英雄身上,二者触发标签不一样,不要混淆[@OnHurt]和[@OnAttack]。[@OnHurt]是被攻击触发,适合这套伤害转移逻辑。

脚本调试阶段,先降低转移比例,减少测试过程英雄快速死亡。在脚本内增加SENDMSG输出,打印原始伤害、转移伤害、英雄剩余血量,进入游戏被攻击,查看屏幕打印信息,核对数值是否符合预期。确认数值计算无误之后,删除调试用的提示代码,避免玩家游戏内看到多余信息。

常见问题处理,触发之后伤害没有转移,优先检查变量检测条件,确认人物变量标记正常开启,再检查英雄存在和存活判断语句,条件不满足会直接跳过转移代码。英雄血量扣血异常,核对扣血指令,英雄扣血必须使用H开头的英雄指令,直接使用CHANGEMANHP只会修改主号血量。短时间连续受到攻击导致多次执行脚本,需要检查计时器是否生效,没有冷却会造成伤害叠加异常。部分技能持续伤害无法触发,需要确认引擎是否支持持续伤害触发[@OnHurt],部分引擎仅物理单次攻击触发受伤事件。

脚本配置完成后,保存文件,重载M2脚本,不用重启整套服务端。进入游戏创建英雄,开启斗转星移,使用怪物攻击角色,观察主号和英雄血量变化。更换不同攻击数值反复测试,调整转移比例和英雄保护血量阈值,找到合适的数值。正式使用前,清理脚本内多余注释与调试输出,减少M2日志文件体积,降低服务器负载。