你的脚本当前只能实现道术达标时自动学习技能,但无法在道术降低时移除技能。问题的核心在于缺乏一个动态的、持续的检测机制来在道术变化时触发技能删除。仅靠单次触发的技能学习脚本是不够的。
现有脚本逻辑缺陷分析
你的脚本块(如[@MagSelfFunc71])仅在特定条件下触发一次(通常是使用技能或满足某个瞬间条件时)。当玩家取下装备导致道术降低后,没有任何机制去检测这一变化并执行DELSKILL命令。脚本没有被再次触发以进行逆向判断。
实现动态检测与技能移除的整体思路
要解决此问题,必须建立一个持续的、周期性的检测机制。常见且高效的方案是借助登录触发、定时器触发或穿戴/取下装备的特定触发器。
方案一:利用个人定时器实现周期检测
此方案在玩家上线时启动一个循环定时器,每隔几秒检测一次道术和技能状态。
创建登录触发脚本:在QManage.txt(登录脚本文件)中,为道士职业玩家设置上线触发。
[@Login]
IF
CHECKJOB Taoist
ACT
SetOnTimer 7 5
; 启用7号定时器,每5秒触发一次
创建定时器触发脚本:同样在QManage.txt中,编写定时器触发的脚本段。
[@OnTimer7]
IF
CHECKJOB Taoist
ACT
GOTO @CheckDaoshuAndSkill
BREAK
编写核心检测与调整脚本:这是最关键的部分,在一个独立的标签(如[@CheckDaoshuAndSkill])中编写逻辑。逻辑应为:检测当前道术值范围,根据范围添加或删除相应技能。务必先删除所有相关技能,再根据当前道术重新添加正确的技能。
[@CheckDaoshuAndSkill]
; 首先,无论道术多少,先尝试删除所有可能由本系统添加的铁牛召唤技能
ACT
DELSKILL 召唤一阶铁牛
DELSKILL 召唤二阶铁牛
; ... 删除所有其他阶位的铁牛技能
; 然后,检测当前道术,并添加符合条件的技能
IF
CHECKSLAVECOUNT < 1
CHECKSC < 23 > 74
; 道术大于等于75
ACT
ADDSKILL 召唤二阶铁牛
SENDMSG 3 道术精进,可召唤二阶铁牛!
BREAK
IF
CHECKSLAVECOUNT < 1
CHECKSC < 23 > 69
CHECKSC < 23 < 75
; 道术在70到74之间
ACT
ADDSKILL 召唤一阶铁牛
SENDMSG 9 道术稳固,可召唤一阶铁牛!
BREAK
; 可以继续添加更多道术区间和技能的判断
; 如果道术低于70,则上面已经删除了技能,这里无需操作,自然就没有召唤技能。
方案二:利用穿戴与取下装备触发器
此方案更精准,只在可能改变道术值的行为发生时进行检测。需要修改装备的佩戴和取下脚本。
修改装备佩戴脚本:在装备的佩戴触发段(可能是TakeOn标签或特定物品脚本),末尾加上一行调用检测脚本。
例如,在某个头盔的佩戴脚本里:
[@TakeOn1]
; 原有佩戴效果...
ACT
GOTO @CheckDaoshuAndSkill
BREAK
修改装备取下脚本:在装备的取下触发段(TakeOff标签),同样调用检测脚本。
[@TakeOff1]
; 原有取下效果...
ACT
GOTO @CheckDaoshuAndSkill
BREAK
核心检测脚本:这个[@CheckDaoshuAndSkill]标签的内容与方案一中的核心逻辑完全相同,负责根据当前道术重新分配技能。
关于你遇到DELSKILL无效的问题
命令本身正确。无效的原因可能包括:技能名称与ADDSKILL时使用的名称不完全一致(检查空格、特殊符号);执行DELSKILL命令的脚本段没有被成功触发;或者技能并非由脚本添加,而是通过其他方式学习。按照上述方案,在检测段开头统一执行删除,可以避免这些问题。
方案选择与注意事项
方案一(定时器)实现简单,能覆盖所有道术变化情况(包括使用临时增益药水),但会带来轻微的、持续的服务器计算负担。
方案二(装备触发)更高效,但只能响应更换装备引起的道术变化,对于通过其他方式(如状态buff、升级)改变的道术则无法检测。通常建议两者结合使用:在登录时启动定时器,同时在主要装备物品上添加触发。
务必在核心检测脚本中遵循“先全删,后按条件加”的原则,这是确保技能状态与道术实时同步的关键。测试时,反复穿戴和取下不同道术的装备,观察技能栏和系统消息,以验证功能是否正常。

