Quantcast

Jump to content

» «
Photo

Documenting GTA3 memory addresses

16 replies to this topic
Beatnut
  • Beatnut

    Player Hater

  • Members
  • Joined: 12 Dec 2004

#1

Posted 22 June 2005 - 03:38 PM

Well there is one for vice city, one for SA, so i though for those interested i would make one for GTA3. In the same vain as the other two threads, if you find a memory address, Post it in this thread so others can enjoy your findings.

Money = 0094139C you can add / subtract and poke a DWORD value to this, works fine for me, havent tryed anything else with this address, yet.

JernejL
  • JernejL

    Big Homie

  • Feroci
  • Joined: 11 Mar 2002
  • None

#2

Posted 22 June 2005 - 03:45 PM

quite some addresses for gta3 were posted in vc memory topic, btw doing
anything for gta3 is probably stupid because game is like 4 years old and
san andreas pc was just released so why would anyone still bother with gta3 engine?

Beatnut
  • Beatnut

    Player Hater

  • Members
  • Joined: 12 Dec 2004

#3

Posted 22 June 2005 - 04:28 PM

Whats the matter with learning? some people still play the game, obviously, as i started this thread, so under assumption you should of guessed that, I dont have SA on pc, I dont like Vice city and to be honest why would people post GTA3 Memory addresses in a vice city memory address topic?
is this not GTAforums? a place to talk about and learn how to edit GTA games? and probably more.
All i wanted was a clean topic where if people knew they could help me and other people out, since the search dosent seem to work on here for me and i didnt see a topic i thought i would start one.
I wanted to know how trainers were made through bordem mainly and so far i have been sucessful, i have made a few friends and i have learnt alot about the trade from them. So far people have been happy to help and point me in the right direction.
Vice city and SA are just more complex versions of the same game, it became obvious to me that it would be easyer for me to learn on a simple game then progress to the harder stuff when i learnt a thing or two, Hence the first game i made a trainer for was mine sweeper.
I guess ill go trawl through the topic about vice city and try and take out the stuff thats useful to me, thanks for your help confused.gif

JernejL
  • JernejL

    Big Homie

  • Feroci
  • Joined: 11 Mar 2002
  • None

#4

Posted 22 June 2005 - 08:50 PM

okay, sorry, but i just wanted to say you to think twice if it is worth working with so old
game when we have much powerful and better versions confused.gif

DexX
  • DexX

    Black Hat

  • Feroci
  • Joined: 16 May 2002
  • None

#5

Posted 23 June 2005 - 01:36 AM

QUOTE
GTA3 Memory addresses in a vice city memory address topic?
is this not GTAforums? a place to talk about and learn how to edit GTA games? and probably more.

Your right, this is a place to do that, THE place really.
And in the interest of keeping the boards as clean as possible, and considering the age of gta3, and vice, i merged the vice memory topic title with gta3. so it now covers both. it also helps to keep as many of those addresses in the same spot as possible, since there were already a considerable amount of gta3 addresses posted in there. post yours there too.

OrionSR
  • OrionSR

    Chain Game Development Team

  • Feroci
  • Joined: 23 May 2007
  • None
  • Helpfulness Award [GTA & Modding]

#6

Posted 19 June 2015 - 04:06 AM Edited by OrionSR, 20 June 2015 - 09:59 AM.

I'm not having much luck digging GTA3 info out of the combined topic so I'll post what I've got here where it's easier to find.

 

GTA3 PC (retail, not sure on the version)

 

0x6FB1C8 DWORD pointer to player CPed

 

I think these are animation variables. I just watched the bytes change as I played and tried to make guesses as to their meaning.

 

GTA3:CPed  BYTE   0x22C    MoveStatus    (1 = stand    2 = walk    3 = run    4 = sprint)
GTA3:CPed  BYTE   0x234    CarEnex    (1 = exit    3 = enter)

 

GTA3:CPed  BYTE  0x4AC    MeleeStatus

    0    Default

    1    Attack
    2    Defend
    3    Advance
    5    Headbutt
    7    GutPunch
    8    Kick
    9    JumpKick
    12    GroundKick
    14    BackDamage
    15    RightDamage
    16    LeftDamage
    17    GroinDamage
    18    LowDamage
    19    FrontDamage
    20    HeadDamage

                          
