GTA Vice City > Справочная информация

Выкладываем наработки по анализу кода, дизассемблированные базы, адреса

(1/15) > >>

graveman:
Думаю, общими усилиями, здесь присутствующие программеры могли бы быстрее разобрать экзешник игры, чтобы делать полноценные моды на плагинах, а не ограничиваться только скриптами. Предлагаю выкладывать сюда свои базы адресов, описания классов и функций движка игры.

Добавлено мной.
Просьба выкладывать наработки в виде .rar или .zip архивов с небольшим пояснением., чтобы легче было ориентироваться.

Sektor:
Начинал совсем не много возится с оружием и с другими модулями, пока это сырое все. Вообщем строго не судите, я пока-что этим мало занимался. Там есть над чем поработать.

vcWeapon.h


--- Код: C++ ---#pragma pack (push, 1) struct CWeaponInfo{ DWORD weaponType; DWORD Range; DWORD FiringRate; DWORD Reload; DWORD AmmoInCLip; DWORD Damage; DWORD Speed; DWORD Radius; DWORD LifeSpan; DWORD Spread; RwV3d FireOffset; DWORD AnimIndex; DWORD AnimLoopStart; DWORD AnimLoopEnd; DWORD AnimFire; DWORD Anim2LoopStart; DWORD Anim2LoopEnd; DWORD Anim2Fire; DWORD AnimBreakout; DWORD mi; DWORD mi2; DWORD flags; DWORD slot;};  class CWeaponData{ public: static CWeaponInfo * GetWeaponInfoByIndex(int weaponIndex);  static void Init();};   class CEntity_;  class CWeaponSlot{  public:        DWORD weaponIndex;    DWORD field_4;    DWORD AmmoInClip;    DWORD ammo;    DWORD field_10;    BYTE field_14;    BYTE field_15;    BYTE field_16;    BYTE field_17;        void Reload();        void FireInstantHit(CEntity_ * entity, RwV3d * vector);         void Fire(CEntity_ * entity, RwV3d * vector);        void FireShotgun(CEntity_ * entity, RwV3d * vector);         void FireSniper(CEntity * entity);        void BlowUpExplosiveThings( CEntity_ *); };  #pragma pack (pop)  

vcWeapon.cpp



--- Код: C++ ---#include "stdafx.h" #include "vcRenderWare.h"#include "vcCamera.h"#include "vcPhysic.h"#include "vcWeapon.h"#include "vcActors.h"#include <math.h>   //CWeaponInfo_ WeaponInfo[37];CWeaponInfo * WeaponsInfo   = (CWeaponInfo*)0x0782A14; //Временноextern CCamera * _Camera;  CWeaponInfo * CWeaponData::GetWeaponInfoByIndex(int weaponIndex){  return &WeaponsInfo[weaponIndex]; };  //005D5750void CWeaponData::Init() { //Дописать! for (int i=0; i < 37; i++) {           WeaponsInfo[i].weaponType     = 1;           WeaponsInfo[i].Range          = 0;           WeaponsInfo[i].FiringRate     = 0;           WeaponsInfo[i].Reload         = 0;           WeaponsInfo[i].AmmoInCLip     = 0;           WeaponsInfo[i].Damage         = 0;           WeaponsInfo[i].Speed          = 0;           WeaponsInfo[i].Radius         = 0;           WeaponsInfo[i].LifeSpan       = 0;           WeaponsInfo[i].Spread         = 0;           WeaponsInfo[i].FireOffset.x   = 0;           WeaponsInfo[i].FireOffset.y   = 0;           WeaponsInfo[i].FireOffset.z   = 0;           WeaponsInfo[i].AnimIndex      = 7;           WeaponsInfo[i].AnimLoopStart  = 0;           WeaponsInfo[i].AnimLoopEnd    = 0;           WeaponsInfo[i].AnimFire       = 0;           WeaponsInfo[i].Anim2LoopStart = 0;           WeaponsInfo[i].Anim2LoopEnd   = 0;           WeaponsInfo[i].Anim2Fire      = 0;           WeaponsInfo[i].AnimBreakout   = 0;           WeaponsInfo[i].flags          = 59;           WeaponsInfo[i].slot           = 0;     } };      void RwV3dnormalize(RwV3d * V3d) {    float inv_lng = 1.0f / sqrt(V3d->x*V3d->x + V3d->y*V3d->y + V3d->z*V3d->z);        V3d->x = V3d->x * inv_lng;        V3d->y = V3d->y * inv_lng;        V3d->z = V3d->z * inv_lng;}    //005CA3C0void CWeaponSlot::Reload() {  if (ammo) {        if ((ammo >= CWeaponData::GetWeaponInfoByIndex(weaponIndex)->AmmoInCLip) )                 AmmoInClip  = CWeaponData::GetWeaponInfoByIndex(weaponIndex)->AmmoInCLip;        else                 AmmoInClip = ammo;    } }; //005D1140void CWeaponSlot::FireInstantHit(CEntity_ * entity, RwV3d * vector){        auto CWeaponFireInstantHit = (void (__thiscall*)(CWeaponSlot * weaponSlot, CEntity_ * entity, RwV3d * vector))0x05D1140;        CWeaponFireInstantHit(this,entity,vector);}; //05D45E0void CWeaponSlot::Fire(CEntity_ * entity, RwV3d * vector){        auto CWeaponFire = (void (__thiscall*)(CWeaponSlot * weaponSlot, CEntity_ * entity, RwV3d * vector))0x05D45E0;        CWeaponFire(this,entity,vector);}; //005CD340void CWeaponSlot::FireShotgun(CEntity_ * entity, RwV3d * vector){        auto CWeaponFireShotgun = (void (__thiscall*)(CWeaponSlot * weaponSlot, CEntity_ * entity, RwV3d * vector))0x05CD340;        CWeaponFireShotgun(this,entity,vector);};  //float   flt_69D480 = -0.98f;float * dword_69D398 =  (float*)0x069D398;float   flt_69D484 = 0.145f;float   flt_69D488 = 0.996f; DWORD * dword_695680 = (DWORD*)0x0695680;float   flt_69D48C = 16.0f;float * flt_69D394 =  (float*)0x069D394;   //005CC730void CWeaponSlot::FireSniper(CEntity * entity) { bool isPlayer = false;  if ((CEntity*)CPlayerPed::GetPlayerPed() == entity)           isPlayer = true;    else           isPlayer = false;    if (isPlayer == false){          // CWeaponData::GetWeaponInfoByIndex(weaponIndex); зачем?           if (isPlayer == true) {                  _Camera->cams[_Camera->activeCam].field_168.y * flt_69D480;              _Camera->cams[_Camera->activeCam].field_168.x * (*dword_69D398);                  _Camera->cams[_Camera->activeCam].field_168.z * flt_69D484;              }                     //  _Camera->cams[_Camera->activeCam].camPos                  /*                        */          } else {             switch (_Camera->cams[_Camera->activeCam].field_C)                        {                             case 34: break;                             case  7: break;                                 case 46: break;                                 case  8: break;                 case 42: break;                                 case 39: break;                                 case 40: break;                     return;                        }       }    };   void CWeaponSlot::BlowUpExplosiveThings(CEntity_ * entity) {        auto CWeaponBlowUpExplosiveThing = (void (__thiscall*)(CWeaponSlot * weaponSlot, CEntity_ * entity))0x05C8AE0;        CWeaponBlowUpExplosiveThing(this, entity);};  

