首先对Demo文件进行一个简要的介绍:
在一个HL的Demo文件中中,它会存储下列信息:
HL的MOD类型(CS的就对应cstrike)
地图
HL的版本信息
Demo的格式:是否第一人称视角还是HLTV
Demo录制时的分辨率
录制Demo的服务器的名称及CFG信息
玩家的部分CFG信息
地图的相关信息及其包括校验码
Demo中用到的模型及其校验码
Demo的播放时间长度
游戏信息:包括对话、成绩等
其他一些附加信息
CS在加载Demo进行播放时,会从Demo文件中提取上述信息,并自动修改CFG。这也就是为什么有的人在播放完Demo后,鼠标不能上下移动的原因了。因为它把用鼠标控制视野给关了,呵呵。
有了上述介绍,那么很好理解在以下一些情况下会发生Demo无法播放的问题:
用于播放的CS版本与录制Demo的版本不一致,比如用CS1.5去播放CS1.6的Demo;
用于播放的CS的模型文件、地图文件与录制Demo时的不一致;
Demo文件本身损坏,这里需要注意一点就是我们自己在录制第一人称Demo时,遇到地图切换时应当输入stop停止,否则这样录下的Demo很少能播放。
用于播放的CS的client.dll与录制Demo的CS的不一致或不兼容。
一些人喜欢把空格键绑定为蹲跳,而在这种情况下播放HLTV格式的Demo时,可能会发生VC++运行库错误,或者无法显示玩家的ID等等。当然这样的绑定并不是导致这类错误的唯一原因,CS没有升级也是主要原因之一。所以建议经常升级,并在播放HLTV类Demo时先把键位设置恢复成默认的设置。
由于CS本身的一些Bug也会导致Demo播放的问题:
用早期的CS1.5版本录制的Demo无法使用ViewDemo模式。
CS1.6的第一人称Demo无法显示成绩单。(这只有在Demo刚录制完时可以显示,如果你退出了CS1.6,下次启动CS播放时就看不到了)
部分版本的CS1.6Demo会被误认为CS1.5的,这是早期CS1.6的问题,现在基本没有了。
综上所述,花样繁多的CS版本是导致Demo无法播放的最主要原因。如果全世界的CSer都用同一版本的CS,那多好啊