GTA3:CPed    BYTE    0x1D4    WeaponMoves                    
    1    HandForward    (Fists    Grenades    Molotov)
    2    RocketForward    (Rockets)
    3    MoveForward    (Pistol    Uzi)           
    4    NoSprintForward    (Shotgun    AK47    M4    Rifle    Flame)
    5    BatForward    (Bat)
    19    MoveBack                    
    20    MoveLeft                    
    21    MoveRight                    
    22    RocketBack                    
    23    RocketLeft                    
    24    RocketRight  

 

GTA3:CPed  BYTE  0x154    StatusBits (bit flags)
    0    OnGround
    1    Standing
    2    Attack (melee while running to reset)
    3    (not observed)
    4    TouchedEntity (doesn't seem to go away after first touch)
    5    LookFront (follows LookBack)
    6    LookBack
    7    HipShot (when using weapons that can fire without aiming)

 

It's not the traditional format but it's really easy to export from my templates.

Offset  Size  GTA3   Player
5F0h    1520  struct CPed+
        
0h      4     DWORD  unknown_vtbl
4h      12    struct RwV3D cam_roll_xyz
14h     12    struct RwV3D cam_direction_xyz
24h     12    struct RwV3D cam_previous_xyz
34h     12    struct RwV3D playerCoords
C0h     4     FLOAT  weight
EEh     1     BYTE   nEntitiesTouched
F0h     4     DWORD  pPlayerVehicle
F4h     4     DWORD  pPlayerVehicle
14Ch    1     BYTE   bOnGround
154h    1     BYTE   StatusBits
170h    4     DWORD  pPlayerVehicle
1D4h    1     BYTE   WeaponMoves
1F0h    4     DWORD  pPlayerCPed
228h    1     BYTE   bAnimating
22Ch    1     BYTE   MoveStatus
234h    1     BYTE   CarEnex
2C0h    4     FLOAT  health
2C4h    4     FLOAT  armor
30Ch    4     DWORD  pPlayerVehicle
310h    4     DWORD  pPlayerVehicle
314h    1     BYTE   bIsDriving
344h    4     DWORD  pPlayerVehicle
35Ch    312   struct weaponslots[13]
498h    1     enum   WEPNO weaponSlot
4A0h    12    struct RwV3D MeleeCoords  
4ACh    1     BYTE   MeleeStatus
4B8h    4     DWORD  pPreviousVehicle
4C0h    4     enum   WEPID weaponModel
4F4h    40    DWORD  pNearestCPeds[10]
51Ch    1     BYTE   nLoadedCpeds
53Ch    4     DWORD  pWantedArray
548h    4     FLOAT  fCurrentStamina
54Ch    4     FLOAT  fNaxStamina
550h    4     FLOAT  fSprintDistance
57Ch    1     BYTE   bAdrenalineMode
580h    4     DWORD  tAdrenalineTimer

At one point all of the pointers labeled as pPlayerVehicle pointed to the same car, but not always. I'm still trying to work out the details.

 

What is a vtbl? I'm assuming this means "variable table" but, what is this value and how can I confirm what it is? It seems too small to be a pointer and too large to be an index.

  • thehambone likes this

MrPancakes
  • MrPancakes

    Not Politically Correct

  • Members
  • Joined: 28 May 2015
  • Croatia

#7

Posted 19 June 2015 - 09:01 AM Edited by MrPancakes, 21 June 2015 - 04:12 PM.

i've never seen someone dig up a decade old thread.


OrionSR
  • OrionSR

    Chain Game Development Team

  • Feroci
  • Joined: 23 May 2007
  • None
  • Helpfulness Award [GTA & Modding]

#8

Posted 19 June 2015 - 11:49 AM Edited by OrionSR, 21 June 2015 - 06:45 PM.

Yeah, I know. But the other topic isn't working for GTA3 and this topic has the correct title.

 

Does anyone know where the global timer is hidden in GTA 3 memory?

 

How is the player rotation determined?


OrionSR
  • OrionSR

    Chain Game Development Team

  • Feroci
  • Joined: 23 May 2007
  • None
  • Helpfulness Award [GTA & Modding]

#9

Posted 20 June 2015 - 09:56 AM Edited by OrionSR, 20 June 2015 - 09:58 AM.

Player CPED+ 0x53C
Pointer to WantedArray [32 bytes] (unconfirmed size)


  0x00  DWORD  WantedChaos (ticks down when not in view of cops with less than 2 stars)       
  0x04  DWORD  tWantedTicker (updates continuously when not in view of cops with less than 2 stars)
  0x08  DWORD  tWantedChange (updates to global timer when wanted level changes)
  0x0C  BYTE   fWantedSensitivity (no opcode?)
  0x10  BYTE   unknownBytes[4] (probably all flags)
  0x14  BYTE   WantedCops (4=Cops3, 8=SWAT4, 10=FBI5, 12=Army6)   
  0x15  BYTE   WantedBits
  0x16  BYTE   WantedFlags
  0x17  BYTE   unknownByte   
  0x18  DWORD  WantedLevel (Stars)
  0x1C  DWORD  WantedCrime



   WantedChaos 0x00 - Wanted Star level
         1 - 40
         2 - 200
         3 - 400
         4 - 800
         5 - 1600
         6 - 3200
         
    WantedCrime Type 0x1C - Persists for 12 seconds
        1 -  Light Weapon
        2 -  Melee Attack
        3 -  Melee Cop
        4 -  Heavy Weapon
        5 -  Heavy Cop
        6 -  Jack Vehicle
        8 -  Car Kill
        14 - Flame Attack          
    
    Wanted Flags 0x16 - Ignore and More
        1 - Ignored by Cops
        2 - Ignored by Everyone
        4 - unknown
    
    * bitflag data is incomplete; there are more to be identified by the curious

  • thehambone likes this

Seemann
  • Seemann

    Ruhe

  • GTA Mods Staff
  • Joined: 03 Sep 2004
  • Russia
  • Best Tool 2016 [OpenIV]
    Best Tool 2013 [Sanny Builder]
    Contribution Award [Mods]
    Helpfulness Awards [Mods]

#10

Posted 21 June 2015 - 09:27 PM Edited by Seemann, 21 June 2015 - 10:38 PM.

What is a vtbl? I'm assuming this means "variable table" but, what is this value and how can I confirm what it is? It seems too small to be a pointer and too large to be an index.

 
https://en.wikipedia...al_method_table
Simply speaking, if a class contains virtual methods (that can be redefined / overloaded in a child class) it's very first DWORD is a pointer to the array of pointers to the functions implemeting this class' methods. For example, a method Destroy or Free is virtual, and have its own implemetation for different classes (in the class CPed you must do one thing, whereas in the class CCopPed you must do another one). The VMT is constant and built by the compiler for each virtual class. 
 
GTA III VMTs
 
CPed

.data:005F8C2C _5CPed::`vtbl' dd offset CPed::Destroy(void)                ; DATA XREF: CPed::CPed((uint))+12o
.data:005F8C2C                                                             ; CPed::~CPed((void))+5o
.data:005F8C30 dd offset CPhysical::Add((void))
.data:005F8C34 dd offset CPhysical::Remove((void))
.data:005F8C38 dd offset CPed::SetModelIndex((uint))
.data:005F8C3C dd offset CEntity::SetModelIndexNoCreate((uint))
.data:005F8C40 dd offset CEntity::CreateRwObject((void))
.data:005F8C44 dd offset CEntity::DeleteRwObject((void))
.data:005F8C48 dd offset CPhysical::GetBoundRect((void))
.data:005F8C4C dd offset CPed::ProcessControl((void))
.data:005F8C50 dd offset CPhysical::ProcessCollision((void))
.data:005F8C54 dd offset CPhysical::ProcessShift((void))
.data:005F8C58 dd offset sub_4D3E70
.data:005F8C5C dd offset CPed::PreRender(void)
.data:005F8C60 dd offset CPed::Render(void)
.data:005F8C64 dd offset CPed::SetupLighting(void)
.data:005F8C68 dd offset CPed::RemoveLighting(void)
.data:005F8C6C dd offset CPed::FlagToDestroyWhenNextProcessed((void))
.data:005F8C70 dd offset CPed::ProcessEntityCollision(void)
.data:005F8C74 dd offset CPed::SetMoveAnim((void))

CCivilianPed


.data:005F819C _13CCivilianPed::`vtbl' dd offset CCivilianPed::Destroy(void)
.data:005F819C                                                             ; DATA XREF: CCivilianPed::CCivilianPed((ePedType,uint))+16o
.data:005F819C                                                             ; sub_4BFFC0+3o
.data:005F81A0 dd offset CPhysical::Add((void))
.data:005F81A4 dd offset CPhysical::Remove((void))
.data:005F81A8 dd offset CPed::SetModelIndex((uint))
.data:005F81AC dd offset CEntity::SetModelIndexNoCreate((uint))
.data:005F81B0 dd offset CEntity::CreateRwObject((void))
.data:005F81B4 dd offset CEntity::DeleteRwObject((void))
.data:005F81B8 dd offset CPhysical::GetBoundRect((void))
.data:005F81BC dd offset CCivilianPed::ProcessControl((void))
.data:005F81C0 dd offset CPhysical::ProcessCollision((void))
.data:005F81C4 dd offset CPhysical::ProcessShift((void))
.data:005F81C8 dd offset sub_4D3E70
.data:005F81CC dd offset CPed::PreRender(void)
.data:005F81D0 dd offset CPed::Render(void)
.data:005F81D4 dd offset CPed::SetupLighting(void)
.data:005F81D8 dd offset CPed::RemoveLighting(void)
.data:005F81DC dd offset CPed::FlagToDestroyWhenNextProcessed((void))
.data:005F81E0 dd offset CPed::ProcessEntityCollision(void)
.data:005F81E4 dd offset CPed::SetMoveAnim((void))

CEmergencyPed


.data:005F8374 _14CEmergencyPed::`vtbl' dd offset sub_4C3F40               ; DATA XREF: CEmergencyPed::CEmergencyPed((uint))+18o
.data:005F8374                                                             ; sub_4C2EF0+3o
.data:005F8378 dd offset CPhysical::Add((void))
.data:005F837C dd offset CPhysical::Remove((void))
.data:005F8380 dd offset CPed::SetModelIndex((uint))
.data:005F8384 dd offset CEntity::SetModelIndexNoCreate((uint))
.data:005F8388 dd offset CEntity::CreateRwObject((void))
.data:005F838C dd offset CEntity::DeleteRwObject((void))
.data:005F8390 dd offset CPhysical::GetBoundRect((void))
.data:005F8394 dd offset sub_4C2F10
.data:005F8398 dd offset CPhysical::ProcessCollision((void))
.data:005F839C dd offset CPhysical::ProcessShift((void))
.data:005F83A0 dd offset sub_4D3E70
.data:005F83A4 dd offset CPed::PreRender(void)
.data:005F83A8 dd offset CPed::Render(void)
.data:005F83AC dd offset CPed::SetupLighting(void)
.data:005F83B0 dd offset CPed::RemoveLighting(void)
.data:005F83B4 dd offset CPed::FlagToDestroyWhenNextProcessed((void))
.data:005F83B8 dd offset CPed::ProcessEntityCollision(void)
.data:005F83BC dd offset CPed::SetMoveAnim((void))

CCopPed


.data:005F82A4 _8CCopPed::`vtbl' dd offset sub_4C2E00                      ; DATA XREF: CCopPed::CCopPed((eCopType))+19o
.data:005F82A4                                                             ; sub_4C13E0+3o
.data:005F82A8 dd offset CPhysical::Add((void))
.data:005F82AC dd offset CPhysical::Remove((void))
.data:005F82B0 dd offset CPed::SetModelIndex((uint))
.data:005F82B4 dd offset CEntity::SetModelIndexNoCreate((uint))
.data:005F82B8 dd offset CEntity::CreateRwObject((void))
.data:005F82BC dd offset CEntity::DeleteRwObject((void))
.data:005F82C0 dd offset CPhysical::GetBoundRect((void))
.data:005F82C4 dd offset sub_4C1400
.data:005F82C8 dd offset CPhysical::ProcessCollision((void))
.data:005F82CC dd offset CPhysical::ProcessShift((void))
.data:005F82D0 dd offset sub_4D3E70
.data:005F82D4 dd offset CPed::PreRender(void)
.data:005F82D8 dd offset CPed::Render(void)
.data:005F82DC dd offset CPed::SetupLighting(void)
.data:005F82E0 dd offset CPed::RemoveLighting(void)
.data:005F82E4 dd offset CPed::FlagToDestroyWhenNextProcessed((void))
.data:005F82E8 dd offset CPed::ProcessEntityCollision(void)
.data:005F82EC dd offset CPed::SetMoveAnim((void))

CPlayerPed

.data:005FA500 _10CPlayerPed::`vtbl' dd offset sub_456920                  ; DATA XREF: CPlayerPed::CPlayerPed((void))+13o
.data:005FA500                                                             ; CPlayerPed::~CPlayerPed((void))+3o
.data:005FA500                                                             ; debug162:096A61F8o
.data:005FA500                                                             ; 0BEE1F60o ...
.data:005FA504 dd offset CPhysical::Add((void))
.data:005FA508 dd offset CPhysical::Remove((void))
.data:005FA50C dd offset CPed::SetModelIndex((uint))
.data:005FA510 dd offset CEntity::SetModelIndexNoCreate((uint))
.data:005FA514 dd offset CEntity::CreateRwObject((void))
.data:005FA518 dd offset CEntity::DeleteRwObject((void))
.data:005FA51C dd offset CPhysical::GetBoundRect((void))
.data:005FA520 dd offset CPlayerPed::ProcessControl((void))
.data:005FA524 dd offset CPhysical::ProcessCollision((void))
.data:005FA528 dd offset CPhysical::ProcessShift((void))
.data:005FA52C dd offset sub_4D3E70
.data:005FA530 dd offset CPed::PreRender(void)
.data:005FA534 dd offset CPed::Render(void)
.data:005FA538 dd offset CPed::SetupLighting(void)
.data:005FA53C dd offset CPed::RemoveLighting(void)
.data:005FA540 dd offset CPed::FlagToDestroyWhenNextProcessed((void))
.data:005FA544 dd offset CPed::ProcessEntityCollision(void)
.data:005FA548 dd offset sub_4F3760
  • thehambone likes this

Seemann
  • Seemann

    Ruhe

  • GTA Mods Staff
  • Joined: 03 Sep 2004
  • Russia
  • Best Tool 2016 [OpenIV]
    Best Tool 2013 [Sanny Builder]
    Contribution Award [Mods]
    Helpfulness Awards [Mods]

#11

Posted 21 June 2015 - 10:34 PM Edited by Seemann, 21 June 2015 - 10:44 PM.

Does anyone know where the global timer is hidden in GTA 3 memory?

bss:00885B48 _ZN6CTimer22m_snTimeInMillisecondsE_ptr // CTimer::m_snTimeInMilliseconds
 

How is the player rotation determined?

just like any other CPlaceable and its descendants

double z = atan2(-y,x) * 180.0 / M_PI;
if (z < 0)     { z += 360.0; }
if (z > 360.0) { z -= 360.0; }

where y is RwMatrix.top.y (CPlaceable+0x14), and x is RwMatrix.top.x (CPlaceable+0x18)


OrionSR
  • OrionSR

    Chain Game Development Team

  • Feroci
  • Joined: 23 May 2007
  • None
  • Helpfulness Award [GTA & Modding]

#12

Posted 23 June 2015 - 09:48 AM

I contacted customer support at SweetScape about my difficulties finding absolute game memory addresses in 010, which currently omits address ranges that can't be read from it's local offsets. The response was quick. Basically, we're working on it, and in the meantime here's a handy script that will Goto a specific memory location. I asked, and I can re-post it and we can modify it however we want.

 

They offered to host the original script in their Script Archive; I'll try to update with a direct link when it becomes available.

 

GotoMemoryLocation.1sc

//--------------------------------------
//--- 010 Editor v6.0a Script File
//
// File:    GotoMemoryLocation.1sc
// Author:  SweetScape Software
// Revision:1.0
// Purpose: Run this script on a process and
//  enter a memory location in the dialog
//  that is displayed. The memory address
//  is converted to a local address and the
//  cursor is moved to that position.
//--------------------------------------

// Input a number
int64 pos = InputNumber( "Goto Memory Location", 
    "Enter a memory location to goto in the current process. Use 'h' after a number to denote a hex address.", "0h" );
if( pos == BAD_VALUE )
    return -1; // cancelled

// Computer address
pos = ProcessHeapToLocalAddress( pos );
if( pos < 0 )
{
    Warning( "Could not convert memory address or the current file is not a process." );
    return -2;
}

// Goto the address
SetCursorPos( pos );
SetSelection( pos, 0 ); 

I assigned this script to a right-click button. Be sure to click on the hex display, it won't work on template output.

  • Seemann and thehambone like this

OrionSR
  • OrionSR

    Chain Game Development Team

  • Feroci
  • Joined: 23 May 2007
  • None
  • Helpfulness Award [GTA & Modding]

#13

Posted 01 July 2015 - 05:46 PM Edited by OrionSR, 01 July 2015 - 05:47 PM.

GTA3_Cped9.bt

 

This template represents my current progress for mapping the Cped structure for GTA3. I don't expect to continue this investigation any time soon as I've learned that most of this information doesn't matter as far as the save is concerned.

 

I've backtracked on trying to guess where many of the pointers are pointing. My observations provided inconsistent results.

 

I've been using "c" to identify a "constant" but I'm not sure if that's a standard or not, and I'm not really sure if what I marked as a constant really is constant; I just labeled them that way to making it easier to identify when something changed.

 

In general, there is a lot of speculation here. Don't believe anything you can't verify yourself.

 

Spoiler
  • Seemann, lopezloo and thehambone like this

Seemann
  • Seemann

    Ruhe

  • GTA Mods Staff
  • Joined: 03 Sep 2004
  • Russia
  • Best Tool 2016 [OpenIV]
    Best Tool 2013 [Sanny Builder]
    Contribution Award [Mods]
    Helpfulness Awards [Mods]

#14

Posted 01 July 2015 - 11:00 PM

Very impressive, if you did it without a debugger.

 

0x310 is the pointer to a CVehicle if the ped is driving.

  • thehambone likes this

OrionSR
  • OrionSR

    Chain Game Development Team

  • Feroci
  • Joined: 23 May 2007
  • None
  • Helpfulness Award [GTA & Modding]

#15

Posted 02 July 2015 - 11:30 PM Edited by OrionSR, 02 July 2015 - 11:30 PM.

Thanks. And yes, this was a purely observational study, and player ped data was always used - so take everything with a grain of salt. The basic strategy was to take Cped grabs from memory during game play using the template above and comparing the results. Anything that changed was then displayed on screen with a cleo script so I could keep a closer eye on things as I played.

 

I quickly got over my head trying to figure out where the pointers were pointing. 0x310 seems to be consistent with ped vehicle, but so was 0x30C and 0x170. Lots of things light up when the player enters a vehicle.

 

Pointers on Pointers

 

0x44 and 0x4C: These two point to a much different area of memory than most other pointers. I don't know what I found; my notes are, "something with player coordinates." These values did not change during my experiments.

 

0x6C seems like a primary object - whatever the player is on or over, even when in a car.

 

0x70 included the same data as 0x6C but didn't light up until the player had entered a 2nd car, or perhaps moved to a different object. My experiments were not terribly controlled. I was mostly gathering data to form hypothesizes I could test.

 

0xE4 pointed to a huge array of 20 byte structures. 0xE8 pointed to a huge array of 6 byte structures. The pointers appear to point to different records within their arrays as game play continues.

 

0xF0 and 0x2FC were pretty much the same as 0x6C except when standing on a car. Then, iirc, they pointed to a unique structure that I suspect is some sort of attachment bot that allows the ped to move in relation to moving vehicles or objects.

 

0xF4 lit up with a vehicle pointer when the first car was entered, but then was pointing at objects when a 2nd car was entered, and... I don't know what to do with this field.

 

0x170, 0x310 and 0x30C all pointed to the same vehicle.

 

0x344 pointed to a vehicle record after the first vehicle was entered and retained that value after a 2nd car was entered. I was thinking this was going to be the previous vehicle pointer until it reset to 0 after entering a 3rd car.

 

0x4B8 had the same data as 0x344 but also pointed to the weird attachment bot. But unlike 0xF0 and 0x2FC the pointer didn't change when the player jumped off the vehicle.

  • thehambone likes this

JazzCZ
  • JazzCZ

    Player Hater

  • New Members
  • Joined: 18 Jul 2015
  • Czech-Republic

#16

Posted 18 July 2015 - 02:09 PM

Has anyone found a Start New Game memory address?

I'm trying to make an autosplitter for speedrunning, but I cannot make it start automatically. Also need address for starting the first ingame cutscene on the bridge.


Shagg_E
  • Shagg_E

    Shaggy

  • Members
  • Joined: 19 Jan 2010
  • None

#17

Posted 03 August 2015 - 11:54 PM Edited by NRShaggy, 03 August 2015 - 11:57 PM.

In addition to this - vehicles(maybe also peds and entity) struct:

+0x78 - [float] - x push
+0x7C - [float] - y push
+0x80 - [float] - z push
+0x84 - [float] - X turn speed
+0x88 - [float] - Y turn speed
+0x8C - [float] - Z turn speed

 





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users