分享

圣安地列斯GTASA详细解析文件

 千古恨三 2015-11-17

这是与前面相比更为详细的解析教程,我尝试着努力扩展这些内容,解释纯手打..
据说本帖理解对某些人有难度,建议大家遇到一些代码类的直接无视即可,那是给需要的人的,单纯想了解文件用途的朋友只需要看文件后面的蓝字就好啦\(^o^)/~


| anim  动画与地图链接文件
|  |- anim.img一些动作文件的归档(ps:归档即img),如购物动作,XX动作,游泳动作等等
|  |- cuts.img同上,还用以存放其附带的dat文件  .cut的文件是第一被加载的,它包含重要数据的过场动画像它的偏移量和加载模型等等东西,其TEXT的格式为

text
starttime, length, gxt
end



MODELS的格式为

model
, name, animation
end



....
更多格式参见gtamodding
| \- ped.ifp    CJ平时的动作文件,比如一些跑步姿势等都在这里面
| audio  
|  | CONFIG 配置
|  |  |- AudioEventHistory.txt 音频历史记录,用于记录你的播放历史,没看出有什么用,大概是为统计准备的吧
|  |  |- BankLkup.dat
|  |  |- BankSlot.dat
|  |  |- EventVol.dat
|  |  |- PakFiles.dat
|  |  |- StrmPaks.dat
|  |  \- TrakLkup.dat
|  | SFX类似的IMG存档中,包含sfx.sdt和sfx.raw的归档。目录中的每个条目的大小为24字节,内含如放屁声,打呼声等等
|  |  |- FEET
|  |  |- GENRL
|  |  |- PAIN_A
|  |  |- SCRIPT
|  |  |- SPC_EA
|  |  |- SPC_FA
|  |  |- SPC_GA
|  |  |- SPC_NA
|  |  \- SPC_PA
|  \ streams音频流文件,圣安地列斯里面音频的处理不同于VC和III,它是在磁盘上的数据流进行编码,所以不能直接读出或写入。幸运的是,编码算法是一个非常简单的
下面是一个简单的C + +算法的编码(取自圣安地列斯音频工具包的源代码)

void stream_encode(int8_t *buff, const size_t size, int &index)
{  
for (size_t i = 0; i < size; ++i)   
{    
   buff[i] ^= encode_key[index];      
  index = (index + 1) & 15;  
}
    return;

}



|     |-AA
|     |-ADVERTS
|     |-AMBIENCE
|     |-BEATS
|     |-CH
|     |-CO
|     |-CR
|     |-CUTSCENE
|     |-DS
|     |-HC
|     |-MH
|     |-MR
|     |-NJ
|     |-RE
|     |-RG
|     \-TK
| data 数据文件
|  | Decision包含人物事件等等文件    
|  | Icons图标文件
|  |  |- app.ico
|  |  |- bin.ico
|  |  |- saicon.ICN
|  |  |- saicon2.ICN
|  |  \- saicon3.ICN
|  | maps地图文件,其中包含3个城市和乡村等的地图碰撞文件等  
|  |  | generic
|  |  | interior
|  |  | LA
|  |  | leveldes
|  |  | SF
|  |  | vega
|  |  \-veh_mods
|  | Paths  
|  |  |-train.dat    火车(- -)路径数据文件,看得出来R星用一个文件整合了gta3中的train.dat和train2.dat的内容

