Автор Тема: Выкладываем наработки по анализу кода, дизассемблированные базы, адреса  (Прочитано 31248 раз)

Оффлайн graveman

  • Прохожий
  • *
  • Сообщений: 50
  • Репутация: +3/-0
  • Its cool! Man
    • Просмотр профиля
Думаю, общими усилиями, здесь присутствующие программеры могли бы быстрее разобрать экзешник игры, чтобы делать полноценные моды на плагинах, а не ограничиваться только скриптами. Предлагаю выкладывать сюда свои базы адресов, описания классов и функций движка игры.

Добавлено мной.
Просьба выкладывать наработки в виде .rar или .zip архивов с небольшим пояснением., чтобы легче было ориентироваться.
« Последнее редактирование: Ноябрь 26, 2013, 04:54:43 pm от graveman »

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Начинал совсем не много возится с оружием и с другими модулями, пока это сырое все. Вообщем строго не судите, я пока-что этим мало занимался. Там есть над чем поработать.

vcWeapon.h

Код: C++
  1. #pragma pack (push, 1)
  2.  
  3. struct CWeaponInfo{
  4.  DWORD weaponType;
  5.  DWORD Range;
  6.  DWORD FiringRate;
  7.  DWORD Reload;
  8.  DWORD AmmoInCLip;
  9.  DWORD Damage;
  10.  DWORD Speed;
  11.  DWORD Radius;
  12.  DWORD LifeSpan;
  13.  DWORD Spread;
  14.  RwV3d FireOffset;
  15.  DWORD AnimIndex;
  16.  DWORD AnimLoopStart;
  17.  DWORD AnimLoopEnd;
  18.  DWORD AnimFire;
  19.  DWORD Anim2LoopStart;
  20.  DWORD Anim2LoopEnd;
  21.  DWORD Anim2Fire;
  22.  DWORD AnimBreakout;
  23.  DWORD mi;
  24.  DWORD mi2;
  25.  DWORD flags;
  26.  DWORD slot;
  27. };
  28.  
  29.  
  30. class CWeaponData{
  31.  
  32. public:
  33.  static CWeaponInfo * GetWeaponInfoByIndex(int weaponIndex);
  34.  static void Init();
  35. };
  36.  
  37.  
  38.  
  39. class CEntity_;
  40.  
  41.  
  42. class CWeaponSlot{
  43.  
  44.  public:
  45.         DWORD weaponIndex;
  46.     DWORD field_4;
  47.     DWORD AmmoInClip;
  48.     DWORD ammo;
  49.     DWORD field_10;
  50.     BYTE field_14;
  51.     BYTE field_15;
  52.     BYTE field_16;
  53.     BYTE field_17;
  54.         void Reload();
  55.         void FireInstantHit(CEntity_ * entity, RwV3d * vector);
  56.         void Fire(CEntity_ * entity, RwV3d * vector);
  57.         void FireShotgun(CEntity_ * entity, RwV3d * vector);
  58.         void FireSniper(CEntity * entity);
  59.         void BlowUpExplosiveThings( CEntity_ *);
  60.  
  61. };
  62.  
  63.  
  64. #pragma pack (pop)
  65.  
  66.  


vcWeapon.cpp


Код: C++
  1. #include "stdafx.h"
  2.  
  3. #include "vcRenderWare.h"
  4. #include "vcCamera.h"
  5. #include "vcPhysic.h"
  6. #include "vcWeapon.h"
  7. #include "vcActors.h"
  8. #include <math.h>
  9.  
  10.  
  11.  
  12. //CWeaponInfo_ WeaponInfo[37];
  13. CWeaponInfo * WeaponsInfo   = (CWeaponInfo*)0x0782A14; //Временно
  14. extern CCamera * _Camera;
  15.  
  16.  
  17. CWeaponInfo * CWeaponData::GetWeaponInfoByIndex(int weaponIndex){
  18.   return &WeaponsInfo[weaponIndex];
  19. };
  20.  
  21.  
  22. //005D5750
  23. void CWeaponData::Init() {
  24.  
  25. //Дописать!
  26.  
  27. for (int i=0; i < 37; i++) {
  28.            WeaponsInfo[i].weaponType     = 1;
  29.            WeaponsInfo[i].Range          = 0;
  30.            WeaponsInfo[i].FiringRate     = 0;
  31.            WeaponsInfo[i].Reload         = 0;
  32.            WeaponsInfo[i].AmmoInCLip     = 0;
  33.            WeaponsInfo[i].Damage         = 0;
  34.            WeaponsInfo[i].Speed          = 0;
  35.            WeaponsInfo[i].Radius         = 0;
  36.            WeaponsInfo[i].LifeSpan       = 0;
  37.            WeaponsInfo[i].Spread         = 0;
  38.            WeaponsInfo[i].FireOffset.x   = 0;
  39.            WeaponsInfo[i].FireOffset.y   = 0;
  40.            WeaponsInfo[i].FireOffset.z   = 0;
  41.            WeaponsInfo[i].AnimIndex      = 7;
  42.            WeaponsInfo[i].AnimLoopStart  = 0;
  43.            WeaponsInfo[i].AnimLoopEnd    = 0;
  44.            WeaponsInfo[i].AnimFire       = 0;
  45.            WeaponsInfo[i].Anim2LoopStart = 0;
  46.            WeaponsInfo[i].Anim2LoopEnd   = 0;
  47.            WeaponsInfo[i].Anim2Fire      = 0;
  48.            WeaponsInfo[i].AnimBreakout   = 0;
  49.            WeaponsInfo[i].flags          = 59;
  50.            WeaponsInfo[i].slot           = 0;
  51.      }
  52.  
  53. };
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60. void RwV3dnormalize(RwV3d * V3d) {
  61.     float inv_lng = 1.0f / sqrt(V3d->x*V3d->x + V3d->y*V3d->y + V3d->z*V3d->z);
  62.         V3d->x = V3d->x * inv_lng;
  63.         V3d->y = V3d->y * inv_lng;
  64.         V3d->z = V3d->z * inv_lng;
  65. }
  66.  
  67.  
  68.  
  69.  
  70. //005CA3C0
  71. void CWeaponSlot::Reload() {
  72.  
  73.  if (ammo) {
  74.         if ((ammo >= CWeaponData::GetWeaponInfoByIndex(weaponIndex)->AmmoInCLip) )
  75.                  AmmoInClip  = CWeaponData::GetWeaponInfoByIndex(weaponIndex)->AmmoInCLip;
  76.         else
  77.                  AmmoInClip = ammo;
  78.     }
  79.  
  80. };
  81.  
  82. //005D1140
  83. void CWeaponSlot::FireInstantHit(CEntity_ * entity, RwV3d * vector){
  84.         auto CWeaponFireInstantHit = (void (__thiscall*)(CWeaponSlot * weaponSlot, CEntity_ * entity, RwV3d * vector))0x05D1140;
  85.         CWeaponFireInstantHit(this,entity,vector);
  86. };
  87.  
  88. //05D45E0
  89. void CWeaponSlot::Fire(CEntity_ * entity, RwV3d * vector){
  90.         auto CWeaponFire = (void (__thiscall*)(CWeaponSlot * weaponSlot, CEntity_ * entity, RwV3d * vector))0x05D45E0;
  91.         CWeaponFire(this,entity,vector);
  92. };
  93.  
  94. //005CD340
  95. void CWeaponSlot::FireShotgun(CEntity_ * entity, RwV3d * vector){
  96.         auto CWeaponFireShotgun = (void (__thiscall*)(CWeaponSlot * weaponSlot, CEntity_ * entity, RwV3d * vector))0x05CD340;
  97.         CWeaponFireShotgun(this,entity,vector);
  98. };
  99.  
  100.  
  101. //
  102. float   flt_69D480 = -0.98f;
  103. float * dword_69D398 =  (float*)0x069D398;
  104. float   flt_69D484 = 0.145f;
  105. float   flt_69D488 = 0.996f;
  106.  
  107. DWORD * dword_695680 = (DWORD*)0x0695680;
  108. float   flt_69D48C = 16.0f;
  109. float * flt_69D394 =  (float*)0x069D394;
  110.  
  111.  
  112.  
  113. //005CC730
  114. void CWeaponSlot::FireSniper(CEntity * entity) {
  115.  bool isPlayer = false;
  116.  
  117.  if ((CEntity*)CPlayerPed::GetPlayerPed() == entity)
  118.           isPlayer = true;
  119.     else
  120.           isPlayer = false;
  121.  
  122.   if (isPlayer == false){
  123.           // CWeaponData::GetWeaponInfoByIndex(weaponIndex); зачем?
  124.  
  125.           if (isPlayer == true) {
  126.                   _Camera->cams[_Camera->activeCam].field_168.y * flt_69D480;
  127.               _Camera->cams[_Camera->activeCam].field_168.x * (*dword_69D398);
  128.                   _Camera->cams[_Camera->activeCam].field_168.z * flt_69D484;
  129.  
  130.              }
  131.  
  132.  
  133.  
  134.                   //  _Camera->cams[_Camera->activeCam].camPos
  135.                   /*
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.                   */
  143.  
  144.  
  145.  
  146.  
  147.  
  148.      } else {
  149.              switch (_Camera->cams[_Camera->activeCam].field_C)
  150.                         {
  151.                              case 34: break;
  152.                              case  7: break;
  153.                                  case 46: break;
  154.                                  case  8: break;
  155.                  case 42: break;
  156.                                  case 39: break;
  157.                                  case 40: break;
  158.    
  159.                   return;
  160.                         }
  161.  
  162.  
  163.  
  164.     }
  165.  
  166.  
  167.  
  168.  
  169. };
  170.  
  171.  
  172.  
  173. void CWeaponSlot::BlowUpExplosiveThings(CEntity_ * entity) {
  174.         auto CWeaponBlowUpExplosiveThing = (void (__thiscall*)(CWeaponSlot * weaponSlot, CEntity_ * entity))0x05C8AE0;
  175.         CWeaponBlowUpExplosiveThing(this, entity);
  176. };
  177.  
  178.  


vcRenderWare.h

Код: C++
  1. #pragma pack (push, 1)
  2.  
  3. class RwRGBA {
  4. public:
  5.       char red;
  6.           char green;
  7.           char blue;
  8.           char alpha;
  9.      __inline RwRGBA () {}
  10.      __inline RwRGBA (BYTE r, BYTE g, BYTE b, BYTE a) { red = r; green = g; blue = b; alpha = a; }
  11. };
  12.  
  13.  
  14.  
  15.  
  16. struct RwV3d{
  17.   float x;
  18.   float y;
  19.   float z;
  20. };
  21.  
  22. struct RwRect{
  23.         float x;
  24.     float y;
  25.     float w;
  26.     float h;
  27. };
  28.  
  29.  
  30. struct RwMatrix {
  31.   RwV3d right;
  32.   int flags;
  33.   RwV3d top;
  34.   int field_1C;
  35.   RwV3d at;
  36.   int field_2C;
  37.   RwV3d pos;
  38.   int field_3C;
  39. };
  40.  
  41. struct  RwBBox{
  42.  RwV3d sup;
  43.  RwV3d inf;
  44. };
  45.  
  46.  
  47. struct RwSphere{
  48.   RwV3d center;
  49.   float radius;
  50. };
  51.  
  52.  
  53. struct CMatrix {
  54.  RwMatrix __parent;        
  55.  int matrixPtr;                
  56.  int haveRwMatrix;
  57. };
  58.  
  59. struct CPlacable{
  60.  CMatrix matrix;
  61. };
  62.  
  63.  
  64. #pragma pack (pop)


vcPhysic.h

Код: C++
  1. #pragma pack (push, 1)
  2.  
  3. struct CEntity{
  4.  DWORD __vmt;
  5.  CPlacable placable;
  6.  DWORD rwObject;
  7.  BYTE flags;
  8.  BYTE type;
  9.  BYTE field_52;
  10.  BYTE field_53;
  11.  BYTE field_54;
  12.  BYTE field_55;
  13.  BYTE field_56;
  14.  BYTE field_57;
  15.  WORD field_58;
  16.  WORD field_5A;
  17.  WORD modelIndex;
  18.  BYTE buildingIsland;
  19.  BYTE interior;
  20.  DWORD pReference;
  21. };
  22.  
  23.  
  24. struct CPhysical{
  25.  CEntity __parent;
  26.  DWORD audioID;
  27.  DWORD field_68;
  28.  DWORD field_6C;
  29.  RwV3d velocity;
  30.  RwV3d angularVelocity;
  31.  DWORD field_88;
  32.  DWORD field_8C;
  33.  DWORD field_90;
  34.  DWORD field_94;
  35.  DWORD field_98;
  36.  DWORD field_9C;
  37.  DWORD field_A0;
  38.  DWORD field_A4;
  39.  DWORD field_A8;
  40.  DWORD field_AC;
  41.  DWORD field_B0;
  42.  DWORD field_B4;
  43.  DWORD fMass;
  44.  DWORD fTurnMass;
  45.  DWORD field_C0;
  46.  float AirResistance;
  47.  DWORD Elasticy;
  48.  DWORD PercentSubmerged;
  49.  RwV3d CenterOfMass;
  50.  DWORD field_DC;
  51.  DWORD ptrNode;
  52.  BYTE field_E4;
  53.  BYTE field_E5;
  54.  BYTE field_E6;
  55.  BYTE field_E7;
  56.  DWORD field_E8;
  57.  DWORD field_EC;
  58.  DWORD field_F0;
  59.  DWORD field_F4;
  60.  DWORD field_F8;
  61.  DWORD field_FC;
  62.  DWORD field_100;
  63.  DWORD field_104;
  64.  DWORD field_108;
  65.  DWORD field_10C;
  66.  DWORD field_110;
  67.  DWORD field_114;
  68.  WORD field_118;
  69.  BYTE field_11A;
  70.  BYTE field_11B;
  71.  BYTE field_11C;
  72.  BYTE islandNo;
  73.  WORD __padding;
  74. };
  75.  
  76. #pragma pack (pop)
  77.  
  78.  


vcCamera.h

