Configuration

0R Apartment Configurations

Custom Stash

If you use an inventory other than ox, qbcore,, you can integrate the Stash Opening function suitable for your own inventory into this function.

function Utils.Functions.CustomInventory.OpenInventory(type, id, options)
    type = type or "stash"
    local maxWeight = options.maxWeight
    local slots = options.slots
    -- #
end

function Utils.Functions.CustomInventory.RegisterStash(stashId, options)
    local maxWeight = Config.InteriorHotelRoom.stash.maxWeight
    local slots = Config.InteriorHotelRoom.stash.slots
    local coords = Config.InteriorHotelRoom.coords.stash
    -- #
end

Custom Wardrobe Setting

You can use your own clothing system by integrating it into this function. Below is an example. No settings are required for qb or esx default scripts.

-- Cloth menu event name for room wardrobe
Config.ClothMenuEventName         = nil

Config File

--[[ Configuration settings ]]
Config                            = {}
---Locale setting for language localization.
Config.Locale                     = "en"

---@type EventName | nil -- Cloth menu event name for room wardrobe
Config.ClothMenuEventName         = nil
-- Can the rooms be entered without permission?
Config.UnauthorizedEntryIntoRooms = {
    --[[ Please Check client/utils:Utils.Functions.LockPickGame() ]]
    active = false,
    item = "lockpick",
    canUseStash = false,
}
--[[ The maximum number of rooms a player can get in an apartment ]]
Config.MaxRoomLimitPerPlayer = 1
--[[ max guest that can be added to the room ]]
Config.MaxGuestCanBeAddedToRoom = 5
--[[ Apartment Start | Not Support Mlo Apart ! ]]
Config.ApartmentStarting = true
--[[ Rooms can be purchased or just rented. ]]
Config.CanRoomsBePurchased = true
--[[ No Elevator Feature]]
Config.NoElevator = false
--[[ MetaKeys ]]
Config.MetaKeys = true
--[[ If qb-inventory is used and the version is higher than 2.0.0 then enable this setting, otherwise leave it disabled ]]
Config.NewInventoryQB = true

--[[ If you are using a starter apartment and there is no room available, it will start here. ]]
Config.NewPlayerStartCoords = vec3(0, 0, 0)

--[[ If you are using liberty city make this true. ]]
Config.LibertyCity = false

Config.OpenMenuWithTablet = {
    active = true,
    itemName = 'tablet',
}

--[[ Apartment Configs ]]

--[[ Commands ]]
Config.Commands = {
    -- [[ To Open the panel. ]]
    openPanel = "apartment", -- or nil
    --[[ Extend the rental in your current room. ]]
    extendRental = "extendrental",
}

--[[ Indicators ]]
Config.Indicators = {
    electricity = {
        unitPrice = 5, -- [[ Unit price at the time of purchase ]]
        maxValue = 1000 --[[ Max value that can be stored ]]
    },
    power = {
        unitPrice = 5,
        maxValue = 1000
    },
    gas = {
        unitPrice = 5,
        maxValue = 1000
    },
    water = {
        unitPrice = 5,
        maxValue = 1000
    },
}

--[[ InteriorHotelRoom ]]
Config.InteriorHotelCorridor = {
    ---@type "target" | "textui"
    interactionType = "textui",
    coords = {
        mainDoor = vec4(-425.4557, -831.4573, -169.4836, 163.6333),
        cameras = {
            [1] = vec4(-429.8342, -834.6968, -166.8, 287.3452),
            [2] = vec4(-416.0023, -804.9767, -162.5, 160.3329),
            [3] = vec4(-428.0974, -838.8970, -163.2, 336.4007),
            [4] = vec4(-416.0247, -805.0617, -154.2, 159.3935),
            [5] = vec4(-428.4543, -838.7031, -154.3, 307.3857),
            [6] = vec4(-416.0092, -804.9615, -153.7, 159.2749),
            [7] = vec4(-428.2982, -838.8560, -153.5, 334.6291),
        }
    }
}

--[[ InteriorHotelRoom ]]
Config.InteriorHotelRoom = {
    dynamicLightsEnteringRoom = false,
    coords = {
        door = vec3(-361.2132, -846.3577, -163.8098),
        enter = vec4(-361.239563, -844.298889, -164.8, 0.000000),
    }
}

