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

传奇翎风引擎M2报脚本错误怎么改

热度:
清风引擎换翎风引擎后M2狂报脚本错误,本质不是“脚本坏了”,是两家引擎的脚本解析器、命令集、变量规则、NPC触发方式不一样。清风(含一些老GOM/GEE分支)里能跑的@XXX、#IF/#ACT/#ELSEACT、自定义变量、功能命令,到了翎风不一定认;翎风更靠近新GEE/类GOM分支,对格式、空格、变量作用域、触发标签管得更死,老服直接换引擎就像把Win98程序塞进新系统。

先分清报错的三种位置:
1.M2启动时报:读QFunction-0.txt、QuestDiary、Market_Def里某行格式错→脚本加载阶段就炸。
2.进游戏点NPC时报:某个NPC脚本命令不支持→玩家点一下M2红一行。
3.打怪/死亡/登陆/交易时后台红:QFunction或Robe类触发脚本用了老命令→事件触发才炸。

别一上来全删脚本,按下面顺序来。

一、先开M2的脚本校验,别盲改

翎风M2→选项→参数设置→脚本/引擎参数里,找“脚本报错停止/脚本报错忽略/未知命令处理”。
-老服过渡期先把“未知命令”设成记录日志但不中断NPC,能先让服跑起来,再慢慢修。
•别长期开“忽略所有”,不然逻辑错了也不报,后期更难查。

•勾上“脚本错误写Log\ScriptError.txt”,看具体文件名+行号,比看M2控制台红字有用。

二、清风和翎风命令差异,先对这张表

老清风里常见、翎风不认或改名的东西:

•THROW/GOTO老写法→翎风认GOTO@标签,但别写GOTO123这种数字标签。

-MAPMOVE→翎风一般用MAPMOVE地图坐标X坐标Y或MoveTo,参数顺序可能不同。
•GiveItemEx/AddItemEx→翎风部分分支用Give物品数量或AddItem,扩展参数(绑定/时效)写法变了。

-Set<$STR(N)>老字符串变量→翎风更吃<$USERVAR(N)>/自定义变量要先Var类型声明。
•CHECKITEMW/CHECKGOLD老拼法→翎风多认CHECKITEM/CHECKGAMEGOLD/CHECKBAGUA等,金币、元宝、绑定元宝变量名不同。

-EXECUTE里套NPC对话→翎风对#ACT后执行另一段@子程序的作用域更严,跨脚本CALL要放对目录。
•清风某些“变态命令”SetPower、AddMonXxx、OpenShopEx→翎风没这命令就直接报“未知脚本命令”。

最稳做法:把M2报错的行抄出来,去翎风自带QuestCommandList.txt/EngineCommand.txt里搜。搜不到就是引擎不支持,搜到但参数不对就是老脚本写法要改。

三、QuestDiary老脚本批量修点

1.标签必须独立行

@main
#IF
...

别写@main#IF挤一行,翎风解析比清风严。
2.变量引用别带空格
<$STR(1)>和<$STR(1)>在翎风里可能当两个东西。
3.自定义变量先声明
清风里随手<$MYVAR>能用,翎风常在QFunction里要求:

VarMYVARString

或放Variable.ini里配。
4.随机命令
Random10/PlaySound10参数个数变了就报。翎风随机一般用:

#IF
RANDOM10
#ACT
...

别用清风私改的Random(1030)这种类C写法。
5.延时/等待
清风Delay1000翎风可能要DELAY1000或根本不允许在NPC脚本里延时,要扔给定时器/QFunction。
6.发送客户端消息
SENDMSG0你好/SENDMSG6你好通道号含义可能变,翎风有的版本0是系统、有的6是行会,发错不炸但显示怪。
7.打开界面
OpenDiamondOpenShopOpenGuildStore这种清风服二开出来的命令,翎风原版没有,就要么装对应插件,要么改成标准OpenURL/自定义NPC列表。

四、QFunction-0.txt/触发脚本怎么处理

登陆、死亡、杀怪、捡物、交易、穿装备触发,清风二开版常加私有触发名:
•@OnLoginEx