vcRenderWare.h


--- Код: C++ ---#pragma pack (push, 1) class RwRGBA {public:      char red;          char green;          char blue;          char alpha;     __inline RwRGBA () {}     __inline RwRGBA (BYTE r, BYTE g, BYTE b, BYTE a) { red = r; green = g; blue = b; alpha = a; }};    struct RwV3d{  float x;  float y;  float z;}; struct RwRect{        float x;    float y;    float w;    float h;};  struct RwMatrix {  RwV3d right;  int flags;  RwV3d top;  int field_1C;  RwV3d at;   int field_2C;  RwV3d pos;  int field_3C; }; struct  RwBBox{ RwV3d sup; RwV3d inf;};  struct RwSphere{  RwV3d center;  float radius;};  struct CMatrix { RwMatrix __parent;          int matrixPtr;                 int haveRwMatrix;}; struct CPlacable{ CMatrix matrix;};  #pragma pack (pop)

vcPhysic.h


--- Код: C++ ---#pragma pack (push, 1) struct CEntity{ DWORD __vmt; CPlacable placable; DWORD rwObject; BYTE flags; BYTE type; BYTE field_52; BYTE field_53; BYTE field_54; BYTE field_55; BYTE field_56; BYTE field_57; WORD field_58; WORD field_5A; WORD modelIndex; BYTE buildingIsland; BYTE interior; DWORD pReference;};  struct CPhysical{ CEntity __parent; DWORD audioID; DWORD field_68; DWORD field_6C; RwV3d velocity; RwV3d angularVelocity; DWORD field_88; DWORD field_8C; DWORD field_90; DWORD field_94; DWORD field_98; DWORD field_9C; DWORD field_A0; DWORD field_A4; DWORD field_A8; DWORD field_AC; DWORD field_B0; DWORD field_B4; DWORD fMass; DWORD fTurnMass; DWORD field_C0; float AirResistance; DWORD Elasticy; DWORD PercentSubmerged; RwV3d CenterOfMass; DWORD field_DC; DWORD ptrNode; BYTE field_E4; BYTE field_E5; BYTE field_E6; BYTE field_E7; DWORD field_E8; DWORD field_EC; DWORD field_F0; DWORD field_F4; DWORD field_F8; DWORD field_FC; DWORD field_100; DWORD field_104; DWORD field_108; DWORD field_10C; DWORD field_110; DWORD field_114; WORD field_118; BYTE field_11A; BYTE field_11B; BYTE field_11C; BYTE islandNo; WORD __padding;}; #pragma pack (pop)  