Код: C++
  1. #pragma pack (push, 1)
  2.  
  3.  
  4. struct CCam {
  5.  BYTE field_0;
  6.  BYTE field_1;
  7.  BYTE field_2;
  8.  DWORD field_3;
  9.  BYTE field_7;
  10.  BYTE field_8;
  11.  BYTE field_9;
  12.  BYTE field_A;
  13.  BYTE field_B;
  14.  WORD field_C;
  15.  BYTE field_E;
  16.  BYTE field_F;
  17.  BYTE field_10;
  18.  BYTE field_11;
  19.  BYTE field_12;
  20.  BYTE field_13;
  21.  DWORD field_14;
  22.  DWORD field_18;
  23.  DWORD field_1C;
  24.  DWORD field_20;
  25. BYTE field_24;
  26. BYTE field_25;
  27. BYTE field_26;
  28. BYTE field_27;
  29. DWORD field_28;
  30. DWORD field_2C;
  31. DWORD field_30;
  32. DWORD field_34;
  33. DWORD field_38;
  34. BYTE field_3C;
  35. BYTE field_3D;
  36. BYTE field_3E;
  37. BYTE field_3F;
  38. BYTE field_40;
  39. BYTE field_41;
  40. BYTE field_42;
  41. BYTE field_43;
  42. BYTE field_44;
  43. BYTE field_45;
  44. BYTE field_46;
  45. BYTE field_47;
  46. DWORD field_48;
  47. DWORD field_4C;
  48. DWORD field_50;
  49. DWORD field_54;
  50. BYTE field_58;
  51. BYTE field_59;
  52. BYTE field_5A;
  53. BYTE field_5B;
  54. DWORD field_5C;
  55. DWORD field_60;
  56. DWORD field_64;
  57. DWORD field_68;
  58. DWORD field_6C;
  59. BYTE field_70;
  60. BYTE field_71;
  61. BYTE field_72;
  62. BYTE field_73;
  63. BYTE field_74;
  64. BYTE field_75;
  65. BYTE field_76;
  66. BYTE field_77;
  67. BYTE field_78;
  68. BYTE field_79;
  69. BYTE field_7A;
  70. BYTE field_7B;
  71. DWORD field_7C;
  72. DWORD field_80;
  73. DWORD field_84;
  74. DWORD field_88;
  75. DWORD field_8C;
  76. BYTE field_90;
  77. BYTE field_91;
  78. BYTE field_92;
  79. BYTE field_93;
  80. DWORD field_94;
  81. DWORD field_98;
  82. BYTE field_9C;
  83. BYTE field_9D;
  84. BYTE field_9E;
  85. BYTE field_9F;
  86. BYTE field_A0;
  87. BYTE field_A1;
  88. BYTE field_A2;
  89. BYTE field_A3;
  90. BYTE field_A4;
  91. BYTE field_A5;
  92. BYTE field_A6;
  93. BYTE field_A7;
  94. BYTE field_A8;
  95. BYTE field_A9;
  96. BYTE field_AA;
  97. BYTE field_AB;
  98. BYTE field_AC;
  99. BYTE field_AD;
  100. BYTE field_AE;
  101. BYTE field_AF;
  102. DWORD field_B0;
  103. DWORD field_B4;
  104. BYTE field_B8;
  105. BYTE field_B9;
  106. BYTE field_BA;
  107. BYTE field_BB;
  108. DWORD field_BC;
  109. DWORD field_C0;
  110. DWORD field_C4;
  111. DWORD field_C8;
  112. DWORD field_CC;
  113. DWORD field_D0;
  114. BYTE field_D4;
  115. BYTE field_D5;
  116. BYTE field_D6;
  117. BYTE field_D7;
  118. DWORD field_D8;
  119. DWORD field_DC;
  120. DWORD field_E0;
  121. DWORD field_E4;
  122. DWORD field_E8;
  123. DWORD field_EC;
  124. DWORD field_F0;
  125. DWORD field_F4;
  126. DWORD field_F8;
  127. BYTE field_FC;
  128. BYTE field_FD;
  129. BYTE field_FE;
  130. BYTE field_FF;
  131. BYTE field_100;
  132. BYTE field_101;
  133. BYTE field_102;
  134. BYTE field_103;
  135. BYTE field_104;
  136. BYTE field_105;
  137. BYTE field_106;
  138. BYTE field_107;
  139. BYTE field_108;
  140. BYTE field_109;
  141. BYTE field_10A;
  142. BYTE field_10B;
  143. BYTE field_10C;
  144. BYTE field_10D;
  145. BYTE field_10E;
  146. BYTE field_10F;
  147. BYTE field_110;
  148. BYTE field_111;
  149. BYTE field_112;
  150. BYTE field_113;
  151. BYTE field_114;
  152. BYTE field_115;
  153. BYTE field_116;
  154. BYTE field_117;
  155. BYTE field_118;
  156. BYTE field_119;
  157. BYTE field_11A;
  158. BYTE field_11B;
  159. BYTE field_11C;
  160. BYTE field_11D;
  161. BYTE field_11E;
  162. BYTE field_11F;
  163. BYTE field_120;
  164. BYTE field_121;
  165. BYTE field_122;
  166. BYTE field_123;
  167. BYTE field_124;
  168. BYTE field_125;
  169. BYTE field_126;
  170. BYTE field_127;
  171. BYTE field_128;
  172. BYTE field_129;
  173. BYTE field_12A;
  174. BYTE field_12B;
  175. BYTE field_12C;
  176. BYTE field_12D;
  177. BYTE field_12E;
  178. BYTE field_12F;
  179. BYTE field_130;
  180. BYTE field_131;
  181. BYTE field_132;
  182. BYTE field_133;
  183. BYTE field_134;
  184. BYTE field_135;
  185. BYTE field_136;
  186. BYTE field_137;
  187. BYTE field_138;
  188. BYTE field_139;
  189. BYTE field_13A;
  190. BYTE field_13B;
  191. BYTE field_13C;
  192. BYTE field_13D;
  193. BYTE field_13E;
  194. BYTE field_13F;
  195. BYTE field_140;
  196. BYTE field_141;
  197. BYTE field_142;
  198. BYTE field_143;
  199. BYTE field_144;
  200. BYTE field_145;
  201. BYTE field_146;
  202. BYTE field_147;
  203. BYTE field_148;
  204. BYTE field_149;
  205. BYTE field_14A;
  206. BYTE field_14B;
  207. BYTE field_14C;
  208. BYTE field_14D;
  209. BYTE field_14E;
  210. BYTE field_14F;
  211. BYTE field_150;
  212. BYTE field_151;
  213. BYTE field_152;
  214. BYTE field_153;
  215. BYTE field_154;
  216. BYTE field_155;
  217. BYTE field_156;
  218. BYTE field_157;
  219. BYTE field_158;
  220. BYTE field_159;
  221. BYTE field_15A;
  222. BYTE field_15B;
  223. BYTE field_15C;
  224. BYTE field_15D;
  225. BYTE field_15E;
  226. BYTE field_15F;
  227. BYTE field_160;
  228. BYTE field_161;
  229. BYTE field_162;
  230. BYTE field_163;
  231. BYTE field_164;
  232. BYTE field_165;
  233. BYTE field_166;
  234. BYTE field_167;
  235. RwV3d field_168;
  236. RwV3d camPos;
  237. BYTE field_180;
  238. BYTE field_181;
  239. BYTE field_182;
  240. BYTE field_183;
  241. BYTE field_184;
  242. BYTE field_185;
  243. BYTE field_186;
  244. BYTE field_187;
  245. BYTE field_188;
  246. BYTE field_189;
  247. BYTE field_18A;
  248.  BYTE field_18B;
  249.  DWORD field_18C;
  250.  DWORD field_190;
  251.  DWORD field_194;
  252.  RwV3d field_198[2];
  253.  DWORD targetedEntity;
  254.  BYTE field_1B4;
  255.  BYTE field_1B5;
  256.  BYTE field_1B6;
  257.  BYTE field_1B7;
  258.  BYTE field_1B8;
  259.  BYTE field_1B9;
  260.  BYTE field_1BA;
  261.  BYTE field_1BB;
  262.  DWORD field_1BC;
  263.  DWORD field_1C0;
  264.  DWORD field_1C4;
  265.  BYTE field_1C8;
  266.  BYTE field_1C9;
  267.  BYTE field_1CA;
  268.  BYTE field_1CB;
  269. };
  270.  
  271. struct CCamera {
  272.  CPlacable __parent;
  273.  BYTE field_48;
  274.  BYTE field_49;
  275.  BYTE field_4A;
  276.  BYTE field_4B;
  277.  BYTE field_4C;
  278.  BYTE field_4D;
  279.  BYTE field_4E;
  280.  BYTE field_4F;
  281.  BYTE field_50;
  282.  BYTE field_51;
  283.  BYTE field_52;
  284.  BYTE field_53;
  285. BYTE field_54;
  286. BYTE field_55;
  287. BYTE field_56;
  288. BYTE field_57;
  289. BYTE field_58;
  290. BYTE field_59;
  291. BYTE field_5A;
  292. BYTE field_5B;
  293. BYTE field_5C;
  294. BYTE field_5D;
  295. BYTE field_5E;
  296. BYTE field_5F;
  297. BYTE field_60;
  298. BYTE field_61;
  299. BYTE field_62;
  300. BYTE field_63;
  301. BYTE field_64;
  302. BYTE field_65;
  303. BYTE field_66;
  304. BYTE field_67;
  305. BYTE field_68;
  306. BYTE field_69;
  307. BYTE field_6A;
  308. BYTE field_6B;
  309. BYTE field_6C;
  310. BYTE wideScreen;
  311. BYTE field_6E;
  312. BYTE field_6F;
  313. BYTE field_70;
  314. BYTE field_71;
  315. BYTE field_72;
  316. BYTE field_73;
  317. BYTE field_74;
  318. BYTE field_75;
  319. BYTE activeCam;
  320. BYTE field_77;
  321. DWORD TimeEndShaking;
  322. BYTE field_7C;
  323. BYTE field_7D;
  324. BYTE field_7E;
  325. BYTE field_7F;
  326. DWORD field_80;
  327. BYTE field_84;
  328. BYTE field_85;
  329. BYTE field_86;
  330. BYTE field_87;
  331. BYTE field_88;
  332. BYTE field_89;
  333. BYTE field_8A;
  334. BYTE field_8B;
  335. DWORD field_8C;
  336. DWORD field_90;
  337. DWORD field_94;
  338. DWORD field_98;
  339. BYTE field_9C;
  340. BYTE field_9D;
  341. BYTE field_9E;
  342. BYTE field_9F;
  343. BYTE field_A0;
  344. BYTE field_A1;
  345. BYTE field_A2;
  346. BYTE field_A3;
  347. DWORD field_A4;
  348. DWORD field_A8;
  349. DWORD field_AC;
  350. DWORD field_B0;
  351. DWORD field_B4;
  352. DWORD field_B8;
  353. BYTE field_BC;
  354. BYTE field_BD;
  355. BYTE field_BE;
  356. BYTE field_BF;
  357. DWORD field_C0;
  358. DWORD field_C4;
  359. DWORD field_C8;
  360. DWORD field_CC;
  361. DWORD field_D0;
  362. BYTE field_D4;
  363. BYTE field_D5;
  364. BYTE field_D6;
  365. BYTE field_D7;
  366. BYTE field_D8;
  367. BYTE field_D9;
  368. BYTE field_DA;
  369. BYTE field_DB;
  370. DWORD field_DC;
  371. BYTE field_E0;
  372. BYTE field_E1;
  373. BYTE field_E2;
  374. BYTE field_E3;
  375. DWORD field_E4;
  376. BYTE field_E8;
  377. BYTE field_E9;
  378. BYTE field_EA;
  379. BYTE field_EB;
  380. BYTE field_EC;
  381. BYTE field_ED;
  382. BYTE field_EE;
  383. BYTE field_EF;
  384. DWORD field_F0;
  385. DWORD draw_distance;
  386. BYTE field_F8;
  387. BYTE field_F9;
  388. BYTE field_FA;
  389. BYTE field_FB;
  390. BYTE field_FC;
  391. BYTE field_FD;
  392. BYTE field_FE;
  393. BYTE field_FF;
  394. BYTE field_100;
  395. BYTE field_101;
  396. BYTE field_102;
  397. BYTE field_103;
  398. BYTE field_104;
  399. BYTE field_105;
  400. BYTE field_106;
  401. BYTE field_107;
  402. BYTE field_108;
  403. BYTE field_109;
  404. BYTE field_10A;
  405. BYTE field_10B;
  406. BYTE field_10C;
  407. BYTE field_10D;
  408. BYTE field_10E;
  409. BYTE field_10F;
  410. BYTE field_110;
  411. BYTE field_111;
  412. BYTE field_112;
  413. BYTE field_113;
  414. BYTE field_114;
  415. BYTE field_115;
  416. BYTE field_116;
  417. BYTE field_117;
  418. BYTE field_118;
  419. BYTE field_119;
  420. BYTE field_11A;
  421. BYTE field_11B;
  422. BYTE field_11C;
  423. BYTE field_11D;
  424. BYTE field_11E;
  425. BYTE field_11F;
  426. DWORD zAngle;
  427. DWORD field_124;
  428. DWORD field_128;
  429. DWORD ShakingStrength;
  430. DWORD field_130;
  431. DWORD field_134;
  432. DWORD field_138;
  433. DWORD fNearClipPlain;
  434. BYTE field_140;
  435. BYTE field_141;
  436. BYTE field_142;
  437. BYTE field_143;
  438. BYTE field_144;
  439. BYTE field_145;
  440. BYTE field_146;
  441. BYTE field_147;
  442. DWORD field_148;
  443. DWORD field_14C;
  444. DWORD field_150;
  445. DWORD WidescreenBorderHeight;
  446. DWORD field_158;
  447. BYTE field_15C;
  448. BYTE field_15D;
  449. BYTE field_15E;
  450. BYTE field_15F;
  451. DWORD field_160;
  452. DWORD field_164;
  453. DWORD field_168;
  454. BYTE field_16C;
  455. BYTE field_16D;
  456. BYTE field_16E;
  457. BYTE field_16F;
  458. BYTE field_170;
  459. BYTE field_171;
  460. BYTE field_172;
  461. BYTE field_173;
  462. BYTE field_174;
  463. BYTE field_175;
  464. BYTE field_176;
  465. BYTE field_177;
  466. DWORD field_178;
  467. WORD field_17C;
  468. BYTE field_17E;
  469. BYTE field_17F;
  470. DWORD field_180;
  471. BYTE field_184;
  472. BYTE field_185;
  473. BYTE field_186;
  474. BYTE field_187;
  475. CCam cams[3];
  476. DWORD field_6EC;
  477. DWORD field_6F0;
  478. BYTE field_6F4;
  479. BYTE field_6F5;
  480. BYTE field_6F6;
  481. BYTE field_6F7;
  482. BYTE field_6F8;
  483. BYTE field_6F9;
  484. BYTE field_6FA;
  485. BYTE field_6FB;
  486. BYTE field_6FC;
  487. BYTE field_6FD;
  488. BYTE field_6FE;
  489. BYTE field_6FF;
  490. DWORD field_700;
  491. DWORD field_704;
  492. WORD field_708;
  493. WORD field_70A;
  494. RwV3d field_70C;
  495. RwV3d field_718;
  496. RwV3d field_724;
  497. RwV3d targetPoint;
  498. RwV3d cameraPosition;
  499. RwV3d cameraRotation;
  500. RwV3d field_754;
  501. RwV3d field_760;
  502. RwV3d field_76C;
  503. RwV3d field_778;
  504. RwV3d field_784;
  505. RwV3d field_790;
  506. RwV3d field_79C;
  507. RwV3d field_7A8;
  508. RwV3d field_7B4;
  509. RwV3d field_7C0;
  510. RwV3d field_7CC;
  511. RwV3d field_7D8;
  512. RwV3d field_7E4;
  513. RwV3d field_7F0;
  514. RwV3d field_7FC;
  515. DWORD rwCamera;
  516. DWORD targetedEntity;
  517. DWORD field_810[4];
  518. CMatrix field_820;
  519. BYTE cameraInFreeMode;
  520. BYTE field_869;
  521. BYTE field_86A;
  522. BYTE fading;
  523. BYTE field_86C;
  524. BYTE field_86D;
  525. BYTE field_86E;
  526. BYTE field_86F;
  527. CMatrix viewMatrix;
  528. RwV3d field_8B8;
  529. RwV3d field_8C4;
  530. RwV3d field_8D0;
  531. RwV3d field_8DC;
  532. RwV3d field_8E8;
  533. RwV3d field_8F4;
  534. RwV3d field_900;
  535. BYTE field_90C;
  536. BYTE field_90D;
  537. BYTE field_90E;
  538. BYTE field_90F;
  539. DWORD _fadeAlpha;
  540. DWORD field_914;
  541. DWORD _fadeTimeInSec;
  542. DWORD field_91C;
  543. DWORD field_920;
  544. DWORD field_924;
  545. BYTE field_928;
  546. BYTE field_929;
  547. BYTE field_92A;
  548. BYTE field_92B;
  549. BYTE field_92C;
  550. BYTE field_92D;
  551. BYTE field_92E;
  552. BYTE field_92F;
  553. DWORD field_930;
  554. BYTE field_934;
  555.  BYTE field_935;
  556.  BYTE field_936;
  557.  BYTE field_937;
  558.  BYTE field_938;
  559.  BYTE field_939;
  560.  BYTE field_93A;
  561.  BYTE field_93B;
  562.  BYTE field_93C;
  563.  BYTE field_93D;
  564.  BYTE field_93E;
  565.  BYTE field_93F;
  566.  WORD fadeFlag;
  567.  BYTE field_942;
  568.  BYTE field_943;
  569.  DWORD field_944;
  570.  WORD field_948;
  571.  WORD field_94A;
  572.  WORD field_94C;
  573.  BYTE field_94E;
  574.  BYTE field_94F;
  575.  DWORD timeStartFading;
  576.  DWORD field_954;
  577. };
  578.  
  579.  
  580. #pragma pack (pop)
  581.  
  582.  



vcActors.h
Код: C++
  1. #pragma pack (push, 1)
  2.  
  3.  
  4. struct CColModel{
  5.   RwSphere sphere;
  6.   RwBBox bbox;
  7.   WORD field_28;
  8.   WORD field_2A;
  9.   WORD field_2C;
  10.   BYTE field_2E;
  11.   BYTE field_2F;
  12.   BYTE field_30;
  13.   BYTE field_31;
  14.   BYTE field_32;
  15.   BYTE field_33;
  16.   DWORD field_34;
  17.   DWORD colData;
  18.   DWORD field_3C;
  19.   DWORD field_40;
  20.   DWORD field_44;
  21.   DWORD field_48;
  22. };
  23.  
  24.  
  25.  
  26. struct CRoutePoint{
  27.  WORD field_0;
  28.  WORD field_2;
  29.  WORD _x;
  30.  WORD _y;
  31.  WORD _z;
  32.  BYTE field_A;
  33.  BYTE field_B;
  34.  WORD nextPointIndex;
  35.  BYTE field_E;
  36.  BYTE field_F;
  37.  BYTE flags;
  38.  BYTE field_11;
  39.  BYTE field_12;
  40.  BYTE field_13;
  41. };
  42.  
  43. struct CPedIK{
  44.  DWORD pPed;
  45.  DWORD field_4;
  46.  DWORD field_8;
  47.  DWORD field_C;
  48.  DWORD field_10;
  49.  DWORD field_14;
  50.  DWORD field_18;
  51.  DWORD field_1C;
  52.  DWORD field_20;
  53.  DWORD field_24;
  54. };
  55.  
  56.  
  57. class CPed{
  58.  
  59.  public:
  60.   CPhysical __parent;
  61.   BYTE field_120;
  62.   BYTE field_121;
  63.   BYTE field_122;
  64.   BYTE field_123;
  65.   BYTE field_124;
  66.   BYTE field_125;
  67.   BYTE field_126;
  68.   BYTE field_127;
  69.   BYTE field_128;
  70.   BYTE field_129;
  71.   BYTE field_12A;
  72.   BYTE field_12B;
  73.   BYTE field_12C;
  74.   BYTE field_12D;
  75.   BYTE field_12E;
  76.   BYTE field_12F;
  77.   BYTE field_130;
  78.   BYTE field_131;
  79.   BYTE field_132;
  80.   BYTE field_133;
  81.   BYTE field_134;
  82.   BYTE field_135;
  83.   BYTE field_136;
  84.   BYTE field_137;
  85.   BYTE field_138;
  86.  BYTE field_139;
  87.  BYTE field_13A;
  88.  BYTE field_13B;
  89.  BYTE field_13C;
  90.  BYTE field_13D;
  91.  BYTE field_13E;
  92.  BYTE field_13F;
  93.  BYTE field_140;
  94.  BYTE field_141;
  95.  BYTE field_142;
  96.  BYTE field_143;
  97.  BYTE field_144;
  98.  BYTE field_145;
  99.  BYTE field_146;
  100. BYTE field_147;
  101. BYTE field_148;
  102. BYTE field_149;
  103. BYTE field_14A;
  104. BYTE field_14B;
  105. BYTE field_14C;
  106. BYTE field_14D;
  107. BYTE field_14E;
  108.  BYTE field_Blood;
  109. BYTE field_150;
  110. BYTE flags;
  111. BYTE field_152;
  112. BYTE field_153;
  113. BYTE field_154;
  114. BYTE field_155;
  115. BYTE field_156;
  116. BYTE field_157;
  117. BYTE field_158;
  118. BYTE field_159;
  119. BYTE field_15A;
  120. BYTE field_15B;
  121. BYTE field_15C;
  122. BYTE field_15D;
  123. BYTE field_15E;
  124. BYTE field_15F;
  125. BYTE reference;
  126. BYTE field_161;
  127. BYTE field_162;
  128. BYTE field_163;
  129. DWORD objective;
  130. DWORD field_168;
  131. DWORD field_16C;
  132. DWORD targetEntity;
  133. BYTE field_174;
  134. BYTE field_175;
  135. BYTE field_176;
  136. BYTE field_177;
  137. BYTE field_178;
  138. BYTE field_179;
  139. BYTE field_17A;
  140. BYTE field_17B;
  141. BYTE field_17C;
  142. BYTE field_17D;
  143. BYTE field_17E;
  144. BYTE field_17F;
  145. DWORD field_180;
  146. DWORD damageEntity;
  147. DWORD field_188;
  148. DWORD threatPlayer;
  149. DWORD field_190;
  150. DWORD field_194;
  151. DWORD field_198;
  152. DWORD field_19C;
  153. DWORD field_1A0;
  154. DWORD field_1A4;
  155. DWORD field_1A8;
  156. BYTE field_1AC;
  157. BYTE field_1AD;
  158. BYTE field_1AE;
  159. BYTE field_1AF;
  160. BYTE field_1B0;
  161. BYTE field_1B1;
  162. BYTE field_1B2;
  163. BYTE field_1B3;
  164. BYTE field_1B4;
  165. BYTE field_1B5;
  166. BYTE field_1B6;
  167. BYTE field_1B7;
  168. BYTE field_1B8;
  169. BYTE field_1B9;
  170. BYTE field_1BA;
  171. BYTE field_1BB;
  172. BYTE field_1BC;
  173. BYTE field_1BD;
  174. BYTE field_1BE;
  175. BYTE field_1BF;
  176. BYTE field_1C0;
  177. BYTE field_1C1;
  178. BYTE field_1C2;
  179. BYTE field_1C3;
  180. BYTE field_1C4;
  181. BYTE field_1C5;
  182. BYTE field_1C6;
  183. BYTE field_1C7;
  184. BYTE field_1C8;
  185. BYTE field_1C9;
  186. BYTE field_1CA;
  187. BYTE field_1CB;
  188. BYTE field_1CC;
  189. BYTE field_1CD;
  190. BYTE field_1CE;
  191. BYTE field_1CF;
  192. BYTE field_1D0;
  193. BYTE field_1D1;
  194. BYTE field_1D2;
  195. BYTE field_1D3;
  196. BYTE field_1D4;
  197. BYTE field_1D5;
  198. BYTE field_1D6;
  199. BYTE field_1D7;
  200. BYTE field_1D8;
  201. BYTE field_1D9;
  202. BYTE field_1DA;
  203. BYTE field_1DB;
  204. BYTE field_1DC;
  205. BYTE field_1DD;
  206. BYTE field_1DE;
  207. BYTE field_1DF;
  208. BYTE field_1E0;
  209. BYTE field_1E1;
  210. BYTE field_1E2;
  211. BYTE field_1E3;
  212. BYTE field_1E4;
  213. BYTE field_1E5;
  214. BYTE field_1E6;
  215. BYTE field_1E7;
  216. BYTE field_1E8;
  217. BYTE field_1E9;
  218. BYTE field_1EA;
  219. BYTE field_1EB;
  220. BYTE field_1EC;
  221. BYTE field_1ED;
  222. BYTE field_1EE;
  223. BYTE field_1EF;
  224. DWORD field_1F0;
  225. DWORD field_1F4;
  226. DWORD field_1F8;
  227. DWORD field_1FC;
  228. DWORD field_200;
  229. DWORD field_204;
  230. DWORD field_208;
  231. DWORD field_20C;
  232. CPedIK pedIK;
  233. DWORD field_238;
  234. DWORD field_23C;
  235. DWORD field_240;
  236. DWORD field_244;
  237. DWORD field_248;
  238. DWORD field_24C;
  239. DWORD field_250;
  240. DWORD field_254;
  241. DWORD animationID;
  242. DWORD animationTime;
  243. DWORD field_260;
  244. DWORD field_264;
  245. DWORD field_268;
  246. DWORD field_26C;
  247. DWORD field_270;
  248. DWORD field_274;
  249. DWORD field_278;
  250. DWORD field_27C;
  251. WORD field_280;
  252. WORD field_282;
  253. DWORD field_284;
  254. DWORD field_288;
  255. DWORD field_28C;
  256. CRoutePoint pedRoutes[8];
  257. DWORD field_330;
  258. BYTE field_334;
  259. BYTE field_335;
  260. BYTE field_336;
  261. BYTE field_337;
  262. DWORD field_338;
  263. DWORD field_33C;
  264. DWORD field_340;
  265. DWORD field_344;
  266. DWORD field_348;
  267. DWORD field_34C;
  268. DWORD field_350;
  269. float health;
  270. float armour;
  271. BYTE field_35C;
  272. BYTE field_35D;
  273. BYTE field_35E;
  274. BYTE field_35F;
  275. WORD field_360;
  276. WORD field_362;
  277. WORD field_364;
  278. WORD field_366;
  279. BYTE field_368;
  280. BYTE field_369;
  281. BYTE field_36A;
  282. BYTE field_36B;
  283. DWORD field_36C;
  284. DWORD field_370;
  285. DWORD field_374;
  286. DWORD field_378;
  287. DWORD headingChangeRate;
  288. WORD field_380;
  289. WORD field_382;
  290. DWORD field_384;
  291. DWORD field_388;
  292. DWORD field_38C;
  293. DWORD field_390;
  294. DWORD field_394;
  295. DWORD field_398;
  296. DWORD field_39C;
  297. DWORD field_3A0;
  298. DWORD field_3A4;
  299. DWORD pVehicle;
  300. BYTE inVehicle;
  301. BYTE field_3AD;
  302. BYTE field_3AE;
  303. BYTE field_3AF;
  304. DWORD field_3B0;
  305. DWORD field_3B4;
  306. BYTE field_3B8;
  307. BYTE field_3B9;
  308. BYTE field_3BA;
  309. BYTE field_3BB;
  310. DWORD field_3BC;
  311. DWORD field_3C0;
  312. BYTE field_3C4;
  313. BYTE field_3C5;
  314. WORD field_3C6;
  315. BYTE field_3C8;
  316. BYTE field_3C9;
  317. BYTE field_3CA;
  318. BYTE field_3CB;
  319. DWORD field_3CC;
  320. DWORD field_3D0;
  321. DWORD pedType;
  322. DWORD pedStatsPtr;
  323. DWORD field_3DC;
  324. DWORD field_3E0;
  325. DWORD field_3E4;
  326. DWORD field_3E8;
  327. DWORD field_3EC;
  328. BYTE field_3F0;
  329. BYTE field_3F1;
  330. BYTE field_3F2;
  331. BYTE field_3F3;
  332. DWORD field_3F4;
  333. DWORD field_3F8;
  334. BYTE field_3FC;
  335. BYTE field_3FD;
  336. BYTE field_3FE;
  337. BYTE field_3FF;
  338. DWORD field_400;
  339. DWORD field_404;
  340. CWeaponSlot weaponSlots[10];
  341. DWORD field_4F8;
  342. DWORD currentWeaponId;
  343. DWORD currentWeaponAmmo;
  344. BYTE currentWeapon;
  345. BYTE field_505;
  346. BYTE weaponAccuracy;
  347. BYTE field_507;
  348. DWORD field_508;
  349. BYTE field_50C;
  350. BYTE field_50D;
  351. BYTE field_50E;
  352. BYTE field_50F;
  353. BYTE field_510;
  354. BYTE field_511;
  355. BYTE field_512;
  356. BYTE field_513;
  357. DWORD field_514;
  358. DWORD field_518;
  359. BYTE field_51C;
  360. BYTE field_51D;
  361. BYTE field_51E;
  362. BYTE field_51F;
  363. BYTE field_520;
  364. BYTE field_521;
  365. BYTE field_522;
  366. BYTE field_523;
  367. DWORD fire;
  368. DWORD field_528;
  369. DWORD field_52C;
  370. DWORD field_530;
  371. DWORD field_534;
  372. DWORD field_538;
  373. DWORD field_53C;
  374. DWORD field_540;
  375. DWORD field_544;
  376. DWORD field_548;
  377. DWORD field_54C;
  378. DWORD field_550;
  379. DWORD field_554;
  380. DWORD field_558;
  381. DWORD ClosestPedsTimer;
  382. DWORD field_560;
  383. DWORD field_564;
  384. BYTE field_568;
  385. bool bleeding;
  386. BYTE field_56A;
  387. BYTE field_56B;
  388. DWORD closestPeds[10];
  389. WORD numberOfPeds;
  390. WORD money;
  391. DWORD lastDamageType;
  392. DWORD lastDamageEntity;
  393. DWORD field_5A0;
  394. BYTE field_5A4;
  395. BYTE field_5A5;
  396. BYTE field_5A6;
  397. BYTE field_5A7;
  398. BYTE field_5A8;
  399. BYTE field_5A9;
  400. BYTE field_5AA;
  401. BYTE field_5AB;
  402. BYTE field_5AC;
  403. BYTE field_5AD;
  404. BYTE field_5AE;
  405. BYTE field_5AF;
  406. BYTE field_5B0;
  407. BYTE field_5B1;
  408. BYTE field_5B2;
  409. BYTE field_5B3;
  410. BYTE field_5B4;
  411. BYTE field_5B5;
  412. BYTE field_5B6;
  413. BYTE field_5B7;
  414. DWORD field_5B8;
  415. DWORD field_5BC;
  416. DWORD field_5C0;
  417. DWORD field_5C4;
  418. BYTE field_5C8;
  419. BYTE field_5C9;
  420. BYTE field_5CA;
  421. BYTE field_5CB;
  422. BYTE field_5CC;
  423. BYTE field_5CD;
  424. BYTE field_5CE;
  425. BYTE field_5CF;
  426. DWORD field_5D0;
  427. DWORD field_5D4;
  428. WORD field_5D8;
  429. WORD field_5DA;
  430. BYTE muted;
  431. BYTE field_5DD;
  432. BYTE field_5DE;
  433. BYTE field_5DF;
  434. DWORD field_5E0;
  435. DWORD field_5E4;
  436. DWORD field_5E8;
  437. DWORD field_5EC;
  438. DWORD field_5F0;
  439. };
  440.  
  441. class CPlayerPed{
  442.  
  443. public:
  444.  CPed __parent;
  445.  DWORD wanted;
  446.  DWORD field_5F8;
  447.  DWORD field_5FC;
  448.  DWORD field_600;
  449.  DWORD field_604;
  450.  DWORD field_608;
  451.  BYTE field_60C;
  452.  BYTE field_60D;
  453.  BYTE field_60E;
  454.  BYTE field_60F;
  455.  DWORD field_610;
  456.  DWORD field_614;
  457.  DWORD field_618;
  458.  BYTE field_61C;
  459.  BYTE field_61D;
  460.  BYTE field_61E;
  461.  BYTE field_61F;
  462.  DWORD field_620;
  463.  DWORD targetableObjects[4];
  464.  DWORD field_634;
  465.  BYTE drunkVisuals;
  466.  BYTE field_639;
  467.  BYTE field_63A;
  468.  BYTE field_63B;
  469.  BYTE field_63C;
  470.  BYTE field_63D;
  471.  BYTE field_63E;
  472.  BYTE field_63F;
  473.  RwV3d field_640[6];
  474.  DWORD field_688[6];
  475.  DWORD field_6A0;
  476.  DWORD field_6A4;
  477.  DWORD field_6A8;
  478.  DWORD field_6AC;
  479.  DWORD field_6B0;
  480.  DWORD field_6B4;
  481.  WORD field_6B8;
  482.  BYTE field_6BA;
  483.  BYTE field_6BB;
  484.  DWORD field_6BC;
  485.  DWORD field_6C0;
  486.  DWORD field_6C4;
  487.  DWORD field_6C8;
  488.  DWORD field_6CC;
  489.  DWORD field_6D0;
  490.  DWORD field_6D4;
  491.  static CPed * GetPlayerPed();
  492.  void SetWantedLevelAtLeast(DWORD valueWanted);
  493.  void SetWantedLevel(DWORD valueWanted);
  494. };
  495.  
  496.  
  497.  
  498.  
  499. class CPlayer{
  500.  
  501. public:
  502.   CPlayerPed * pPed;
  503.   DWORD rcBuggy;
  504.   CColModel colModel;
  505.   DWORD field_54;
  506.   DWORD field_58;
  507.   BYTE field_5C;
  508.   BYTE field_5D;
  509.   BYTE field_5E;
  510.   BYTE field_5F;
  511.   BYTE field_60;
  512.   BYTE field_61;
  513.   BYTE field_62;
  514.   BYTE field_63;
  515.   BYTE field_64;
  516.   BYTE field_65;
  517.   BYTE field_66;
  518.   BYTE field_67;
  519.   BYTE field_68;
  520.   BYTE field_69;
  521.   BYTE field_6A;
  522.   BYTE field_6B;
  523.   BYTE field_6C;
  524.   BYTE field_6D;
  525.   BYTE field_6E;
  526.   BYTE field_6F;
  527.   BYTE field_70;
  528.   BYTE field_71;
  529.   BYTE field_72;
  530.   BYTE field_73;
  531.   BYTE field_74;
  532.   BYTE field_75;
  533.   BYTE field_76;
  534.   BYTE field_77;
  535.   BYTE field_78;
  536.   BYTE field_79;
  537.   BYTE field_7A;
  538.   BYTE field_7B;
  539.   BYTE field_7C;
  540.   BYTE field_7D;
  541.   BYTE field_7E;
  542.   BYTE field_7F;
  543.   BYTE field_80;
  544.   BYTE field_81;
  545.   BYTE field_82;
  546.   BYTE field_83;
  547.   BYTE field_84;
  548.   BYTE field_85;
  549.   BYTE field_86;
  550.   BYTE field_87;
  551.   BYTE field_88;
  552.   BYTE field_89;
  553.   BYTE field_8A;
  554.   BYTE field_8B;
  555.   BYTE field_8C;
  556.   BYTE field_8D;
  557.   BYTE field_8E;
  558.   BYTE field_8F;
  559.   BYTE field_90;
  560.   BYTE field_91;
  561.   BYTE field_92;
  562.   BYTE field_93;
  563.   BYTE field_94;
  564.   BYTE field_95;
  565.   BYTE field_96;
  566.   BYTE field_97;
  567.   BYTE field_98;
  568.   BYTE field_99;
  569.   BYTE field_9A;
  570.   BYTE field_9B;
  571.   BYTE field_9C;
  572.   BYTE field_9D;
  573.   BYTE field_9E;
  574.   BYTE field_9F;
  575.   DWORD _money;
  576.   DWORD money;
  577.   DWORD foundHiddenPackages;
  578.   DWORD totalHiddenPackages;
  579.   DWORD field_B0;
  580.   DWORD field_B4;
  581.   DWORD field_B8;
  582.   DWORD field_BC;
  583.   DWORD field_C0;
  584.   DWORD field_C4;
  585.   DWORD field_C8;
  586.   BYTE IsWastedBusted;
  587.   BYTE field_CD;
  588.   BYTE field_CE;
  589.   BYTE field_CF;
  590.   DWORD field_D0;
  591.   BYTE field_D4;
  592.   BYTE field_D5;
  593.   BYTE field_D6;
  594.   BYTE field_D7;
  595.   DWORD field_D8;
  596.   DWORD field_DC;
  597.   DWORD field_E0;
  598.   DWORD field_E4;
  599.   DWORD field_E8;
  600.   DWORD field_EC;
  601.   DWORD field_F0;
  602.   DWORD field_F4;
  603.   DWORD field_F8;
  604.   DWORD field_FC;
  605.   DWORD field_100;
  606.   DWORD field_104;
  607.   DWORD field_108;
  608.   DWORD field_10C;
  609.   DWORD field_110;
  610.   DWORD field_114;
  611.   DWORD field_118;
  612.   DWORD field_11C;
  613.   DWORD field_120;
  614.   DWORD field_124;
  615.   DWORD field_128;
  616.   DWORD field_12C;
  617.   DWORD field_130;
  618.   DWORD field_134;
  619.   DWORD field_138;
  620.   DWORD field_13C;
  621.   BYTE field_140;
  622.   BYTE field_141;
  623.   BYTE fireproof;
  624.   BYTE maxHealth;
  625.   BYTE maxArmour;
  626.   BYTE field_145;
  627.   BYTE single_free_treatment;
  628.   BYTE drive_by;
  629.   BYTE field_148;
  630.   BYTE field_149;
  631.   WORD field_14A;
  632.   BYTE skinPath[32];
  633.   DWORD playerTexture;
  634. };
  635.  
  636.  
  637. #pragma pack (pop)
  638.  
  639.  


vcActors.cpp

Код: C++
  1. #include "stdafx.h"
  2.  
  3. #include "vcRenderWare.h"
  4. #include "vcPhysic.h"
  5. #include "vcWeapon.h"
  6. #include "vcActors.h"
  7.  
  8.  
  9.  
  10. auto _currentPlayer = (BYTE*)0x0A10AFB;
  11. auto _players = (CPlayer*)0x094AD28;
  12.  
  13.  
  14. CPed * CPlayerPed::GetPlayerPed() {
  15.         return (CPed*)_players[*_currentPlayer].pPed;
  16. };
  17.  
  18. //0532070
  19. void CPlayerPed::SetWantedLevelAtLeast(DWORD valueWanted) {
  20.          auto CPlayerPed__SetWantedLevelAtLeast = (void (__thiscall*)(CPlayerPed * pPlayerPed, DWORD vvalueWanted))0x0532070;
  21.          CPlayerPed__SetWantedLevelAtLeast(this, valueWanted);
  22. };
  23.  
  24. //00532090
  25. void CPlayerPed::SetWantedLevel(DWORD valueWanted){
  26.          auto CPlayerPed__SetWantedLevel = (void (__thiscall*)(CPlayerPed * pPlayerPed, DWORD vvalueWanted))0x0532090;
  27.          CPlayerPed__SetWantedLevel(this, valueWanted);
  28. };
  29.  
