Advertisement
djhonga2001

GTA-V gravity gun

Jul 16th, 2015
1,425
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.89 KB | None | 0 0
  1. void gravityGun();
  2.  
  3.  
  4. //<gravity gun>
  5. bool grav_target_locked = false;
  6. Entity grav_entity = 0;
  7. DWORD grav_partfx = 0;
  8.  
  9. Vector3 GetCoordsFromCam(float distance)
  10. {
  11. Vector3 Rot = CAM::GET_GAMEPLAY_CAM_ROT(2);
  12. static Vector3 Coord = CAM::GET_GAMEPLAY_CAM_COORD();
  13.  
  14. Rot.y = distance * cos(Rot.x);
  15. Coord.x = Coord.x + Rot.y * sin(Rot.z * -1.0f);
  16. Coord.y = Coord.y + Rot.y * cos(Rot.z * -1.0f);
  17. Coord.z = Coord.z + distance * sin(Rot.x);
  18.  
  19. return Coord;
  20. }
  21.  
  22. void VectorToFloat(Vector3 unk, float *Out)
  23. {
  24. Out[0] = unk.x;
  25. Out[1] = unk.y;
  26. Out[2] = unk.z;
  27. }
  28.  
  29. void RequestControlEntity(Entity entity)
  30. {
  31. int tick = 0;
  32.  
  33. while (!NETWORK::NETWORK_HAS_CONTROL_OF_ENTITY(entity) && tick <= 12)
  34. {
  35. NETWORK::NETWORK_REQUEST_CONTROL_OF_ENTITY(entity);
  36. tick++;
  37. }
  38. }
  39.  
  40. void gravityGun()
  41. {
  42. Ped tempPed;
  43. Hash tempWeap;
  44.  
  45. if (!grav_target_locked) PLAYER::GET_PLAYER_TARGET_ENTITY(PLAYER::PLAYER_ID(), &grav_entity);
  46.  
  47. tempPed = PLAYER::PLAYER_ID(); WEAPON::GET_CURRENT_PED_WEAPON(PLAYER::PLAYER_PED_ID(), &tempWeap, 1);
  48. if ((PLAYER::IS_PLAYER_FREE_AIMING(tempPed) || PLAYER::IS_PLAYER_TARGETTING_ANYTHING(tempPed)) && ENTITY::DOES_ENTITY_EXIST(grav_entity) && tempWeap == GAMEPLAY::GET_HASH_KEY("weapon_stungun"))
  49. {
  50. if (!grav_target_locked) PLAYER::GET_PLAYER_TARGET_ENTITY(PLAYER::PLAYER_ID(), &grav_entity); grav_target_locked = true;
  51.  
  52.  
  53. float Coord[3]; VectorToFloat(GetCoordsFromCam(5.5f), Coord);
  54.  
  55. if (!GRAPHICS::DOES_PARTICLE_FX_LOOPED_EXIST(grav_partfx))
  56. {
  57. STREAMING::REQUEST_PTFX_ASSET();
  58. if (STREAMING::HAS_PTFX_ASSET_LOADED())
  59. {
  60. grav_partfx = GRAPHICS::START_PARTICLE_FX_LOOPED_AT_COORD((DWORD*)"scr_drug_traffic_flare_L", Coord[0], Coord[1], Coord[2], 0.0f, 0.0f, 0.0f, 0.5f, 0, 0, 0, 0);
  61. GRAPHICS::SET_PARTICLE_FX_LOOPED_COLOUR(grav_partfx, 1.0f, 0.84f, 0.0f, 0);
  62. }
  63. }
  64.  
  65. RequestControlEntity(grav_entity);
  66. ENTITY::SET_ENTITY_COORDS_NO_OFFSET(grav_entity, Coord[0], Coord[1], Coord[2], 0, 0, 0);
  67. if (ENTITY::IS_ENTITY_A_VEHICLE(grav_entity)) ENTITY::SET_ENTITY_HEADING(grav_entity, ENTITY::GET_ENTITY_HEADING(PLAYER::PLAYER_PED_ID()) + 90.0f);
  68.  
  69. if (PED::IS_PED_SHOOTING(PLAYER::PLAYER_PED_ID()))
  70. {
  71. AUDIO::PLAY_SOUND_FROM_ENTITY(-1, (char*)"Foot_Swish", grav_entity, (char*)"docks_heist_finale_2a_sounds", 0, 0);
  72. ENTITY::SET_ENTITY_HEADING(grav_entity, ENTITY::GET_ENTITY_HEADING(PLAYER::PLAYER_PED_ID()));
  73. ENTITY::APPLY_FORCE_TO_ENTITY(grav_entity, 1, 0.0f, 350.0f, 2.0f, 2.0f, 0.0f, 0.0f, 0, 1, 1, 1, 0, 1);
  74. grav_target_locked = false;
  75. }
  76. }
  77. else if (GRAPHICS::DOES_PARTICLE_FX_LOOPED_EXIST(grav_partfx))
  78. {
  79. GRAPHICS::STOP_PARTICLE_FX_LOOPED(grav_partfx, 0);
  80. GRAPHICS::REMOVE_PARTICLE_FX(grav_partfx, 0);
  81. STREAMING::REMOVE_PTFX_ASSET();
  82. }
  83. if (!PLAYER::IS_PLAYER_FREE_AIMING_AT_ENTITY(tempPed, grav_entity) || !PLAYER::IS_PLAYER_TARGETTING_ENTITY(tempPed, grav_entity)) grav_target_locked = false;
  84.  
  85. }
  86. //</gravity gun>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement