传奇道士召唤宝宝脚本修复 道术联动技能自动删加方案

来源: 作者: 点击:
你现有脚本的核心问题是“只做了道术达标时的技能添加,没做道术下降后的删除触发”——传奇脚本中技能不会自动消失,必须通过“属性变动检测”触发删除逻辑。以下从问题分析、核心逻辑、完整脚本到配置步骤,彻底解决“装备取下技能残留”问题,适配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秒定时器,持续检测道术(避免属性延迟)
SetScTimer 1 3
#ELSEACT
KillScTimer 1 // 异常情况关闭定时器

// 2. 定时器检测逻辑(每3秒执行一次,道术稳定后停止)
(@OnTimer1)
#ACT
// 读取当前道术(SC=道术,不同引擎可能用HUMSC,需按服务器调整)
MOV U0 $SC // U0存储当前道术值
// 第一步:判断是否需要删除二阶铁牛技能(道术<75)
#IF
CheckSkill 召唤二阶铁牛 // 已学会二阶技能
U0 < 75 // 道术低于75
#ACT
DELSKILL 召唤二阶铁牛 // 删除二阶技能
KILLSLAVE 二阶铁牛 // 清除已召唤的二阶铁牛
SendMsg 9 道术下降,二阶铁牛技能已收回!
#ELSEIF
// 第二步:判断是否需要删除一阶铁牛技能(道术<66)
CheckSkill 召唤一阶铁牛
U0 < 66
#ACT
DELSKILL 召唤一阶铁牛
KILLSLAVE 一阶铁牛
SendMsg 9 道术不足,一阶铁牛技能已收回!
#ELSE
// 第三步:道术达标,添加对应技能(避免重复添加)
#IF
U0 >= 75 // 道术75及以上,二阶优先
CHECKSLAVECOUNT < 1 // 无宝宝时召唤
NOT CheckSkill 召唤二阶铁牛 // 未学会二阶技能
#ACT
DELSKILL 召唤一阶铁牛 // 先删一阶,避免技能冲突
ADDSKILL 召唤二阶铁牛
SENDMSG 3 由于『%s』的道术提升,降服了二阶铁牛!
Slave 二阶铁牛 1 // 直接召唤1只二阶铁牛(无需手动放技能)
KillScTimer 1 // 道术稳定,关闭定时器
#ELSEIF
U0 >= 66 && U0 <75 // 道术66-74,一阶铁牛
CHECKSLAVECOUNT <1
NOT CheckSkill 召唤一阶铁牛
#ACT
ADDSKILL 召唤一阶铁牛
SENDMSG 9 由于『%s』的道术提升,降服了一阶铁牛!
Slave 一阶铁牛 1
KillScTimer 1
#ELSE
KillScTimer 1 // 道术无变动,关闭定时器
#ENDIF

// 3. 保留你原有的技能触发标签(兜底,避免漏触发)
(@MagSelfFunc71)
#ACT
Goto OnTimer1 // 直接跳转到定时器检测逻辑,复用代码

(@MagSelfFunc30)
#ACT
Goto OnTimer1

2. 引擎适配调整(关键!避免指令失效)

不同引擎的“道术读取”“宝宝召唤”指令有差异,需按服务器引擎修改对应部分:

功能需求

Gee引擎指令

GOM引擎指令

读取当前道术

MOV U0 $SC

MOV P0 $HUMSC

召唤宝宝

Slave 二阶铁牛 1

CallSlave 二阶铁牛 1

删除宝宝

KILLSLAVE 二阶铁牛

KillAllSlave 二阶铁牛

定时器标签

(@OnTimer1)

(@Timer1)

GOM引擎定时器启动指令调整:将SetScTimer 1 3改为SetTimer 1 3,关闭指令改为CloseTimer 1。

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. 定时器一直运行耗电?

脚本中已加入“道术稳定后关闭定时器”的逻辑(KillScTimer 1),仅在装备变动后的3秒内检测,不会持续占用资源。