•@KillMonsterPlus

•@PickItemHook

•@EquipItemHook

翎风只认自己那套:
•@OnLogin

•@OnDeath

•@OnKillMonster

•@OnPickupItem

老脚本里@OnLoginEx不会被调用,但如果在QFunction里写了非法命令,M2加载就红。处理法:
1.把QFunction-0.txt备份。
2.新建空QFunction-0.txt,服能起。
3.把老触发逐段粘回来,每次粘一段开一次服,哪段红就是那段用了清风私有命令。
4.私有命令要么删,要么用翎风等价命令重写,要么写成NPC功能让玩家手动点。

五、Market_Def/NPC定义文件

清风NPC文件头:

;武器店
[@Main]
#IF
#ACT
SendMsg...

翎风要求文件名、目录、NPC名、地图坐标、脚本段对得上。常见坑:
•老服Market_Def\绑定元宝商人.txt翎风要放Envir\Market_Def\且M2里NPC列表有这名字。

•脚本里CHECKMAP3地图号在翎风数据库里没配,就报“地图不存在”。

•MONSTER刷怪脚本里清风用;参数:名字地图xy范围数量间隔注释格式,翎风刷怪常走MonGen.txt,Market里再写MonGen参数就错。

六、物品/技能/魔法数据库对不上

脚本里Give火龙剑1,翎风StdItems.db里没“火龙剑”,不会给东西但可能报“物品不存在于数据库”。
先跑一遍:
•StdItems.db比对

•Magic.db比对

•Monster.db比对

清风加的自定义装备、技能、怪物,换翎风后数据库没导过去,脚本全在空引用。

处理:
1.导出清风StdItems/DB里自定义行。
2.按翎风字段映射贴进去(攻击上下限、持久、幸运、特效字段名可能不同)。
3.脚本里物品名严格一致,别“火龙剑”和“火龍剑”混着用。

七、变量和元宝体系最容易炸

清风服常改:
•元宝=GAMEGOLD

•绑定元宝=GAMEPOINT

•金币=GOLD

翎风默认也可能这样,但二开过的翎风把:
•充值币

•赞助点

•转生点

•行会贡献

全做成新变量。老脚本CHECKGOLD100本来查金币,服主以为查元宝,换引擎后变量映射Reset,逻辑全歪,M2还可能因为CHECKGAMEGOLD没开支持而报错。

去翎风M2→游戏参数→货币/变量里把:
•金币

•元宝

•绑定元宝

•点券

•转生点

对应关系拍死,再全局替换老脚本里的GOLD/GAMEGOLD/GAMEPOINT。

八、插件和二开模块别想自动兼容

清风老服如果装过:
•会员系统

•转生扩展

•合成扩展

•跨服

•自动任务

•沙巴克扩展

换翎风后这些DLL/Lua/插件不是同套API,老脚本调PluginCall1001直接未知命令。表现就是:M2启动说“加载插件失败”,点或触发又说“脚本命令X不存在”。

处理:
•先裸翎风+原版脚本跑通

•再一个个加插件

•老二开功能要么找翎风版重做,要么砍掉

别指望“换引擎不换功能”能平稳过渡,传奇引擎换族=重做一遍二开。

九、最快落地流程(照做就行)

1.全量备份:DB、Envir、Map、WIL/WIX、登陆器、M2、插件。
2.翎风干净版先起一个空服,确认M2不红。
3.把老Envir\QuestDiary整个移走,用翎风自带示例QuestDiary起服。
4.老QuestDiary按地图/功能拆成小文件,一次挂一个目录。
5.每挂一个,进游戏点对应NPC、打怪、死亡、登陆,看M2红什么。
6.红行贴到翎风命令表查:不支持就删/换,参数错就按翎风语法改。
7.QFunction同理,空文件起步,逐段加。
8.Market_DefNPC先只留杂货铺、仓库、药店,跑通再补活动NPC。
9.数据库先导原版,再合并清风自定义行,字段对齐再写脚本。
10.货币/变量/转生/会员这些“系统级”先定标准,再全局替换老脚本变量名。