vcCamera.h


--- Код: C++ ---#pragma pack (push, 1)  struct CCam { BYTE field_0; BYTE field_1; BYTE field_2; DWORD field_3; BYTE field_7; BYTE field_8; BYTE field_9; BYTE field_A; BYTE field_B; WORD field_C; BYTE field_E; BYTE field_F; BYTE field_10; BYTE field_11; BYTE field_12; BYTE field_13; DWORD field_14; DWORD field_18; DWORD field_1C; DWORD field_20;BYTE field_24;BYTE field_25;BYTE field_26;BYTE field_27;DWORD field_28;DWORD field_2C;DWORD field_30;DWORD field_34;DWORD field_38;BYTE field_3C;BYTE field_3D;BYTE field_3E;BYTE field_3F;BYTE field_40;BYTE field_41;BYTE field_42;BYTE field_43;BYTE field_44;BYTE field_45;BYTE field_46;BYTE field_47;DWORD field_48;DWORD field_4C;DWORD field_50;DWORD field_54;BYTE field_58;BYTE field_59;BYTE field_5A;BYTE field_5B;DWORD field_5C;DWORD field_60;DWORD field_64;DWORD field_68;DWORD field_6C;BYTE field_70;BYTE field_71;BYTE field_72;BYTE field_73;BYTE field_74;BYTE field_75;BYTE field_76;BYTE field_77;BYTE field_78;BYTE field_79;BYTE field_7A;BYTE field_7B;DWORD field_7C;DWORD field_80;DWORD field_84;DWORD field_88;DWORD field_8C;BYTE field_90;BYTE field_91;BYTE field_92;BYTE field_93;DWORD field_94;DWORD field_98;BYTE field_9C;BYTE field_9D;BYTE field_9E;BYTE field_9F;BYTE field_A0;BYTE field_A1;BYTE field_A2;BYTE field_A3;BYTE field_A4;BYTE field_A5;BYTE field_A6;BYTE field_A7;BYTE field_A8;BYTE field_A9;BYTE field_AA;BYTE field_AB;BYTE field_AC;BYTE field_AD;BYTE field_AE;BYTE field_AF;DWORD field_B0;DWORD field_B4;BYTE field_B8;BYTE field_B9;BYTE field_BA;BYTE field_BB;DWORD field_BC;DWORD field_C0;DWORD field_C4;DWORD field_C8;DWORD field_CC;DWORD field_D0;BYTE field_D4;BYTE field_D5;BYTE field_D6;BYTE field_D7;DWORD field_D8;DWORD field_DC;DWORD field_E0;DWORD field_E4;DWORD field_E8;DWORD field_EC;DWORD field_F0;DWORD field_F4;DWORD field_F8;BYTE field_FC;BYTE field_FD;BYTE field_FE;BYTE field_FF;BYTE field_100;BYTE field_101;BYTE field_102;BYTE field_103;BYTE field_104;BYTE field_105;BYTE field_106;BYTE field_107;BYTE field_108;BYTE field_109;BYTE field_10A;BYTE field_10B;BYTE field_10C;BYTE field_10D;BYTE field_10E;BYTE field_10F;BYTE field_110;BYTE field_111;BYTE field_112;BYTE field_113;BYTE field_114;BYTE field_115;BYTE field_116;BYTE field_117;BYTE field_118;BYTE field_119;BYTE field_11A;BYTE field_11B;BYTE field_11C;BYTE field_11D;BYTE field_11E;BYTE field_11F;BYTE field_120;BYTE field_121;BYTE field_122;BYTE field_123;BYTE field_124;BYTE field_125;BYTE field_126;BYTE field_127;BYTE field_128;BYTE field_129;BYTE field_12A;BYTE field_12B;BYTE field_12C;BYTE field_12D;BYTE field_12E;BYTE field_12F;BYTE field_130;BYTE field_131;BYTE field_132;BYTE field_133;BYTE field_134;BYTE field_135;BYTE field_136;BYTE field_137;BYTE field_138;BYTE field_139;BYTE field_13A;BYTE field_13B;BYTE field_13C;BYTE field_13D;BYTE field_13E;BYTE field_13F;BYTE field_140;BYTE field_141;BYTE field_142;BYTE field_143;BYTE field_144;BYTE field_145;BYTE field_146;BYTE field_147;BYTE field_148;BYTE field_149;BYTE field_14A;BYTE field_14B;BYTE field_14C;BYTE field_14D;BYTE field_14E;BYTE field_14F;BYTE field_150;BYTE field_151;BYTE field_152;BYTE field_153;BYTE field_154;BYTE field_155;BYTE field_156;BYTE field_157;BYTE field_158;BYTE field_159;BYTE field_15A;BYTE field_15B;BYTE field_15C;BYTE field_15D;BYTE field_15E;BYTE field_15F;BYTE field_160;BYTE field_161;BYTE field_162;BYTE field_163;BYTE field_164;BYTE field_165;BYTE field_166;BYTE field_167;RwV3d field_168;RwV3d camPos;BYTE field_180;BYTE field_181;BYTE field_182;BYTE field_183;BYTE field_184;BYTE field_185;BYTE field_186;BYTE field_187;BYTE field_188;BYTE field_189;BYTE field_18A; BYTE field_18B; DWORD field_18C; DWORD field_190; DWORD field_194; RwV3d field_198[2]; DWORD targetedEntity; BYTE field_1B4; BYTE field_1B5; BYTE field_1B6; BYTE field_1B7; BYTE field_1B8; BYTE field_1B9; BYTE field_1BA; BYTE field_1BB; DWORD field_1BC; DWORD field_1C0; DWORD field_1C4; BYTE field_1C8; BYTE field_1C9; BYTE field_1CA; BYTE field_1CB;}; struct CCamera { CPlacable __parent; BYTE field_48; BYTE field_49; BYTE field_4A; BYTE field_4B; BYTE field_4C; BYTE field_4D; BYTE field_4E; BYTE field_4F; BYTE field_50; BYTE field_51; BYTE field_52; BYTE field_53;BYTE field_54;BYTE field_55;BYTE field_56;BYTE field_57;BYTE field_58;BYTE field_59;BYTE field_5A;BYTE field_5B;BYTE field_5C;BYTE field_5D;BYTE field_5E;BYTE field_5F;BYTE field_60;BYTE field_61;BYTE field_62;BYTE field_63;BYTE field_64;BYTE field_65;BYTE field_66;BYTE field_67;BYTE field_68;BYTE field_69;BYTE field_6A;BYTE field_6B;BYTE field_6C;BYTE wideScreen;BYTE field_6E;BYTE field_6F;BYTE field_70;BYTE field_71;BYTE field_72;BYTE field_73;BYTE field_74;BYTE field_75;BYTE activeCam;BYTE field_77;DWORD TimeEndShaking;BYTE field_7C;BYTE field_7D;BYTE field_7E;BYTE field_7F;DWORD field_80;BYTE field_84;BYTE field_85;BYTE field_86;BYTE field_87;BYTE field_88;BYTE field_89;BYTE field_8A;BYTE field_8B;DWORD field_8C;DWORD field_90;DWORD field_94;DWORD field_98;BYTE field_9C;BYTE field_9D;BYTE field_9E;BYTE field_9F;BYTE field_A0;BYTE field_A1;BYTE field_A2;BYTE field_A3;DWORD field_A4;DWORD field_A8;DWORD field_AC;DWORD field_B0;DWORD field_B4;DWORD field_B8;BYTE field_BC;BYTE field_BD;BYTE field_BE;BYTE field_BF;DWORD field_C0;DWORD field_C4;DWORD field_C8;DWORD field_CC;DWORD field_D0;BYTE field_D4;BYTE field_D5;BYTE field_D6;BYTE field_D7;BYTE field_D8;BYTE field_D9;BYTE field_DA;BYTE field_DB;DWORD field_DC;BYTE field_E0;BYTE field_E1;BYTE field_E2;BYTE field_E3;DWORD field_E4;BYTE field_E8;BYTE field_E9;BYTE field_EA;BYTE field_EB;BYTE field_EC;BYTE field_ED;BYTE field_EE;BYTE field_EF;DWORD field_F0;DWORD draw_distance;BYTE field_F8;BYTE field_F9;BYTE field_FA;BYTE field_FB;BYTE field_FC;BYTE field_FD;BYTE field_FE;BYTE field_FF;BYTE field_100;BYTE field_101;BYTE field_102;BYTE field_103;BYTE field_104;BYTE field_105;BYTE field_106;BYTE field_107;BYTE field_108;BYTE field_109;BYTE field_10A;BYTE field_10B;BYTE field_10C;BYTE field_10D;BYTE field_10E;BYTE field_10F;BYTE field_110;BYTE field_111;BYTE field_112;BYTE field_113;BYTE field_114;BYTE field_115;BYTE field_116;BYTE field_117;BYTE field_118;BYTE field_119;BYTE field_11A;BYTE field_11B;BYTE field_11C;BYTE field_11D;BYTE field_11E;BYTE field_11F;DWORD zAngle;DWORD field_124;DWORD field_128;DWORD ShakingStrength;DWORD field_130;DWORD field_134;DWORD field_138;DWORD fNearClipPlain;BYTE field_140;BYTE field_141;BYTE field_142;BYTE field_143;BYTE field_144;BYTE field_145;BYTE field_146;BYTE field_147;DWORD field_148;DWORD field_14C;DWORD field_150;DWORD WidescreenBorderHeight;DWORD field_158;BYTE field_15C;BYTE field_15D;BYTE field_15E;BYTE field_15F;DWORD field_160;DWORD field_164;DWORD field_168;BYTE field_16C;BYTE field_16D;BYTE field_16E;BYTE field_16F;BYTE field_170;BYTE field_171;BYTE field_172;BYTE field_173;BYTE field_174;BYTE field_175;BYTE field_176;BYTE field_177;DWORD field_178;WORD field_17C;BYTE field_17E;BYTE field_17F;DWORD field_180;BYTE field_184;BYTE field_185;BYTE field_186;BYTE field_187;CCam cams[3];DWORD field_6EC;DWORD field_6F0;BYTE field_6F4;BYTE field_6F5;BYTE field_6F6;BYTE field_6F7;BYTE field_6F8;BYTE field_6F9;BYTE field_6FA;BYTE field_6FB;BYTE field_6FC;BYTE field_6FD;BYTE field_6FE;BYTE field_6FF;DWORD field_700;DWORD field_704;WORD field_708;WORD field_70A;RwV3d field_70C;RwV3d field_718;RwV3d field_724;RwV3d targetPoint;RwV3d cameraPosition;RwV3d cameraRotation;RwV3d field_754;RwV3d field_760;RwV3d field_76C;RwV3d field_778;RwV3d field_784;RwV3d field_790;RwV3d field_79C;RwV3d field_7A8;RwV3d field_7B4;RwV3d field_7C0;RwV3d field_7CC;RwV3d field_7D8;RwV3d field_7E4;RwV3d field_7F0;RwV3d field_7FC;DWORD rwCamera;DWORD targetedEntity;DWORD field_810[4];CMatrix field_820;BYTE cameraInFreeMode;BYTE field_869;BYTE field_86A;BYTE fading;BYTE field_86C;BYTE field_86D;BYTE field_86E;BYTE field_86F;CMatrix viewMatrix;RwV3d field_8B8;RwV3d field_8C4;RwV3d field_8D0;RwV3d field_8DC;RwV3d field_8E8;RwV3d field_8F4;RwV3d field_900;BYTE field_90C;BYTE field_90D;BYTE field_90E;BYTE field_90F;DWORD _fadeAlpha;DWORD field_914;DWORD _fadeTimeInSec;DWORD field_91C;DWORD field_920;DWORD field_924;BYTE field_928;BYTE field_929;BYTE field_92A;BYTE field_92B;BYTE field_92C;BYTE field_92D;BYTE field_92E;BYTE field_92F;DWORD field_930;BYTE field_934; BYTE field_935; BYTE field_936; BYTE field_937; BYTE field_938; BYTE field_939; BYTE field_93A; BYTE field_93B; BYTE field_93C; BYTE field_93D; BYTE field_93E; BYTE field_93F; WORD fadeFlag; BYTE field_942; BYTE field_943; DWORD field_944; WORD field_948; WORD field_94A; WORD field_94C; BYTE field_94E; BYTE field_94F; DWORD timeStartFading; DWORD field_954;};  #pragma pack (pop)  


