你现有脚本的核心问题是“只做了道术达标时的技能添加,没做道术下降后的删除触发”——传奇脚本中技能不会自动消失,必须通过“属性变动检测”触发删除逻辑。以下从问题分析、核心逻辑、完整脚本到配置步骤,彻底解决“装备取下技能残留”问题,适配Gee/GOM主流引擎。
一、问题核心:缺“道术下降”的触发与删除逻辑
你现有脚本仅依赖@MagSelfFunc71(可能是技能触发标签)和@MagSelfFunc30判断道术,但这两个标签通常是“一次性触发”(如升级、穿戴装备时),取下装备导致道术下降时不会主动触发。要实现“道术不够就删技能”,必须满足两个条件:
-触发点:找到能实时监测“道术变动”的事件(如装备穿戴/卸下、属性变化),主流用@EquipChange(装备变动触发)和定时器兜底。
-逻辑闭环:每个技能都对应“添加阈值”和“删除阈值”,比如二阶铁牛75道术添加,低于75则删除,同时清除已召唤的宝宝。
关键提醒:你之前用DELSKILL无效,大概率是“没在正确的触发事件中执行”或“技能名称与服务器数据库不一致”,脚本中需确保技能名和怪物名与Skill.txt、Monster.txt完全匹配。
二、修复核心逻辑:触发事件+双向判断
采用“装备变动触发+3秒定时检测”双保险机制,确保道术变动时立即响应。核心逻辑分三步:
1.触发:装备穿戴/卸下时触发@EquipChange,启动3秒定时器持续检测道术(避免装备刚取下时属性未同步)。
2.判断:检测当前道术,匹配对应技能区间(66-74一阶,75及以上二阶,低于66无技能)。
3.执行:道术达标则添加技能并召唤宝宝,不达标则删除技能并清除已召唤的宝宝(避免技能删了宝宝还在)。
三、完整优化脚本(适配Gee/GOM引擎)
以下脚本合并你原有的道术区间判断(66-74一阶,75及以上二阶),新增删除逻辑和触发机制,放在对应引擎的脚本目录(Gee放QuestDiary,GOM放Function)。
1.通用核心脚本(含触发与判断)
//1.装备变动触发(核心!装备穿戴/卸下时立即执行)
(@EquipChange)
#ACT
//启动3秒定时器,持续检测道术(避免属性延迟)
SetScTimer13
#ELSEACT
KillScTimer1//异常情况关闭定时器
//2.定时器检测逻辑(每3秒执行一次,道术稳定后停止)
(@OnTimer1)
#ACT
//读取当前道术(SC=道术,不同引擎可能用HUMSC,需按服务器调整)
MOVU0$SC//U0存储当前道术值
//第一步:判断是否需要删除二阶铁牛技能(道术<75)
#IF
CheckSkill召唤二阶铁牛//已学会二阶技能
U0<75//道术低于75
#ACT
DELSKILL召唤二阶铁牛//删除二阶技能
KILLSLAVE二阶铁牛//清除已召唤的二阶铁牛
SendMsg9道术下降,二阶铁牛技能已收回!
#ELSEIF
//第二步:判断是否需要删除一阶铁牛技能(道术<66)
CheckSkill召唤一阶铁牛
U0<66
#ACT
DELSKILL召唤一阶铁牛
KILLSLAVE一阶铁牛
SendMsg9道术不足,一阶铁牛技能已收回!
#ELSE
//第三步:道术达标,添加对应技能(避免重复添加)
#IF
U0>=75//道术75及以上,二阶优先
CHECKSLAVECOUNT<1//无宝宝时召唤
NOTCheckSkill召唤二阶铁牛//未学会二阶技能
#ACT
DELSKILL召唤一阶铁牛//先删一阶,避免技能冲突
ADDSKILL召唤二阶铁牛
SENDMSG3由于『%s』的道术提升,降服了二阶铁牛!
Slave二阶铁牛1//直接召唤1只二阶铁牛(无需手动放技能)
KillScTimer1//道术稳定,关闭定时器
#ELSEIF
U0>=66&&U0<75//道术66-74,一阶铁牛
CHECKSLAVECOUNT<1
NOTCheckSkill召唤一阶铁牛
#ACT
ADDSKILL召唤一阶铁牛
SENDMSG9由于『%s』的道术提升,降服了一阶铁牛!
Slave一阶铁牛1
KillScTimer1
#ELSE
KillScTimer1//道术无变动,关闭定时器
#ENDIF
//3.保留你原有的技能触发标签(兜底,避免漏触发)
(@MagSelfFunc71)
#ACT
GotoOnTimer1//直接跳转到定时器检测逻辑,复用代码
(@MagSelfFunc30)
#ACT
GotoOnTimer1
2.引擎适配调整(关键!避免指令失效)
不同引擎的“道术读取”“宝宝召唤”指令有差异,需按服务器引擎修改对应部分:
功能需求
Gee引擎指令
GOM引擎指令
读取当前道术
MOVU0$SC
MOVP0$HUMSC
召唤宝宝
Slave二阶铁牛1
CallSlave二阶铁牛1
删除宝宝
KILLSLAVE二阶铁牛
KillAllSlave二阶铁牛
定时器标签
(@OnTimer1)
(@Timer1)
GOM引擎定时器启动指令调整:将SetScTimer13改为SetTimer13,关闭指令改为CloseTimer1。
3.脚本冗余优化(你的原脚本可简化)
你原脚本中66-74道术的9个判断可合并为一个区间判断(U0>=66&&U0<75),无需重复写9次相同代码,优化后脚本更易维护,后续调整道术阈值只需改一处。
四、关键配置:确保技能与宝宝名称匹配
之前DELSKILL无效,很可能是“名称不匹配”,需按以下步骤确认:
1.技能名称:打开服务器Mir200/Envir/Skill.txt,搜索“召唤一阶铁牛”,确认技能名称完全一致(包括空格、符号),比如有的服务器是“召唤_一阶铁牛”(带下划线)。
2.宝宝名称:打开Monster.txt,确认“一阶铁牛”“二阶铁牛”的怪物名称与脚本中完全相同,避免写成“铁牛一阶”导致删除失败。
3.道术变量:若脚本中读取道术无效(如U0始终为0),联系服务器管理员确认“道术对应的变量名”,部分服务器用$HUMDC(道士攻击)而非$SC。
五、配置与测试步骤(确保一次生效)
1.脚本放置:Gee引擎存放在Mir200/Envir/QuestDiary/目录,命名为TaoistSummon.txt;GOM引擎存放在Mir200/Envir/Function/QFunction-0.txt(直接追加内容)。
2.引擎加载:Gee在“脚本管理”点击“重读QuestDiary脚本”;GOM点击“功能设置-脚本设置-重新加载脚本”。
3.分步测试:
达标测试:穿戴道术装备使道术≥75,观察是否自动添加“召唤二阶铁牛”并召唤宝宝,发送对应公告。
4.删除测试:取下装备使道术降至70,观察是否删除二阶技能、清除宝宝,发送“技能收回”提示,同时自动添加一阶技能。
5.临界测试:道术降至65,确认一阶技能也被删除,宝宝清除,无技能残留。
六、常见问题兜底(避免踩坑)
1.技能删了但宝宝还在?
必须用KILLSLAVE(Gee)或KillAllSlave(GOM)指令,仅删技能不会清除已召唤的宝宝,两者需配合使用。
2.装备变动后没触发?
确认@EquipChange标签有效——部分服务器需在MapInfo.txt中添加“EVENT=EquipChange@EquipChange”启用装备变动事件,或改用@ItemChange(物品变动触发)。
3.定时器一直运行耗电?
脚本中已加入“道术稳定后关闭定时器”的逻辑(KillScTimer1),仅在装备变动后的3秒内检测,不会持续占用资源。
一、问题核心:缺“道术下降”的触发与删除逻辑
你现有脚本仅依赖@MagSelfFunc71(可能是技能触发标签)和@MagSelfFunc30判断道术,但这两个标签通常是“一次性触发”(如升级、穿戴装备时),取下装备导致道术下降时不会主动触发。要实现“道术不够就删技能”,必须满足两个条件:
-触发点:找到能实时监测“道术变动”的事件(如装备穿戴/卸下、属性变化),主流用@EquipChange(装备变动触发)和定时器兜底。
-逻辑闭环:每个技能都对应“添加阈值”和“删除阈值”,比如二阶铁牛75道术添加,低于75则删除,同时清除已召唤的宝宝。
关键提醒:你之前用DELSKILL无效,大概率是“没在正确的触发事件中执行”或“技能名称与服务器数据库不一致”,脚本中需确保技能名和怪物名与Skill.txt、Monster.txt完全匹配。
二、修复核心逻辑:触发事件+双向判断
采用“装备变动触发+3秒定时检测”双保险机制,确保道术变动时立即响应。核心逻辑分三步:
1.触发:装备穿戴/卸下时触发@EquipChange,启动3秒定时器持续检测道术(避免装备刚取下时属性未同步)。
2.判断:检测当前道术,匹配对应技能区间(66-74一阶,75及以上二阶,低于66无技能)。
3.执行:道术达标则添加技能并召唤宝宝,不达标则删除技能并清除已召唤的宝宝(避免技能删了宝宝还在)。
三、完整优化脚本(适配Gee/GOM引擎)
以下脚本合并你原有的道术区间判断(66-74一阶,75及以上二阶),新增删除逻辑和触发机制,放在对应引擎的脚本目录(Gee放QuestDiary,GOM放Function)。
1.通用核心脚本(含触发与判断)
//1.装备变动触发(核心!装备穿戴/卸下时立即执行)
(@EquipChange)
#ACT
//启动3秒定时器,持续检测道术(避免属性延迟)
SetScTimer13
#ELSEACT
KillScTimer1//异常情况关闭定时器
//2.定时器检测逻辑(每3秒执行一次,道术稳定后停止)
(@OnTimer1)
#ACT
//读取当前道术(SC=道术,不同引擎可能用HUMSC,需按服务器调整)
MOVU0$SC//U0存储当前道术值
//第一步:判断是否需要删除二阶铁牛技能(道术<75)
#IF
CheckSkill召唤二阶铁牛//已学会二阶技能
U0<75//道术低于75
#ACT
DELSKILL召唤二阶铁牛//删除二阶技能
KILLSLAVE二阶铁牛//清除已召唤的二阶铁牛
SendMsg9道术下降,二阶铁牛技能已收回!
#ELSEIF
//第二步:判断是否需要删除一阶铁牛技能(道术<66)
CheckSkill召唤一阶铁牛
U0<66
#ACT
DELSKILL召唤一阶铁牛
KILLSLAVE一阶铁牛
SendMsg9道术不足,一阶铁牛技能已收回!
#ELSE
//第三步:道术达标,添加对应技能(避免重复添加)
#IF
U0>=75//道术75及以上,二阶优先
CHECKSLAVECOUNT<1//无宝宝时召唤
NOTCheckSkill召唤二阶铁牛//未学会二阶技能
#ACT
DELSKILL召唤一阶铁牛//先删一阶,避免技能冲突
ADDSKILL召唤二阶铁牛
SENDMSG3由于『%s』的道术提升,降服了二阶铁牛!
Slave二阶铁牛1//直接召唤1只二阶铁牛(无需手动放技能)
KillScTimer1//道术稳定,关闭定时器
#ELSEIF
U0>=66&&U0<75//道术66-74,一阶铁牛
CHECKSLAVECOUNT<1
NOTCheckSkill召唤一阶铁牛
#ACT
ADDSKILL召唤一阶铁牛
SENDMSG9由于『%s』的道术提升,降服了一阶铁牛!
Slave一阶铁牛1
KillScTimer1
#ELSE
KillScTimer1//道术无变动,关闭定时器
#ENDIF
//3.保留你原有的技能触发标签(兜底,避免漏触发)
(@MagSelfFunc71)
#ACT
GotoOnTimer1//直接跳转到定时器检测逻辑,复用代码
(@MagSelfFunc30)
#ACT
GotoOnTimer1
2.引擎适配调整(关键!避免指令失效)
不同引擎的“道术读取”“宝宝召唤”指令有差异,需按服务器引擎修改对应部分:
功能需求
Gee引擎指令
GOM引擎指令
读取当前道术
MOVU0$SC
MOVP0$HUMSC
召唤宝宝
Slave二阶铁牛1
CallSlave二阶铁牛1
删除宝宝
KILLSLAVE二阶铁牛
KillAllSlave二阶铁牛
定时器标签
(@OnTimer1)
(@Timer1)
GOM引擎定时器启动指令调整:将SetScTimer13改为SetTimer13,关闭指令改为CloseTimer1。
3.脚本冗余优化(你的原脚本可简化)
你原脚本中66-74道术的9个判断可合并为一个区间判断(U0>=66&&U0<75),无需重复写9次相同代码,优化后脚本更易维护,后续调整道术阈值只需改一处。
四、关键配置:确保技能与宝宝名称匹配
之前DELSKILL无效,很可能是“名称不匹配”,需按以下步骤确认:
1.技能名称:打开服务器Mir200/Envir/Skill.txt,搜索“召唤一阶铁牛”,确认技能名称完全一致(包括空格、符号),比如有的服务器是“召唤_一阶铁牛”(带下划线)。
2.宝宝名称:打开Monster.txt,确认“一阶铁牛”“二阶铁牛”的怪物名称与脚本中完全相同,避免写成“铁牛一阶”导致删除失败。
3.道术变量:若脚本中读取道术无效(如U0始终为0),联系服务器管理员确认“道术对应的变量名”,部分服务器用$HUMDC(道士攻击)而非$SC。
五、配置与测试步骤(确保一次生效)
1.脚本放置:Gee引擎存放在Mir200/Envir/QuestDiary/目录,命名为TaoistSummon.txt;GOM引擎存放在Mir200/Envir/Function/QFunction-0.txt(直接追加内容)。
2.引擎加载:Gee在“脚本管理”点击“重读QuestDiary脚本”;GOM点击“功能设置-脚本设置-重新加载脚本”。
3.分步测试:
达标测试:穿戴道术装备使道术≥75,观察是否自动添加“召唤二阶铁牛”并召唤宝宝,发送对应公告。
4.删除测试:取下装备使道术降至70,观察是否删除二阶技能、清除宝宝,发送“技能收回”提示,同时自动添加一阶技能。
5.临界测试:道术降至65,确认一阶技能也被删除,宝宝清除,无技能残留。
六、常见问题兜底(避免踩坑)
1.技能删了但宝宝还在?
必须用KILLSLAVE(Gee)或KillAllSlave(GOM)指令,仅删技能不会清除已召唤的宝宝,两者需配合使用。
2.装备变动后没触发?
确认@EquipChange标签有效——部分服务器需在MapInfo.txt中添加“EVENT=EquipChange@EquipChange”启用装备变动事件,或改用@ItemChange(物品变动触发)。
3.定时器一直运行耗电?
脚本中已加入“道术稳定后关闭定时器”的逻辑(KillScTimer1),仅在装备变动后的3秒内检测,不会持续占用资源。