|  | \- carrec.img  3R文件存放地  本文件用以储存RRR后缀的文件,从carrec001.rrr到carre834.rrr,包含了制动踏板力等很多数据,每个RRR文件没有头,只有一个二进制数据,各长为32个字节的结构是一组,所述的单独的路径点    
|  | script脚本
|  |  |-main.scm游戏任务脚本文件,它的结构首先是定义一些物品,然后采用多线程触发性执行脚本(意思就是当你做了一件事情,达到了脚本开始要求的时候才会继续下面的任务,比如一个任务规定你必须步行进入一个区域才能触发任务,倘若你使用自行车就不能触发任务,这样就有效的防止了一些未知BUG的发生),合理分配了内存空间,使任务状态和普通状态不冲突    
|  |  \-script.img逆天的R型居然用来储存一些脚本文件,如脱衣舞厅的一些舞者动作、单独跳舞等脚本,我想可能是与任务直系而通常不用才整合在脚本归档了的吧...其实我也不解这里面的很多文件脚本和main.scm是一样的?- -名字不同而已
根据gm的解释是这是R星废弃的文件,在原始的游戏中他们不会出现,但他们可以用于修改,比如PatrickW和Dutchy3010弄的DYOM(design your own mission)就是使用这个的一个杰出作品
|  |- animgrp.dat行走动作组数据文件,包含预定义的动画序列
|  |- animviewer.dat同上,用以存放一些IDE路径
|  |- ar_stats.dat武器统计信息记录
|  |- AudioEvents.txt音频播放世界记录
|  |- carcols.dat 汽车颜色相关的所有数据,包含调色板等等,其文件的基本结构是  

# a comment!
COL
...
end

CAR
...
end

CAR4
...
end



其中还有一个car3,不过仅于gta4,在gtasa中只有car和car4
|  |- cargrp.dat定义了开此车的人的类型,如赛车手只能开赛车一样
|  |- carmods.dat定义了一些游戏规则中的车辆调整能力,汽车改装的设置文件被分成三个不同的部分。它能够修改汽车从而有不同程度的影响。就像里面的项目定义或物品放置文件的部分确定一个唯一字符串,并终止关键字结束。
|  |- clothes.dat服装数据文件
|  |- default.dat在这个文件中的所有信息还可以被转化的gta.dat文件,但该文件不能被删除,因为游戏早就定义了它的存在,它的位置不能改变
|  |- default.ide
|  |- fonts.dat字体数据
|  |- furnitur.dat室内家具数据这个文件是未使用的,可以留空,但它不能被删除,它最初计划用于自动存储游戏室内家具的信息,但是该文件和内部模型/碰撞文件所使用的游戏引擎和其他所需文件丢失。
|  |- gridref.dat传说中的导弹跟踪系统?!
|  |- gta.dat定义IDE IPL IMG ZON的加载,如见,在第一条就已经说明了先加载ide项目定义文件然后再加载ipl文件,传说中的合并地图其实就是在此文件里面加上一句加载另一个文件的句子,使其不冲突即可- -

  1. IMG DATA\PATHS\CARREC.IMG
  2. IMG DATA\SCRIPT\SCRIPT.IMG
  3. IMG MODELS\CUTSCENE.IMG

上述的代码就是定义一些次要归档的加载
|  |- gta_quick.dat加载路径
|  |- handling.cfg武器各项参数文件作者Bill Henderson (一下子就屌了)
|  |- info.zon
|  |- main.sc 调试脚本,用处未知
|  |- map.zon定义游戏区域的划分
|  |- melee.dat肉搏数据
|  |- numplate.dat  (貌似是一替代品)

; Alternative pallettes for carplate charsets.
;
; Palettes here are saved in PaintshopPro7's JASC-palette format (*.PAL)
; (menu "Colors" -> "Save Palette...").
; Paste only colors here - skip palette header (3 first lines of *.PAL file: "JASC-PAL 0100 16...", etc.).