vcActors.h

--- Код: C++ ---#pragma pack (push, 1)  struct CColModel{  RwSphere sphere;  RwBBox bbox;  WORD field_28;  WORD field_2A;  WORD field_2C;  BYTE field_2E;  BYTE field_2F;  BYTE field_30;  BYTE field_31;  BYTE field_32;  BYTE field_33;  DWORD field_34;  DWORD colData;  DWORD field_3C;  DWORD field_40;  DWORD field_44;  DWORD field_48;};   struct CRoutePoint{ WORD field_0; WORD field_2; WORD _x; WORD _y; WORD _z; BYTE field_A; BYTE field_B; WORD nextPointIndex; BYTE field_E; BYTE field_F; BYTE flags; BYTE field_11; BYTE field_12; BYTE field_13;}; struct CPedIK{ DWORD pPed; DWORD field_4; DWORD field_8; DWORD field_C; DWORD field_10; DWORD field_14; DWORD field_18; DWORD field_1C; DWORD field_20; DWORD field_24;};  class CPed{  public:  CPhysical __parent;  BYTE field_120;  BYTE field_121;  BYTE field_122;  BYTE field_123;  BYTE field_124;  BYTE field_125;  BYTE field_126;  BYTE field_127;  BYTE field_128;  BYTE field_129;  BYTE field_12A;  BYTE field_12B;  BYTE field_12C;  BYTE field_12D;  BYTE field_12E;  BYTE field_12F;  BYTE field_130;  BYTE field_131;  BYTE field_132;  BYTE field_133;  BYTE field_134;  BYTE field_135;  BYTE field_136;  BYTE field_137;  BYTE field_138; BYTE field_139; BYTE field_13A; BYTE field_13B; BYTE field_13C; BYTE field_13D; BYTE field_13E; BYTE field_13F; BYTE field_140; BYTE field_141; BYTE field_142; BYTE field_143; BYTE field_144; BYTE field_145;  BYTE field_146; BYTE field_147;BYTE field_148;BYTE field_149;BYTE field_14A;BYTE field_14B;BYTE field_14C;BYTE field_14D;BYTE field_14E; BYTE field_Blood;BYTE field_150;BYTE flags;BYTE field_152;BYTE field_153;BYTE field_154;BYTE field_155;BYTE field_156;BYTE field_157;BYTE field_158;BYTE field_159;BYTE field_15A;BYTE field_15B;BYTE field_15C;BYTE field_15D;BYTE field_15E;BYTE field_15F;BYTE reference;BYTE field_161;BYTE field_162;BYTE field_163;DWORD objective;DWORD field_168;DWORD field_16C;DWORD targetEntity;BYTE field_174;BYTE field_175;BYTE field_176;BYTE field_177;BYTE field_178;BYTE field_179;BYTE field_17A;BYTE field_17B;BYTE field_17C;BYTE field_17D;BYTE field_17E;BYTE field_17F;DWORD field_180;DWORD damageEntity;DWORD field_188;DWORD threatPlayer;DWORD field_190;DWORD field_194;DWORD field_198;DWORD field_19C;DWORD field_1A0;DWORD field_1A4;DWORD field_1A8;BYTE field_1AC;BYTE field_1AD;BYTE field_1AE;BYTE field_1AF;BYTE field_1B0;BYTE field_1B1;BYTE field_1B2;BYTE field_1B3;BYTE field_1B4;BYTE field_1B5;BYTE field_1B6;BYTE field_1B7;BYTE field_1B8;BYTE field_1B9;BYTE field_1BA;BYTE field_1BB;BYTE field_1BC;BYTE field_1BD;BYTE field_1BE;BYTE field_1BF;BYTE field_1C0;BYTE field_1C1;BYTE field_1C2;BYTE field_1C3;BYTE field_1C4;BYTE field_1C5;BYTE field_1C6;BYTE field_1C7;BYTE field_1C8;BYTE field_1C9;BYTE field_1CA;BYTE field_1CB;BYTE field_1CC;BYTE field_1CD;BYTE field_1CE;BYTE field_1CF;BYTE field_1D0;BYTE field_1D1;BYTE field_1D2;BYTE field_1D3;BYTE field_1D4;BYTE field_1D5;BYTE field_1D6;BYTE field_1D7;BYTE field_1D8;BYTE field_1D9;BYTE field_1DA;BYTE field_1DB;BYTE field_1DC;BYTE field_1DD;BYTE field_1DE;BYTE field_1DF;BYTE field_1E0;BYTE field_1E1;BYTE field_1E2;BYTE field_1E3;BYTE field_1E4;BYTE field_1E5;BYTE field_1E6;BYTE field_1E7;BYTE field_1E8;BYTE field_1E9;BYTE field_1EA;BYTE field_1EB;BYTE field_1EC;BYTE field_1ED;BYTE field_1EE;BYTE field_1EF;DWORD field_1F0;DWORD field_1F4;DWORD field_1F8;DWORD field_1FC;DWORD field_200;DWORD field_204;DWORD field_208;DWORD field_20C;CPedIK pedIK;DWORD field_238;DWORD field_23C;DWORD field_240;DWORD field_244;DWORD field_248;DWORD field_24C;DWORD field_250;DWORD field_254;DWORD animationID;DWORD animationTime;DWORD field_260;DWORD field_264;DWORD field_268;DWORD field_26C;DWORD field_270;DWORD field_274;DWORD field_278;DWORD field_27C;WORD field_280;WORD field_282;DWORD field_284;DWORD field_288;DWORD field_28C;CRoutePoint pedRoutes[8];DWORD field_330;BYTE field_334;BYTE field_335;BYTE field_336;BYTE field_337;DWORD field_338;DWORD field_33C;DWORD field_340;DWORD field_344;DWORD field_348;DWORD field_34C;DWORD field_350;float health;float armour;BYTE field_35C;BYTE field_35D;BYTE field_35E;BYTE field_35F;WORD field_360;WORD field_362;WORD field_364;WORD field_366;BYTE field_368;BYTE field_369;BYTE field_36A;BYTE field_36B;DWORD field_36C;DWORD field_370;DWORD field_374;DWORD field_378;DWORD headingChangeRate;WORD field_380;WORD field_382;DWORD field_384;DWORD field_388;DWORD field_38C;DWORD field_390;DWORD field_394;DWORD field_398;DWORD field_39C;DWORD field_3A0;DWORD field_3A4;DWORD pVehicle;BYTE inVehicle;BYTE field_3AD;BYTE field_3AE;BYTE field_3AF;DWORD field_3B0;DWORD field_3B4;BYTE field_3B8;BYTE field_3B9;BYTE field_3BA;BYTE field_3BB;DWORD field_3BC;DWORD field_3C0;BYTE field_3C4;BYTE field_3C5;WORD field_3C6;BYTE field_3C8;BYTE field_3C9;BYTE field_3CA;BYTE field_3CB;DWORD field_3CC;DWORD field_3D0;DWORD pedType;DWORD pedStatsPtr;DWORD field_3DC;DWORD field_3E0;DWORD field_3E4;DWORD field_3E8;DWORD field_3EC;BYTE field_3F0;BYTE field_3F1;BYTE field_3F2;BYTE field_3F3;DWORD field_3F4;DWORD field_3F8;BYTE field_3FC;BYTE field_3FD;BYTE field_3FE;BYTE field_3FF;DWORD field_400;DWORD field_404;CWeaponSlot weaponSlots[10];DWORD field_4F8;DWORD currentWeaponId;DWORD currentWeaponAmmo;BYTE currentWeapon;BYTE field_505;BYTE weaponAccuracy;BYTE field_507;DWORD field_508;BYTE field_50C;BYTE field_50D;BYTE field_50E;BYTE field_50F;BYTE field_510;BYTE field_511;BYTE field_512;BYTE field_513;DWORD field_514;DWORD field_518;BYTE field_51C;BYTE field_51D;BYTE field_51E;BYTE field_51F;BYTE field_520;BYTE field_521;BYTE field_522;BYTE field_523;DWORD fire;DWORD field_528;DWORD field_52C;DWORD field_530;DWORD field_534;DWORD field_538;DWORD field_53C;DWORD field_540;DWORD field_544;DWORD field_548;DWORD field_54C;DWORD field_550;DWORD field_554;DWORD field_558;DWORD ClosestPedsTimer;DWORD field_560;DWORD field_564;BYTE field_568;bool bleeding;BYTE field_56A;BYTE field_56B;DWORD closestPeds[10];WORD numberOfPeds;WORD money;DWORD lastDamageType;DWORD lastDamageEntity;DWORD field_5A0;BYTE field_5A4;BYTE field_5A5;BYTE field_5A6;BYTE field_5A7;BYTE field_5A8;BYTE field_5A9;BYTE field_5AA;BYTE field_5AB;BYTE field_5AC;BYTE field_5AD;BYTE field_5AE;BYTE field_5AF;BYTE field_5B0;BYTE field_5B1;BYTE field_5B2;BYTE field_5B3;BYTE field_5B4;BYTE field_5B5;BYTE field_5B6;BYTE field_5B7;DWORD field_5B8;DWORD field_5BC;DWORD field_5C0;DWORD field_5C4;BYTE field_5C8;BYTE field_5C9;BYTE field_5CA;BYTE field_5CB;BYTE field_5CC;BYTE field_5CD;BYTE field_5CE;BYTE field_5CF;DWORD field_5D0;DWORD field_5D4;WORD field_5D8;WORD field_5DA;BYTE muted;BYTE field_5DD;BYTE field_5DE;BYTE field_5DF;DWORD field_5E0;DWORD field_5E4;DWORD field_5E8;DWORD field_5EC;DWORD field_5F0;}; class CPlayerPed{ public: CPed __parent; DWORD wanted; DWORD field_5F8; DWORD field_5FC; DWORD field_600; DWORD field_604; DWORD field_608; BYTE field_60C; BYTE field_60D; BYTE field_60E; BYTE field_60F; DWORD field_610; DWORD field_614; DWORD field_618; BYTE field_61C; BYTE field_61D; BYTE field_61E; BYTE field_61F; DWORD field_620; DWORD targetableObjects[4]; DWORD field_634; BYTE drunkVisuals; BYTE field_639; BYTE field_63A; BYTE field_63B; BYTE field_63C; BYTE field_63D; BYTE field_63E; BYTE field_63F; RwV3d field_640[6]; DWORD field_688[6]; DWORD field_6A0; DWORD field_6A4; DWORD field_6A8; DWORD field_6AC; DWORD field_6B0; DWORD field_6B4; WORD field_6B8; BYTE field_6BA; BYTE field_6BB; DWORD field_6BC; DWORD field_6C0; DWORD field_6C4; DWORD field_6C8; DWORD field_6CC; DWORD field_6D0; DWORD field_6D4; static CPed * GetPlayerPed(); void SetWantedLevelAtLeast(DWORD valueWanted); void SetWantedLevel(DWORD valueWanted);};    class CPlayer{ public:  CPlayerPed * pPed;  DWORD rcBuggy;  CColModel colModel;  DWORD field_54;  DWORD field_58;  BYTE field_5C;  BYTE field_5D;  BYTE field_5E;  BYTE field_5F;  BYTE field_60;  BYTE field_61;  BYTE field_62;  BYTE field_63;  BYTE field_64;  BYTE field_65;  BYTE field_66;  BYTE field_67;  BYTE field_68;  BYTE field_69;  BYTE field_6A;  BYTE field_6B;  BYTE field_6C;  BYTE field_6D;  BYTE field_6E;  BYTE field_6F;  BYTE field_70;  BYTE field_71;  BYTE field_72;  BYTE field_73;  BYTE field_74;  BYTE field_75;  BYTE field_76;  BYTE field_77;  BYTE field_78;  BYTE field_79;  BYTE field_7A;  BYTE field_7B;  BYTE field_7C;  BYTE field_7D;  BYTE field_7E;  BYTE field_7F;  BYTE field_80;  BYTE field_81;  BYTE field_82;  BYTE field_83;  BYTE field_84;  BYTE field_85;  BYTE field_86;  BYTE field_87;  BYTE field_88;  BYTE field_89;  BYTE field_8A;  BYTE field_8B;  BYTE field_8C;  BYTE field_8D;  BYTE field_8E;  BYTE field_8F;  BYTE field_90;  BYTE field_91;  BYTE field_92;  BYTE field_93;  BYTE field_94;  BYTE field_95;  BYTE field_96;  BYTE field_97;  BYTE field_98;  BYTE field_99;  BYTE field_9A;  BYTE field_9B;  BYTE field_9C;  BYTE field_9D;  BYTE field_9E;  BYTE field_9F;  DWORD _money;  DWORD money;  DWORD foundHiddenPackages;  DWORD totalHiddenPackages;  DWORD field_B0;  DWORD field_B4;  DWORD field_B8;  DWORD field_BC;  DWORD field_C0;  DWORD field_C4;  DWORD field_C8;  BYTE IsWastedBusted;  BYTE field_CD;  BYTE field_CE;  BYTE field_CF;  DWORD field_D0;  BYTE field_D4;  BYTE field_D5;  BYTE field_D6;  BYTE field_D7;  DWORD field_D8;  DWORD field_DC;  DWORD field_E0;  DWORD field_E4;  DWORD field_E8;  DWORD field_EC;  DWORD field_F0;  DWORD field_F4;  DWORD field_F8;  DWORD field_FC;  DWORD field_100;  DWORD field_104;  DWORD field_108;  DWORD field_10C;  DWORD field_110;  DWORD field_114;  DWORD field_118;  DWORD field_11C;  DWORD field_120;  DWORD field_124;  DWORD field_128;  DWORD field_12C;  DWORD field_130;  DWORD field_134;  DWORD field_138;  DWORD field_13C;  BYTE field_140;  BYTE field_141;  BYTE fireproof;  BYTE maxHealth;  BYTE maxArmour;  BYTE field_145;  BYTE single_free_treatment;  BYTE drive_by;  BYTE field_148;  BYTE field_149;  WORD field_14A;  BYTE skinPath[32];  DWORD playerTexture;};  #pragma pack (pop)  

