Talk:Memory Addresses (SA)
Making something more clear
Under the section "Other Dynamic Memory Addresses (non-static)", there is a sub-section called "This pointer" which refers to the contents of the pointer to a pointer as specified above that sub-section. It's in my opinion that this is unclear and may lead to confusion. I suggest re-formatting the section something like this.
General
- 0xB6F5F0 - Player pointer (CPed)
- 0xB7CD98 - Player pointer, direct offset to the ped pool start (CPed)
- 0xB74498 - CPeds maximum number (normally 140)
- 0xB74490 - Contains a pointer to a pointer
- +0 = Contains a pointer to the first element in the pool
- +4 = Contains a pointer to a byte map indicating which elements are in use
- +8 = [dword] Is the maximum number of elements in the pool
- +12 = [dword] Is the current number of elements in the pool
Formatting As Lists
By using description lists, each address can be emboldened on one line with the description indented below it. Using CODE tags for the code makes them stand out better.
When an entry has both code and prose descriptions, the prose one should be coded as a separate description.
Something like this:
- 0xA49960
- Start of SCM block.
0xA49960 + (4 * varnumber)is that particular variable.- 0xA49D54
- Timer for driving/flying missions.
- (
[dword]in ms) - 0xA51974
- Timer for boat/bike missions
- (
[dword]in ms) - 0xA51A3C
- Timer for Bloodring race
- 0xB6F5F0
- Player pointer
- (
player_ptr) - 0xB6F3B8
- Car pointer
- 0xB7CE50
- Money
[dword]- 0xBAA420
- Wanted Level
However, since this article is so huge I don't really feel like doing it. Cerbera 00:12, 4 Jan 2007 (CST)
Code Sample
I've made something handy, but I don't know where to put is, as it is a quite large piece of code:
typedef DWORD _CMATRIX_TYPE;
typedef _CMATRIX_TYPE CMATRIX_TYPE; // This is temporarily
typedef DWORD _CPED_TYPE;
typedef _CPED_TYPE CPED_TYPE; // This is temporarily
typedef struct _CVEHICLE_TYPE {
BYTE _pad1[20]; // 0 ... 19
CMATRIX_TYPE * pMatrix; // 20 ... 23
BYTE _pad2[10]; // 24 ... 33
WORD wVehicleID; // 34 ... 35
BYTE _pad3[30]; // 36 ... 65
BYTE bImmunities; // 66 ... 66
BYTE _pad4[1]; // 67 ... 67
float fXSpeed; // 68 ... 71
float fYSpeed; // 72 ... 75
float fZSpeed; // 76 ... 79
float fXSpin; // 80 ... 83
float fYSpin; // 84 ... 87
float fZSpin; // 88 ... 91
BYTE _pad5[48]; // 92 ... 139
float fMass; // 140 ... 143
float fTurnMass; // 144 ... 147
float fGripDivider; // 148 ... 151
float fMTGMultiplier; // 152 ... 155
BYTE _pad6[4]; // 156 ... 159
float fNGripLevel; // 160 ... 163
float fXCoM; // 164 ... 167
float fYCoM; // 168 ... 171
float fZCoM; // 172 ... 175
BYTE _pad7[888]; // 176 ... 1063
BYTE bEngineState; // 1064 ... 1064
BYTE _pad8[11]; // 1065 ... 1075
BYTE bBodyColor; // 1076 ... 1076
BYTE bStripeColor; // 1077 ... 1077
BYTE bBodyColor2; // 1078 ... 1078
BYTE bStripeColor2; // 1079 ... 1079
DWORD dwModData[8]; // 1080 ... 1111
float fWheelSize; // 1112 ... 1115
DWORD dwAlarmTimeLeft;// 1116 ... 1119
CPED_TYPE * pDriver; // 1120 ... 1123
CPED_TYPE * pPassenger[7]; // 1124 ... 1151
BYTE _pad9[20]; // 1152 ... 1171
float fSteerAngles[2];// 1172 ... 1179
float fGasPedal; // 1180 ... 1183
float fBreakPedal; // 1184 ... 1187
BYTE _pad10[28]; // 1188 ... 1215
float fHealth; // 1216 ... 1219
} CVEHICLE_TYPE;
-- JGuntherS@NL 09:10, 21 Dec 2006 (CST)