脚本问题诊断:DELSKILL失效与逻辑闭环缺失
你提供的脚本核心问题在于触发机制单向与删除条件缺失。@MagSelfFunc71等标签仅在道术达标时触发添加技能,但取下装备导致道术下降时,没有任何脚本段被执行。DELSKILL命令本身语法正确,但必须由特定事件(如装备卸下、属性变动)触发才能生效。
DELSKILL无效的具体原因:
1. 无反向触发点:取下装备不会触发@MagSelfFunc71,导致删除代码无法执行。
2. 技能名称不匹配:DELSKILL严格依赖技能数据库中的准确名称,多一个空格或字符都会导致删除失败。
3. 逻辑未闭环:脚本只写了“加法”(道术够就加),没写“减法”(道术不够就删)。
解决方案:构建动态检测与状态同步机制
解决思路是抛弃单一技能触发标签,改用装备变动触发配合道术区间判断,实现技能的动态增删。
方案一:装备变动触发(推荐,效率高)
在QFunction-0.txt中利用@TakeOff(卸下装备)和@TakeOn(穿戴装备)标签,实时检测道术变化。
;装备变动时触发检测
[@TakeOff1] ;1为武器槽位,可根据需要调整
#ACT
GOTO @CheckSCLevel
BREAK
[@TakeOn1]
#ACT
GOTO @CheckSCLevel
BREAK
;道术等级检测与技能同步
[@CheckSCLevel]
;检测道术≥75,应拥有二阶技能
#IF
CHECKSC < 23 > 74
#ACT
;先删除可能残留的一阶技能
DELSKILL 召唤一阶铁牛
;添加二阶技能
ADDSKILL 召唤二阶铁牛
SENDMSG 6 道术充盈,召唤兽进阶为二阶铁牛!
BREAK
;检测道术在66-74区间,应拥有一阶技能
#IF
CHECKSC < 23 > 65
CHECKSC < 23 < 75
#ACT
DELSKILL 召唤二阶铁牛
ADDSKILL 召唤一阶铁牛
SENDMSG 6 道术稳定,召唤一阶铁牛。
BREAK
;检测道术<66,删除所有相关技能
#IF
CHECKSC < 23 < 66
#ACT
DELSKILL 召唤一阶铁牛
DELSKILL 召唤二阶铁牛
SENDMSG 6 道术不足,召唤技能已移除!
BREAK
方案二:定时器轮询检测(兜底方案)
若引擎支持,可在@Login中启动定时器,每秒检测道术值,确保状态同步。
[@Login]
#ACT
SetOnTimer 1 1 ;启动1号定时器,每秒执行一次
BREAK
[@OnTimer1]
#ACT
GOTO @CheckSCLevel ;跳转到上述的检测段
BREAK
关键修复步骤与注意事项
1. 核对技能名称:打开服务端Skill.txt,确认“召唤一阶铁牛”和“召唤二阶铁牛”的名称是否与数据库完全一致(包括空格和符号)。
2. 清理旧脚本:注释或删除你原有的@MagSelfFunc71和@MagSelfFunc30脚本段,避免多个脚本同时操作技能造成冲突。
3. 槽位映射:@TakeOff1中的数字1代表武器槽位。如果你的道术主要来自衣服或首饰,需修改为对应的装备槽位编号,或直接使用@EquipChange标签(如果引擎支持)。
4. 宝宝清理:删除技能后,建议配合RECALLMOB或清理宝宝命令,防止技能没了但宝宝还在场上的BUG。
进阶优化:使用技能ID替代名称
如果技能名称容易写错,可在数据库查看技能ID,使用DELSKILL 技能ID命令进行删除,此方法更精确。
;示例:假设召唤一阶铁牛ID为888,二阶为889
#ACT
DELSKILL 888
DELSKILL 889
通过上述改造,脚本将从“一次性触发”升级为“状态同步器”,彻底解决取下装备技能残留的问题。