« Последнее редактирование: Ноябрь 26, 2013, 04:25:26 pm от Sektor »

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Лучше все-таки кроме обсуждения здесь сделать еще накопительную страницу, где бы все систематизировать, наподобие этой http://www.gtamodding.com/index.php?title=Memory_Addresses_%28VC%29
Иначе тема превратится в подобную этой http://gtaforums.com/topic/117195-documenting-gta3vc-memory-adresses/page-38, где неделю будут разыскивать адреса в куче страниц.
Ну вот я когда-то нашел такие адреса, которые там не описаны:
0x690220 - дисстанция прорисовки, в опциях можно настроить максимум 1.8
0x69022C - это максимальное расстояние до LODов, по умолчанию 300.0

Правда падает производительность

Оффлайн graveman

  • Прохожий
  • *
  • Сообщений: 50
  • Репутация: +3/-0
  • Its cool! Man
    • Просмотр профиля
Лучше все-таки кроме обсуждения здесь сделать еще накопительную страницу, где бы все систематизировать,
Я так-то думал, что будут выкладывать в виде архивов rar или zip с небольшим описанием. Сектору спасибо за выкладки.
Выкладывайте в виде архивов, пожалуйста, если информации много.
Сам копаю рендер пока. Пока выяснил, что сначала выводятся облака, прозрачные поверхности, постепенно исчезающие (fading) объекты, потом дороги, затем тачки.
« Последнее редактирование: Ноябрь 26, 2013, 04:51:58 pm от graveman »

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Достаточно, полезные адреса 0x690220 и 0x69022C. Можно хорошо это применить в моддинге. Особенно когда речь идет об улучшении графики.

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Может интересно будет, по-моему это 0x813D10 адресс указателя на полицейский вертолет.
Если он полноценный объект класса CVehicle (или CHeli), то доступны например его координаты:
Код: C++
  1. DWORD* dwPoliceHeli  = (DWORD*) (0x813D10);
  2.  
  3. if (*dwPoliceHeli)
  4. {
  5.         BYTE* bHeliBlock = (BYTE*)(*dwPoliceHeli);
  6.                        
  7.         float* fHeliX = (float*)(bHeliBlock+0x34);
  8.         float* fHeliY = (float*)(bHeliBlock+0x38);
  9.         float* fHeliZ = (float*)(bHeliBlock+0x3C);
  10.                        
  11.         *fHeliZ = max(*fHeliZ,100);     // не дает приближаться ниже 100 метров
  12. }
  13.  