十、常见报错翻译

•Unknownscriptcommand:XXX→翎风没这命令,清风私有。

•Errorinline123ofQuestDiary\XXX.txt→那行格式/命令/变量错。

•Variablenotdeclared→自定义变量没声明。

•Itemnotfound→数据库没这物品。

•Mapnotfound→地图号/MapInfo没导。

•NPCnotfound→Market_Def和M2NPC列表对不上。

•Cannotcall@XXX→标签不存在或跨文件作用域不对。

•QFunctionloaderror→触发脚本有非法命令,别急着开服。

•Stackoverflowinscript→老脚本GOTO死循环,翎风比清风更早崩。

十一、别用“自动转换工具”当终点

网上有“清风转翎风脚本转换器”,最多帮你把明显命令名替换掉,替换完照样红一片,因为:
•参数顺序它不懂

•自定义变量作用域它不懂

•二开插件调用它不懂

•NPC触发时机它不懂

转换器当粗筛可以,别当修完。真修完的标准是:M2起服24小时不红、玩家点全部NPC不红、杀BOSS/死亡/合服/攻沙不红。

十二、实在改不动的老功能

把老清风里“变态合成、自动转生、满级送神装、沙巴克自定义技能”这些二开重活,换成翎风生态里现成模块:
•翎风自带转生

•翎风商城/NPC合成

•翎风任务系统

•翎风行会/沙巴克扩展

老脚本里对应段直接删,用新引擎原生功能重做。玩家不在乎你背后是清风还是翎风,只在乎点NPC不卡、打怪给东西、合服不回档。

换引擎不是“把老服文件塞进新M2”,是拿新引擎当底,把老服的地图、装备、怪物、活动逻辑重新落地一遍。脚本错误只是第一道坎,后面还有数据库字段、登陆器插件、PAK密码、Map格式、WIL版本、网关参数。翎风吃新格式,清风老资源里PAK/WIX/Map也可能要重导,脚本修完如果还红,下一步就该查资源文件和M2插件版本了。

十三、改脚本时的硬规矩

•#IF/#ACT/#ELSEACT/#END缩进可以不管,但顺序不能乱。

•标签@XXX全文件唯一,别两个NPC里都写@main。

•中文标点全换英文:,→,:→:,引号统一英文。

•行尾别带隐藏空格,Notepad++开“显示所有字符”清一遍。

•条件里别写空#IF后直接#ACT又套#IF,翎风解析器比清风挑剔。

•大量GOTO的老脚本,能改循环用WHILE/FOR就改,翎风对深层GOTO栈更敏感。

•玩家输入<$STR(输入)>老写法,翎风常要{输入}或<$INPUT>看版本,输入类NPC最容易崩。

十四、登陆器别忘配套

M2换翎风,登陆器要用翎风配套版;老清风登陆器能进新M2是运气,更多情况是:
•资源列表对不上

•PAK密钥不对

•插件DLL加载失败

•进游戏后点NPC传包格式错,间接让脚本表现异常

所以“M2脚本错误”有时不是脚本真错,是老登陆器把错误格式包发上来,M2解析NPC请求时炸。换引擎就把:登陆器、网关、M2、插件、PAK、Map、DB当一整套换,别只换M2想着脚本自动活。

十五、一句话定位思路

清风换翎风后脚本红,先问自己三句:
•这命令翎风原版有吗?

•这变量/物品/地图在翎风数据库里存在吗?

•这触发标签是清风二开私有,还是翎风原生触发?

三个回答里有一个“不是”,那行就得改或删。老服迁移最忌“原样拷贝”,传奇引擎这东西,换族不重做,红字能刷到你眼睛麻。

裸翎风跑通→老数据对齐→老脚本拆段回归→二开功能能换原生就换→登陆器网关配套→再谈活动NPC和合击/英雄/火龙那些花活。脚本不红只是门票,后面合服、跨服、攻沙、转生、特戒、运九、火龙碎片才是真工作量。
[顶部]