diff --git a/client/apartment.lua b/client/apartment.lua index 1a148bc..9074561 100644 --- a/client/apartment.lua +++ b/client/apartment.lua @@ -32,10 +32,14 @@ function Apartment:RegisterPropertyEntrance() self:GetMenuForAll() end + local function seeAllToRaid() + self:GetMenuForAllToRaid() + end + local size = vector3(door.length, door.width, 3.0) local heading = door.h - Framework[Config.Target].AddApartmentEntrance(door, size, heading, self.apartmentData.label, enterApartment, seeAll, targetName) + Framework[Config.Target].AddApartmentEntrance(door, size, heading, self.apartmentData.label, enterApartment, seeAll, seeAllToRaid, targetName) end function Apartment:EnterApartment() @@ -76,6 +80,32 @@ function Apartment:GetMenuForAll() lib.showContext(id) end +function Apartment:GetMenuForAllToRaid() + if next(self.apartments) == nil then + Framework[Config.Notify].Notify("There are no apartments here.", "error") + return + end + + local id = "apartments-" .. self.apartmentData.label + local menu = { + id = id, + title = "Apartments To Raid", + options = {} + } + + for propertyId, _ in pairs(self.apartments) do + table.insert(menu.options,{ + title = "Raid " .. self.apartmentData.label .. " " .. propertyId, + onSelect = function() + TriggerServerEvent("ps-housing:server:raidProperty", propertyId) + end, + }) + end + + lib.registerContext(menu) + lib.showContext(id) +end + function Apartment:CreateBlip(hasProperty) self:DeleteBlip() diff --git a/shared/framework.lua b/shared/framework.lua index 7295ea6..7883eee 100644 --- a/shared/framework.lua +++ b/shared/framework.lua @@ -110,7 +110,7 @@ Framework.qb = { return targetName end, - AddApartmentEntrance = function(coords, size, heading, apartment, enter, seeAll, targetName) + AddApartmentEntrance = function(coords, size, heading, apartment, enter, seeAll, seeAllToRaid, targetName) exports['qb-target']:AddBoxZone(targetName, vector3(coords.x, coords.y, coords.z), size.x, size.y, { name = targetName, heading = heading, @@ -130,7 +130,20 @@ Framework.qb = { { label = "See all apartments", action = seeAll, - } + }, + { + label = "Raid Apartment", + action = seeAllToRaid, + canInteract = function() + local PlayerData = QBCore.Functions.GetPlayerData() + local job = PlayerData.job + local jobName = job.name + local gradeAllowed = tonumber(job.grade.level) >= Config.MinGradeToRaid + local onDuty = job.onduty + + return jobName == Config.PoliceJobName and gradeAllowed and onDuty + end, + }, } }) end, @@ -281,7 +294,7 @@ Framework.ox = { return handler end, - AddApartmentEntrance = function (coords, size, heading, apartment, enter, seeAll, _) + AddApartmentEntrance = function (coords, size, heading, apartment, enter, seeAll, seeAllToRaid, _) local handler = exports.ox_target:addBoxZone({ coords = vector3(coords.x, coords.y, coords.z), size = vector3(size.y, size.x, size.z), @@ -300,6 +313,19 @@ Framework.ox = { label = "See all apartments", onSelect = seeAll, }, + { + label = "Raid Apartment", + onSelect = seeAllToRaid, + canInteract = function() + local PlayerData = QBCore.Functions.GetPlayerData() + local job = PlayerData.job + local jobName = job.name + local gradeAllowed = tonumber(job.grade.level) >= Config.MinGradeToRaid + local onDuty = job.onduty + + return jobName == "police" and onDuty and gradeAllowed + end, + }, }, })