Main/resources/[housing]/oph3z-motels/setup.md
2025-06-11 16:38:57 +02:00

15 KiB

------------------------------ Oph3z-Motels - Installation Guide -----------------------------------

For Support: https://discord.gg/Pnq5R4HszK


REQUIREMENTS ( bob74_ipl: https://github.com/Bob74/bob74_ipl )

DO NOT FORGET TO READ THE SQL FILE oph3z-motel.sql

The starting order of the scripts should be as follows; ensure bob74_ipl ensure oph3z-motels


There is a detailed description in the config files

config.lua You can make general settings of the script in the config.lua file

config_motels.lua In the config_motels file you can add new motels and rooms and change the settings of the rooms, detailed description is at the end of the file

config_langue.lua In the config_langue file you can set and change notifications, to set the notification script you need to edit Config.Notify and Config.ServerNotify in the config.lua file

lang.lua In the lang.lua file, you can edit the text on the UI as you wish or translate it into a different language

Detailed explanation for Config.Map in config.lua

The part that says VIP is the room type and the part that says 1 is the motel id. When VIP2 is written, it means the VIP room of motel id number 2.

export name export name of the map in bob74_ipl ["VIP1"] = {
exportName = "GetExecApartment2Object", https://github.com/Bob74/bob74_ipl/blob/master/dlc_executive/apartment2.lua export name export name of the map in bob74_ipl out = vector3(-779.08, 339.69, 196.69), coordinates for entering and exiting the out room manage = vector3(-777.21, 331.06, 196.09), manage is where you make room settings for adding roommates and inviting them to the room stash = vector3(-766.01, 330.97, 196.09), stash is the coordinate of the storage inventory wardrobe = vector3(-764.74, 329.01, 199.49), wardrobe coordinates ThemeData = { themeData is the part where you edit the room styles you want for that motel room in the same file as the file you exportname. modern = {interiorId = 227585, ipl = "apa_v_mp_h_01_b"}, moody = {interiorId = 228353, ipl = "apa_v_mp_h_02_b"}, vibrant = {interiorId = 229121, ipl = "apa_v_mp_h_03_b"}, sharp = {interiorId = 229889, ipl = "apa_v_mp_h_04_b"}, monochrome = {interiorId = 230657, ipl = "apa_v_mp_h_05_b"}, seductive = {interiorId = 231425, ipl = "apa_v_mp_h_06_b"}, regal = {interiorId = 232193, ipl = "apa_v_mp_h_07_b"}, aqua = {interiorId = 232961, ipl = "apa_v_mp_h_08_b"} } },

Name: defalut motel name

Location: Location on the street where the motel is located

Description Detailed description about Description motel

Job: Job part is currently disabled Do not confuse this with the order of the motelid motel in the table.

These appear to be from the purchase of the motel business. TotalRooms: write the total number of rooms in the motel

ActiveRooms: Please specify how many active rooms in the motel

DamagedRooms: Please specify how many damaged rooms in the motel

Price: selling price of the motel business

VIPUpgradeMoney: The amount the room has to pay for the VIP upgrade

MiddleUpgradeMoney: The amount the room has to pay for the Middle upgrade

CompanyMoney: Startup money when you buy a motel business

RentMotel: Coordinate where players should go to rent a motel when there is no motel owner

OpenBossMenu: Bossmenu coordinate for employees and boss to open

MotelCamDashboard: Aerial view coordinates during the purchase of the motel business

History: You do not need to touch the part where the withdrawal and deposit process is kept

Blip: you can turn the blips off and on BlipSettings = adjust the blip settings https://docs.fivem.net/docs/game-references/blips/ ID = , -- Blip ID Scale = , -- Blip Size Color = -- Color of the Blip

Rooms.Coords: coordinate to enter the room

Room.motelno: Do not confuse the order of the room in the table, increase order by order

Room.Active: whether the room will be active at startup

Room.Rent: whether it was originally leased

Room.type: initially the type of room VIP-Middle-Squatter

Room.theme: initially the theme of the walls of the room

Room.wall: currently disabled

Room.money: rental price of the room In the absence of a motel owner, the rental fee for a 24-hour room is determined.

Room.fixmoney no touching

Room.strip opens and closes the underwear in the room

Room.booze opens and closes the liquor bottles in the room

[1] =  {
    Owner = "",
    Name = "EXAMPLE MOTEL",
    Location = "VINEWOOD",
    Description = "lorem",
    Job = "motel1",
    Motelid = 1,
    TotalRooms = 26,
    ActiveRooms = 16,
    DamagedRooms = 10,
    Price = 20000,
    VIPUpgradeMoney = 50000,
    MiddleUpgradeMoney = 25000,
    CompanyMoney = 1000,
    RentMotel = vector3(961.55, -193.98, 73.21),
    OpenBossMenu = vector3(200.55, -193.98, 73.21),
    MotelCamDashboard = vector4(966.35, -190.22, 79.4, 164.43),
    History = {},
    Employes = {
        Name = "",
        Salary = 0,
        Rank = 0,
        Citizenid = "",
    },
    Blip = true, -- Enable/Disable Blip
    BlipSettings = {
        ID = 475,
        Scale = 1.0,
        Color = 29
    },
    Rooms = {
        {
            Coords = vector4(953.13, -196.52, 73.22, 64.62),
            motelno = 1,
            Active = true, 
            Rent = false, 
            type = "Squatter",
            theme = "modern",
            wall = "black",
            money = 5000, -- In the absence of a motel owner, the rental fee for a 24-hour room is determined.
            fixmoney = "",
            strip = false,
            booze = true,
            Owner = {
                Name = "",
                Lastname = "",
                PhoneNumber = "",
                Date = "",
                RoomsOwner = "",
                MyMoney = "",
                Friends = {
                    Citizenid = nil,
                    Name = nil,
                    Lastname = nil,
                },
            },
            StyleMenu = {
                {
                    type = "style",
                    png = "https://cdn.discordapp.com/attachments/1095505976725078167/1106644075303669810/modern.png",
                    name = "modern",
                    durum = true,
                    price = 5000,
                },
                {
                    type = "style",
                    png = "https://cdn.discordapp.com/attachments/1095505976725078167/1106644076520030218/seductive.png",
                    name = "seductive",
                    durum = false,
                    price = 5000
                },
                {
                    type = "style",
                    png = "https://cdn.discordapp.com/attachments/1095505976725078167/1106644075978969108/moody.png",
                    name = "moody",
                    durum = false,
                    price = 5000,
                },
                {
                    type = "style",
                    png = "https://cdn.discordapp.com/attachments/1095505976725078167/1106644074599039027/vibrant.png",
                    name = "vibrant",
                    durum = false,
                    price = 5000,
                },
                {
                    type = "style",
                    png = "https://cdn.discordapp.com/attachments/1095505976725078167/1106644076872355973/sharp.png",
                    name = "sharp",
                    durum = false,
                    price = 5000,
                },
                {
                    type = "style",
                    png = "https://cdn.discordapp.com/attachments/1095505976725078167/1106644075555340441/monochrome.png",
                    name = "monochrome",
                    durum = false,
                    price = 5000,
                },
                {
                    type = "style",
                    png = "https://cdn.discordapp.com/attachments/1095505976725078167/1106644076247388231/regal.png",
                    name = "regal",
                    durum = false,
                    price = 5000,
                },
                {
                    type = "style",
                    png = "https://cdn.discordapp.com/attachments/1095505976725078167/1106644074989113344/aqua.png",
                    name = "aqua",
                    durum = false,
                    price = 5000,
                },
                {
                    type = "extra",
                    png = "https://cdn.shopify.com/s/files/1/0178/2936/3812/products/1_42_1024x1024.png?v=1617035503",
                    name = "strip",
                    durum = false,
                    price = 5000,
                },
                {
                    type = "extra",
                    png = "https://e7.pngegg.com/pngimages/85/460/png-clipart-riga-black-balsam-cocktail-gin-distilled-beverage-alcohol-splash.png",
                    name = "booze",
                    durum = true,
                    price = 5000,
                },
           }
        },
},

}


Add these codes to fivem-appearance client.lua file

RegisterNetEvent('fivem-appearance:Oph3zMotel', function() TriggerEvent('nh-context:sendMenu', { { id = 1, header = "Change Outfit", txt = "", params = { event = "fivem-appearance:pickNewOutfitMotel", args = { number = 1, id = 2 } } }, { id = 2, header = "Save New Outfit", txt = "", params = { event = "fivem-appearance:saveOutfit" } }, { id = 3, header = "Delete Outfit", txt = "", params = { event = "fivem-appearance:deleteOutfitMenuMotel", args = { number = 1, id = 2 } } } }) end)

RegisterNetEvent('fivem-appearance:pickNewOutfitMotel', function(data) local id = data.id local number = data.number TriggerEvent('fivem-appearance:getOutfits') TriggerEvent('nh-context:sendMenu', { { id = 1, header = "< Go Back", txt = "", params = { event = "fivem-appearance:Oph3zMotel" } }, }) Citizen.Wait(300) for i=1, #allMyOutfits, 1 do TriggerEvent('nh-context:sendMenu', { { id = (1 + i), header = allMyOutfits[i].name, txt = "", params = { event = 'fivem-appearance:setOutfit', args = { ped = allMyOutfits[i].pedModel, components = allMyOutfits[i].pedComponents, props = allMyOutfits[i].pedProps } } }, }) end end)

RegisterNetEvent('fivem-appearance:saveOutfitMotel', function() if Config.UseNewNHKeyboard then local keyboard, name = exports["nh-keyboard"]:Keyboard({ header = "Name Outfit", rows = {"Outfit name here"} }) if keyboard then if name then local playerPed = PlayerPedId() local pedModel = exports['fivem-appearance']:getPedModel(playerPed) local pedComponents = exports['fivem-appearance']:getPedComponents(playerPed) local pedProps = exports['fivem-appearance']:getPedProps(playerPed) Citizen.Wait(500) TriggerServerEvent('fivem-appearance:saveOutfit', name, pedModel, pedComponents, pedProps) end end else local keyboard = exports["nh-keyboard"]:KeyboardInput({ header = "Name Outfit", rows = { { id = 0, txt = "" } } }) if keyboard ~= nil then local playerPed = PlayerPedId() local pedModel = exports['fivem-appearance']:getPedModel(playerPed) local pedComponents = exports['fivem-appearance']:getPedComponents(playerPed) local pedProps = exports['fivem-appearance']:getPedProps(playerPed) Citizen.Wait(500) TriggerServerEvent('fivem-appearance:saveOutfit', keyboard[1].input, pedModel, pedComponents, pedProps)

    end
end

end)

RegisterNetEvent('fivem-appearance:deleteOutfitMenuMotel', function(data) local id = data.id local number = data.number TriggerEvent('fivem-appearance:getOutfits') Citizen.Wait(150) TriggerEvent('nh-context:sendMenu', { { id = 1, header = "< Go Back", txt = "", params = { event = "fivem-appearance:Oph3zMotel" } }, }) for i=1, #allMyOutfits, 1 do TriggerEvent('nh-context:sendMenu', { { id = (1 + i), header = allMyOutfits[i].name, txt = "", params = { event = 'fivem-appearance:deleteOutfit', args = allMyOutfits[i].id } }, }) end end)