void set_gravity_gun() { DWORD tempPed, tempWeap; if (!grav_target_locked) { GET_ENTITY_PLAYER_IS_FREE_AIMING_AT(PLAYER_ID(), &grav_entity); if (DOES_ENTITY_EXIST(grav_entity) && checkNear(GET_ENTITY_COORDS(PLAYER_PED_ID(), 1), GET_ENTITY_COORDS(grav_entity, 1), pickupDistance)) grav_target_locked = 1; if (IS_PED_IN_ANY_VEHICLE(grav_entity, 0)) grav_entity = GET_VEHICLE_PED_IS_IN(grav_entity, 0); if (grav_target_locked){ bool cancel = 1; if (IS_ENTITY_AN_OBJECT(grav_entity) && forceGunObjects) cancel = 0; if (IS_ENTITY_A_VEHICLE(grav_entity) && forceGunVehicles) cancel = 0; if (IS_ENTITY_A_PED(grav_entity) && forceGunPeds) cancel = 0; if (cancel){ grav_target_locked = 0; grav_entity = -1; return; } } } tempPed = PLAYER_ID(); GET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), &tempWeap, 1); if ((IS_PLAYER_FREE_AIMING(tempPed) || IS_PLAYER_TARGETTING_ANYTHING(tempPed)) && DOES_ENTITY_EXIST(grav_entity) && grav_target_locked) { Vector3 gameplayCam = _GET_GAMEPLAY_CAM_COORDS(); Vector3 gameplayCamRot = GET_GAMEPLAY_CAM_ROT(0); Vector3 gameplayCamDirection = RotationToDirection(gameplayCamRot); Vector3 startCoords = addVector(gameplayCam, (multiplyVector(gameplayCamDirection, entityDistance))); Vector3 endCoords = addVector(gameplayCam, (multiplyVector(gameplayCamDirection, 500.0f))); SET_ENTITY_COLLISION(grav_entity, 0, 1); //RequestControlOfid(NETWORK_GET_NETWORK_ID_FROM_ENTITY(grav_entity)); RequestControlOfEnt(grav_entity); if (IS_ENTITY_A_PED(grav_entity)) SET_ENTITY_INVINCIBLE(grav_entity, 1); if (IS_PED_SHOOTING(PLAYER_PED_ID()) == 0) SET_ENTITY_COORDS_NO_OFFSET(grav_entity, startCoords.x, startCoords.y, startCoords.z, 0, 0, 0); if (IS_ENTITY_A_VEHICLE(grav_entity) || IS_ENTITY_A_PED(grav_entity)) SET_ENTITY_HEADING(grav_entity, GET_ENTITY_HEADING(PLAYER_PED_ID()) + 90.0f); if (IS_PED_SHOOTING(PLAYER_PED_ID())) { RequestControlOfEnt(grav_entity); SET_ENTITY_COLLISION(grav_entity, 1, 1); SET_ENTITY_HEADING(grav_entity, GET_ENTITY_HEADING(PLAYER_PED_ID())); APPLY_FORCE_TO_ENTITY(grav_entity, 1, 0.0f, 350.0f, 2.0f + endCoords.z, 2.0f, 0.0f, 0.0f, 0, 1, 1, 1, 0, 1); SET_ENTITY_INVINCIBLE(grav_entity, 0); WAIT(300); grav_target_locked = false; grav_entity = -1; return; } } else { RequestControlOfEnt(grav_entity); SET_ENTITY_COLLISION(grav_entity, 1, 1); grav_target_locked = false; grav_entity = -1; } }