全修分两个层次:一是给人物身上装备一键修,二是给背包装备一键修。老引擎没有现成AllRepair命令时,就用循环读每件装备的当前持久、最大持久,不足就扣金币或耗材执行Repair。下面按可直接改的写法给。
一、基础版本:人物身上装备全修
[@Main]
SAY
装备全修处\
1.一键修复身上所有可修复装备\
2.按金币批量修复\
3.用修复神水批量修复\
<身上全修/@RepairAllWear><金币批量/@RepairGoldBag><神水批量/@RepairWaterBag><离开/@exit>
[@RepairAllWear]
IF
ACT
RepairAllItem
SENDMSG0已尝试修复身上所有装备
BREAK
RepairAllItem是部分引擎直接支持的一键修复身上全部装备命令。若有这个命令,NPC写一行就够;若引擎不支持,必须拆部件逐个判断。
二、分部件判断并修复身上装备
[@RepairWearStep]
IF
CHECKITEMWEAR1
ACT
CHECKBAGGAGE1
GOTO@RepairWearWeapon
BREAK
[@RepairWearWeapon]
IF
CHECKITEMWEAR1
CHECKREPAIRLV1
ACT
REPAIR1
SENDMSG0武器已修复
BREAK
ELSEACT
SENDMSG0武器无需修复或不可修复
BREAK
CHECKITEMWEAR1表示检测1号位即武器是否穿戴;REPAIR1修复1号位装备。衣服用0、项链3、头盔4、左手镯5、右手镯6、左戒指7、右戒指8、腰带10、鞋子11、斗笠13,具体按引擎部位表。CHECKREPAIRLV用于判断装备是否需要修复,部分引擎写作CHECKITEMDURA或CHECKDURA,没有就跳过判断直接REPAIR,M2会忽略已满持久的装备。
三、金币扣除版一键全修
[@RepairGold]
IF
CHECKGOLD50000
ACT
REPAIRALL
TAKEGOLD50000
SENDMSG0扣除5万金币,已修复身上装备
BREAK
ELSEACT
SENDMSG0金币不足5万,无法全修
BREAK
REPAIRALL对应部分引擎的身上全修,配合CHECKGOLD判断金币;GOM/GEE类可用REPAIRALLITEM,命令名以M2命令列表为准。若REPAIRALL不生效,就按部件循环:
[@RepairGoldLoop]
IF
CHECKGOLD10000
ACT
REPAIR0
REPAIR1
REPAIR3
REPAIR4
REPAIR5
REPAIR6
REPAIR7
REPAIR8
TAKEGOLD10000
SENDMSG0扣除1万金币,已修复身上各部位装备
BREAK
这种写法不判断持久直接修,未损耗的装备命令会被引擎忽略,不会重复扣持久,所以安全。缺点是每次都扣全额金币,适合固定收费。
四、背包批量修复,带金币检测
[@RepairGoldBag]
IF
CHECKGOLD20000
ACT
REPAIRALLBAG
TAKEGOLD20000
SENDMSG0扣除2万金币,背包可修复装备已全部修复
BREAK
ELSEACT
SENDMSG0金币不足2万
BREAK
REPAIRALLBAG修复背包全部装备,不是身上穿戴的;若引擎没有,用BAGREPAIR或逐件判断背包:
[@RepairBagLoop]
IF
CHECKGOLD5000
CHECKITEM屠龙1
CHECKREPAIR屠龙1
ACT
TAKE屠龙1
GIVE屠龙1
SENDMSG0屠龙已修复
BREAK
这种“扣了再发”的方式只有在物品库里该装备重新发放时持久回满才成立,很多版本不是这样。更稳妥的是引擎修复命令;没有的话,让玩家找武器店批量修更稳。
五、耗材全修:修复神水
[@RepairWaterBag]
IF
CHECKITEM修复神水1
ACT
TAKE修复神水1
REPAIRALLBAG
REPAIRALL
SENDMSG0使用修复神水,身上与背包装备全部修复
BREAK
ELSEACT
SENDMSG0需要修复神水1个
BREAK
耗材修复可以一次修身上加背包,避免金币收费。神水可从商城、活动、材料合成获得;扣材料在修复命令之前,防止扣了材料没修成。
六、按持久百分比收费,更合理
部分引擎支持CHECKDURA、CHECKMAXDURA变量比较,用自定义变量算损耗比例。Hero类可这样:
[@RepairSmart]
IF
CHECKDURA1<50
CHECKGOLD8000
ACT
REPAIR1
TAKEGOLD8000
SENDMSG0武器持久低于50,已修复并扣8000金币
BREAK
ELSEACT
SENDMSG0武器持久充足,无需修复
BREAK
GOM/GEE支持更多持久判断函数时,可用Human.系列命令读取当前、最大持久,再算差值扣费。没有函数就用固定收费,或按部位分档:武器最贵、衣服其次、首饰便宜。
七、收费梯度NPC写法
[@RepairPrice]
SAY
选择全修方式\
1.普通修复:1万金币修身上全部\
2.精修:5万金币修身上加背包\
3.完美修复:修复神水1个,不损上限\
<普通/@NormalRepair><精修/@FullRepair><完美/@PerfectRepair><返回/@Main>
[@NormalRepair]
IF
CHECKGOLD10000
ACT
REPAIRALL
TAKEGOLD10000
SENDMSG0普通全修完成
BREAK
[@FullRepair]
IF
CHECKGOLD50000
ACT
REPAIRALL
REPAIRALLBAG
TAKEGOLD50000
SENDMSG0精修完成,身上与背包均已修复
BREAK
[@PerfectRepair]
IF
CHECKITEM修复神水1
ACT
TAKE修复神水1
REPAIRALL
REPAIRALLBAG
SENDMSG0完美修复完成,使用修复神水1个
BREAK
八、武器店式全修:靠近自动修
有些版本在Merchant里把NPC设成修理NPC后,客户端打开界面可一键修;脚本侧要在NPC打开时自动修复身上,可挂打开触发:
[@OnRepairOpen]
ACT
REPAIRALL
SENDMSG0打开修理界面时已自动修复身上装备
只有支持@OnRepairOpen、@OnSellOpen这类打开触发的引擎才能用,老Hero通常不支持,需要靠玩家点菜单。
九、全修带日志与防刷
[@RepairLog]
IF
CHECKGOLD10000
ACT
REPAIRALL
TAKEGOLD10000
PLAYBIGDRAGON000000
WriteLog..\Log\RepairLog.txt角色全修成功,扣1万金币
SENDMSG0全修成功
BREAK
WriteLog记录每次修复,便于查异常扣费。防刷方面,先判断金币再修复,修复失败要返还或提示;不要把TAKEGOLD放在REPAIR之前且没有失败分支,个别引擎修复失败不返回金币。
十、NPC文件配置
Market_Def里新建全修使者.txt,开头:
;全修使者
133全修使者000沙巴克55
133全修使者000土城330330
参数按“类型外观是否可移动名称地图坐标坐标”填写,地图坐标和土城、沙巴克对应位置可按需要调整。NPC文件名要和Merchant或市场NPC配置对上;脚本放QuestDiary或NpcDialog按引擎走。脚本文件编码用ANSI/GBK,#IF、#ACT、#ELSEACT必须独立行,缩进不影响执行但别把标签[@xx]写错。
十一、命令对照与兼容
Hero常用:REPAIR部位、REPAIRALL、REPAIRALLBAG,金币CHECKGOLD/TAKEGOLD,检测CHECKITEMWEAR。部分老版本只有REPAIR和武器店NPC,没有REPAIRALL,需升级引擎或改用武器店NPC自动全修。
GOM/GEE常用:REPAIRALLITEM修身上全部,REPAIRALLBAG修背包全部,RepairAllWear装备变量类函数;金币用CHECKGOLD/GAMEGOLD,耗材用CHECKITEM/TAKE。GEE若支持Human类持久函数,可写脚本按损耗值动态扣费。
BLUE常用:RepairAll、BagRepair,具体以命令说明文档为准。部分版本在NPC选项勾“修理”后,玩家点NPC自动打开修理界面,不需要脚本命令。
十二、排错
全修不生效:先确认引擎有没有REPAIRALL,没有就逐个REPAIR;再确认NPC是否为修理类NPC,非修理NPC可能忽略修复命令。
只修武器不修衣服:部位号写错,0衣服1武器3项链;逐件写时漏掉部位就会跳过。
扣金币但没修:TAKEGOLD在REPAIR前面,且REPAIR命令实际未执行;改成先REPAIR再TAKEGOLD,或用#IF判断修复结果。
修复后持久不变:该装备被引擎设为不可修复,或用了“扣了再发”的方式但物品库持久规则不允许;改用引擎自带修复命令。
背包修复漏装备:REPAIRALLBAG只处理背包中“可修复且需要修复”的物品,不可修复的不会动;逐件判断时物品名要和物品库完全一致。
多人同时修复报错:金币判断和扣除之间加变量锁,或者用引擎内置修复流程,避免并发导致多扣少扣。
改装后客户端没一键修按钮:老客户端只在武器店NPC处显示修理界面,需把NPC配置成修理NPC并放在可对话位置;脚本只负责扣费和触发修复,界面显示由客户端决定。
最省心的写法就是REPAIRALL修身上、REPAIRALLBAG修背包、耗材TAKE后双修,再补金币检测和提示。先在土城放一个测试NPC,故意把武器持久降到低值,依次测身上单修、身上全修、背包全修、金币扣费、耗材扣除,确认无误再复制到沙巴克、庄园等地图。
一、基础版本:人物身上装备全修
[@Main]
SAY
装备全修处\
1.一键修复身上所有可修复装备\
2.按金币批量修复\
3.用修复神水批量修复\
<身上全修/@RepairAllWear><金币批量/@RepairGoldBag><神水批量/@RepairWaterBag><离开/@exit>
[@RepairAllWear]
IF
ACT
RepairAllItem
SENDMSG0已尝试修复身上所有装备
BREAK
RepairAllItem是部分引擎直接支持的一键修复身上全部装备命令。若有这个命令,NPC写一行就够;若引擎不支持,必须拆部件逐个判断。
二、分部件判断并修复身上装备
[@RepairWearStep]
IF
CHECKITEMWEAR1
ACT
CHECKBAGGAGE1
GOTO@RepairWearWeapon
BREAK
[@RepairWearWeapon]
IF
CHECKITEMWEAR1
CHECKREPAIRLV1
ACT
REPAIR1
SENDMSG0武器已修复
BREAK
ELSEACT
SENDMSG0武器无需修复或不可修复
BREAK
CHECKITEMWEAR1表示检测1号位即武器是否穿戴;REPAIR1修复1号位装备。衣服用0、项链3、头盔4、左手镯5、右手镯6、左戒指7、右戒指8、腰带10、鞋子11、斗笠13,具体按引擎部位表。CHECKREPAIRLV用于判断装备是否需要修复,部分引擎写作CHECKITEMDURA或CHECKDURA,没有就跳过判断直接REPAIR,M2会忽略已满持久的装备。
三、金币扣除版一键全修
[@RepairGold]
IF
CHECKGOLD50000
ACT
REPAIRALL
TAKEGOLD50000
SENDMSG0扣除5万金币,已修复身上装备
BREAK
ELSEACT
SENDMSG0金币不足5万,无法全修
BREAK
REPAIRALL对应部分引擎的身上全修,配合CHECKGOLD判断金币;GOM/GEE类可用REPAIRALLITEM,命令名以M2命令列表为准。若REPAIRALL不生效,就按部件循环:
[@RepairGoldLoop]
IF
CHECKGOLD10000
ACT
REPAIR0
REPAIR1
REPAIR3
REPAIR4
REPAIR5
REPAIR6
REPAIR7
REPAIR8
TAKEGOLD10000
SENDMSG0扣除1万金币,已修复身上各部位装备
BREAK
这种写法不判断持久直接修,未损耗的装备命令会被引擎忽略,不会重复扣持久,所以安全。缺点是每次都扣全额金币,适合固定收费。
四、背包批量修复,带金币检测
[@RepairGoldBag]
IF
CHECKGOLD20000
ACT
REPAIRALLBAG
TAKEGOLD20000
SENDMSG0扣除2万金币,背包可修复装备已全部修复
BREAK
ELSEACT
SENDMSG0金币不足2万
BREAK
REPAIRALLBAG修复背包全部装备,不是身上穿戴的;若引擎没有,用BAGREPAIR或逐件判断背包:
[@RepairBagLoop]
IF
CHECKGOLD5000
CHECKITEM屠龙1
CHECKREPAIR屠龙1
ACT
TAKE屠龙1
GIVE屠龙1
SENDMSG0屠龙已修复
BREAK
这种“扣了再发”的方式只有在物品库里该装备重新发放时持久回满才成立,很多版本不是这样。更稳妥的是引擎修复命令;没有的话,让玩家找武器店批量修更稳。
五、耗材全修:修复神水
[@RepairWaterBag]
IF
CHECKITEM修复神水1
ACT
TAKE修复神水1
REPAIRALLBAG
REPAIRALL
SENDMSG0使用修复神水,身上与背包装备全部修复
BREAK
ELSEACT
SENDMSG0需要修复神水1个
BREAK
耗材修复可以一次修身上加背包,避免金币收费。神水可从商城、活动、材料合成获得;扣材料在修复命令之前,防止扣了材料没修成。
六、按持久百分比收费,更合理
部分引擎支持CHECKDURA、CHECKMAXDURA变量比较,用自定义变量算损耗比例。Hero类可这样:
[@RepairSmart]
IF
CHECKDURA1<50
CHECKGOLD8000
ACT
REPAIR1
TAKEGOLD8000
SENDMSG0武器持久低于50,已修复并扣8000金币
BREAK
ELSEACT
SENDMSG0武器持久充足,无需修复
BREAK
GOM/GEE支持更多持久判断函数时,可用Human.系列命令读取当前、最大持久,再算差值扣费。没有函数就用固定收费,或按部位分档:武器最贵、衣服其次、首饰便宜。
七、收费梯度NPC写法
[@RepairPrice]
SAY
选择全修方式\
1.普通修复:1万金币修身上全部\
2.精修:5万金币修身上加背包\
3.完美修复:修复神水1个,不损上限\
<普通/@NormalRepair><精修/@FullRepair><完美/@PerfectRepair><返回/@Main>
[@NormalRepair]
IF
CHECKGOLD10000
ACT
REPAIRALL
TAKEGOLD10000
SENDMSG0普通全修完成
BREAK
[@FullRepair]
IF
CHECKGOLD50000
ACT
REPAIRALL
REPAIRALLBAG
TAKEGOLD50000
SENDMSG0精修完成,身上与背包均已修复
BREAK
[@PerfectRepair]
IF
CHECKITEM修复神水1
ACT
TAKE修复神水1
REPAIRALL
REPAIRALLBAG
SENDMSG0完美修复完成,使用修复神水1个
BREAK
八、武器店式全修:靠近自动修
有些版本在Merchant里把NPC设成修理NPC后,客户端打开界面可一键修;脚本侧要在NPC打开时自动修复身上,可挂打开触发:
[@OnRepairOpen]
ACT
REPAIRALL
SENDMSG0打开修理界面时已自动修复身上装备
只有支持@OnRepairOpen、@OnSellOpen这类打开触发的引擎才能用,老Hero通常不支持,需要靠玩家点菜单。
九、全修带日志与防刷
[@RepairLog]
IF
CHECKGOLD10000
ACT
REPAIRALL
TAKEGOLD10000
PLAYBIGDRAGON000000
WriteLog..\Log\RepairLog.txt角色全修成功,扣1万金币
SENDMSG0全修成功
BREAK
WriteLog记录每次修复,便于查异常扣费。防刷方面,先判断金币再修复,修复失败要返还或提示;不要把TAKEGOLD放在REPAIR之前且没有失败分支,个别引擎修复失败不返回金币。
十、NPC文件配置
Market_Def里新建全修使者.txt,开头:
;全修使者
133全修使者000沙巴克55
133全修使者000土城330330
参数按“类型外观是否可移动名称地图坐标坐标”填写,地图坐标和土城、沙巴克对应位置可按需要调整。NPC文件名要和Merchant或市场NPC配置对上;脚本放QuestDiary或NpcDialog按引擎走。脚本文件编码用ANSI/GBK,#IF、#ACT、#ELSEACT必须独立行,缩进不影响执行但别把标签[@xx]写错。
十一、命令对照与兼容
Hero常用:REPAIR部位、REPAIRALL、REPAIRALLBAG,金币CHECKGOLD/TAKEGOLD,检测CHECKITEMWEAR。部分老版本只有REPAIR和武器店NPC,没有REPAIRALL,需升级引擎或改用武器店NPC自动全修。
GOM/GEE常用:REPAIRALLITEM修身上全部,REPAIRALLBAG修背包全部,RepairAllWear装备变量类函数;金币用CHECKGOLD/GAMEGOLD,耗材用CHECKITEM/TAKE。GEE若支持Human类持久函数,可写脚本按损耗值动态扣费。
BLUE常用:RepairAll、BagRepair,具体以命令说明文档为准。部分版本在NPC选项勾“修理”后,玩家点NPC自动打开修理界面,不需要脚本命令。
十二、排错
全修不生效:先确认引擎有没有REPAIRALL,没有就逐个REPAIR;再确认NPC是否为修理类NPC,非修理NPC可能忽略修复命令。
只修武器不修衣服:部位号写错,0衣服1武器3项链;逐件写时漏掉部位就会跳过。
扣金币但没修:TAKEGOLD在REPAIR前面,且REPAIR命令实际未执行;改成先REPAIR再TAKEGOLD,或用#IF判断修复结果。
修复后持久不变:该装备被引擎设为不可修复,或用了“扣了再发”的方式但物品库持久规则不允许;改用引擎自带修复命令。
背包修复漏装备:REPAIRALLBAG只处理背包中“可修复且需要修复”的物品,不可修复的不会动;逐件判断时物品名要和物品库完全一致。
多人同时修复报错:金币判断和扣除之间加变量锁,或者用引擎内置修复流程,避免并发导致多扣少扣。
改装后客户端没一键修按钮:老客户端只在武器店NPC处显示修理界面,需把NPC配置成修理NPC并放在可对话位置;脚本只负责扣费和触发修复,界面显示由客户端决定。
最省心的写法就是REPAIRALL修身上、REPAIRALLBAG修背包、耗材TAKE后双修,再补金币检测和提示。先在土城放一个测试NPC,故意把武器持久降到低值,依次测身上单修、身上全修、背包全修、金币扣费、耗材扣除,确认无误再复制到沙巴克、庄园等地图。

