Mugen主程序报错汇总
加载初始场景报错
报错关键字:dojo.def 或 stage0.def
原因:程序以debug模式运行且调用了debug场景
解决方法:1、在mugen.cfg文件内找到[Debug]下的StartStage =,将场景改为一个存在的场景def文件名。2、或者将一个场景的def文件名改为报错时提示的场景名
人物版本过老
报错关键字:Character mugenversion is older than this version of M.U.G.E.N.
原因:1、人物代码中使用了win版的代码,但使用了1.0或1.1以上的主程序运行。2、代码格式错误
解决方法:1、换个高版本的主程序。2、根据图中报错的详细信息,将人物代码修正,但前提是你懂代码。
SFF文件过大
报错关键字:Can't load xxxxx.sff
某个角色对应的sff文件无法载入
原因:角色sff文件过大。程序读取过多大容量人物会导致内存过大,从而无法运行。详细见https://qxmugen.com/article/13138.html
解决方法:1、使用该人物之前重新启动主程序。2、将sff文件中的图片替换为小尺寸的图。3、下载并运行人物占用内存过大崩溃补丁,下载地址https://qxmugen.com/tools/10027
场景载入错误
报错关键字:BG error reading
原因:该战斗场景的def文件中,指定sff的路径用的是“/”,这会导致一些电脑载入该场景时报错。
解决方法:去场景文件夹里打开该场景的def文件,将指定sff的路径中所有的“/”改为“\”
凶恶代码版本不兼容
报错关键字:Invalid format specifier in "%n"
原因:人物代码中含%n、%f的都是作者利用win版主程序的漏洞而写的凶恶向代码,使人物拥有非常规的能力,1.0和1.1主程序修复了这个漏洞,因此这类人物不能在win版以上的主程序运行。
解决方法:使用win版程序运行该人物
非法控制器
关键语句:not a valid elem type
表示所使用的控制器名称不对——"playsn"应改为"playsnd"
招式指令过多
关键语句:Player has too many commands. Only 128 unique commands labels allowed.
表示角色在cmd中的招式指令超过了128个,128为一个角色的上限数量
数据类型错误
关键语句:Type mismatch detected
表示使用了该字段不支持的类型,例如给整型变量赋予浮点值
系统文件读取错误
报错关键字:Error loading system data
图中为读取data/mugen1下的system.def文件出错,出错原因是上一行的system.sff无法读取
原因:1、system.def中指向的system.sff文件不存在。2、system.sff文件的版本太高,但当前运行的主程序是老版(通常是win版)
特殊的错误信息
WinMugen代码中1行最多256个字符,超过这个上限的字符会被忽视或导致主程序报错
RCMugen(mugen1.0和mugen1.1)中这个限制被解除。
一个StateDef读取超过了2500次
报错关键字:State machine stuck in loop (stopped after [StateNo] for [name])
Check your states for infinite ChangeState loops.
例图:statedef 200在循环读取2500次后停住了,请检查是否有ChangeState无限循环
某个StateDef的控制器超过了512个
报错关键字:state [StateNo] can only have max of 512 controllers
Statedef 200最多只能拥有512个控制器,即最多只能写512个 type = ×××
异常表达式
报错关键字:Player [name] ([PlayerID]) in state [StateNo]: malformed expression
与数据类型错误类似,不同点在于是出现在:=赋值中,亦或是计算中的数据类型错误
例1——var(20):=1.2——给整型变量赋予浮点数报错
例2——gamewidth%320——gamewidth默认为浮点数,直接参与取余运算报错
Assert failure簡易一覧
エラーメッセージ | 原因 |
---|---|
Assert failure in array line 100 | animelemtime(0) >= 0 使用 |
Assert failure in array line 110 | 指定了不存在的动画号码 |
Assert failure in spr-lib.c line 437 | 詳細不明 Assert failure in array.c line 437[lunaの倉庫] Assert failure in array.c line 437[虹格な海底宝物庫] Assert failure in array.c line 437続き[lunaの倉庫] |
Assert failure in spr-lib.c line 516 | 詳細不明 |
Assert failure in spr-lib.c line 560 | assert failure in spr-lib.c line 560の正体[lunaの倉庫] win版特有bug,貌似和跟暂停和helper啥的有关系 |
Assert failure in spr-lib.c line 601 | 詳細不明 |
Assert failure in charsel.c line 3162 | 在mugen.cfg设置了AI.RandomColor = 1 但角色的def中没有写上Pal.Defaults 这个错误一般出现在街机模式(arcades)和生存模式(survival) |
主程序死机
同时取得多个target后的重定向使用死机(TargetFacing、TargetDrop除外)
方案1:target重定向值使用特定的变量存储
方案2:trigger中写上NumTarget = 1的条件,当同时取得多个target时不运行
方案3:当同时取得多个target时使用TargetDrop丢弃其余目标,保存特定目标
helper自毁后,helper或Explod导致的死机。
原因:DestroySelf实行后,写在它之后的代码也继续实行。
方案1:尽量将DestroySelf写在一个状态组StateDef的最下面。
方案2:DestroySelf以后的代码使用PlayerIDExist(ID)或其他重定向的条件来区分运行的对象。
使用HitDef的snap参数时,Shift + F4重新载入对战时死机。
方案:不推荐使用该参数,建议使用TargetBind
[StateDef 52] [StateDef 140]等样式的2500循环的死机。
自動ステート移動(読み込み)の条件 | 読み込み先StateDef | ESC F12 | ループ中の PrevStateNo | timeが リセット |
---|---|---|---|---|
Physics = A && Pos y >= 0 && Vel y >= 0 | 52 | 無効 | 52 | ? |
StateNo = 140 && StateType = S,C,A && 経過Time >= 「その時点でのAnimの総表示時間」以上 | StateTypeに応じて0,11,51 | 有効 | 140 | される |
StateNo = 140 && StateType=L && 経過Time >= 「その時点でのAnimの総表示時間」以上 | 140 | 無効 | 140に来る前の StateNo | されない |
方案1:角色物理状态为空中(Physics = A)且竖直位置在地面及以下(pos y >= 0)且下落速度大于等于零(vel y >= 0)满足的时候,转入[statedef 52]
方案2:先从读取140移动时的StateType决定的,为站立S转入[statedef 0],为下蹲C转入[statedef 11],为空中A转入[statedef 51],条件中还要写上time>=当时显示的anim时间及以上
方案3:与方案2比较相似,不同点在于上一个状态号不为140
评论区部分报错解答
Library error message: Died parsing ifelse(Stagevar(Info.name)!="Boss",1,7)
Error detected.
Trigger not valid for mugenversion of character: Stagevar
Error parsing PlaySnd
Error parsing [State 5000, PlaySnd]
Error in [Statedef 5105]
Error in data/common1.cns:1538
方案:将【官方】主程序data中的common1.cns文件复制粘贴进人物包中
OxO...failed.
方案:打开mugen.cfg,改变渲染模式RenderMode,不使用OpenGL
Can't access [Info]
Error loading chars/ff3_0/ff3_0.def
Error loading p1
方案:勿使用FF3启动主程序
场景报错,在文件里改stage的sff文件,,怎么改啊,,我用记事本打开的,都是乱码啊,我就直接用替换把/都改成了\结果现在依旧进不去啊,
@音梦兰凌 sff文件必须用ff工具改,另外报错一般不会是sff文件本身问题