传奇全修脚本怎么改才不报错

来源: 作者: 点击:
先看你现在这段脚本结构,逻辑本身没大毛病:点“使用元宝”→ 检测元宝是否大于2 → 扣3元宝 → 执行 RepairAll → 弹修理成功。RepairAll 是大部分 GOM/GEE/翎风引擎认的原生命令,作用是把身上所有装备送回对应 NPC 特修。

一、最常见问题:RepairAll 不认

不同引擎里“全修”命令写法不一样:
• GOM/GEE:RepairAll

• HERO:RepairAllItem 或直接 RepairAll

• 翎风:多数认 RepairAll,但部分版本要 S_REPAIRALL

• 老清风二开:RepairAllEx、AutoRepair

• 某些服根本没这个命令,只能用循环特修每个部位

如果你 M2 报“未知命令:RepairAll”,先去 QuestCommandList.txt / EngineCommand.txt 搜“repair”,看引擎里到底叫什么。搜不到 RepairAll 但有 RepairItem,说明引擎只支持按部位修,不支持一键全修。

二、按部位逐个修的写法(通用版)

如果引擎没有 RepairAll,改成显式列出所有装备位:

#Act
GAMEGOLD - 3
RepairItem 衣服
RepairItem 武器
RepairItem 头盔
RepairItem 项链
RepairItem 左手镯
RepairItem 右手镯
RepairItem 左戒指
RepairItem 右戒指
RepairItem 腰带
RepairItem 鞋子
RepairItem 宝石
MessageBox 修理成功!!
goto @main

部位名必须跟引擎内部名一致。有的服“左手镯”叫 LeftBracelet,有的叫 左手镯,有的叫 BraceletL。先在 M2 里手动特修一次,看通讯日志里发的是哪个词,脚本里就用哪个。

三、CHECKGAMEGOLD > 2 的坑

你写的是“大于2”,意思是元宝 ≥3 才能扣。逻辑没问题,但要确认:
1. GAMEGOLD 在你这服是不是元宝变量。很多服:金币=GOLD,元宝=GAMEGOLD,绑定元宝=GAMEPOINT。如果这服把元宝定义成别的变量名,CHECKGAMEGOLD 永远返回0,玩家有元宝也走 #Elseact。
2. 去 M2 → 游戏参数 → 货币设置,确认元宝对应的变量是 GAMEGOLD。
3. 如果这服用的是“充值元宝=GAMEGOLD,绑定元宝=GAMEPOINT”,而你希望扣绑定元宝,就把 CHECKGAMEGOLD 换成 CHECKGAMEPOINT,GAMEGOLD - 3 换成 GAMEPOINT - 3。

四、扣费顺序和失败处理

现在脚本是“先扣钱再修”。如果修失败了(比如身上没装备、或 RepairAll 不认),钱已经扣了玩家白亏。改成先判断能不能修:

[@texiu]
#If
CHECKGAMEGOLD > 2
#Act
GAMEGOLD - 3
#If
RepairAll
#Act
MessageBox 修理成功!!
goto @main
#Elseact
MessageBox 修理失败,请稍后再试!
goto @main
#Elseact
MessageBox 特修失败!本服务每次收费3元宝
goto @main

注意:不是所有引擎支持 RepairAll 作为 #IF 条件判断。不支持的版本里,#If RepairAll 永远为 false,就会走 #Elseact 弹“修理失败”。这种版本只能放弃判断,直接扣钱+执行。

五、NPC 上下文问题

RepairAll 之类的修理命令,很多引擎要求“当前对话 NPC 是能修装备的 NPC”。你在抽奖员、活动员、传送员身上挂全修,NPC 不是武器店老板,引擎就可能拒绝执行,报“该NPC不支持此命令”。

解决办法:
1. 把全修 NPC 做成“武器店老板/防具店老板”这类本身有修理功能的 NPC,脚本挂在它的 Market_Def 文件里。
2. 或者在脚本里先切换 NPC 上下文(部分引擎支持 SetNpc 或 OpenNpc 武器店老板),再执行 RepairAll。
3. 最稳的做法:全修 NPC 直接用 @S_REPAIR 系列命令,在基本设置里配好特修前执行 @002,让引擎走标准修理流程。

六、改脚本的具体位置

文件在:MirServer\Mir200\Envir\Market_Def\
文件名就是你的 NPC 名字,比如 全修员.txt 或 修理员.txt。
用 Notepad++ 打开(别用记事本,会写 UTF-8 BOM),找到 [@texiu] 这段,按上面的改法调整。

改完不用重启 M2,大部分引擎会热加载 Market_Def 变化;如果没生效,M2 控制台“重新加载 NPC”或重启一下。

七、完整可用版本(兼容写法)


[@全修]
你只要轻轻点击一下,就可以全部特修你身上的所有装备,爽吧?\
本服务每次收费<3>个元宝!\ \
<使用元宝/@texiu> \ \
<返回上页/@main>

[@texiu]
#If
CHECKGAMEGOLD > 2
#Act
GAMEGOLD - 3
#If
RepairItem 衣服
#Act
; 逐部位修,引擎不支持 RepairAll 时用这套
RepairItem 武器
RepairItem 头盔
RepairItem 项链
RepairItem 左手镯
RepairItem 右手镯
RepairItem 左戒指
RepairItem 右戒指
RepairItem 腰带
RepairItem 鞋子
RepairItem 宝石
MessageBox 修理成功!!
goto @main
#Elseact
MessageBox 修理失败,请稍后再试!
goto @main
#Elseact
MessageBox 特修失败!本服务每次收费3元宝
goto @main

如果引擎认 RepairAll,就把那堆 RepairItem 换成单独一行 RepairAll。

八、测试步骤

1. 改完脚本保存,编码 ANSI/GBK。
2. 进游戏点全修 NPC,故意带 0 元宝点一次 → 应弹“收费3元宝”。
3. 充 3 元宝再点 → 元宝扣掉、弹“修理成功”、装备耐久恢复。
4. 如果元宝扣了但装备没修 → RepairAll/部位名不对,或 NPC 不支持修理。
5. 如果什么都不扣也不弹 → 脚本没加载,检查文件名、标签 @texiu 是否对得上链接文字。

九、几个细节

• MessageBox \特修失败 里那个反斜杠 \ 是换行符,没问题,但 MessageBox 后面空格再写内容,别写成 MessageBox\。

• <使用元宝/@texiu> 的链接文字和标签 [@texiu] 必须完全对应,大小写一致。

• 收费提示写“3个元宝”,判断用 > 2,扣 GAMEGOLD - 3,三者要统一。别提示收3,判断却写 > 4,玩家带3元宝时点不动。

• 想做成“普通修理免费、特修收费”,在 #Act 里先 RepairAll,再判断是否耐久=0才扣钱,逻辑更复杂,先把基础版跑通。

脚本改完不红、不扣冤枉钱、装备真修好,才是全修功能正常。别只看弹窗说成功就以为修好了,打开角色面板看耐久有没有恢复才是真相。