vcActors.cpp


--- Код: C++ ---#include "stdafx.h" #include "vcRenderWare.h"#include "vcPhysic.h"#include "vcWeapon.h"#include "vcActors.h"   auto _currentPlayer = (BYTE*)0x0A10AFB; auto _players = (CPlayer*)0x094AD28;  CPed * CPlayerPed::GetPlayerPed() {        return (CPed*)_players[*_currentPlayer].pPed;}; //0532070void CPlayerPed::SetWantedLevelAtLeast(DWORD valueWanted) {         auto CPlayerPed__SetWantedLevelAtLeast = (void (__thiscall*)(CPlayerPed * pPlayerPed, DWORD vvalueWanted))0x0532070;         CPlayerPed__SetWantedLevelAtLeast(this, valueWanted);}; //00532090void CPlayerPed::SetWantedLevel(DWORD valueWanted){         auto CPlayerPed__SetWantedLevel = (void (__thiscall*)(CPlayerPed * pPlayerPed, DWORD vvalueWanted))0x0532090;         CPlayerPed__SetWantedLevel(this, valueWanted);}; 

xanser:
Лучше все-таки кроме обсуждения здесь сделать еще накопительную страницу, где бы все систематизировать, наподобие этой 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:

--- Цитата: xanser от Ноябрь 26, 2013, 04:34:09 pm ---Лучше все-таки кроме обсуждения здесь сделать еще накопительную страницу, где бы все систематизировать,

--- Конец цитаты ---
Я так-то думал, что будут выкладывать в виде архивов rar или zip с небольшим описанием. Сектору спасибо за выкладки.
Выкладывайте в виде архивов, пожалуйста, если информации много.
Сам копаю рендер пока. Пока выяснил, что сначала выводятся облака, прозрачные поверхности, постепенно исчезающие (fading) объекты, потом дороги, затем тачки.

Sektor:
Достаточно, полезные адреса 0x690220 и 0x69022C. Можно хорошо это применить в моддинге. Особенно когда речь идет об улучшении графики.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии