{$CLEO .cs} { by DK'22 Vol-GTA } const DYN_CASH = 0x4E0 // Модель денег (ID). Используется модель bonus.dff WEAPON_MODEL_SCALE = 0.8 // Размер лежащего оружия (1.0 - дефолтный размер) WEAPON_GROUND = 0.95 // Расстояние от земли к оружию MONEY_GROUND = 0.58 // Расстояние от земли к деньгам WEAPON_PROECTION_INTENSITY = 255 // Интенсивность проекции под оружием (0-255) MONEY_PROECTION_INTENSITY = 255 // Интенсивность проекции под деньгами (0-255) WEAPON_PROECTION_SIZE = 0.8 // Размер проекции под оружием MONEY_PROECTION_SIZE = 0.7 // Размер проекции под деньгами // Цвет проекции под оружием WEAPON_PROECTION_R = 0xFF // R WEAPON_PROECTION_G = 0x47 // G WEAPON_PROECTION_B = 0x10 // B // Цвет проекции под деньгами MONEY_PROECTION_R = 0 // R MONEY_PROECTION_G = 0x91 // G MONEY_PROECTION_B = 0x11 // B PICK_UP_RADIUS = 1.25 // Радиус для поднятия пикапа SEARCH_RADIUS = 5000.0 // В этом радиусе от точки 0.0 0.0 0.0 ведётся поиск автомобилей/пикапов-обьектов end wait 250 while true wait 0 // check if player is available if not player.Defined(0) then continue end for 0@ = 0x9788C0 to 0x97D620 step 0x20 0085: 6@ = 0@ inc(6@, 0x1C) 0A8D: 1@ = read_memory 6@ size 1 virtual_protect false dec(6@, 0x1C) if 1@ == 8 // Is money then inc(6@, 4) 0A8D: 1@ = read_memory 6@ size 4 virtual_protect false dec(6@, 4) if 1@ <> 0 then inc(6@, 8) 0A8D: 28@ = read_memory 6@ size 4 virtual_protect false // Money value dec(6@, 8) // 0AEC: 2@ = object_struct 1@ handle 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) 0085: 2@ = 1@ // (int) 0907: get_object 2@ mass_to 15@ if 15@ <> 539.0 then 0093: 28@ = integer 28@ to_float object.StorePos(2@, 10@, 11@, 12@) 01BC: put_object 2@ at 0.0 0.0 3000.0 0087: 13@ = 12@ inc(6@, 0xC) 0A8C: write_memory 6@ size 4 value 0 virtual_protect false dec(6@, 0xC) dec(12@, MONEY_GROUND) 0208: 30@ = random_float_in_ranges 0.0 360.0 // Z_angle for money object.Create(20@,DYN_CASH, 10@, 11@, 12@) 0382: set_object 20@ collision_detection false object.Angle(20@) = 30@ 0400: store_coords_to 19@ 21@ 22@ from_object 20@ with_offset 0.092 0.0 0.0 0400: store_coords_to 23@ 24@ 25@ from_object 20@ with_offset -0.092 0.0 0.0 02CE: 22@ = ground_z_at 19@ 21@ 22@ 02CE: 25@ = ground_z_at 23@ 24@ 25@ 0509: 26@ = distance_between_XY 23@ 24@ and_XY 19@ 21@ 0087: 27@ = 25@ 0063: 27@ -= 22@ 0604: get_Z_angle_for_point 27@ 26@ store_to 28@ 0400: store_coords_to 19@ 21@ 22@ from_object 20@ with_offset 0.0 0.05 0.0 0400: store_coords_to 23@ 24@ 25@ from_object 20@ with_offset 0.0 -0.05 0.0 02CE: 22@ = ground_z_at 19@ 21@ 22@ 02CE: 25@ = ground_z_at 23@ 24@ 25@ 0509: 26@ = distance_between_XY 23@ 24@ and_XY 19@ 21@ 0087: 27@ = 25@ 0063: 27@ -= 22@ 0604: get_Z_angle_for_point 27@ 26@ store_to 29@ 0453: set_object 20@ XY_rotation 28@ 29@ angle 30@ 0908: set_object 20@ turn_mass_to 28@ // Money value 0906: set_object 20@ mass_to 539.0 // it is IV_Pickup | Something like a "flag" 0906: set_object 2@ mass_to 539.0 object.RemoveReferences(20@) end end else if 1@ == 4 // Is throwed weapon then inc(6@, 4) 0A8D: 1@ = read_memory 6@ size 4 virtual_protect false dec(6@, 4) if 1@ <> 0 then inc(6@, 8) 0A8D: 28@ = read_memory 6@ size 4 virtual_protect false // Weapon ammo dec(6@, 8) // 0AEC: 2@ = object_struct 1@ handle 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) 0085: 2@ = 1@ // (int) 0907: get_object 2@ mass_to 15@ if 15@ <> 539.0 then 0093: 28@ = integer 28@ to_float object.StorePos(2@, 10@, 11@, 12@) 0984: 4@ = object 2@ model 01BC: put_object 2@ at 0.0 0.0 3000.0 0087: 13@ = 12@ inc(6@, 0xC) 0A8C: write_memory 6@ size 4 value 0 virtual_protect false // Dissapear dec(6@, 0xC) dec(12@, WEAPON_GROUND) // Get real ground_Z 0208: 30@ = random_float_in_ranges 0.0 360.0 // Z_angle for money object.Create(20@, 4@, 10@, 11@, 12@) 0382: set_object 20@ collision_detection false 08D2: object 20@ scale_model WEAPON_MODEL_SCALE object.Angle(20@) = 30@ // ... 13_02_11 0400: store_coords_to 19@ 21@ 22@ from_object 20@ with_offset 0.2 0.0 0.0 0400: store_coords_to 23@ 24@ 25@ from_object 20@ with_offset -0.2 0.0 0.0 02CE: 22@ = ground_z_at 19@ 21@ 22@ 02CE: 25@ = ground_z_at 23@ 24@ 25@ 0509: 26@ = distance_between_XY 23@ 24@ and_XY 19@ 21@ 0087: 27@ = 25@ 0063: 27@ -= 22@ 0604: get_Z_angle_for_point 27@ 26@ store_to 28@ 0400: store_coords_to 19@ 21@ 22@ from_object 20@ with_offset 0.0 0.07 0.0 0400: store_coords_to 23@ 24@ 25@ from_object 20@ with_offset 0.0 -0.07 0.0 02CE: 22@ = ground_z_at 19@ 21@ 22@ 02CE: 25@ = ground_z_at 23@ 24@ 25@ 0509: 26@ = distance_between_XY 23@ 24@ and_XY 19@ 21@ 0087: 27@ = 25@ 0063: 27@ -= 22@ 0604: get_Z_angle_for_point 27@ 26@ store_to 29@ if 89CC: not object 20@ model_is #TEC9 then inc(28@, 90.0) 0453: set_object 20@ XY_rotation 28@ 29@ angle 30@ else inc(29@, 90.0) 0453: set_object 20@ XY_rotation 29@ 28@ angle 30@ end 0908: set_object 20@ turn_mass_to 28@ // Weapon ammo 0906: set_object 20@ mass_to 539.0 // it is IV_Pickup 0906: set_object 2@ mass_to 539.0 object.RemoveReferences(20@) end end end end end // Creating shadows | Checking isPickedUp 0A8D: 3@ = read_memory 0xB7449C size 4 virtual_protect 0 000A: 3@ += 0x4 0A8D: 3@ = read_memory 3@ size 4 virtual_protect 0 for 5@ = 0 to 89344 step 0x100 0A8D: 16@ = read_memory 3@ size 1 virtual_protect 0 000A: 3@ += 0x1 if and 0029: 16@ >= 0x00 001B: 0x80 > 16@ then 005A: 16@ += 5@ // (int) if 03CA: object 16@ exists then 0907: get_object 16@ mass_to 18@ // float if 18@ == 539.0 then if 09CC: object 16@ model_is DYN_CASH // is money then object.StorePos(16@, 21@, 22@, 23@) actor.StorePos($player_actor, 24@, 25@, 26@) 050A: 27@ = distance_between_XYZ 24@ 25@ 26@ and_XYZ 21@ 22@ 23@ if and 27@ < PICK_UP_RADIUS not actor.Driving($player_actor) 86B9: not cutscene_data_loaded 8A0C: not player 0 on_jetpack player.Controllable(0) then 0909: get_object 16@ turn_mass_to 29@ 0092: 29@ = float 29@ to_integer 0209: 29@ = random_int_in_ranges 4 400 player.Money(0) += 29@ 0A8D: 8@ = read_memory 0xBA6797 size 1 virtual_protect false 0093: 8@ = integer 8@ to_float div(8@, 64.0) 0B51: 31@ = play_media_file "audio\MONEY.wav" direct_path 0 prescan 1 volume 25.0 position 0.0 loop 0 menu_flag 0 tempo 0.0 speed 100.0 pitch 0.0 synchronize speed 1 volume 1 save 0 0B53: set_audio 31@ volume 25.0 for 0 ms position -1.0 loop -1 menu_flag -1 tempo -100.0 speed -1000.0 pitch -100.0 synchronize speed -1 volume -1 object.Destroy(16@) else object.StorePos(16@, 10@, 11@, 12@) 09E5: create_flash_light_at 10@ 11@ 12@ MONEY_PROECTION_R MONEY_PROECTION_G MONEY_PROECTION_B MONEY_PROECTION_SIZE inc(12@, 0.5) 016F: particle 3 rot 0.0 size MONEY_PROECTION_SIZE MONEY_PROECTION_INTENSITY MONEY_PROECTION_R MONEY_PROECTION_G MONEY_PROECTION_B at 10@ 11@ 12@ end else for 27@ = #gun_dildo1 to #tec9 if 27@ == #jetpack then continue end if 09CC: object 16@ model_is 27@ // is weapon then 4@ = true break else 4@ = false end end if 4@ == true then 4@ = false object.StorePos(16@, 21@, 22@, 23@) actor.StorePos($player_actor, 24@, 25@, 26@) 050A: 27@ = distance_between_XYZ 24@ 25@ 26@ and_XYZ 21@ 22@ 23@ if and 27@ < PICK_UP_RADIUS not actor.Driving($player_actor) 86B9: not cutscene_data_loaded 8A0C: not player 0 on_jetpack player.Controllable(0) then 0984: 22@ = object 16@ model for 27@ = 1 to 46 if or 27@ == 19 27@ == 20 27@ == 21 then continue end 0781: get_weapon_with_ID 27@ model_to 21@ if 003B: 22@ == 21@ then break end end 0782: get_weapon_with_ID 27@ weapon_group_to 21@ inc(21@) 04B8: get_weapon_data_from_actor $PLAYER_ACTOR weapon_group 21@ weapon 26@ ammo 4@ model 25@ if 25@ <= 0 then 0909: get_object 16@ turn_mass_to 29@ 0092: 29@ = float 29@ to_integer 0209: 29@ = random_int_in_ranges 4 40 01B2: give_actor $player_actor weapon 27@ ammo 29@ object.Destroy(16@) else if 003B: 26@ == 27@ then 0909: get_object 16@ turn_mass_to 29@ 0092: 29@ = float 29@ to_integer 0209: 29@ = random_int_in_ranges 4 40 0A8E: 7@ = 4@ + 29@ 017B: set_actor $PLAYER_ACTOR weapon 27@ ammo_to 7@ 0A8D: 8@ = read_memory 0xBA6797 size 1 virtual_protect false 0093: 8@ = integer 8@ to_float div(8@, 64.0) 0B51: 31@ = play_media_file "audio\WEAPON.wav" direct_path 0 prescan 1 volume 25.0 position 0.0 loop 0 menu_flag 0 tempo 0.0 speed 100.0 pitch 0.0 synchronize speed 1 volume 1 save 0 0B53: set_audio 31@ volume 25.0 for 0 ms position -1.0 loop -1 menu_flag -1 tempo -100.0 speed -1000.0 pitch -100.0 synchronize speed -1 volume -1 object.Destroy(16@) else if 00E1: player 0 pressed_key 4 // Tab then 0909: get_object 16@ turn_mass_to 29@ 0092: 29@ = float 29@ to_integer 0209: 29@ = random_int_in_ranges 4 40 01B2: give_actor $player_actor weapon 27@ ammo 29@ 0A8D: 8@ = read_memory 0xBA6797 size 1 virtual_protect false 0093: 8@ = integer 8@ to_float div(8@, 64.0) 0B51: 31@ = play_media_file "audio\WEAPON.wav" direct_path 0 prescan 1 volume 25.0 position 0.0 loop 0 menu_flag 0 tempo 0.0 speed 100.0 pitch 0.0 synchronize speed 1 volume 1 save 0 0B53: set_audio 31@ volume 25.0 for 0 ms position -1.0 loop -1 menu_flag -1 tempo -100.0 speed -1000.0 pitch -100.0 synchronize speed -1 volume -1 object.Destroy(16@) else if 88FE: not text_box_displayed then 03E5: show_text_box 'PU_CF3' // Press ~k~~PED_ANSWER_PHONE~ to replace current weapon in this slot. end object.StorePos(16@, 10@, 11@, 12@) 09E5: create_flash_light_at 10@ 11@ 12@ WEAPON_PROECTION_R WEAPON_PROECTION_G WEAPON_PROECTION_B WEAPON_PROECTION_SIZE inc(12@, 0.5) 016F: particle 3 rot 0.0 size WEAPON_PROECTION_SIZE WEAPON_PROECTION_INTENSITY WEAPON_PROECTION_R WEAPON_PROECTION_G WEAPON_PROECTION_B at 10@ 11@ 12@ end end end else object.StorePos(16@, 10@, 11@, 12@) 09E5: create_flash_light_at 10@ 11@ 12@ WEAPON_PROECTION_R WEAPON_PROECTION_G WEAPON_PROECTION_B WEAPON_PROECTION_SIZE inc(12@, 0.5) 016F: particle 3 rot 0.0 size WEAPON_PROECTION_SIZE WEAPON_PROECTION_INTENSITY WEAPON_PROECTION_R WEAPON_PROECTION_G WEAPON_PROECTION_B at 10@ 11@ 12@ end end end end end end end end {old ver wait 250 while true wait 0 if not player.Defined(0) then continue end actor.StorePos($player_actor, 0@, 1@, 2@) if 048C: pickup_at 0@ 1@ 2@ available_to_be_picked_up then 0866: get_object_in_sphere 0@ 1@ 2@ radius 2000.0 handle_as 3@ end if 03CA: object 3@ exists then repeat 0907: get_object 3@ mass_to 12@ // float if 12@ == 1011.0 then if 8685: not object 3@ attached // if pickup destroyed then object.Destroy(3@) else object.RemoveReferences(3@) end else object.RemoveReferences(3@) end until 83CA: object 3@ exists end for 0@ = 0x9788DC to 0x97D63C step 0x20 0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0 if // or 0039: 1@ == 4 // is weapon created by game then 000A: 0@ += -0x18 0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0 000A: 0@ += 0x18 if 8039: not 1@ == 0 // does can transform to CObject 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) if 03CA: object 1@ exists then 0984: 10@ = object 1@ model end object.StorePos(1@, 16@, 17@, 18@) 0750: set_object 1@ visibility 0 // hide the pickup 016F: create_particle 3 rot 0.0 size 1.0 255 RGB 255 71 16 at 16@ 17@ 18@ //25@ = 1 0907: get_object 1@ mass_to 12@ // float if 12@ <> 1001.0 // did we already created the object for this pickup then 0906: set_object 1@ mass_to 1001.0 // float // if no - then we create it 02CE: 31@ = ground_z_at 16@ 17@ 18@ if not model.Available(10@) then model.Load(10@) while not model.Available(10@) wait 0 end 30@ = 1 // flag to destroy model end if 30@ == 1 then model.Destroy(10@) 30@ = 0 end object.Create(11@, 10@, 16@, 17@, 31@) // object 0906: set_object 11@ mass_to 1011.0 // float if 03CA: object 1@ exists then object.StorePos(1@, 6@, 7@, 8@) end var 8@: float 31@: float end dec(31@, 8@) inc(31@, 0.37) // real ground_Z for weapon 08D2: object 11@ scale_model 0.6 0208: 30@ = random_float_in_ranges 0.0 360.0 // Z_angle for weapon 069A: attach_obj 11@ to_obj 1@ offset 0.0 0.0 31@ rot 90.0 -4.0 30@ object.StorePos(11@, 16@, 17@, 18@) object.RemoveReferences(11@) object.RemoveReferences(1@) else object.RemoveReferences(1@) end end end end end}