当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

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

热度:
先看你现在这段脚本结构,逻辑本身没大毛病:点“使用元宝”→检测元宝是否大于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条件判断。不支持的版本里,#IfRepairAll永远为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-8BOM),找到[@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才扣钱,逻辑更复杂,先把基础版跑通。

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