local isEntity = isElement local isOnScreen = isElementOnScreen local math_sin = math.sin local math_rad = math.rad local math_cos = math.cos local getPos = getElementPosition local getRot = getElementRotation local getCameraRotation = getPedCameraRotation local setAimTarget = setPedAimTarget local getTask = getPedTask local isDead = isPedDead local isFrozen = isElementFrozen local isPedGangDriveBy = isPedDoingGangDriveby local getElementsInRange = getElementsWithinRange local getTarget = getCameraTarget local getDimension = getElementDimension local getInterior = getElementInterior local function restrict(player) return ( getTask(player, "secondary", 0) == "TASK_SIMPLE_USE_GUN" or getTask(player, "secondary", 0) == "TASK_SIMPLE_FALL" or isPedGangDriveBy(player) or isDead(player) or isFrozen(player) or getElementData(player, 'fall') or getElementData(player, 'player:camera') or getElementData(player, 'Character:InClothesShop') or getElementData(player, 'Character:InCreation') or getElementModel(player) == 43 or getElementModel(player) == 39 ) end local _setPedLookAt = setPedLookAt local function setPedLookAt(player, x, y, z, ...) if player ~= localPlayer then setAimTarget(player, x, y, z) end return _setPedLookAt(player, x, y, z, ...) end local function getVehicleSpeed(vehicle) local vx, vy, vz = getElementVelocity(vehicle) return math.ceil(math.sqrt(vx^2 + vy^2 + vz^2) * 165) end setTimer(function() local myTarget = getTarget(localPlayer); if not isEntity(myTarget) then myTarget = localPlayer end local targetX, targetY, targetZ = getPos(myTarget) local dim = getDimension(myTarget); local int = getInterior(myTarget); local players = getElementsInRange(targetX, targetY, targetZ, 35, 'player', int, dim); for i = #players, 1, -1 do local player = players[i]; if isEntity(player) and isOnScreen(player) and not restrict(player) then local _, _, r = getRot(player) local px, py, pz = getPos(player) local camRot = 360 - getCameraRotation(player) local diff = (camRot - (r + 180) + 180 + 360) % 360 - 180 local rad = math_rad(camRot + 90) if not (diff <= 55 and diff >= -55) then local vehicle = getPedOccupiedVehicle(player); if vehicle then if getVehicleSpeed(vehicle) < 5 then if player == localPlayer then px = px + math.cos(rad) * 2 py = py + math.sin(rad) * 2 setPedLookAt(player, px, py, pz + 0.5, 300, 200) end end else if (getVehicleSpeed(player) or 0) <= 25 then px = px + math_cos(rad) * 2 py = py + math_sin(rad) * 2 setPedLookAt(player, px, py, pz + 0.5, 310, 200) end end end end end end, 100, 0)