@@ -71,32 +71,104 @@ As **xiderowg**'s says on https://www.unknowncheats.me/forum/pubg-mobile/379241-
71
71
---
72
72
## Player Details
73
73
![ ] ( https://raw.githubusercontent.com/atiksoftware/pubg_mobile_memory_hacking_examples/master/screens/example_player_reclass.jpg )
74
+ ---
75
+ ## Player Details
74
76
``` c++
75
- Entities[i].setHealthEnergy(
76
- get<float >(Entities[i].entityAddv + 0x77C ), // maxHealth
77
- get<float >(Entities[i].entityAddv + 0x778 ), // curHealth
78
- get<float >(Entities[i].entityAddv + 0x1408 ), // maxEnergy
79
- get<float >(Entities[i].entityAddv + 0x140C ) // curEnergy
80
- );
81
- // Player Weapon
82
- bool foundedActiveWeapon = false ;
83
- DWORD weaponsCapsule = get<DWORD>(Entities[i].entityAddv + 0x12C );
84
- for (int w = 0 ; w < 16 ; w += 4 ){
85
- DWORD weaponBase = get<DWORD>(weaponsCapsule + w);
86
- DWORD weaponAmmoBase = get<DWORD>(weaponBase + 0x54);
87
- // handleA == 54234 && handleB == 2
88
- if(get<int>(weaponBase + 0xD8) == 54234 && get<int>(weaponBase + 0xDC) == 2){
89
- Entities[i].setActiveWeapon(
90
- get<int>(get<DWORD>(weaponBase + 0x4BC) + 0xC0), // weaponId
91
- get<int>(weaponAmmoBase + 0x7D4), // maxAmmo
92
- get<int>(weaponAmmoBase + 0x7D0) // curAmmo
93
- );
94
- foundedActiveWeapon = true;
95
- break;
96
- }
77
+ DWORD NavMesh = dGet(Entities[i]->entityAddv + 312 );
78
+ Entities[i]->position = v3fGet(NavMesh + 0x150 );
79
+ Entities[i]->onEntiyPositionChanged ();
80
+ Entities[i]->velocity = v3fGet(NavMesh + 0x1A0 );
81
+ Entities[i]->onEntiyVelocityChanged ();
82
+
83
+ Entities[i]->playerWorld = dGet(entityAddv + 0x138 );
84
+
85
+ // Thats UFT16 wchar
86
+ strcpy (Entities[ i] ->playerName, strGet(dGet(entityAddv + 0x5E8), iGet(entityAddv + 0x5EC) * 2));
87
+ strcpy(Entities[ i] ->playerFlag, strGet(dGet(entityAddv + 0x5F4), 4));
88
+ strcpy(Entities[ i] ->playerID, strGet(dGet(entityAddv + 0x604), 22));
89
+
90
+ Entities[ i] ->playerStatus = iGet(Entities[ i] ->playerWorld + 0x364);
91
+ Entities[ i] ->playerTeamId = iGet(entityAddv + 0x610);
92
+ Entities[ i] ->itsMe = 0;
93
+ if(entityAddv == uMyObject){
94
+ myTeamID = Entities[ i] ->playerTeamId;
95
+ MeEntity = Entities[ i] ;
96
+ Entities[ i] ->itsMe = 1;
97
+ }
98
+ Entities[ i] ->itsFriend = 0;
99
+ if(myTeamID == Entities[ i] ->playerTeamId){
100
+ Entities[ i] ->itsFriend = 1;
101
+ }
102
+ Entities[ i] ->playerIsBot = iGet(entityAddv + 0x2B4) == 0 ? true : false;
103
+ DWORD tmpAddv = dGet(entityAddv + 0x308);
104
+ Entities[ i] ->bodyAddv = tmpAddv + 0x140;
105
+ Entities[ i] ->boneAddv = dGet(tmpAddv + 0x580) + 0x30;
106
+
107
+
108
+ Entities[ i] ->rotation = fGet(Entities[ i] ->playerWorld + 0x128); // ROTATE
109
+
110
+ /* PSOE Ites not ineger, bytes, but we will read as integer.
111
+ 1144306736 standing
112
+ 1143847984 crouched
113
+ 1143684144 creep * /
114
+ Entities[ i] ->playerPose = iGet(Entities[ i] ->playerWorld + 0x130);
115
+
116
+ Entities[ i] ->playerHealth.max = fGet(Entities[ i] ->entityAddv + 0x77C);
117
+ Entities[ i] ->playerHealth.cur = fGet(Entities[ i] ->entityAddv + 0x778);
118
+ Entities[ i] ->playerEnergy.max = fGet(Entities[ i] ->entityAddv + 0x1408);
119
+ Entities[ i] ->playerEnergy.cur = fGet(Entities[ i] ->entityAddv + 0x140C);
120
+
121
+ DWORD weaponsCapsule = dGet(Entities[ i] ->entityAddv + 0x12C);
122
+ Entities[ i] ->playerIsAttacking = false;
123
+ for(int w = 0; w < 4; w++){
124
+ DWORD weaponBase = dGet(weaponsCapsule + w * 4);
125
+ DWORD weaponAmmoBase = dGet(weaponBase + 0x54);
126
+ Entities[ i] ->playerWeapons[ w] .activity = iGet(weaponBase + 0xDC);
127
+ Entities[ i] ->playerWeapons[ w] .state = iGet(weaponBase + 0x4C0);
128
+ Entities[ i] ->playerWeapons[ w] .entityId = iGet(dGet(weaponBase + 0x4BC) + 0xC0);
129
+ Entities[ i] ->playerWeapons[ w] .maxAmmo = iGet(weaponAmmoBase + 0x7D4);
130
+ Entities[ i] ->playerWeapons[ w] .curAmmo = iGet(weaponAmmoBase + 0x7D0);
131
+ }
132
+ // Bones
133
+ Entities[ i] ->boneActor = vectorBoneRead(Entities[ i] ->bodyAddv);
134
+ for(int b = 0; b < 15; b++){
135
+ Entities[ i] ->playerBones[ b] = getPlayerBone(Entities[ i] ->boneAddv, Entities[ i] ->boneActor, i, b);
97
136
}
98
137
```
138
+ ---
139
+ ## Vehicle Details
140
+ ```c++
141
+ DWORD NavMesh = dGet(Entities[i]->entityAddv + 312);
142
+ Entities[i]->position = v3fGet(NavMesh + 0x150);
143
+ Entities[i]->onEntiyPositionChanged();
99
144
145
+ Entities[i]->velocity = v3fGet(dGet(Entities[i]->entityAddv + 0x54) + 0x78);
146
+ Entities[i]->onEntiyVelocityChanged();
147
+ DWORD vehicleCommon = dGet(dGet(Entities[i]->entityAddv + 0x54) + 0x4D8);
148
+ Entities[i]->vehicleHealth.max = fGet(vehicleCommon + 0x108);
149
+ Entities[i]->vehicleHealth.cur = fGet(vehicleCommon + 0x10C);
150
+ Entities[i]->vehicleFuel.max = fGet(vehicleCommon + 0x120);
151
+ Entities[i]->vehicleFuel.cur = fGet(vehicleCommon + 0x124);
152
+ ```
153
+ ---
154
+ ## Inventory Details
155
+ ``` c++
156
+ int boxItemCount = iGet(entityAddv + 0x440 );
157
+ Entities[i]->inventoryItemCount = 0 ;
158
+ if (boxItemCount < 60 ){
159
+ DWORD itemEntry = iGet(entityAddv + 0x43C);
160
+ if(itemEntry > 50000){
161
+ for(int h = 0; h < boxItemCount; h++){
162
+ DWORD itemAddv = itemEntry + h * 48;
163
+ Entities[i]->inventoryItems[Entities[i]->inventoryItemCount].entityId = iGet(itemAddv + 0x4);
164
+ if(Entities[i]->inventoryItems[Entities[i]->inventoryItemCount].entityId > 0){
165
+ Entities[i]->inventoryItems[Entities[i]->inventoryItemCount].count = iGet(itemAddv + 0x18);
166
+ Entities[i]->inventoryItemCount++;
167
+ }
168
+ }
169
+ }
170
+ }
171
+ ```
100
172
---
101
173
102
174
## Item Details
0 commit comments