--[[ !!! Don"t change coords !!! ]]
Config.Elevator = {
    coords = {
        stops = {
            [0] = vec3(-422.0714, -834.5255, -169.210),
            [1] = vec3(-422.0714, -834.5255, -164.39),
            [2] = vec3(-422.0714, -834.5255, -159.585),
            [3] = vec3(-422.0714, -834.5255, -155.67)
        },
        doors = {
            [0] = {
                left = vec3(-423.094, -833.318, -170.543),
                right = vec3(-423.622, -834.782, -170.543),
            },
            [1] = {
                left = vec3(-423.666, -834.755, -165.661),
                right = vec3(-423.146, -833.306, -165.661),
            },
            [2] = {
                left = vec3(-423.146, -833.308, -160.862),
                right = vec3(-423.666, -834.753, -160.862),
            },
            [3] = {
                left = vec3(-423.146, -833.308, -157.018),
                right = vec3(-423.666, -834.753, -157.018),
            },
        },
    },
    door_model = -1240156945
}

--[[ CCTV ]]
Config.CCTV = {
    Enabled = true,
    FOV = 80.0,
    MaxZoom = 30,
    MinZoom = 100,
    RotateSpeed = 0.3,
    Controls = {
        Left = 34,    -- lEFT Arrow
        Right = 35,   -- RIGHT Arrow
        ZoomIn = 96,  -- UP Arrow
        ZoomOut = 97, -- DOWN Arrow
        Exit = 194,   -- BACKSPACE
    }
}

--[[ Furniture-based stash ]]
Config.StashOptions = {
    active = true,
    slots = 10,
    maxWeight = 1000000,
    max_stash_count = 10,
}

--[[ Furniture-based wardrobe ]]
Config.WardrobeOptions = {
    active = true,
}

--[[ Apartments ]]
Config.Apartments = {
    [1] = {
        label = "Shelly Apart",
        tint = 55,
        coords = { enter = vec4(278.6257, -1118.3618, 29.4197, 179.6273) },
        blip = {
            active = true,
            title = "Shelly Apart #1",
            sprite = 476,
            color = 2,
            scale = 0.8,
            coords = vec3(278.202209, -1124.268188, 29.380981)
        },
    },
    [2] = {
        label = "Richman Apart",
        tint = 41,
        coords = { enter = vec4(-1383.5750, 267.0441, 61.2388, 283.2544) },
        blip = {
            active = true,
            title = "Richman Apart #2",
            sprite = 476,
            color = 2,
            scale = 0.8,
        },
    },
    [3] = {
        label = "Vespucci Apart",
        tint = 24,
        coords = { enter = vec4(-1237.5055, -859.0568, 13.1062, 215.8765) },
        blip = {
            active = true,
            title = "Vespucci Apart #3",
            sprite = 476,
            color = 2,
            scale = 0.8,
        },
    },
    ...
}

--[[ Rooms ]]
--[[ !!! Don"t change coords !!! ]]
Config.Rooms = {
    [1] = {
        label = "St. Sharen, 1/1",
        price = 10000,
        daily_price = 500,
        floor = 1,
        room_id = 1,
        coords = { door = vec4(-422.45, -827.43, -164.60, 70.85) },
    },
    [2] = {
        label = "St. Sharen, 1/2",
        price = 10000,
        daily_price = 500,
        floor = 1,
        room_id = 2,
        coords = { door = vec4(-420.7456, -822.9159, -164.60, 70.85) },
    },
    [3] = {
        label = "St. Sharen, 1/3",
        price = 10000,
        daily_price = 500,
        floor = 1,
        room_id = 3,
        coords = { door = vec4(-419.15, -818.5, -164.60, 70.85) },
    },
    ...
}

Config.InteriorMloApart = {
    active = true,
    label = "Kiiya Apart",
    lobby = {
        reception = vec3(-600.9936, 48.0622, 43.5314),
        door_coords = vec3(-595.4494, 24.9822, 43.2989),
        poly = {
            vec3(-606.2514, 38.6246, 43.6),
            vec3(-585.3315, 38.6610, 43.6),
            vec3(-585.7071, 51.4314, 43.6),
            vec3(-606.6401, 52.2651, 43.6),
        }
    },
    cameras = {
        [1] = vec4(-604.487, 48.261, 46.669, -123.0),
        [2] = vec4(-575.141, 53.899, 67.924, 92.0),
        [3] = vec4(-575.141, 53.899, 78.3, 92.0),
        [4] = vec4(-575.141, 53.899, 99.0, 92.0),
        [5] = vec4(-575.141, 53.899, 109.25, 92.0),
    }
}

Config.MloRooms = {
    [1] = {
        label = "Kiiya, 101",
        price = 10000,
        daily_price = 500,
        floor = 1,
        room_id = 1,
        door = {
            model = 1759602825,
            coords = vec3(-586.80, 50.66, 56.25),
            yaw = 0.0,
        },
        poly = {
            vec3(-589.0, 38.5, 57.11),
            vec3(-578.0, 38.5, 57.11),
            vec3(-578.0, 50.6, 57.11),
            vec3(-589.0, 50.6, 57.11),
        }
    },
    [2] = {
        label = "Kiiya, 102",
        price = 10000,
        daily_price = 500,
        floor = 1,
        room_id = 2,
        door = {
            model = 1759602825,
            coords = vec3(-591.56, 56.54, 56.25),
            yaw = 180.0,
        },
        poly = {
            vec3(-589.35, 56.5, 57.11),
            vec3(-600.35, 56.5, 57.11),
            vec3(-600.35, 68.7, 57.11),
            vec3(-589.35, 68.7, 57.11),
        }
    },
    ...
}

--[[ Wall Colors ]]
Config.WallColors = {
    { id = 1,  color = "#FFDB28" },
    { id = 2,  color = "#FF6F00" },
    { id = 3,  color = "#BF1F19" },
    ...
}

--[[ Furniture Items ]]
Config.FurnitureItems = {
    ["stashes"] = {
        label = "Stashes",
        items = {
            [1] = { model = "v_res_tre_storagebox", price = 2500, label = "Storage Box" },
            [2] = { model = "prop_devin_box_closed", price = 2500, label = "Devin Box" },
            [3] = { model = "prop_mil_crate_01", price = 2500, label = "Mil Crate 1" },
            [4] = { model = "prop_mil_crate_02", price = 2500, label = "Mil Crate 2" },
            [5] = { model = "prop_box_wood05a", price = 2500, label = "Box Wood 5" },
            [6] = { model = "prop_drop_crate_01", price = 2500, label = "Drop Crate 1" },
            [7] = { model = "prop_box_wood02a_pu", price = 2500, label = "Box wood 2 Pu" },
            [8] = { model = "prop_box_wood04a", price = 2500, label = "Box wood 4" },
            [9] = { model = "prop_crate_07a", price = 2500, label = "Crate 7" },
            [10] = { model = "prop_mb_crate_01a", price = 2500, label = "Crate 1" },
        },
    },
    ["wardrobe"] = {
        label = "Cloth Wardrobe",
        items = {
            [1] = { model = "v_res_tre_wardrobe", price = 2500, label = "V Wardrobe" },
        },
    },
    ["weed_planter"] = {
        label = "Weed Planter",
        items = {
            { model = "qua_weed_planter",       price = 2000, label = "Weed Planter" },
            { model = "qua_weed_planter_basic", price = 1000, label = "Weed Planter Basic" },
        }
    },
    ["weed_dryer"] = {
        label = "Weed Dryer",
        items = {
            { model = "qua_weed_dryer", price = 1000, label = "Weed Dryer" },
        }
    },
    ["weed_heather"] = {
        label = "Weed Heather",
        items = {
            { model = "qua_weed_heather",     price = 1000, label = "Weed Heather #1" },
            { model = "prop_elec_heater_01",  price = 1000, label = "Weed Heather #2" },
            { model = "prop_patio_heater_01", price = 1000, label = "Weed Heather #3" },
        }
    },
    ["weed_light"] = {
        label = "Weed Light",
        items = {
            { model = "prop_wall_light_05a",              price = 1000, label = "Wall Light" },
            { model = "ch_prop_ch_lamp_ceiling_w_01a",    price = 1000, label = "Lamp Ceiling" },
            { model = "h4_prop_x17_sub_lampa_small_blue", price = 1000, label = "Lamp Small Blue" },
        }
    },
    ["weed_fans"] = {
        label = "Weed Fans",
        items = {
            { model = "prop_fan_01",       price = 1000, label = "Fan 01" },
            { model = "v_res_fa_fan",      price = 1000, label = "Fa Fan" },
            { model = "prop_wall_vent_02", price = 1000, label = "Fan Went" },
        }
    },
    ["weed_table"] = {
        label = "Weed Table",
        items = {
            { model = "bkr_prop_weed_table_01a", price = 1000, label = "Table" },
        }
    },
    ...
}

Last updated