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

传奇天骥V1185免费版脱机脚本两处坑怎么填

热度:
第一个问题:激活登陆对话框只在首次出现,循环里再执行就报“所选内容不存在”。
根因不是你命令写错,是脱机脚本把“界面元素”当成固定流程走了。天骥这类挂的对话框、按钮、菜单项,本质是“当前界面存在才可选”,不存在时还发SelectOption/ClickItem就会抛异常,脚本引擎默认遇到界面对象丢失就中断。

解决办法就一条:别让这条命令无条件执行,改成“先判断对话框在不在,再点”。

天骥脚本里一般用:

#if
DialogExist'激活登陆'
#act
SelectOption'激活登陆'
#endif

或者用CheckDlg/HasWindow/WaitDlg这类挂端提供的判断符(V1185免费版不同打包者改过命令名,有的是IfWin、CheckUI、WaitText)。核心是:有这个界面才点,没有就跳过,不碰那条选择命令。

如果挂端没现成界面判断命令,就用“超时跳过”写法:

SelectOption'激活登陆'1500

表示最多等1.5秒,界面没出来就不点;但有些免费版SelectOption不带超时参数,那就包一层:

#loop
#if
DlgTextLike'*激活登陆*'
#act
SelectOption'激活登陆'
break
#else
delay500
gotoloop

再配最大循环次数,超了也break。这样首次登陆点了,后面循环里DlgTextLike不匹配,自然不走选择命令,就不会报“所选内容不存在”。

千万别写:

SelectOption'激活登陆'
delay1000
SelectOption'激活登陆'

第二次没对话框,第二条直接炸。

还有个细节:天骥免费版“登陆流程”和“主循环”要拆开。
正确结构是:
1.登录前脚本:等角色选择→进游戏→等主界面→如果看到激活登陆就点→进入主循环。
2.主循环:打怪/捡物/回城/特修,里面完全不包含SelectOption'激活登陆'。
很多人把“首次登陆处理”写进主循环顶部,就会每次都试一次,免费版引擎又不忽略失效界面,就卡死。用子程序/标签分开:

@gotoLoginOnce
@labelMainLoop
...
@labelLoginOnce
if激活登陆存在then点
return

LoginOnce只在启动时跑一次,主循环永不调它。

第二个问题:特修写@002再@S_REPAIR,语句“那么特修[衣服]”提示NPC不支持,但超时后又修好了。
这是天骥免费版和M2脚本对“自定义命令/功能命令”解析顺序的冲突。

你基本设置里填:

特修前执行:@002
特修命令:@S_REPAIR

挂端会把“那么特修[衣服]”翻译成:
先给NPC发@002,再发“特修衣服”或@S_REPAIR参数。
但M2端NPC脚本里,@002可能是个触发标记(比如设置变量、打开子窗口、切换修理模式),并不是“马上修”;紧接着挂端发“特修[衣服]”这种人类语句,M2不认,回你“该NPC不支持这条命令”。等语句超时,挂端又按兜底逻辑重发了一遍标准@S_REPAIR衣服/部位,这时候NPC已经处在“@002之后的上下文”里,就能修了。

现象翻译:
•第一次发:@002+那么特修[衣服]→M2不认“那么特修[衣服]”这句话→报错

•超时重发:@002状态还在→发标准S_REPAIR协议/命令→NPC修好

修法有三档:

1)别在挂端写“那么特修[衣服]”这种中文指令
天骥里特修不要用自然语言语句,用挂端原生命令:

RepairItem衣服



S_REPAIR衣服

基本设置里“特修前执行@002”可以留着,但主脚本里别写“那么特修[衣服]”,让挂端自己按“前执命令+原生修理命令”拼包。

2)确认@002是不是必须
很多服@002是“进入特殊修理界面”的触发,有的M2其实只要发:

@S_REPAIR

就能全修/按部位修。你先手动在游戏里点NPC,看聊天框回的其实是:

@002
@S_REPAIR衣服

还是只发@S_REPAIR。如果手动点衣服特修,M2日志里根本没有@002,那你基本设置里填@002就是画蛇添足,删掉就不报“不支持”。

3)用延迟拆开两条命令
免费版常把“前执行”和“主命令”发得太快,NPC脚本还没把@002的变量写完,主命令就来了。改成:

SendLine@002
delay300
RepairItem衣服
delay300

别用“那么特修[衣服]”这种挂端翻译句。delay300~600看服,火龙/合击/英雄版NPC脚本重一点就500。

还有特修部位名要对:
衣服、武器、头盔、项链、左手镯、右手镯、左戒指、右戒指、腰带、鞋子、宝石——有的M2认“衣服”,有的认“身着”“盔甲”;天骥内部名可能是Armor/Dress。你手动特修衣服成功一次,开M2的NPC日志或挂端“通讯监视”,看实际发出来的是:

#EXECUTES_REPAIRArmor

还是

#EXECUTE那么特修[衣服]

前者能修,后者被M2当脏字符串。

顺带把“超时却又修了”的机制说清:
天骥免费版有“命令失败重试/超时兜底”。首次发错→M2回错→挂端记失败→等超时→按内部默认修理协议再发一次→这次不发中文“那么特修[衣服]”,发的是底层S_REPAIR→修好。所以你看到“先报错再修好”,不是NPC抽风,是挂端第一次翻译烂、第二次用底裤命令救场。

顺手给个能用的特修段(伪天骥语法,按你挂端命令名改):

#if
需要修理(衣服)
#act
OpenNpc土城武器店老板
delay400
SendLine@002
delay500
RepairItem衣服
delay500
SendLine@S_REPAIR
delay400
CloseNpc
#endif

别写“那么特修[衣服]”,别把中文指令当M2命令。

两个问题的共同本质:
天骥V1185免费版脚本引擎“不自动忽略失效界面、不自动翻译中文修理指令”。你得当它笨:界面在才点,界面不在跳过;NPC只吃M2认的@命令/原生修理命令,不吃挂端自己拼出来的“那么xxx[yyy]”人话。

登陆激活框用“存在才执行”解决;
特修用“前执行@002+原生Repair/S_REPAIR+延时”解决,别碰“那么特修[部位]”这种挂端文言。

多开情况下还要注意:免费版有时全局变量和角色变量混用,LoginOnce标记要用角色名做键,比如LoginDone[<角色名>],不然A号登过激活框,B号也被脚本认为“已经点过了”,结果新号不点激活直接卡主界面。特修也是,当前NPC名要用<NpcName>变量拼,别写死“土城武器店老板”,跑去做衣服特修却对着杂货铺发@002,一样报不支持。

如果挂端支持#try/#catch或IgnoreError,把可疑命令包起来:

#try
SelectOption'激活登陆'
#catch
delay200


#try
那么特修[衣服]
#catch
RepairItem衣服

但免费版很多没真异常捕获,写了也当注释。这种就别依赖捕获,老老实实先判断再执行。

最后提醒一句:V1185免费版不同发布者改过命令集,有人把SelectOption叫ClickMenu,把RepairItem叫FixEquip,把DlgTextLike叫CheckDlgText。你对着自己这份挂端里的“命令帮助/脚本例子”对一遍名字,比网上抄通用天骥语法管用。命令名不对,逻辑再对也白跑。

登陆循环卡死、特修假报错,基本都出在“把一次性界面当常驻界面、把挂端文言当M2命令”这两件事上。改完这两处,脚本就能从“登进来跑五分钟停”变成“挂一晚上不用人看”。
[顶部]