function IsPlayerUnreachable() local playerPed = PlayerPedId() return IsPedInAnyVehicle(playerPed) or IsPedRagdoll(playerPed) or IsEntityDead(playerPed) end function IsVehicleLocked(vehicle) return Contains({2, 3, 10}, GetVehicleDoorLockStatus(vehicle)) end function CanVehicleHaveRoofbox(vehicle) if IsVehicleAConvertible(vehicle, false) or not DoesVehicleHaveRoof(vehicle) then return false end return true end function CanOpenRoofbox(vehicle) return not IsVehicleLocked(vehicle) end function CanMoveCycles(vehicle, bike) if GetPedInVehicleSeat(bike, -1) > 0 then return false end return not IsVehicleLocked(vehicle) end function HasVehicleAccess(vehicle) if not Config.removal.checkAccess or not Config.removal.checkAccess.system then return true end local system = Config.removal.checkAccess.system if system == 'qbx_vehiclekeys' or system == 'qb-vehiclekeys' then return exports[system]:HasKeys(vehicle) end if system == 'vehicle_keys' then local plate = GetVehicleNumberPlateText(vehicle) return exports["vehicles_keys"]:doesPlayerOwnPlate(plate) end return true end -- Keybinds display local buttons = nil local keybinds = {} local threadRunning = false local function StartKeybindDisplayThread() if threadRunning then return false end Citizen.CreateThread(function() while buttons ~= nil do local sleep = 1 DrawScaleformMovieFullscreen(buttons, 255, 255, 255, 255, 0) Citizen.Wait(sleep) end threadRunning = false end) end function AddKeybindDisplay(key, label) buttons = nil table.insert(keybinds, { key = '~' .. key .. '~', label = label, }) buttons = RequestScaleformMovie("INSTRUCTIONAL_BUTTONS") while not HasScaleformMovieLoaded(buttons) do Wait(0) end BeginScaleformMovieMethod(buttons, "CLEAR_ALL") EndScaleformMovieMethod() for k, keybind in pairs(keybinds) do BeginScaleformMovieMethod(buttons, "SET_DATA_SLOT") ScaleformMovieMethodAddParamInt(k - 1) ScaleformMovieMethodAddParamPlayerNameString(keybind.key) PushScaleformMovieMethodParameterString(keybind.label) EndScaleformMovieMethod() end BeginScaleformMovieMethod(buttons, "DRAW_INSTRUCTIONAL_BUTTONS") EndScaleformMovieMethod() StartKeybindDisplayThread() end function ClearKeybinds() buttons = nil keybinds = {} end