Почему этот адрес никто не искал раньше, лично меня бесит этот тупой хеликоптер, лучше сделать свои вертолеты.
Можно также активировать второй вертолет, например при 6 звездах, это известный адрес 0xA10ADB


« Последнее редактирование: Декабрь 06, 2013, 06:27:35 am от xanser »

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Цвет лазера снайперки LASER.
Не знаю, но может быть кому это пригодиться, изменить сам цвет лазера, не точки текстуры. Ниже дам конкретные адреса:

Код: C++
  1. 005CCB76 //Alpha
  2. 005CCB7B //B
  3. 005CCB7D //G
  4. 005CCB7F  //R


Если присвоим такие значение на примере:


Код: C++
  1.   *(BYTE*)0x05CCB7B = 0;
  2.   *(BYTE*)0x05CCB7D = 255;
  3.   *(BYTE*)0x05CCB7F = 0;
  4.  

то получим это:


Если сделаем так:

Код: C++
  1.   *(BYTE*)0x05CCB7B = 255;
  2.   *(BYTE*)0x05CCB7D = 0;
  3.   *(BYTE*)0x05CCB7F  = 0;
  4.  

То результат будет такой:



Если захотите более подробно рассмотреть код, то кнопка "G" вбить туда адрес 05CCB7B в IDA, и вы окажитесь в нужном месте.


Оффлайн mike43842

  • Прохожий
  • *
  • Сообщений: 110
  • Репутация: +1/-0
    • mike43842
    • Просмотр профиля
    • lol
так как в ассемблере я понимаю мало,  sektor мог бы ты объяснить как ты определил где именно какой цвет и альфу?
005CCB76 //Alpha
005CCB7B //B
005CCB7D //G
005CCB7F  //R

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Тут совсем все просто:

