Difference between revisions of "Carrec"

From GTAMods Wiki
Jump to navigation Jump to search
m (mistype)
m (Tools)
 
(30 intermediate revisions by 5 users not shown)
Line 1: Line 1:
The <code>'''carrec'''.img</code> file stores a set of R3 files (files with an extension <code>.rrr</code>). These files contain path information used by the mission script for San Andreas only. The paths are predefined and look unnatural during gameplay because the movement of the vehicle is very rigid. The paths ignore many stuff in the game including gravity and obstacles.
+
The <code>'''carrec'''.img</code> file stores R3 files (files with the <code>.rrr</code> extension). These files contain path information used by the mission script in [[San Andreas]] and [[GTA 4]].  It is a direct successor to the [[Chase.dat|chase*.dat]] files. The paths are predefined and look unnatural during gameplay because the movement of the vehicle is very rigid. The paths ignore many stuff in the game including gravity and obstacles.
Original San Andreas installation has 426 R3 paths. Maximum number of these paths is 475.
 
  
==R3 file structure==
+
Original San Andreas installation has '''426''' R3 paths. Maximum number of these paths is '''475'''. GTA IV increases this limit. By default there are '''1813''' R3 paths. The limit appears to be located somewhere beyond 3000.
An R3 file (<code>.rrr</code>) contains no header, only a binary data, being a set of structures of 32 bytes in length each, described separate path points. The data in each checkpoint structure goes as the following:
 
  
{|
+
GTA IV uses an [[IMG|IMG archive]] located in <code>..\common\data\cdimages</code> to store the carrec paths. The ones in <code>...\common\data\paths</code> appears to be unused.
|00||dword||time
+
 
 +
== File Format ==
 +
An RRR file is a container for structures each describing a separate point along the path. The structure is 32 bytes in length and has the following format:
 +
 
 +
{|class="wikitable"
 +
!Offset (decimal)
 +
!Size (in bytes)
 +
!Type
 +
!Description
 +
!Notes
 
|-
 
|-
|04||word||velocity in direction X * 16383.5
+
|00||04||INT32||time||Timekey in milliseconds
 
|-
 
|-
|06||word||velocity in direction Y * 16383.5
+
|04||02||INT16||velocity in direction X||Divide by 16383.5 to get floating point values
 
|-
 
|-
|08||word||velocity in direction Z * 16383.5
+
|06||02||INT16||velocity in direction Y||Divide by 16383.5 to get floating point values
 
|-
 
|-
|10||byte||XYZ.right.x * 127.0
+
|08||02||INT16||velocity in direction Z||Divide by 16383.5 to get floating point values
 
|-
 
|-
|11||byte||XYZ.right.y * 127.0
+
|10||01||INT8||XYZ.right.x||Divide by 127.0 to get floating point values
 
|-
 
|-
|12||byte||XYZ.right.z * 127.0
+
|11||01||INT8||XYZ.right.y||Divide by 127.0 to get floating point values
 
|-
 
|-
|13||byte||XYZ.top.x * 127.0
+
|12||01||INT8||XYZ.right.z||Divide by 127.0 to get floating point values
 
|-
 
|-
|14||byte||XYZ.top.y * 127.0
+
|13||01||INT8||XYZ.top.x||Divide by 127.0 to get floating point values
 
|-
 
|-
|15||byte||XYZ.top.z * 127.0
+
|14||01||INT8||XYZ.top.y||Divide by 127.0 to get floating point values
 
|-
 
|-
|16||byte||Steering Angle * 20.0
+
|15||01||INT8||XYZ.top.z||Divide by 127.0 to get floating point values
 
|-
 
|-
|17||byte||Gas Pedal Power * 100.0
+
|16||01||INT8||Steering Angle||Divide by 20.0 to get floating point values
 
|-
 
|-
|18||byte||Break Pedal Power * 100.0
+
|17||01||INT8||Gas Pedal Power||Divide by 100.0 to get floating point values
 
|-
 
|-
|19||byte||Handbrake used flag
+
|18||01||INT8||Brake Pedal Power||Divide by 100.0 to get floating point values
 
|-
 
|-
|20||float||XYZ.pos.x
+
|19||01||INT8||Handbrake used flag||Bool: 1 = true, 0 = false
 
|-
 
|-
|24||float||XYZ.pos.y
+
|20||04||FLOAT||XYZ.pos.x||[[Wikipedia:IEEE_754|Standard float]]
 
|-
 
|-
|28||float||XYZ.pos.z
+
|24||04||FLOAT||XYZ.pos.y||Standard float
 
|-
 
|-
|32||end
+
|28||04||FLOAT||XYZ.pos.z||Standard float
 
|}
 
|}
  
When the vehicle is moving along the path, its [[XYZ]] structure is filled with the information from the proper fields of checkpoint data.
+
When the vehicle is moving along the path, its XYZ structure is filled with the information from the proper fields of checkpoint data.
  
 
==Mission Script==
 
==Mission Script==
 +
===San Andreas===
 
You can use the following opcodes to do stuff to your paths.<br>
 
You can use the following opcodes to do stuff to your paths.<br>
 
[[07C0]] - Loads the path<br>
 
[[07C0]] - Loads the path<br>
Line 61: Line 69:
 
If you load a non-existant path to a vehicle, path 1 will be loaded instead.
 
If you load a non-existant path to a vehicle, path 1 will be loaded instead.
  
==List==
+
===GTA 4===
 +
Use the following [[native function]]s:<br>
 +
[[REQUEST_CAR_RECORDING]]<br>
 +
[[HAS_CAR_RECORDING_BEEN_LOADED]]<br>
 +
[[REMOVE_CAR_RECORDING]]<br>
 +
[[FIND_POSITION_IN_RECORDING]]<br>
 +
[[FIND_TIME_POSITION_IN_RECORDING]]<br>
 +
[[GET_POSITION_OF_CAR_RECORDING_AT_TIME]]<br>
 +
[[GET_TOTAL_DURATION_OF_CAR_RECORDING]]<br>
 +
[[SET_RECORDING_TO_POINT_NEAREST_TO_COORS]]<br>
 +
[[SYNCH_RECORDING_WITH_WATER]]<br>
 +
 
 +
== List of paths in San Andreas==
 +
{{incomplete}}
 +
 
 
The following is a list of paths defined in the <code>carrec.img</code> file.
 
The following is a list of paths defined in the <code>carrec.img</code> file.
{|
+
{| {{Prettytable}} class="collapsible"
 
! ID
 
! ID
 
! Description
 
! Description
Line 262: Line 284:
 
| Unused Test Drive path
 
| Unused Test Drive path
 
|}
 
|}
 +
 
More to come soon. The last ID is 834.
 
More to come soon. The last ID is 834.
  
[[Category:Map Formats]][[Category:GTA SA]][[Category:File Formats]]
+
== Tools ==
 +
* {{Icon|SA}} {{Icon|4}} [http://sannybuilder.com/files/R3D.rar R3D v0.2] - .RRR files editor by Sanchez
 +
* {{Icon|SA}} [http://cleo.sannybuilder.com/scripts/carrec.rar Carrec.cs] - a [[CLEO]] script to generate an .RRR file directly in game, made by {{U|Seemann}}
 +
* {{Icon|VC}} {{GTAF|890312}} - a similar script for Vice City by {{U|Shagg_E}}
 +
* {{Icon|4}} [http://www.gtagarage.com/mods/show.php?id=27794 IVMB Replay] - .Net script for GTA IV and EFLC by {{U|iriedreadlock23}}
 +
 
 +
== External links ==
 +
* {{GTAF|297295|The R3 format explanation}}
 +
 
 +
{{N|4|SA}}
 +
 
 +
[[Category:Map Formats]][[Category:File Formats]]

Latest revision as of 23:02, 25 May 2019

The carrec.img file stores R3 files (files with the .rrr extension). These files contain path information used by the mission script in San Andreas and GTA 4. It is a direct successor to the chase*.dat files. The paths are predefined and look unnatural during gameplay because the movement of the vehicle is very rigid. The paths ignore many stuff in the game including gravity and obstacles.

Original San Andreas installation has 426 R3 paths. Maximum number of these paths is 475. GTA IV increases this limit. By default there are 1813 R3 paths. The limit appears to be located somewhere beyond 3000.

GTA IV uses an IMG archive located in ..\common\data\cdimages to store the carrec paths. The ones in ...\common\data\paths appears to be unused.

File Format

An RRR file is a container for structures each describing a separate point along the path. The structure is 32 bytes in length and has the following format:

Offset (decimal) Size (in bytes) Type Description Notes
00 04 INT32 time Timekey in milliseconds
04 02 INT16 velocity in direction X Divide by 16383.5 to get floating point values
06 02 INT16 velocity in direction Y Divide by 16383.5 to get floating point values
08 02 INT16 velocity in direction Z Divide by 16383.5 to get floating point values
10 01 INT8 XYZ.right.x Divide by 127.0 to get floating point values
11 01 INT8 XYZ.right.y Divide by 127.0 to get floating point values
12 01 INT8 XYZ.right.z Divide by 127.0 to get floating point values
13 01 INT8 XYZ.top.x Divide by 127.0 to get floating point values
14 01 INT8 XYZ.top.y Divide by 127.0 to get floating point values
15 01 INT8 XYZ.top.z Divide by 127.0 to get floating point values
16 01 INT8 Steering Angle Divide by 20.0 to get floating point values
17 01 INT8 Gas Pedal Power Divide by 100.0 to get floating point values
18 01 INT8 Brake Pedal Power Divide by 100.0 to get floating point values
19 01 INT8 Handbrake used flag Bool: 1 = true, 0 = false
20 04 FLOAT XYZ.pos.x Standard float
24 04 FLOAT XYZ.pos.y Standard float
28 04 FLOAT XYZ.pos.z Standard float

When the vehicle is moving along the path, its XYZ structure is filled with the information from the proper fields of checkpoint data.

Mission Script

San Andreas

You can use the following opcodes to do stuff to your paths.
07C0 - Loads the path
07C1 - Checks if the path has been loaded
0873 - Releases the path from memory
05EB - Assigns a vehicle to the path
0705 - Assigns a vehicle to the path
085E - Assigns a vehicle to a looped path
05EC - Releases the vehicle from a path
05ED - Freezes the vehicle along the path
05EE - Unfreezes the vehicle along the path
06FD - Sets the speed multiplier of the vehicle along the path
0706 - Advances the vehicle along the path
060E - Checks if a path is assigned to the vehicle
If you load a non-existant path to a vehicle, path 1 will be loaded instead.

GTA 4

Use the following native functions:
REQUEST_CAR_RECORDING
HAS_CAR_RECORDING_BEEN_LOADED
REMOVE_CAR_RECORDING
FIND_POSITION_IN_RECORDING
FIND_TIME_POSITION_IN_RECORDING
GET_POSITION_OF_CAR_RECORDING_AT_TIME
GET_TOTAL_DURATION_OF_CAR_RECORDING
SET_RECORDING_TO_POINT_NEAREST_TO_COORS
SYNCH_RECORDING_WITH_WATER

List of paths in San Andreas

This section is incomplete. You can help by fixing and expanding it.

The following is a list of paths defined in the carrec.img file.

ID Description
1 Driving School The 360
2 Driving School The 180
3 Unused Driving School unknown test
4 Driving School Whip and Terminate
5 Driving School Pop and Control
7 Driving School Burn and Lap
9 Driving School Cone Coil
10 Driving School The '90'
11 Driving School Wheelie Weave
13 Driving School Spin and Go
14 Driving School P. I. T. Maneuver
15 Driving School Alley Oop
16 Driving School City Slicking
21 Unused Test Drive Cesar's Savanna, most likely used in beta version of game
22 House Party Sweet's Greenwod
23 House Party GSF's Voodoo
24 Unused path, could have been used in Big Smoke, most likely used in beta version of game
25 The Da Nang Thang Triad's Maverick
27 Pier 69 enemy's Pony
28 Pier 69 Toreno's helicopter
30 OG Loc Freddy's PCJ 600 path 1 (beginning)
31 OG Loc Freddy's PCJ 600 path 2
32 OG Loc Freddy's PCJ 600 path 3
33 OG Loc Freddy's PCJ 600 path 4
34 OG Loc Freddy's PCJ 600 path 5
35 OG Loc Freddy's PCJ 600 path 6
36 OG Loc Freddy's PCJ 600 path 7
37 OG Loc Freddy's PCJ 600 path 8
38 OG Loc Freddy's PCJ 600 path 9
39 OG Loc Freddy's PCJ 600 path 10
40 OG Loc Freddy's PCJ 600 path 11 (end)
41 unused Los Santos to San Fierro AT 400, most likely used in beta version of game
42 Los Santos to San Fierro AT 400
43 Las Venturas to San Fierro AT 400
44 San Fierro to Las Venturas AT 400
46 Los Santos to Las Venturas AT 400
48 Las Venturas to Los Santos AT 400
49 San Fierro to Los Santos AT 400
50 OG Loc highway NPC 1
51 OG Loc highway NPC 2
52 OG Loc highway NPC 3
53 OG Loc highway NPC 4
54 OG Loc highway NPC 5
55 OG Loc highway NPC 6
56 OG Loc highway NPC 7
57 OG Loc highway NPC 8
58 OG Loc highway NPC 9
59 OG Loc highway NPC 10
60 OG Loc highway NPC 11
65 Test Drive Cesar's Elegy path enter alley
66 Test Drive cop 1 path enter alley
67 Test Drive cop 2 path enter alley
70 Test Drive Tram path 1
71 Test Drive outside Otto's Autos NPC 1
72 Test Drive outside Otto's Autos NPC 2
73 Test Drive outside Otto's Autos NPC 3
74 Test Drive outside Otto's Autos NPC 4
75 Test Drive outside Otto's Autos NPC 5
76 Test Drive outside Otto's Autos NPC 6
77 Test Drive Tram path 2
78 Test Drive Tram path 3
79 Test Drive Cesar's Elegy path 1
80 Test Drive Tram path 3
81 Test Drive Cesar's Elegy path 2
82 Unused Test Drive path

More to come soon. The last ID is 834.

Tools

External links