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

传奇服脚本攻击判定优化:仅怪物触发无敌效果修改方法

热度:
玩家提供的传奇服脚本,核心功能是持有“始神≌领域·君”道具时,受攻击后有概率触发防麻痹与无敌效果,但当前代码未区分攻击者类型,导致怪物和人物攻击均会触发,需通过添加攻击类型判定语句修正。

先拆解原有脚本逻辑:#IF条件判定玩家持有指定道具、触发概率为1/5、攻击者名称在对应文本列表中;#ACT执行模式切换、发送提示信息,实现10秒防麻痹与2秒无敌。问题核心是缺少攻击者身份判定,无法区分怪物与人物。

传奇脚本中,区分怪物与人物攻击的关键,是调用引擎自带的攻击者类型判定命令。不同引擎命令略有差异,主流HERO、GOM引擎均支持专属判定语句,核心是识别攻击者是否为怪物,仅满足条件时执行后续效果。

HERO引擎下的修改方案,需添加“checkmonster”命令,该命令可直接判定攻击者是否为怪物,仅怪物攻击时触发条件。修改后完整脚本如下,同时修正原代码中“CURRRTARGETNAME”拼写错误(多一个R):

#IF
checkitemw始神≌领域·君
random5
CHECKTEXTLIST..\QuestDiary\三一真神.txt<$CURRTARGETNAME>
checkmonster
#ACT
ChangeModeEx1410
ChangeModeEx12
SENDMSG6你被【<$CURRTARGETNAME>】攻击了。触发防麻痹效果10秒触发无敌2秒!!!

修改说明:新增“checkmonster”判定语句后,脚本会同时满足四个条件才执行效果——持有指定道具、触发1/5概率、攻击者在文本列表中、攻击者为怪物。人物攻击时因不满足“checkmonster”条件,直接跳过效果执行。

若使用GOM引擎,需替换判定命令为“IsMonster”,适配引擎语法要求,修改后脚本如下,确保命令与引擎兼容,避免触发失效:

#IF
checkitemw始神≌领域·君
random5
CHECKTEXTLIST..\QuestDiary\三一真神.txt<$CURRTARGETNAME>
IsMonster
#ACT
ChangeModeEx1410
ChangeModeEx12
SENDMSG6你被【<$CURRTARGETNAME>】攻击了。触发防麻痹效果10秒触发无敌2秒!!!

额外修正要点:原代码中“CURRRTARGETNAME”拼写错误会导致攻击者名称无法正常显示,需改为正确的“CURRTARGETNAME”;同时检查文本列表“三一真神.txt”,确保怪物名称与脚本中判定一致,名称偏差会导致条件失效。

若需兼容多引擎或脚本仍异常,可补充攻击者类型变量判定。通过获取攻击者类型变量(怪物类型值通常为0或固定区间),添加“equal变量值”判定,进一步精准锁定怪物攻击,避免因引擎版本差异导致判定失效。

测试验证步骤:修改后先通过人物攻击测试,确认无无敌、防麻痹效果触发;再通过文本列表中的怪物攻击,测试1/5概率触发效果是否正常,同时检查提示信息中攻击者名称是否正确显示,确保修改后逻辑闭环。

脚本优化核心原则:区分攻击者类型时,优先使用引擎原生判定命令,稳定性更强;修改后需逐场景测试,避免因语法错误、变量拼写失误导致功能异常。若需调整触发概率,可修改“random5”数值,数值越大触发概率越低。

若修改后仍出现人物攻击触发效果,需排查引擎配置是否开启类型判定权限,或文本列表中是否混入人物名称。可通过服务端日志查看判定过程,定位未满足的条件项,针对性调整脚本或配置文件。
[顶部]