Код: ASM
  1. .text:005CCB50 070 FF 35 08 D4 69 00                             push    dword_69D408    ; float
  2. .text:005CCB56 074 6A 00                                         push    0               ; char
  3. .text:005CCB58 078 FF 35 98 D3 69 00                             push    dword_69D398    ; float
  4. .text:005CCB5E 07C 6A 01                                         push    1               ; char
  5. .text:005CCB60 080 6A 00                                         push    0               ; char
  6. .text:005CCB62 084 6A 01                                         push    1               ; char
  7. .text:005CCB64 088 6A 00                                         push    0               ; char
  8. .text:005CCB66 08C 6A 00                                         push    0               ; char
  9. .text:005CCB68 090 FF 35 90 D4 69 00                             push    dword_69D490    ; float
  10. .text:005CCB6E 094 FF 35 94 D4 69 00                             push    dword_69D494    ; float
  11. .text:005CCB74 098 50                                            push    eax             ; int
  12. .text:005CCB75 09C 68 FF 00 00 00                                push    0FFh            ; char
  13. .text:005CCB7A 0A0 6A 00                                         push    0               ; char
  14. .text:005CCB7C 0A4 6A 00                                         push    0               ; char
  15. .text:005CCB7E 0A8 68 80 00 00 00                                push    80h             ; char
  16. .text:005CCB83 0AC 55                                            push    ebp             ; int
  17. .text:005CCB84 0B0 E8 17 5C F7 FF                                call    sub_5427A0
  18.  

call    sub_5427A0, это как раз и есть то, что рисует партиклы (CParticle), так вот первые у нее параметры, кроме push ebp вот эти:

Код: ASM
  1. .text:005CCB75 09C 68 FF 00 00 00                                push    0FFh            ; char
  2. .text:005CCB7A 0A0 6A 00                                         push    0               ; char
  3. .text:005CCB7C 0A4 6A 00                                         push    0               ; char
  4. .text:005CCB7E 0A8 68 80 00 00 00                                push    80h             ; char

Это и есть RGBA. Именно через push, функция при вызове принимает эти параметры как через стек. Хочу довести сведенья что вы можете по играть с этими значениями:

Код: ASM
  1. .text:005CCB50 070 FF 35 08 D4 69 00                    push    dword_69D408    ; float
  2. .text:005CCB58 078 FF 35 98 D3 69 00                             push    dword_69D398    ; float
  3. .text:005CCB68 090 FF 35 90 D4 69 00                             push    dword_69D490    ; float
  4. .text:005CCB6E 094 FF 35 94 D4 69 00                             push    dword_69D494    ; float
  5.  

Это передаются указатели на float значения, сами же значения находятся тут:

Код: ASM
  1. .data:0069D408 00 00 C0 3F                       dword_69D408    dd 3FC00000h
  2. .data:0069D398 00 00 00 00                       dword_69D398    dd 0  
  3. .data:0069D490 00 00 48 42                       dword_69D490    dd 42480000h  
  4. .data:0069D494 9A 99 99 3F                       dword_69D494    dd 3F99999Ah

Что-бы их перевести в более понятный вид float, для этого на примере выделим 3FC00000h это, затем в главном меню IDA, нажмем Edit->Operand type -> Number и наконец Floating Point и наша константа приобретает такой вид:

Код: ASM
  1. .data:0069D408 00 00 C0 3F                       dword_69D408    dd 1.5

Почему я назвал это константой?
потому-что она использовалась только для чтения, когда нажал кнопку X и проверил ее полностью:



Обратите внимание, как везде type установлен как r, это и есть просто чтение. Таким образом вы определили что это константа а не переменная, это трюк из реверсивной инженерии.
« Последнее редактирование: Декабрь 02, 2013, 11:52:45 pm от Sektor »

Оффлайн graveman

  • Прохожий
  • *
  • Сообщений: 50
  • Репутация: +3/-0
  • Its cool! Man
    • Просмотр профиля
xanser, Sektor. Да, весьма интересный материал.

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Цвет лазера снайперки LASER.
Не знаю, но может быть кому это пригодиться, изменить сам цвет лазера, не точки текстуры. Ниже дам конкретные адреса:

Кстати по снайперке, какие адреса отвечают за размеры оптического прицела, чтобы выровнить под широкий экран?
Нужно изменить длину, чтобы видимая область на втором скрине стала квадратной, тогда на первом будет круглой.


Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Что-бы быстренько зацепиться за данный участок, по логике вещей, это находиться где в DrawHud. Сам же спрайт находиться в hud.txd название которого sitelaser.

Пока зацепился за саму загрузку спрайта TXD:

Код: ASM
  1. .text:0055CB75 008 83 3D 30 88 97 00 00                          cmp     ds:sitelaser.rwTexture, 0
  2. .text:0055CB7C 008 75 15                                         jnz     short loc_55CB93
  3. .text:0055CB7E 008 0F 77                                         emms
  4. .text:0055CB80 008 6A 00                                         push    0               ; a2
  5. .text:0055CB82 00C 68 E4 77 69 00                                push    offset aSitelaser ; "sitelaser"
  6. .text:0055CB87 010 E8 84 15 0F 00                                call    _RwReadTexture
  7. .text:0055CB8C 010 A3 30 88 97 00                                mov     ds:sitelaser.rwTexture, eax
  8. .text:0055CB91 010 59                                            pop     ecx
  9. .text:0055CB92 00C 59                                            pop     ecx


Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Нашел неплохую альтернативу z_ground
Если кто не помнит - это опкод(ну и функция, ессно), которая находит координату z ниже точки X Y Z, которую указываете вы.
В виде опкода это выглядит так:
02CE: $98 = ground_z $953 $954 50.0
где $953 $954 - XY координаты точки, 50.0 - высота, с которой будет начинаться поиск "земли", $98 - полученный уровень земли.
Функция опкода используется аналогично.
Помимо жесткого ограничения(искать можно строго вертикально сверху вниз), функция находила лишь уровень статичной земли, т.е. она "не видела" ни динамические объекты, ни какие-либо другие объекты вообще.

Покопав разные куски кода(пробовал ковырять и устройство пули, и физику объектов и прочее, что пока слишком сложно для меня), вспомнил про лазерный прицел снайперки, который "реагировал" вообще на всё, имеющее COL(и все типы объектов, и транспорт, и педов).
Расковырял функцию:
0AA7: call_function 0x4D92D0 num_params 12 pop 12 0 0 0 0 1 1 1 1 7@ 6@ 5@ 4@ 10@На самом деле, в оригинале пераметры идут в другую сторону, просто в CLEO почему-то нужно делать задом наперед. Оригинал:
Код: C++
  1. CWorld::ProcessLineOfSight(CVector const&,CVector const&,CColPoint &,CEntity *&,bool,bool,bool,bool,bool,bool,bool,bool)
Короче, первый параметр - оффсет матрицы первых координат(x,y,z),
второй - оффсет вторых соответственно,
третий - оффсет вроде дальности действия поиска(если он меньше расстояния между координатами, то вроде как после этого радиуса уже не ищет)
четвертый - этот оффсет должен содержать значение ноль.
далее четыре единицы и четыре нуля.
Функция возвращает BOOL 1, если что-то обнаружено между первыми и вторыми координатами, и 0 - если ничего нет.
В CLEO возращаемое значение записывается в 10@, но не как BOOL(или BYTE), а как Integer, так что приходится преобразовывать(но это мелочи).
Как и лазер снайперки, реагирует на всё, что имеет COL. НО! Мне кажется, судя по другим участкам кода, использующим эту функцию - в тех четырех единицах и четырех нулях кроется детальная настройка того, на что реагирует данная функция, что может сделать её просто божественной заменой ground_z.

Пока ничего внятного(кроме того, что это работает!) сказать не могу, но позже отпишусь, если что-то обнаружу.
« Последнее редактирование: Август 04, 2016, 08:20:21 pm от Shagg_E »

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Эта функция есть и в SA.
Параметры, думаю, такие же.
https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CWorld.cpp#L7
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Параметры, думаю, такие же.
Круто, ну вот и выяснилось, как это настроить! А то я гадал - если текущий вариант настройки(4 единицы и 4 нуля) реагирует на всё, имеющее кол - что же скрывают эти 4 нуля? Оказалось, что фигню: dummy, невидимые объекты, камеры и объекты без кола :D
Но это фигня лишь для скриптинга. На уровне плагина это может быть полезно при создании каких-нибудь динамических теней или что-то типа того, я думаю..