■構造体の読み方基本形は下記のコードになる。
for 28@ = [Start] to [(Start)+(size*(Num-1))] step [size] 読んだり 書き込んだり end
■人物車以外の構造体集
##################################################################### 0x00AAE948あたりからモデルの定義。 ひとつあたり0x20バイト、 コリジョンモデルの構造体へのポインタ(DWORD)、 LOD切り替え距離(FLOAT)が含まれる。 全部で14000個くらい。
0x00B744A4に格納されているポインタの指すアドレスに格納されている ポインタの指すアドレスからコリジョンモデル構造体の配列。 ひとつあたり0x30バイト、 +0x00 FLOAT X最小 +0x04 FLOAT Y最小 +0x08 FLOAT Z最小 +0x0C FLOAT X最大 +0x10 FLOAT Y最大 +0x14 FLOAT Z最大 +0x18 FLOAT X中心 +0x1C FLOAT Y中心 +0x20 FLOAT Z中心 +0x24 FLOAT 球半径 +0x28 DWORD ? +0x2C DWORD ? 全部で10150個くらい。 ##################################################################### 0xA94DE4 から 0x7C バイトごとに 8つの1バイト整数を取得し、 全てが0でなければそれ以上作成できないということになります。
for 0@ = 0xA94D68 to 0xA950CC step 0x7C 0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0 if 8039: not 1@ == 0 jf @CREATABLE end // 作成できない
:CREATABLE // 作成できる ##################################################################### 0xC891A8にProjectile構造体(36byte*32element)があるので それぞれの+0x0Cを0等遠い値にしてやると時限信管による爆発・消滅しなくなります。 また、0xB7CB84の値あたりにしてやると即爆発・消滅します。
RocketやMissileなんかはぶつかるまで無限に飛び続けます。 Rockets The rocket pool contains info on launched rockets (for example, Hydra rockets).
0xC891A8 - Rocket pool start. Each slot has 36 bytes of data. There are 32 elements in the pool.
+0 = [dword] Rocket type: 16 = none 19 = normal 20 = heatseeking 58 = flare +4 = [dword] Pointer to launching vehicle +8 = [dword] Pointer to target vehicle (when heatseeking), 0 otherwise +0x0Cを0等遠い値にしてやると時限信管による爆発・消滅しなくなります +16 = [byte] Does rocket exist? 0 = exploded/does not exist 1 = travelling +20 = [float] X-axis position +24 = [float] Y-axis position +28 = [float] Z-axis position ##################################################################### Corona Structure
Start 0xC3E058 Size 0x3C Num 0x40
+0x00 Float X Position +0x04 Float Y Position +0x08 Float Z Position +0x0C DWord Unknown +0x10 DWord Ptr To Texture (+0x10 Char[64] Name) +0x14 Float Radius +0x18 Float Unknown +0x1C Float Far Clip +0x20 Float Near Clip +0x24 DWord 0 +0x28 Float 15.0 +0x2C Byte Color R +0x2D Byte Color G +0x2E Byte Color B +0x2F Byte Color A +0x30 Byte Fade (0=Hide/255=Show) +0x31 Byte Flag (0/1) +0x32 Byte Flare +0x33 Byte Flag (0/1) +0x34 DWord Flag +0x38 DWord 0 ##################################################################### CPickupItem 開始 0x9788C0 サイズ 0x20 最大 0x26C +0x04 DWORD CObjectアドレス 0なら存在しない +0x08 DWORD 札束の場合は金額 +0x0C DWORD(?) 消滅時刻 +0x10 WORD X座標*8.0 +0x12 WORD Y座標*8.0 +0x14 WORD Z座標*8.0 +0x1C WORD タイプ 8なら主に札束 4なら主に落とされた武器
+0x0Cを0にすると消える 毎フレームチェックされないみたいだから瞬時には消えない
for 0@ = 0x9788DC to 0x97D63C step 0x20 0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0 if 0039: 1@ == 4 then 000A: 0@ += -0x18 0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0 000A: 0@ += 0x18 if 8039: not 1@ == 0 then 0A8D: 2@ = read_memory 0xB7449C size 4 virtual_protect 0 0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0 0062: 1@ -= 2@ // (int) 0016: 1@ /= 0x19C 0A8D: 2@ = read_memory 0xB7449C size 4 virtual_protect 0 000A: 2@ += 0x4 0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0 005A: 2@ += 1@ // (int) 0A8D: 2@ = read_memory 2@ size 1 virtual_protect 0 0012: 1@ *= 0x100 005A: 1@ += 2@ // (int) 0984: 10@ = object 1@ model end end end pickupの武器IDを取得します。 1@がオブジェクト、10@がIDです。 sweet家上のtec9等の元から落ちている武器は取得できません。
for 28@ = 0x9788C0 to 0x97D620 step 0x20 000A: 28@ += 0x4 0A8D: 26@ = read_memory 28@ size 4 virtual_protect 0 000A: 28@ += -0x4 if 8039: not 26@ == 0//exist? then 000A: 28@ += 0x1C 0A8D: 26@ = read_memory 28@ size 4 virtual_protect 0 000A: 28@ += -0x1C if 0039: 26@ == 4//weapon? then ////////get_ammo////////// 000A: 28@ += 0x08 0A8D: 15@ = read_memory 28@ size 4 virtual_protect 0 000A: 28@ += -0x08 ////////get_ammo////////// ////////set_disapper/////////// 000A: 28@ += 0x0C 0A8D: 0@ = read_memory 0xB7CB84 size 4 virtual_protect 0 //grobal_timer 0A8C: write_memory 28@ size 4 value 0@ virtual_protect 0 000A: 28@ += -0x0C ////////set_disapper/////////// ////////get_pos///////// 000A: 28@ += 0x10 0A8D: 16@ = read_memory 28@ size 2 virtual_protect 0 000A: 28@ += 0x2 0A8D: 17@ = read_memory 28@ size 2 virtual_protect 0 000A: 28@ += 0x2 0A8D: 18@ = read_memory 28@ size 2 virtual_protect 0 000A: 28@ += -0x14 16@ /= 8.0 17@ /= 8.0 18@ /= 8.0 ////////get_pos///////// ////////get_model//////// 0A8D: 2@ = read_memory 0xB7449C size 4 virtual_protect 0 0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0 0062: 26@ -= 2@ // (int) 0016: 26@ /= 0x19C 0A8D: 2@ = read_memory 0xB7449C size 4 virtual_protect 0 000A: 2@ += 0x4 0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0 005A: 2@ += 26@ // (int) 0A8D: 2@ = read_memory 2@ size 1 virtual_protect 0 0012: 26@ *= 0x100 005A: 26@ += 2@ // (int) 0984: 10@ = object 26@ model ////////get_model//////// //0A92: create_custom_thread "31)4like_make_weapon_obj.s" [x_f][y_f][z_f][model_id_i][amount_ammo_i] 0A92: create_custom_thread "31)4like_make_weapon_obj.s" 16@ 17@ 18@ 10@ 15@ end end end ##################################################################### Marker 0xBA86F0 サイズは0x28バイト 要素数は0xB0 +0x04 DWORD アタッチ先ハンドル +0x14 WORD マーカーの色 +0x26 BYTE アタッチ先の種類(車04 人08 物0C)
マーカーのハンドル Marker Handleは(Flag << 0x10 | Index)です。 0@ = 0xBAA270 000A: 0@ += 0x14 0A8D: 1@ = read_memory 0@ size 2 virtual_protect 0//mark handle 000E: 0@ -= 0x14 0012: 1@ *= 0x10000 0085: 2@ = 0@ // (int) 000E: 2@ -= 0xBA86F0 0016: 2@ /= 0x28 005A: 1@ += 2@ // (int)
アタッチ先の種類の見分け方の例 if and 88B7: not test 26@ bit 2 08B7: test 26@ bit 3 then (この場合、1000B==0x08==人 の時真となる)
##################################################################### FireStart 0xB71F80 Size 0x28 Num 0x3C
+0x00 Word Exist Flag (20=None) +0x02 Word Index used in SCM +0x04 Float X Position +0x08 Float Y Position +0x0C Float Z Position +0x10 DWord Attached to +0x14 DWord Fired from +0x18 DWord Disappear Time (from 0xB7CB84) +0x1C Float Size +0x20 Byte Some Flag +0x21 Byte Unknown 60 +0x22 Word Unknown 0 +0x24 Float Unknown ##################################################################### melee.datStart 0xC170D0 Size 0x88 Num 0x0F
+0x00 DWord ANIMGROUP +0x04 Float RANGES +0x08 Float ATTACK1 hit / 30.0 +0x0C Float ATTACK2 hit / 30.0 +0x10 Float ATTACK3 hit / 30.0 +0x14 Float AGROUND hit / 30.0 +0x18 Float AMOVING hit / 30.0 +0x1C Float ATTACK1 chain / 30.0 +0x20 Float ATTACK2 chain / 30.0 +0x24 Float ATTACK3 chain / 30.0 +0x28 Float AGROUND chain / 30.0 +0x2C Float AMOVING chain / 30.0 +0x30 Float ATTACK1 radius +0x34 Float ATTACK2 radius +0x38 Float ATTACK3 radius +0x3C Float AGROUND radius +0x40 Float AMOVING radius +0x44 Float AGROUND groundLoop / 30.0 +0x48 Float ABLOCK hit / 30.0 +0x4C Float ABLOCK chain / 30.0 +0x50 Byte ATTACK1 hitlevel +0x51 Byte ATTACK2 hitlevel +0x52 Byte ATTACK3 hitlevel +0x53 Byte AGROUND hitlevel +0x54 Byte AMOVING hitlevel +0x55 Byte ATTACK1 damage +0x56 Byte ATTACK2 damage +0x57 Byte ATTACK3 damage +0x58 Byte AGROUND damage +0x59 Byte AMOVING damage +0x5A Byte Padding +0x5B Byte Padding +0x5C DWord ATTACK1 hit + 60 +0x60 DWord ATTACK2 hit + 60 +0x64 DWord ATTACK3 hit + 60 +0x68 DWord AGROUND hit + 60 +0x6C DWord AMOVING hit + 60 +0x70 DWord ATTACK1 altHit + 60 +0x74 DWord ATTACK2 altHit + 60 +0x78 DWord ATTACK3 altHit + 60 +0x7C DWord AGROUND altHit + 60 +0x80 DWord AMOVING altHit + 60 +0x84 DWord FLAGS * Index of array = *(Byte*)(0xC8AB26 + WeaponID * 0x70) - 4; ##################################################################### CoronaStart 0xC3E058 Size 0x3C Num 0x40
+0x00 Float X Position +0x04 Float Y Position +0x08 Float Z Position +0x0C DWord Unknown +0x10 DWord Ptr To Texture Struct (+0x10 Char[64] Name) +0x14 Float Radius +0x18 Float Unknown +0x1C Float Far Clip +0x20 Float Near Clip +0x24 DWord 0 +0x28 Float 15.0 +0x2C Byte Color R +0x2D Byte Color G +0x2E Byte Color B +0x2F Byte Color A +0x30 Byte Fade (0=Hide/255=Show) +0x31 Byte Some Flag (0/1) +0x32 Byte Flare +0x33 Byte Some Flag (0/1) +0x34 DWord Some Flag +0x38 DWord 0 ##################################################################### Bullet TrackStart 0xC7C748 Size 0x2C Num 0x10
+0x00 Float Trans Side X +0x04 Float Trans Side Y +0x08 Float Trans Side Z +0x0C Float Yellow Side X +0x10 Float Yellow Side Y +0x14 Float Yellow Side Z +0x18 Byte Exist Flag +0x19 Byte Pad +0x1A Byte Pad +0x1B Byte Pad +0x1C DWord Created Time (from 0xB7CB84) +0x20 DWord Disappear Time (e.g. 750) +0x24 Float Radius +0x28 Byte Alpha +0x29 Byte Pad +0x2A Byte Pad +0x2B Byte Pad ##################################################################### Racing Check PointStart 0xC7F158 Size 0x38 Num 0x20
+0x00 Byte Type +0x04 DWord Handle in SCM +0x08 DWord Color (RGBA) +0x10 Float X Pisition +0x14 Float Y Pisition +0x18 Float Z Pisition +0x1C Float X Direction +0x20 Float Y Direction +0x24 Float Z Direction +0x2C Float Size * Start Address and some other are from GTAModding.com ##################################################################### BulletStart 0xC88740 Size 0x2C Num 0x08
+0x00 DWord Weapon Type +0x04 DWord Fired From +0x08 Float Destroy Time +0x0C Byte Exist Flag +0x0D Byte3 Padding +0x10 Float X Position +0x14 Float Y Position +0x18 Float Z Position +0x1C Float X Velocity (Meters per Frame) +0x20 Float Y Velocity (Meters per Frame) +0x24 Float Z Velocity (Meters per Frame) +0x28 Word Damage +0x2A Word Padding * Start Address and some other are from Sacky's post in GTAForums.com ##################################################################### ExplosionStart 0xC88950 Size 0x7C Num 0x10
+0x00 DWord Explosion Type +0x04 Float X Position +0x08 Float X Position +0x0C Float X Position +0x10 Float Unknown +0x14 Float Unknown 0.5 +0x18 DWord Unknown 0 +0x1C DWord Unknown 0 +0x20 Float Disappear Time (from 0xB7CB84) +0x24 Float Unknown 1.0 +0x28 Byte Frames from Created +0x29 Byte Unknown 1 +0x2A Byte Unknown 1 +0x2B Byte Unknown 0 +0x2C Float Created Time (from 0xB7CB84) +0x30 DWord Unknown 0 +0x34 Float Visible Radius +0x38 DWord Unknown 0 +0x3C DWord Time from Created +0x40 - +0x78 Float Effect Coords ##################################################################### weapon.datStart 0xC8AAB8 Size 0x70 Num 0x51
+0x00 DWord eFireType +0x04 Float targetRange +0x08 Float weaponRange +0x0C Long modelId1 +0x10 Long modelId2 +0x14 DWord weaponslot +0x18 DWord flags +0x1C DWord AssocGroupId +0x20 Word ammoClip +0x22 Word damage +0x24 Float fireOffset x +0x28 Float fireOffset y +0x2C Float fireOffset z +0x30 DWord skillLevel +0x34 DWord req stat level to get this weapon skill level +0x38 Float accuracy +0x3C Float move speed +0x40 Float animLoop start / 30.0 +0x44 Float animLoop end / 30.0 +0x48 Float animLoop fire / 30.0 +0x4C Float animLoop2 start / 30.0 +0x50 Float animLoop2 end / 30.0 +0x54 Float animLoop2 fire / 30.0 +0x58 Float breakoutTime +0x5C Float speed +0x60 Float radius +0x64 Float lifespan +0x68 Float spread +0x6C Byte AssocGroupId +0x6D Byte Unknown 0 +0x6E Byte baseCombo +0x6F Byte Unknown 1 Index 0 - 46 : Weapon 0 - 46 : Gangsta Index 47 - 57 : Weapon 22 - 32 : Poor Index 58 - 68 : Weapon 22 - 32 : Hitman Index 69 : Weapon 22 : Cop
#####################################################################