用户当前使用的传奇脚本,核心功能是佩戴“始神≌领域·君”道具时,受到攻击有1/5概率触发防麻痹10秒、无敌2秒效果,但目前存在缺陷——受到怪物和人物攻击都会触发该效果,需求是修改脚本,让效果仅在受到怪物攻击时触发,受到人物攻击时无任何反应,核心修改思路是添加“判断攻击方是否为怪物”的条件,筛选攻击类型后执行对应效果。
首先明确脚本核心问题:原脚本未添加攻击方类型判断,仅判断了是否佩戴指定道具和触发概率,导致无论攻击方是怪物还是人物,只要满足佩戴道具和概率条件,就会触发无敌和防麻痹效果。解决关键是在原有脚本条件基础上,增加“攻击方为怪物”的判断语句,排除人物攻击的情况,确保效果仅对怪物攻击生效。
先了解原脚本各语句的作用,避免修改时破坏原有功能。原脚本第一部分#if下的checkitemw 始神≌领域·君,作用是判断玩家是否佩戴“始神≌领域·君”道具(checkitemw代表检查是否佩戴,区分于checkitem检查背包道具);random 5代表触发概率为1/5(随机数1-5,满足条件即触发);;CHECKTEXTLIST ..\QuestDiary\三一真神.txt <$ 40 为注释语句(开头带;),不影响脚本执行,可保留或删除。
第二部分#if重复判断佩戴道具和触发概率,;CHECKTEXTLIST ..\QuestDiary\三一真神.txt <$CURRRTARGETNAME> 同样为注释语句;#act下的语句为触发后的效果:ChangeModeEx 14 10(设置防麻痹效果10秒)、ChangeModeEx 1 2(设置无敌效果2秒)、SENDMSG 6 提示语句(向玩家发送系统提示,告知触发效果及攻击方名称)。
核心修改步骤:在原有#if判断条件中,添加“攻击方为怪物”的判断语句,传奇脚本中判断攻击方是否为怪物,常用语句为“checkmonster <$CURRRTARGETNAME>”,该语句的作用是检测当前攻击方(<$CURRRTARGETNAME>代表攻击方名称)是否为怪物,若为怪物则满足条件,若为人物则不满足条件,从而实现效果筛选。
具体修改分为两种方式,适配不同版本的传奇脚本(部分版本对语句顺序有要求,两种方式均可实现需求,可根据自身服务端版本选择),修改时无需删除原有有效语句,仅添加判断条件即可,确保原有佩戴道具、触发概率的功能不变。
第一种修改方式:在原脚本第一部分#if条件后,直接添加checkmonster判断语句,修改后完整脚本如下(保留原有注释语句,若无需注释可直接删除带;的行):
#if
checkitemw 始神≌领域·君
random 5
checkmonster <$CURRRTARGETNAME>
;CHECKTEXTLIST ..\QuestDiary\三一真神.txt <$ 40
#if
checkitemw 始神≌领域·君
random 5
checkmonster <$CURRRTARGETNAME>
;CHECKTEXTLIST ..\QuestDiary\三一真神.txt <$CURRRTARGETNAME>
#act
ChangeModeEx 14 10
ChangeModeEx 1 2
SENDMSG 6 你被【<$CURRRTARGETNAME>】攻击了。触发防麻痹效果10秒,触发无敌2秒!!!
这种方式的逻辑是:同时满足“佩戴始神≌领域·君”“触发1/5概率”“攻击方为怪物”三个条件,才会执行#act下的效果。若攻击方是人物,checkmonster语句不满足,即使佩戴道具且触发概率,也不会触发任何效果,完全符合需求。
第二种修改方式:使用“#if not checkhuman”语句替换checkmonster语句,适用于部分不支持checkmonster语句的传奇版本。checkhuman <$CURRRTARGETNAME> 代表判断攻击方是否为人物,not表示取反,即“攻击方不是人物”(也就是怪物),修改后完整脚本如下:
#if
checkitemw 始神≌领域·君
random 5
not checkhuman <$CURRRTARGETNAME>
;CHECKTEXTLIST ..\QuestDiary\三一真神.txt <$ 40
#if
checkitemw 始神≌领域·君
random 5
not checkhuman <$CURRRTARGETNAME>
;CHECKTEXTLIST ..\QuestDiary\三一真神.txt <$CURRRTARGETNAME>
#act
ChangeModeEx 14 10
ChangeModeEx 1 2
SENDMSG 6 你被【<$CURRRTARGETNAME>】攻击了。触发防麻痹效果10秒,触发无敌2秒!!!
两种修改方式核心逻辑一致,仅判断语句不同,可根据自身服务端脚本支持情况选择。若不确定服务端支持哪种语句,可两种方式分别测试,优先选择第一种(checkmonster语句兼容性更强,多数传奇版本均支持)。
修改时需注意的细节的:1. 语句顺序不可颠倒,checkmonster或not checkhuman语句需放在checkitemw和random语句之后,确保先判断佩戴道具和触发概率,再判断攻击方类型,逻辑更合理,也避免脚本执行异常;2. 符号需正确输入,<$CURRRTARGETNAME> 不可遗漏或输错,否则无法正确识别攻击方名称,判断语句也会失效;3. 注释语句(带;的行)可保留,不影响脚本执行,若想精简脚本,可直接删除,不影响核心功能。
修改完成后,需进行测试验证,确保效果符合需求。测试步骤分为两步:第一步,让人物攻击佩戴“始神≌领域·君”的测试号,观察是否触发防麻痹和无敌效果,若未触发提示、无效果,说明人物攻击已被排除;第二步,让怪物攻击测试号,多次攻击(至少5次以上,确保触发1/5概率),观察是否有提示弹出,且人物获得防麻痹和无敌效果,若触发正常,说明脚本修改成功。
若测试时出现异常,需逐一排查问题。常见异常及解决方法:1. 怪物攻击也不触发效果:检查checkmonster语句是否输错,是否遗漏<$CURRRTARGETNAME>,或语句顺序颠倒,调整语句顺序、修正输入错误后重新测试;2. 人物攻击仍触发效果:检查是否未添加判断语句,或判断语句输错(如将checkmonster输成checkhuman),补充或修正判断语句即可;3. 触发概率异常:检查random 5是否被修改,确保仍为1/5概率,若需调整概率,可修改random后的数字(如random 10为1/10概率)。
另外,若脚本中存在其他判断条件,需确保添加的攻击方判断语句与原有条件兼容,不冲突。例如,若原有脚本还有其他道具判断、等级判断等,只需在原有条件后添加checkmonster语句即可,不影响原有条件的执行。
对于部分特殊版本的传奇服务端,可能需要使用其他判断语句,例如“checknpc <$CURRRTARGETNAME>”(部分版本将怪物归为npc类别),若checkmonster语句无效,可尝试替换为checknpc语句,修改后测试效果。具体可根据服务端脚本手册,确认对应版本的怪物判断语句。
脚本修改完成后,建议备份原脚本文件,避免修改失误导致脚本失效,若后续需要恢复原有功能,可直接替换备份文件。备份方法:找到脚本所在文件夹(通常位于Mirserver\Mir200\Envir\QuestDiary或对应脚本目录),复制原脚本文件,重命名为“原脚本_备份”,再进行修改操作。
总结修改核心:无需修改原有佩戴道具、触发概率和效果语句,仅需在#if判断条件中,添加“攻击方为怪物”的判断(checkmonster或not checkhuman语句),即可实现“仅怪物攻击触发无敌,人物攻击无效果”的需求。操作简单,无需专业脚本基础,按步骤添加语句、测试验证,即可完成修改,确保脚本功能符合预期。
补充说明:若用户想调整触发概率,可修改random后的数字,数字越大,触发概率越低(如random 10为10%概率,random 3为33%概率);若想调整防麻痹或无敌的持续时间,可修改ChangeModeEx后的数字,第一个数字为效果类型(14为防麻痹,1为无敌),第二个数字为持续秒数,按需调整即可,不影响攻击方类型的判断逻辑。

