-
CTD
的
log
分析<
/p>
前段时间弃坑了,因为新配的台式没有
HDD
硬盘,
SSD
只有
128G
。安装了
WOW
就
没
多少地方了,不过
WOW
毕竟不能总
玩,老滚还是要玩的,于是我回来玩了。
然后呢
....S
逗让我到教学区装一贴,我说发个
NMM
教程可好?好吧那是开玩笑的,这次
装的技术我自己懂的都不多
,所以加了【误导型教程】。究竟是误导,还是正确的知识呢?
摊手
...
误导开始之前呢,不
...
教程开始之前呢,我要说一些“前置”的内容。
1.
上古卷轴
5
本身是一个
B
社的一个魔幻
RPG
沙盒游戏,原
版就那样,你们都知道的。但
是
B
社给
出了
CK
这个工具,我们可以修改它,让它变成我们希望的样子
。
TESV
是一个程
序,
CK
是一个开发者工具,做
MOD
< br>的过程也就是开发(修改)一个程序(的一部分)的
过程。我一直把做
mod
放在编程范畴,所以我有觉悟。我在修改程序,所以任何错误都是<
/p>
可能发生的,
所以我必须付出一定时间来调试和解决错误。
为什么说这些呢?因为就怕这个
观点
---<
/p>
上古卷轴
5
只是一个游戏,我玩个游戏还
学编程?你一旦有这个观点,就懒得去弄
一些东西了,
遇到问题
也没办法解决了,毕竟你什么都不会,我跟你解释变量
null
,数组溢
出
....
之类的名词,你也
听不懂,对吧。
so
,这个觉悟还是比较重要的。
2.
我不喜欢弄什么订阅才能查看,所以点不点订
阅完全看你心情。
3.
开启
log
文件记录的方法自行百度。
4.
如果你玩
2
分钟,<
/p>
LOG
就刷出了
100K
以上,我只能说,你的存档已经毁的差不多了,
或者
m
od
冲突非常严重。那么多的
error
,够你当小说看了,还分析个球。
5.
如果你很随便,喜欢玩
mod
就装,不喜欢就卸掉,或者不
喜欢看
mod
说明,检查兼容
性等等<
/p>
.....
那么你的老滚之路会非常艰难。
那么,开始吧。我不会一次写完的,而且这个教程也会随着我对
papyrus
的了解深入,慢
慢改变,所以这个教程会很
坑的
......
看之前也要有心理准备,表喷我。
================================
=====================
==================
========================
1.
根
据
LOG
内容出现的时间,我把
LOG
内容分为三种。
运行游戏,读档,出
现的
LOG
:这个所谓的档,最好是在吸烟室,并且保证吸烟室
只有你
自己,没有其他
NPC
,尸体,
以及多余的物品。这部分
LOG
内容中的
ERROR
,建议大家
弄懂它们的意思。如果明确知道这些<
/p>
error
是无所谓的,或者有所谓,但是你可以无视它,
那么就可以不解决,放着它。如果明确知道它会造成未来的某个严重问题,建议立即解决。
p>
游戏过程中,不会引起
CTD
的
LOG
:这些
log<
/p>
多造成逻辑问题。比如一个给冰怨灵绑定摇
尾巴动作的函数找不到
object
,只会造成冰怨灵没摇尾巴,而不能
ctd
。这些
error
也
是一
样,如果你觉得它无所谓,那么不解决也是可以的。
p>
引起
CTD
的
LO
G
:
这些
error
< br>出现在
的后部,
也就是你发生<
/p>
CTD
时间戳的
地方。在这里必须多说几
句,
ctd
的原因有三种:文件缺失或者错误,当前游戏环境超
过你
的计算机处理能力,脚本严重错误。而你
ctd
之后查看
log
,
ctd
时间戳上的脚本错误,不
一定是这次
c
td
的罪魁祸首,
因为还可能是第二种原因引起的
ctd....
分辨的方法就是多次试
验,
100%
跳的就是脚本原因。如果知道是脚本原因了,就要排查这个错误
。时刻记住,找
到发生错误的
mod
,
就卸掉它,这是不可取的,至于原因,我后面会说,当然也可能忘掉
了
< br>....
warning
:警告。如果你不蛋疼,警告
可以无视,因为它任何时候都不会引起
ctd
。但是你
分析
error
的时候可能会借鉴一下这些警告
。
2.
如果
CTD
了,
并且你已经确定某一条
er
ror
或者某一堆
error
是引起这
次
ctd
的原因,
那
< br>么怎么办呢?
我随便找个脚本错误的例子
....
[11/02/2014 - 12:21:22AM] Error:
(000C6984): cannot find variable named
fToggleBlend.
stack:
[
(000C6984)].mationVariableFloat() -
[
(000C6984)].()
-
Line
38
[11/02/2014 - 12:21:22AM]
:时间戳,你可以通过
ctd
发生的时
间找到对应的脚本错误区
域。
Error: (000C6984): cannot find variable
named fToggleBlend.
:错误,括号里如果不
是
00
或者
uskp
,
smpc
的序号,那么可以明确知道是哪个
mod
出现的错误。如果是
00
或者
uskp
,
smpc
p>
的错误,就比较蛋疼,你不知道哪个
mod
出问题了。就算你知道哪个
mod
出问
题,直接删掉是完全不可取的,因为删
mod
会坏档呀,好吧也
可以用
savetool
或者
pdt<
/p>
清
一下存档,但是不一定能完全清理干净
....
后面是说究竟发生什么错误了,比如不能找到
obje
ct
,
object
的类型不对呀等等
等
.....
[ (000C698
4)].()
:第一段是
object
的
form ID
,你可
以在
CK
,
EDIT
等软件
里找到它。第二段是发生错误的脚本,第三段是错误的函数。总结一
下就是触发了一个脚
本,但是对着某
object
做后面函数的时候出错了
...
-
:
psc
是脚本文件。某些
mod
的脚本在
bsa
文
件里,有
些是散装的。
line
是行,那个函数就在
psc
的第几行。但是吧,某些
mod
只有
pex
文件,没有
psc..
..
这就是作者不给源码,怕别人抄。反编译之后
line
p>
对对不上了
...
3.
知道了
error
的意思,然后
呢?
首先根据
object
,在
ck
里找到那个触发脚本的入口。因为脚本
一定是绑在某个入口上的,
比如绑在武器上,你拔出这个武器,就触发
< br>..
等等等
...
你必须找到这
个入口,然后看这个入
口是什么,
npc
啊,武器啊,还是
lvlnpc
啊
.
..
等等
....
-
-
-
-
-
-
-
-
-
上一篇:电子显微分析总结
下一篇:Nxlog日志采集配置手册