Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void gravityGun();
- //<gravity gun>
- bool grav_target_locked = false;
- Entity grav_entity = 0;
- DWORD grav_partfx = 0;
- Vector3 GetCoordsFromCam(float distance)
- {
- Vector3 Rot = CAM::GET_GAMEPLAY_CAM_ROT(2);
- static Vector3 Coord = CAM::GET_GAMEPLAY_CAM_COORD();
- Rot.y = distance * cos(Rot.x);
- Coord.x = Coord.x + Rot.y * sin(Rot.z * -1.0f);
- Coord.y = Coord.y + Rot.y * cos(Rot.z * -1.0f);
- Coord.z = Coord.z + distance * sin(Rot.x);
- return Coord;
- }
- void VectorToFloat(Vector3 unk, float *Out)
- {
- Out[0] = unk.x;
- Out[1] = unk.y;
- Out[2] = unk.z;
- }
- void RequestControlEntity(Entity entity)
- {
- int tick = 0;
- while (!NETWORK::NETWORK_HAS_CONTROL_OF_ENTITY(entity) && tick <= 12)
- {
- NETWORK::NETWORK_REQUEST_CONTROL_OF_ENTITY(entity);
- tick++;
- }
- }
- void gravityGun()
- {
- Ped tempPed;
- Hash tempWeap;
- if (!grav_target_locked) PLAYER::GET_PLAYER_TARGET_ENTITY(PLAYER::PLAYER_ID(), &grav_entity);
- tempPed = PLAYER::PLAYER_ID(); WEAPON::GET_CURRENT_PED_WEAPON(PLAYER::PLAYER_PED_ID(), &tempWeap, 1);
- 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"))
- {
- if (!grav_target_locked) PLAYER::GET_PLAYER_TARGET_ENTITY(PLAYER::PLAYER_ID(), &grav_entity); grav_target_locked = true;
- float Coord[3]; VectorToFloat(GetCoordsFromCam(5.5f), Coord);
- if (!GRAPHICS::DOES_PARTICLE_FX_LOOPED_EXIST(grav_partfx))
- {
- STREAMING::REQUEST_PTFX_ASSET();
- if (STREAMING::HAS_PTFX_ASSET_LOADED())
- {
- 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);
- GRAPHICS::SET_PARTICLE_FX_LOOPED_COLOUR(grav_partfx, 1.0f, 0.84f, 0.0f, 0);
- }
- }
- RequestControlEntity(grav_entity);
- ENTITY::SET_ENTITY_COORDS_NO_OFFSET(grav_entity, Coord[0], Coord[1], Coord[2], 0, 0, 0);
- if (ENTITY::IS_ENTITY_A_VEHICLE(grav_entity)) ENTITY::SET_ENTITY_HEADING(grav_entity, ENTITY::GET_ENTITY_HEADING(PLAYER::PLAYER_PED_ID()) + 90.0f);
- if (PED::IS_PED_SHOOTING(PLAYER::PLAYER_PED_ID()))
- {
- AUDIO::PLAY_SOUND_FROM_ENTITY(-1, (char*)"Foot_Swish", grav_entity, (char*)"docks_heist_finale_2a_sounds", 0, 0);
- ENTITY::SET_ENTITY_HEADING(grav_entity, ENTITY::GET_ENTITY_HEADING(PLAYER::PLAYER_PED_ID()));
- 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);
- grav_target_locked = false;
- }
- }
- else if (GRAPHICS::DOES_PARTICLE_FX_LOOPED_EXIST(grav_partfx))
- {
- GRAPHICS::STOP_PARTICLE_FX_LOOPED(grav_partfx, 0);
- GRAPHICS::REMOVE_PARTICLE_FX(grav_partfx, 0);
- STREAMING::REMOVE_PTFX_ASSET();
- }
- if (!PLAYER::IS_PLAYER_FREE_AIMING_AT_ENTITY(tempPed, grav_entity) || !PLAYER::IS_PLAYER_TARGETTING_ENTITY(tempPed, grav_entity)) grav_target_locked = false;
- }
- //</gravity gun>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement