Difference between revisions of "2d Effect (RW Section)"
(→Entry Type 6 - Enter-Exit) |
|||
(24 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{This|This article handles the binary format of the particle effect placement information inside an [[DFF Model]]. For detailed information about particle see [[Particle (SA)]].}} | {{This|This article handles the binary format of the particle effect placement information inside an [[DFF Model]]. For detailed information about particle see [[Particle (SA)]].}} | ||
− | {{RW Section| | + | {{RW Section |
+ | | NAME = 2d Effect | ||
+ | | VENDORNAME = Rockstar Games | ||
+ | | MODULENAME = Plug-In | ||
+ | | MODULEID = 0253F2 | ||
+ | | IDENTIFIER = F8 | ||
+ | | VERSION = 3.6.0.3 (and higher) | ||
+ | | PARENTS = [[Geometry (RW Section)|Geometry]] ''([[Extension (RW Section)|Extension]])'' | ||
+ | }} | ||
− | '''2dfx''' is one of Rockstar's [[List of RW section IDs#Rockstar.27s_Custom_Sections|custom sections]]. In [[GTA San Andreas]] it is used to store | + | '''2d Effect''', formerly '''2dfx''', is one of Rockstar's [[List of RW section IDs#Rockstar.27s_Custom_Sections|custom sections]]. In [[GTA San Andreas]] it is used to store 2D effects, which were located in [[ide|ide files]] in previous versions. There can be multiple effects per section, their types are defined by an ID. |
− | |||
− | There can be multiple effects per section, their types are defined by an ID. | ||
==Header== | ==Header== | ||
− | A | + | A 2d Effect section starts with a 4 byte DWORD which is the number of 2d Effect entries that follow. |
==Entries== | ==Entries== | ||
− | There is a common 20 byte header for each | + | There is a common 20 byte header for each 2d Effect entry: |
− | 12 byte - FLOAT[3] - Position | + | 12 byte - FLOAT[3] - Position vector in object space |
4 byte - DWORD - Entry Type | 4 byte - DWORD - Entry Type | ||
4 byte - DWORD - Data Size | 4 byte - DWORD - Data Size | ||
− | '''Entry Type''' defines the type of the | + | '''Entry Type''' defines the type of the 2d Effect entry, and '''Data Size''' the number of bytes that follow the first 20, until the next entry starts. |
===Entry Type 0 - Light=== | ===Entry Type 0 - Light=== | ||
Line 80: | Line 86: | ||
4 LIGHTS_ANIM_SPEED_2X // Used on skyscrapers in San Fierro | 4 LIGHTS_ANIM_SPEED_2X // Used on skyscrapers in San Fierro | ||
5 LIGHTS_ANIM_SPEED_1X | 5 LIGHTS_ANIM_SPEED_1X | ||
− | 6 | + | 6 WARNLIGHT // Used on model nt_roadblockci |
7 TRAFFICLIGHT | 7 TRAFFICLIGHT | ||
8 TRAINCROSSLIGHT | 8 TRAINCROSSLIGHT | ||
Line 89: | Line 95: | ||
13 // 6s - on, 4s - off | 13 // 6s - on, 4s - off | ||
− | ===Entry Type 1 - Particle | + | ===Entry Type 1 - Particle effect=== |
This type defines particle effects and has a size of 24 bytes. | This type defines particle effects and has a size of 24 bytes. | ||
Line 97: | Line 103: | ||
The particle effect name is an entry in [[effects.fxp]]. | The particle effect name is an entry in [[effects.fxp]]. | ||
− | ===Entry Type 3 - | + | ===Entry Type 3 - Ped attractor=== |
− | + | ||
+ | This section consists of 56 bytes data. It`s used for spawning peds (Like on ticketbooth, Windows of shops, Blackjack-tables,...) | ||
It includes information about the [[External_Script|External Script]] ped is going to use when spawned, it`s facing angle and it`s behaviour. | It includes information about the [[External_Script|External Script]] ped is going to use when spawned, it`s facing angle and it`s behaviour. | ||
− | 4b - INT32 - Type ( | + | |
− | + | 4b - INT32 - Type (see below) | |
− | 8b - CHAR[8] - External script name | + | 12b - float[3] - QueueDir |
− | 4b - INT32 - | + | 12b - float[3] - UseDir |
− | 1b - BYTE - Unknown | + | 12b - float[3] - ForwardDir |
− | 1b - BYTE - Not used | + | 8b - CHAR[8] - External script name |
− | 1b - BYTE - Unknown | + | 4b - INT32 - Ped-Existing-Probability |
− | 1b - BYTE - Not used | + | 1b - BYTE - Unknown |
+ | 1b - BYTE - Not used | ||
+ | 1b - BYTE - Unknown | ||
+ | 1b - BYTE - Not used | ||
+ | |||
External script name field has to contain a name defined by [[0884]] opcode like ''PEDSLOT'' or ''TICKET''. If the PED just stands/sits/lays, this field is set to 'none'. | External script name field has to contain a name defined by [[0884]] opcode like ''PEDSLOT'' or ''TICKET''. If the PED just stands/sits/lays, this field is set to 'none'. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | 4b - FLOAT - Rotation angle enter-marker (relative to the object) ( | + | '''Ped attractor types''' |
+ | 0 PED_ATM_ATTRACTOR Ped uses ATM (at day time only) | ||
+ | 1 PED_SEAT_ATTRACTOR Ped sits (at day time only) | ||
+ | 2 PED_STOP_ATTRACTOR Ped stands (at day time only) | ||
+ | 3 PED_PIZZA_ATTRACTOR Ped stands for few seconds | ||
+ | 4 PED_SHELTER_ATTRACTOR Ped goes away after spawning, but stands if weather is rainy | ||
+ | 5 PED_TRIGGER_SCRIPT_ATTRACTOR Launches an external script | ||
+ | 6 PED_LOOK_AT_ATTRACTOR Ped looks at object, then goes away | ||
+ | 7 PED_SCRIPTED_ATTRACTOR This type is not valid | ||
+ | 8 PED_PARK_ATTRACTOR Ped lays (at day time only, ped goes away after 6 PM) | ||
+ | 9 PED_STEP_ATTRACTOR Ped sits on steps | ||
+ | |||
+ | ===Entry Type 4 - Sun glare=== | ||
+ | This type of section uses only header data (i.e. position/type). | ||
+ | |||
+ | ===Entry Type 6 - Enter-Exit=== | ||
+ | Creates entry-exit markers similar to ipl version. Type may call game crash! | ||
+ | |||
+ | 4b - FLOAT - Rotation angle enter-marker (relative to the object) (ignored?) | ||
4b - FLOAT - The radius of the approximation to the marker X | 4b - FLOAT - The radius of the approximation to the marker X | ||
4b - FLOAT - The radius of the approximation to the marker Y | 4b - FLOAT - The radius of the approximation to the marker Y | ||
− | 12b - FLOAT[3]- The position of exit-marker (offset relative to | + | 12b - FLOAT[3]- The position of exit-marker (offset relative to Enter position) |
− | 4b - FLOAT - angle of rotation exit-marker (relative to the object | + | 4b - FLOAT - angle of rotation exit-marker (relative to the object) |
− | + | 2b - INT16 - Number of interior | |
− | + | 2b - INT16 - Flags? | |
8b - CHAR[8] - The name of the interior | 8b - CHAR[8] - The name of the interior | ||
− | + | 1b - CHAR - Time on | |
+ | 1b - CHAR - Time off | ||
+ | 1b - CHAR - Sky Color? | ||
+ | 1b - CHAR - unk | ||
− | ===Entry Type 7 - Street | + | ===Entry Type 7 - Street sign=== |
This type defines the texts that appear on street signs and has a size of 88 bytes. | This type defines the texts that appear on street signs and has a size of 88 bytes. | ||
0x00 | RwV2d size | 0x00 | RwV2d size | ||
Line 159: | Line 178: | ||
The lines can start with arrows, such as <code><</code>, <code>^</code> and <code>></code>; also <code>_</code> is used instead of a whitespace. | The lines can start with arrows, such as <code><</code>, <code>^</code> and <code>></code>; also <code>_</code> is used instead of a whitespace. | ||
− | ===Entry Type 8 - | + | ===Entry Type 8 - Trigger point=== |
+ | |||
+ | Used to determine additional coordinates that can be used in scripts. A purpose of these coordinates depends on the model. | ||
+ | |||
+ | 4b - Int32 - Point id | ||
+ | |||
+ | [[GET_LEVEL_DESIGN_COORDS_FOR_OBJECT]] command is used to retrieve an information (coordinates) about these points for a specific object. | ||
− | + | ====Slotmachine==== | |
+ | [[File:Slotmachine 2dfx.PNG|300px|thumb|right|Trigger points for kb_bandit_u model (left), kb_bandit_u model with wheel objects (right)]] | ||
+ | Every wheel in the slotmachine ('''kb_bandit_u.dff''') has an index, increments by 1 and starrting with 1. | ||
+ | The position of the index is the position of the wheel in the Slotmachine. | ||
+ | {| class="wikitable" | ||
+ | ! Id !! Usage | ||
+ | |- | ||
+ | | 1 || coordinates for creating 'cj_wheel_1' object | ||
+ | |- | ||
+ | | 2 || coordinates for creating 'cj_wheel_02' object | ||
+ | |- | ||
+ | | 3 || coordinates for creating 'cj_wheel_03' object | ||
+ | |} | ||
− | + | ====Basketball hoop==== | |
+ | [[File:Bb.PNG|300px|thumb|right|Trigger points for bskball_lax model]] | ||
+ | Basketball hoop ('''bskball_lax.dff''') model is used in the "BBALL" script. | ||
+ | {| class="wikitable" | ||
+ | ! Id !! Usage | ||
+ | |- | ||
+ | | 0 || hoop position | ||
+ | |- | ||
+ | | 1 || ball spawning coords | ||
+ | |- | ||
+ | | 2 || basketball court bounding box: min coord | ||
+ | |- | ||
+ | | 3 || basketball court bounding box: max coord | ||
+ | |} | ||
− | + | ====K.A.C.C. gates==== | |
− | + | [[File:Gate_autoR_2dfx.PNG|300px|thumb|right|Trigger points for gate_autoR model]] | |
+ | Moving gates at '''''K.A.C.C. Military Fuels''''' ('''gate_autoL.dff''' and '''gate_autoR.dff''') use additional coordinates to define where player should be located to start door opening. | ||
+ | {| class="wikitable" | ||
+ | ! Id !! Usage | ||
+ | |- | ||
+ | | 0 || end point for door sliding (door moves from its origin position to this point) | ||
+ | |- | ||
+ | | 1 || angled area point 1 - inner side | ||
+ | |- | ||
+ | | 2 || angled area point 2 - inner side | ||
+ | |- | ||
+ | | 3 || angled area point 3 - inner side (used to calculate a distance parameter for [[IS_CHAR_IN_ANGLED_AREA_3D]] command) | ||
+ | |- | ||
+ | | 5 || angled area point 1 - outer side | ||
+ | |- | ||
+ | | 6 || angled area point 2 - outer side | ||
+ | |- | ||
+ | | 7 || angled area point 3 - outer side (used to calculate a distance parameter for [[IS_CHAR_IN_ANGLED_AREA_3D]] command) | ||
+ | |} | ||
− | ===Entry Type 9 - Cover | + | ===Entry Type 9 - Cover point=== |
Size is 12 bytes, used quite often and in large ammounts per file. | Size is 12 bytes, used quite often and in large ammounts per file. | ||
Line 176: | Line 244: | ||
4b - DWORD - cover type | 4b - DWORD - cover type | ||
− | This section defines where peds can cover during firefights. | + | This section defines a place where peds can cover during firefights. |
− | ===Entry Type 10 - | + | ===Entry Type 10 - Escalator=== |
This type defines escalators and has a size of 40 bytes. | This type defines escalators and has a size of 40 bytes. | ||
Line 199: | Line 267: | ||
==External Link== | ==External Link== | ||
+ | |||
* {{note|1}} {{GTAF|post|128451|3905781|Encryption of light information}} | * {{note|1}} {{GTAF|post|128451|3905781|Encryption of light information}} | ||
+ | ==Tools and Scripts== | ||
+ | |||
+ | * {{GTAF|261624|DexX Tools}} by {{U|DexX}} – 2d Effect export from 3DSMax (MaxScript) | ||
+ | * {{GTAF|282387|2dfx Editor}} by {{U|Aschratt}} – 2d Effect editing | ||
+ | * [http://www.steve-m.com/?page=2&ID=21&act=details RW Analyze] by {{U|steve-m}} (no 2d Effect support yet, but needed by above script) | ||
+ | * {{GTAF|576214|2dfx Tool}} by {{U|DK22Pac}} – 2d Effect editing | ||
− | |||
− | |||
− | |||
− | |||
− | |||
{{SA-navi}} | {{SA-navi}} |
Latest revision as of 12:25, 20 June 2024
2d Effect | |
---|---|
RenderWare Stream Section | |
Vendor | Rockstar Games |
Module | Plug-In |
Module ID | 0x0253F2
|
Identifier | 0xF8
|
Chunk ID | 0x0253F2F8
|
Versions | 3.6.0.3 (and higher) |
Hierarchy | |
Parents: Geometry (Extension) | |
Children: None | |
Extensions: None | |
File Format |
2d Effect, formerly 2dfx, is one of Rockstar's custom sections. In GTA San Andreas it is used to store 2D effects, which were located in ide files in previous versions. There can be multiple effects per section, their types are defined by an ID.
Contents
- 1 Header
- 2 Entries
- 3 External Link
- 4 Tools and Scripts
Header
A 2d Effect section starts with a 4 byte DWORD which is the number of 2d Effect entries that follow.
Entries
There is a common 20 byte header for each 2d Effect entry:
12 byte - FLOAT[3] - Position vector in object space 4 byte - DWORD - Entry Type 4 byte - DWORD - Data Size
Entry Type defines the type of the 2d Effect entry, and Data Size the number of bytes that follow the first 20, until the next entry starts.
Entry Type 0 - Light
This type defines lights and has a size of 76 or 80 bytes.
- With size of 76 bytes
0x00 | RwRGBA color 0x04 | float coronaFarClip 0x08 | float pointlightRange 0x0C | float coronaSize 0x10 | float shadowSize 0x14 | BYTE coronaShowMode 0x15 | BYTE coronaEnableReflection 0x16 | BYTE coronaFlareType 0x17 | BYTE shadowColorMultiplier 0x18 | BYTE flags1 0x19 | char coronaTexName[24] 0x31 | char shadowTexName[24] 0x49 | BYTE shadowZDistance 0x4A | BYTE flags2 0x4B | BYTE padding
- With size of 80 bytes
0x00 | RwRGBA color 0x04 | float coronaFarClip 0x08 | float pointlightRange 0x0C | float coronaSize 0x10 | float shadowSize 0x14 | BYTE coronaShowMode 0x15 | BYTE coronaEnableReflection 0x16 | BYTE coronaFlareType 0x17 | BYTE shadowColorMultiplier 0x18 | BYTE flags1 0x19 | char coronaTexName[24] 0x31 | char shadowTexName[24] 0x49 | BYTE shadowZDistance 0x4A | BYTE flags2 0x4B | BYTE lookDirection_x 0x4C | BYTE lookDirection_y 0x4D | BYTE lookDirection_z 0x4E | BYTE padding[2]
Flags 1 (flags1)
1 CORONA_CHECK_OBSTACLES 2 FOG_TYPE 4 FOG_TYPE 8 WITHOUT_CORONA 16 CORONA_ONLY_AT_LONG_DISTANCE 32 AT_DAY 64 AT_NIGHT 128 BLINKING1
Flags 2 (flags2)
1 CORONA_ONLY_FROM_BELOW 2 BLINKING2 4 UDPDATE_HEIGHT_ABOVE_GROUND 8 CHECK_DIRECTION 16 BLINKING3
Special corona type (coronaShowMode)
0 DEFAULT 1 RANDOM_FLASHING 2 RANDOM_FLASHIN_ALWAYS_AT_WET_WEATHER 3 LIGHTS_ANIM_SPEED_4X // Used on model 10 green bottles. Lights alternately switched on-off. 4 LIGHTS_ANIM_SPEED_2X // Used on skyscrapers in San Fierro 5 LIGHTS_ANIM_SPEED_1X 6 WARNLIGHT // Used on model nt_roadblockci 7 TRAFFICLIGHT 8 TRAINCROSSLIGHT 9 // Doesn't work (light is always disabled) 10 AT_RAIN_ONLY // Enables only in rainy weather 11 // 5s - on, 5s - off 12 // 6s - on, 4s - off 13 // 6s - on, 4s - off
Entry Type 1 - Particle effect
This type defines particle effects and has a size of 24 bytes.
24b - CHAR[24] - particle effect name
The particle effect name is an entry in effects.fxp.
Entry Type 3 - Ped attractor
This section consists of 56 bytes data. It`s used for spawning peds (Like on ticketbooth, Windows of shops, Blackjack-tables,...) It includes information about the External Script ped is going to use when spawned, it`s facing angle and it`s behaviour.
4b - INT32 - Type (see below) 12b - float[3] - QueueDir 12b - float[3] - UseDir 12b - float[3] - ForwardDir 8b - CHAR[8] - External script name 4b - INT32 - Ped-Existing-Probability 1b - BYTE - Unknown 1b - BYTE - Not used 1b - BYTE - Unknown 1b - BYTE - Not used
External script name field has to contain a name defined by 0884 opcode like PEDSLOT or TICKET. If the PED just stands/sits/lays, this field is set to 'none'.
Ped attractor types
0 PED_ATM_ATTRACTOR Ped uses ATM (at day time only) 1 PED_SEAT_ATTRACTOR Ped sits (at day time only) 2 PED_STOP_ATTRACTOR Ped stands (at day time only) 3 PED_PIZZA_ATTRACTOR Ped stands for few seconds 4 PED_SHELTER_ATTRACTOR Ped goes away after spawning, but stands if weather is rainy 5 PED_TRIGGER_SCRIPT_ATTRACTOR Launches an external script 6 PED_LOOK_AT_ATTRACTOR Ped looks at object, then goes away 7 PED_SCRIPTED_ATTRACTOR This type is not valid 8 PED_PARK_ATTRACTOR Ped lays (at day time only, ped goes away after 6 PM) 9 PED_STEP_ATTRACTOR Ped sits on steps
Entry Type 4 - Sun glare
This type of section uses only header data (i.e. position/type).
Entry Type 6 - Enter-Exit
Creates entry-exit markers similar to ipl version. Type may call game crash!
4b - FLOAT - Rotation angle enter-marker (relative to the object) (ignored?) 4b - FLOAT - The radius of the approximation to the marker X 4b - FLOAT - The radius of the approximation to the marker Y 12b - FLOAT[3]- The position of exit-marker (offset relative to Enter position) 4b - FLOAT - angle of rotation exit-marker (relative to the object) 2b - INT16 - Number of interior 2b - INT16 - Flags? 8b - CHAR[8] - The name of the interior 1b - CHAR - Time on 1b - CHAR - Time off 1b - CHAR - Sky Color? 1b - CHAR - unk
Entry Type 7 - Street sign
This type defines the texts that appear on street signs and has a size of 88 bytes.
0x00 | RwV2d size 0x08 | RwV3d rotation 0x14 | WORD flags 0x16 | RwChar text[4][16]
Flags (flags)
Bits 0-1 - Number of used lines
0 - 4 lines 1 - 1 lines 2 - 2 lines 3 - 3 lines
Bits 2-3 - Max number of symbols in one line
0 - 16 symbols 1 - 2 symbols 2 - 4 symbols 3 - 8 symbols
Bits 4-5 - Text color
0 - 0xFFFFFFFF (white) 1 - 0xFF000000 (black) 2 - 0xFF808080 (grey) 3 - 0xFF0000FF (red)
The lines can start with arrows, such as <
, ^
and >
; also _
is used instead of a whitespace.
Entry Type 8 - Trigger point
Used to determine additional coordinates that can be used in scripts. A purpose of these coordinates depends on the model.
4b - Int32 - Point id
GET_LEVEL_DESIGN_COORDS_FOR_OBJECT command is used to retrieve an information (coordinates) about these points for a specific object.
Slotmachine
Every wheel in the slotmachine (kb_bandit_u.dff) has an index, increments by 1 and starrting with 1. The position of the index is the position of the wheel in the Slotmachine.
Id | Usage |
---|---|
1 | coordinates for creating 'cj_wheel_1' object |
2 | coordinates for creating 'cj_wheel_02' object |
3 | coordinates for creating 'cj_wheel_03' object |
Basketball hoop
Basketball hoop (bskball_lax.dff) model is used in the "BBALL" script.
Id | Usage |
---|---|
0 | hoop position |
1 | ball spawning coords |
2 | basketball court bounding box: min coord |
3 | basketball court bounding box: max coord |
K.A.C.C. gates
Moving gates at K.A.C.C. Military Fuels (gate_autoL.dff and gate_autoR.dff) use additional coordinates to define where player should be located to start door opening.
Id | Usage |
---|---|
0 | end point for door sliding (door moves from its origin position to this point) |
1 | angled area point 1 - inner side |
2 | angled area point 2 - inner side |
3 | angled area point 3 - inner side (used to calculate a distance parameter for IS_CHAR_IN_ANGLED_AREA_3D command) |
5 | angled area point 1 - outer side |
6 | angled area point 2 - outer side |
7 | angled area point 3 - outer side (used to calculate a distance parameter for IS_CHAR_IN_ANGLED_AREA_3D command) |
Entry Type 9 - Cover point
Size is 12 bytes, used quite often and in large ammounts per file.
4b - FLOAT - x direction 4b - FLOAT - y direction 4b - DWORD - cover type
This section defines a place where peds can cover during firefights.
Entry Type 10 - Escalator
This type defines escalators and has a size of 40 bytes.
12b - FLOAT[3] - bottom of escalator (xyz) 12b - FLOAT[3] - top of escalator (xyz) 12b - FLOAT[3] - escalator end (Z pos, matches top Z if escalator goes up, bottom Z if it goes down) 4b - DWORD - direction 0/1 (down/up)
The normal position info of the header gets the same function of th estart-position in opposite to the end-position. Positions seem to be roundet to *.5 or *.0 by the game, so it doesnt make many sense to create escalators with the value of *.3 or *.7. This got the effect that a Escalator looks like in the picture (Example: vgseesc01.dff). Legend to the picture:
- Escalator_Standart_Position - Positioninfo from the header
- Escalator_Bottom - Bottominfo from the section
- Escalator_Top - Topinfo from the section
- Escalator_End - Endinfo from the section
External Link
- ^ GTAForums: Encryption of light information
Tools and Scripts
- GTAForums: DexX Tools by DexX – 2d Effect export from 3DSMax (MaxScript)
- GTAForums: 2dfx Editor by Aschratt – 2d Effect editing
- RW Analyze by steve-m (no 2d Effect support yet, but needed by above script)
- GTAForums: 2dfx Tool by DK22Pac – 2d Effect editing