TIP提示
做地图时一定要经常备份吖

Ctrl
拖一份就行了。值得注意的是,并非地图崩溃弹框才叫出错,其实所有未按预期发生的情况,都可视为 Bug ,比如,本应出的一个小队没有出;地形错误;莫名卡关等等……本文将先后讲述崩溃弹框与普通 Bug 的处理。
地图崩溃的处理
常见地图崩溃原因:
- 刷兵触发忘记填小队
- 允许禁止触发忘记填触发
- 使用“导入地图”时导入了乱七八糟的代码和关联
- 同一特遣部队内填写了两个相同的单位
- 地图中摆放的建筑有重叠,当其被摧毁,就会崩溃
- 若添加了 ini,先检查 ini
- 蜘蛛上了飞机没能出来,再存档读档就会弹框
- 在任意输入框中键入了英文逗号等号分号(它们是地图内部代码结构中的关键字符),破坏了地图内部数据
- 使用文本方式打开地图并修改时使用了错误的文件编码(应为 GB2312),而地图中又有中文
如果仅仅是地图编辑器打不开地图,尝试
- 把地图文件移到别处
- 老老实实从文件-打开去打开
- 考虑编辑器读取的游戏目录是否与地图应该运行的不一致(ini 不匹配导致出错),可能要去地图该运行的那个目录重新注册游戏
EIP 表
游戏每次报错便会在其目录(使用 Ares 时,在 Debug 文件夹,崩溃时经你同意才会生成)生成一份except.txt
,打开可见EIP: XXX
,此为错误代码。EIP 表是一些常见错误代码的收集,在代码词典包中可以找到。不过它主要用来查找 ini 代码错误,往往无法查出触发错误。另附一些错误补充:
`EIP 006CF3DD`(类别:AI)
AI得到仇恨以后,试图生产一个AI触发所属方为<all>、作战小队所属方不是自己作战方的小队。
一般来说这个小队能够成功的生产,也能够正常的进攻。但是即使AI生产不出来,即便是做过了尝试,也算。在此之后存档,读档的时候就会产生此IE。
或
驱逐舰反潜机的射程是无限,如果AI用这架小飞机飞过整个地图来打我的潜艇,一存档一读档就会弹框,会导致一些AI使用驱逐舰反潜的任务读档弹框。
`EIP 00000005-00000007 `表示单次寻路后,计算出实际所需行走的距离超过了游戏规定的单次自动寻路长度的上限。
由于执行Attack脚本指令时,计算自身执行该脚本所需的移动路径超出西木规定的上限,因此游戏报错。如果对自己的单位下达了需要移动这么长路径的指令,无论玩家还是AI都会弹框。此处西木规定的上限无具体测量,妖妖酱个人认为可能是1024.
解决方法:地图不要做得太大太绕,单次移动脚本必须限制移动路径长度
0065D99F:小队内存在重复单位时,会导致本错误
00529A14:CSF问题 ※读取形如"a,b"这样的两个整数的时候没读取到而且找不到默认值
007C9B92:数值无法读取,或者基地节点问题。以文本方式打开地图,看[Actions]触发结果中,第一个数字[结果个数],是否与实际结果个数一致,以及格式是否正确。若不一致,也许是编辑过程中程序错乱了。且每行内容应少于512字符。或者查看【所属方】中,基地节点数目是否与真实数目一致。
006E2449:42号触发写错参数
补救方法
手动查错见下节。如果地图崩溃问题实在无法解决,而你又没有备份,可以尝试挽救地形
先记下出错地图的地图大小和类型,再编辑→复制整张地图,然后新建一份同样大小和类型的地图,再编辑→居中粘贴,(^o^)/大功告成!如果你会文本方式打开地图可能可以挽回更多东西。为何不选择【导入一张已存在的地图或BMP图片】?因为很多坏图这样之后仍然出错,而且导入的话连单位的关联信息以及内置ini都导入了,不可控
一般查错流程
手动
当你发现任务流程中出现意料之外的情况时,请回忆最近对这部分所做的改动,并检查各项数值是否正确。如果无法定位问题原因(一般是崩溃弹框时),可以使用排除法,先禁用/删除一部分触发,来看看问题是否还会出现。
一个比较简单的调试方法是,给关键触发的结果加上一条结果11 显示文本
,这样来看观察此触发是否执行了。也可以用计时器定位出问题的触发,比如恰好在核弹倒计时剩3分钟时弹框了,那么有可能是流逝时间 7*60=420
游戏秒时的某个触发有问题。
如果遇到疑难杂症(一般是小队相关)或者复杂的触发组,可以将其抽离出来,在一张单独的地图中专门测试。或是求助他人。
辅助工具
地图测试查错是有很多辅助工具的。
比如,在小地图上绘制脚本轨迹,检测地图物体重叠,地图触发网络生成器,用于AI和地图debug的实时单位信息显示,见其他工具
另外,新版的 FA2SP 应该也能检查出一些错误(在保存地图时)。
有待补充