|  |- object.dat  定义动态对象的其他对象信息,包含了物体的碰撞效果,可断裂部分等数据
|  |- ped.dat行人类型  
|  |- pedgrp.dat  32人定义为一个组,包含每个组的列表
|  |- peds.ide它是用来定义字符和行人,及它们的一些属性
|  |- pedstats.dat行人统计
|  |- plants.dat 植物信息,包括贴图RGBA等
|  |- polydensity.dat ??
|  |- popcycle.dat用于控制各个时间段各个地区刷出NPC的密集度
|  |- procobj.dat游戏表面数据
|  |- shopping.dat游戏中购买东西的价钱等数据
|  |- statdisp.dat 统计信息数据记录文件
|  |- surface.dat游戏表面数据,路面潮湿度宽松等东西
|  |- surfaud.dat游戏表面数据,定义路面有草金属等等
|  |- surfinfo.dat游戏表面数据,粘连摩擦等等系数
|  |- timecyc.dat控制天气和游戏的外观
|  |- timecycp.dat同上,光影党比我清楚
|  |- txdcut.ide
|  |- vehicle.ide定义车辆和一些它们的属性
|  |- water.dat水域数据,定义水域的位置大小等等
|  |- water1.dat同上
|  \- weapon.dat武器参数文件,在这里是采用近战武器和枪械这样大的分类,然后进行小分类
| CLEO  圣安地列斯游戏扩展脚本,原版没有,需自行下载  
|  |- CLEO_TEXT  fxt文本存放的文件
|  |-racal.cs   cleo script脚本文件,就是所谓的*.cs文件,作为一个插件的形式可以通过调用OPCODES实现很多功能如

  1. chdir
  2. 0A99: chdir 0
  3. 这句话是设置当前目录,通常情况下为默认
  4. 文件操作
  5. 文件操作是cleo4中新加入的op,它允许用户使用脚本进行一些文件(主要是ini)的操作,就如下面
  6. 0A9A: $hFILE = openfile "settings.ini" mode 0x72 // IF and SET
  7. 表示打开settings.ing配置文件并读取和写入,返回false,否则true。
  8. 各个0x00:
  9. 3 – file open mode: 文件打开方式(不难看出,二进制和文本文件二选一)
  10. 0x6272 – opens binary file for reading 打开并读取二进制文件
  11. 0x72 – opens text file for reading打开并读取文本文件
  12. 0x6277 – opens binary file for writing打开并修改二进制文件
  13. 0x77 – opens text file for reading打开并修改文本文件


racal.scm  名为racal的mission cleo script
racal.cm   名为racal的cleo mission
racal.s      *.s文件
|  |-mp3 默认cleo中调用到额mp3存放地址
|  \-plugins插件,你可以下载CLEO插件到此文件,如外部记录op等插件
| models 模型文件库
|  | coll人物汽车武器的碰撞文件,没有这个就可以穿透无压力了,不过...  
|  | generic一些杂物,车轮模型及贴图等          
|  | grass草
|  | txd贴图
|  |- cutscene.img过场动画文件,圣安地列斯的过场动画使用main.scm加载,但是过场动画的相机不会随脚本而动,因此使用这个文件储存外部所需文件,其中就有传说中的fam4.dff和fam4.txd
|  |- effects.fxp 粒子效果数据
|  |- effectsPC.txd粒子效果贴图
|  |- fonts.txd字体贴图
|  |- fronten_pc.txd 电脑指针和移动图
|  |- fronten1.txd电台LOGO贴图
|  |- fronten2.txd游戏主菜单背景贴图
|  |- fronten3.txd同上
|  |- gta_int.img厨房,卧室,照片壁画等模型和贴图
|  |- gta3.img  GTASA的车辆人物建筑武器动作模型等等      
|  |- hud.txd 如命,雷达贴图        
|  |- misc.txd轮胎贴图,可见R星的高明之处,只用了几个车辆轮胎贴图就解决了几百辆车的问题,防止了过多加载
|  |- particle.txd  特效贴图,比较杂乱,还包含日冕导弹图标等
|  |- pcbtns.txd前后左右光标贴图
|  \- player.img玩家身体各个部分模型的归档,如大腿脸部等
| movies  
|  |- GTAtitles.mpg载入幕
|  \- Logo.mpg 载入幕
| ReadMe帮助文件
|  \- Readme.txt帮助文件,咱盗版从未见过- -
| TEXT字体文件,汉化主要就是这个东西        
|  |- american.gxt 英语(虽然是美国制造的游戏)
|  |- french.gxt法语
|  |- german.gxt德语
|  |- italian.gxt意大利语
|  \- spanish.gxt西班牙语
|- eax.dll 环绕音效特性相关动态链接库文件
|- gta_sa.exe 游戏执行程序,其入口点地址为008245B0,早期gta允许硬编码,即直接做为固定内容写入了程序中,而不是使用变量来改变,不过在sa中已经不允许了(准确的说是使用另一种方式替代了硬编码)
|- ogg.dll
|- cleo.asi  
|- stream.ini  stream流的配置文件
|- vorbis.dll
\- vorbisFile.dll    
  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多