2025-07-10 13:19:26 +02:00
config = { }
config.wardrobe = ' illenium-appearance ' -- choose your skin menu
2025-07-10 13:45:34 +02:00
config.target = false -- false = markers zones type. true = ox_target, qb-target
2025-07-10 13:19:26 +02:00
config.business = false -- allowed players to purchase the motel
config.autokickIfExpire = false -- auto kick occupants if rent is due. if false owner of motel must kick the occupants
config.breakinJobs = { -- jobs can break in to door using gunfire in doors
[ ' police ' ] = true ,
[ ' swat ' ] = true ,
}
config.wardrobes = { -- skin menus
[ ' renzu_clothes ' ] = function ( )
exports.renzu_clothes : OpenClotheInventory ( )
end ,
[ ' fivem-appearance ' ] = function ( )
return exports [ ' fivem-appearance ' ] : startPlayerCustomization ( ) -- you could replace this with outfits events
end ,
[ ' illenium-appearance ' ] = function ( )
return TriggerEvent ( ' illenium-appearance:client:openOutfitMenu ' )
end ,
[ ' qb-clothing ' ] = function ( )
return TriggerEvent ( ' qb-clothing:client:openOutfitMenu ' )
end ,
[ ' esx_skin ' ] = function ( )
TriggerEvent ( ' esx_skin:openSaveableMenu ' )
end ,
}
-- Shells Offsets and model name
config.shells = {
2025-07-10 14:20:33 +02:00
[ ' billo ' ] = {
2025-07-10 14:13:58 +02:00
shell = ` tpcm_shell_room ` ,
2025-07-10 13:19:26 +02:00
offsets = {
2025-07-10 15:00:02 +02:00
exit = vec3 ( 326.1856 , - 224.2521 , 0.9 ) ,
stash = vec3 ( 329.2448 , - 226.5258 , 0.9 ) ,
wardrobe = vec3 ( 328.7001 , - 227.8254 , 0.9 ) ,
2025-07-10 13:19:26 +02:00
}
} ,
[ ' modern ' ] = {
shell = ` modernhotel_shell ` , -- kambi shell
offsets = {
exit = vec3 ( 5.410095 , 4.299301 , 0.9 ) ,
stash = vec3 ( - 4.068207 , 4.046188 , 0.9 ) ,
wardrobe = vec3 ( 2.811829 , - 3.619385 , 0.9 ) ,
}
} ,
}
config.messageApi = function ( data ) -- {title,message,motel}
local motel = GlobalState.Motels [ data.motel ]
local identifier = motel.owned -- owner identifier
-- add your custom message here. ex. SMS phone
-- basic notification (remove this if using your own message system)
local success = lib.callback . await ( ' renzu_motels:MessageOwner ' , false , { identifier = identifier , message = data.message , title = data.title , motel = data.motel } )
if success then
Notify ( ' message has been sent ' , ' success ' )
else
Notify ( ' message fail \n owner is not available yet ' , ' error ' )
end
end
-- @shell string (shell type)
-- @Mlo string ( toggle MLO or shell type)
-- @hour_rate int ( per hour rates)
-- @motel string (Motel Index Name)
-- @rentcoord vec3 (coordinates of Rental Menu)
-- @radius float ( total size radius of motel )
-- @maxoccupants int (total player can rent in each Rooms)
-- @uniquestash bool ( Toggle Non Sharable / Stealable Stash Storage )
-- @doors table ( lists of doors feature coordinates. ex. stash, wardrobe) wardrobe,stash coords are only applicable in Mlo. using shells has offsets for stash and wardrobes.
-- @manual boolean ( accept walk in occupants only )
-- @businessprice int ( value of motel)
-- @door int (door hash or doormodel `model`) for MLO type
config.motels = {
[ 1 ] = { -- index name of motel
2025-07-10 13:45:34 +02:00
manual = false , -- set the motel to auto accept occupants or false only the owner of motel can accept Occupants
2025-07-10 13:19:26 +02:00
Mlo = false , -- if MLO you need to configure each doors coordinates,stash etc. if false resource will use shells
2025-07-10 15:00:02 +02:00
shell = ' billo ' , -- shell type, configure only if using Mlo = true
2025-07-10 13:19:26 +02:00
label = ' Pink Cage Motel ' ,
rental_period = ' day ' , -- hour, day, month
rate = 1000 , -- cost per period
businessprice = 1000000 ,
motel = ' pinkcage ' ,
2025-07-10 13:33:51 +02:00
payment = ' bank ' , -- money, bank
2025-07-10 13:19:26 +02:00
door = ` gabz_pinkcage_doors_front ` , -- door hash for MLO type
rentcoord = vec3 ( 313.38 , - 225.20 , 54.212 ) ,
coord = vec3 ( 326.04 , - 210.47 , 54.086 ) , -- center of the motel location
radius = 50.0 , -- radius of motel location
maxoccupants = 5 , -- maximum renters per room
uniquestash = true , -- if true. each players has unique stash ID (non sharable and non stealable). if false stash is shared to all Occupants if maxoccupans is > 1
doors = { -- doors and other function of each rooms
[ 1 ] = { -- COORDINATES FOR GABZ PINKCAGE
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 307.21499633789 , - 212.79479980469 , 54.420265197754 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- [2] = {
-- coord = vec3(306.67614746094,-215.63456726074,54.22175),
-- model = `gabz_pinkcage_doors_front` -- model of target door coordinates
-- }
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 307.01657104492 , - 207.91079711914 , 53.758548736572 ) , -- requires when using MLO
wardrobe = vec3 ( 302.58380126953 , - 207.71691894531 , 54.598297119141 ) , -- requires when using MLO
fridge = vec3 ( 305.00064086914 , - 206.12855529785 , 54.544868469238 ) , -- requires when using MLO
-- luckyme = vec3(0.0,0.0,0.0) -- extra
} ,
[ 2 ] = {
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 310.95474243164 , - 202.91288757324 , 54.421058654785 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 310.91235351563 , - 198.10073852539 , 53.758598327637 ) ,
wardrobe = vec3 ( 306.25433349609 , - 197.75250244141 , 54.564342498779 ) ,
fridge = vec3 ( 308.79779052734 , - 196.23670959473 , 54.440326690674 ) ,
} ,
[ 3 ] = {
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 316.28607177734 , - 194.54536437988 , 54.391784667969 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 321.10150146484 , - 194.42211914063 , 53.758399963379 ) ,
wardrobe = vec3 ( 321.42459106445 , - 189.79216003418 , 54.65941619873 ) ,
fridge = vec3 ( 322.92010498047 , - 192.31481933594 , 54.600353240967 ) ,
} ,
[ 4 ] = {
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 314.36087036133 , - 219.91516113281 , 58.151386260986 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 309.6142578125 , - 220.16128540039 , 57.557399749756 ) ,
wardrobe = vec3 ( 309.21203613281 , - 224.6675567627 , 58.375194549561 ) ,
fridge = vec3 ( 307.6989440918 , - 222.11755371094 , 58.293560028076 ) ,
} ,
[ 5 ] = {
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 307.22616577148 , - 212.77645874023 , 58.204700469971 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 306.89093017578 , - 207.88090515137 , 57.556159973145 ) ,
wardrobe = vec3 ( 302.57464599609 , - 207.71339416504 , 58.440250396729 ) ,
fridge = vec3 ( 305.044921875 , - 205.99066162109 , 58.394989013672 ) ,
} ,
[ 6 ] = {
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 311.00057983398 , - 202.87718200684 , 58.148029327393 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 310.88967895508 , - 198.16856384277 , 57.556510925293 ) ,
wardrobe = vec3 ( 306.09225463867 , - 198.40795898438 , 58.27188873291 ) ,
fridge = vec3 ( 308.73110961914 , - 196.40968322754 , 58.407859802246 ) ,
} ,
[ 7 ] = {
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 316.29287719727 , - 194.5479888916 , 58.212650299072 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 321.24801635742 , - 194.29737854004 , 57.556739807129 ) ,
wardrobe = vec3 ( 321.46688842773 , - 189.68632507324 , 58.422557830811 ) ,
fridge = vec3 ( 322.98544311523 , - 192.33996582031 , 58.386581420898 ) ,
} ,
[ 8 ] = {
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 339.43377685547 , - 219.99412536621 , 54.431659698486 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 339.67279052734 , - 224.8221282959 , 53.759098052979 ) ,
wardrobe = vec3 ( 344.28637695313 , - 224.95460510254 , 54.527130126953 ) ,
fridge = vec3 ( 341.86477661133 , - 226.15287780762 , 54.642837524414 ) ,
} ,
[ 9 ] = {
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 343.23126220703 , - 210.10203552246 , 54.410026550293 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 343.47601318359 , - 214.96635437012 , 53.758640289307 ) ,
wardrobe = vec3 ( 347.99655151367 , - 215.08934020996 , 54.489669799805 ) ,
fridge = vec3 ( 345.53387451172 , - 216.53938293457 , 54.698444366455 ) ,
} ,
[ 10 ] = {
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 347.0237121582 , - 200.22482299805 , 54.414268493652 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 347.33102416992 , - 205.13743591309 , 53.759078979492 ) ,
wardrobe = vec3 ( 351.68756103516 , - 205.30010986328 , 54.674419403076 ) ,
fridge = vec3 ( 349.34033203125 , - 206.6258392334 , 54.639694213867 ) ,
} ,
[ 11 ] = {
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 334.44702148438 , - 227.61134338379 , 58.205139160156 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 329.67590332031 , - 227.8233795166 , 57.556579589844 ) ,
wardrobe = vec3 ( 329.43222045898 , - 232.33073425293 , 58.42276763916 ) ,
fridge = vec3 ( 327.64138793945 , - 229.79788208008 , 58.355628967285 ) ,
} ,
[ 12 ] = {
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 339.44650268555 , - 219.9709777832 , 58.177570343018 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 339.79351806641 , - 224.86245727539 , 57.55553817749 ) ,
wardrobe = vec3 ( 344.26574707031 , - 225.00813293457 , 58.302909851074 ) ,
fridge = vec3 ( 341.6985168457 , - 226.52975463867 , 58.367748260498 ) ,
} ,
[ 13 ] = {
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 343.22320556641 , - 210.1229095459 , 58.176639556885 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 343.47412109375 , - 214.96145629883 , 57.55553817749 ) ,
wardrobe = vec3 ( 348.07550048828 , - 215.08416748047 , 58.288040161133 ) ,
fridge = vec3 ( 345.40502929688 , - 216.88189697266 , 58.281555175781 ) ,
} ,
[ 14 ] = {
door = { -- Door config requires when using MLO
[ 1 ] = { -- requested by community. supports multiple door models.
coord = vec3 ( 347.03012084961 , - 200.20816040039 , 58.177433013916 ) , -- exact coordinates of door
model = ` gabz_pinkcage_doors_front ` -- model of target door coordinates
} ,
-- support multiple doors just add new line of table
} ,
stash = vec3 ( 347.12841796875 , - 205.05494689941 , 57.55553817749 ) ,
wardrobe = vec3 ( 351.77719116211 , - 205.24267578125 , 58.351734161377 ) ,
fridge = vec3 ( 349.24819946289 , - 206.78134155273 , 58.326892852783 ) ,
} ,
} ,
} ,
-- [2] = { -- index name of motel
-- manual = false, -- set the motel to auto accept occupants or false only the owner of motel can accept Occupants
-- Mlo = true, -- if MLO you need to configure each doors coordinates,stash etc. if false resource will use shells
-- shell = 'modern', -- shell type, configure only if using Mlo = true
2025-07-10 13:33:51 +02:00
-- label = 'Starlight Motel',
2025-07-10 13:19:26 +02:00
-- rental_period = 'day',-- hour, day, month
2025-07-10 13:33:51 +02:00
-- payment = 'bank', -- money, bank
2025-07-10 13:19:26 +02:00
-- rate = 1000, -- cost per period
-- motel = 'yacht',
-- door = `gabz_pinkcage_doors_front`, -- door hash for MLO type
-- businessprice = 1000000,
-- rentcoord = vec3(-916.54,-1302.56,6.2001),
-- coord = vec3(-916.54,-1302.56,6.2001), -- center of the motel location
-- radius = 50.0, -- radius of motel location
-- maxoccupants = 5, -- maximum renters per room
-- uniquestash = true, -- if true. each players has unique stash ID (non sharable and non stealable). if false stash is shared to all Occupants if maxoccupans is > 1
-- doors = { -- doors and other function of each rooms
-- [1] = {
-- door = vec3(-936.25,-1311.38,6.20),
-- stash = vec3(-944.08,-1317.83,6.19),
-- wardrobe = vec3(-941.21,-1324.9,6.19),
-- --fridge = vec3(305.26,-206.43,54.22),
-- -- luckyme = vec3(0.0,0.0,0.0) -- extra shit
-- },
-- },
-- },
-- [3] = { -- index name of motel
-- businessprice = 1000000,
-- manual = false, -- set the motel to auto accept occupants or false only the owner of motel can accept Occupants
-- Mlo = false, -- if MLO you need to configure each doors coordinates,stash etc. if false resource will use shells
-- shell = 'modern', -- shell type, configure only if using Mlo = true
-- label = 'Motel Modern', -- hotel label
-- rental_period = 'day',-- hour, day, month
-- payment = 'money', -- money, bank
-- rate = 1000, -- cost per period
-- door = `gabz_pinkcage_doors_front`, -- door hash for MLO type
-- motel = 'hotelmodern3', -- hotel index name
-- rentcoord = vec3(515.21173095703,225.36326599121,104.74),
-- coord = vec3(505.55709838867,213.49201965332,102.89), -- center of the motel location
-- radius = 50.0, -- radius of motel location
-- maxoccupants = 5, -- maximum renters per room
-- uniquestash = true, -- if true. each players has unique stash ID (non sharable and non stealable). if false stash is shared to all Occupants if maxoccupans is > 1
-- doors = { -- doors and other function of each rooms
-- [1] = {
-- door = vec3(496.90872192383,237.74664306641,105.28434753418),
-- -- stash = vec3(-944.08,-1317.83,6.19),
-- -- wardrobe = vec3(-941.21,-1324.9,6.19),
-- --fridge = vec3(305.26,-206.43,54.22),
-- -- luckyme = vec3(0.0,0.0,0.0) -- extra shit
-- },
-- },
-- }
}
config.extrafunction = {
[ ' bed ' ] = function ( data , identifier )
TriggerEvent ( ' luckyme ' )
end ,
[ ' fridge ' ] = function ( data , identifier )
TriggerEvent ( ' ox_inventory:openInventory ' , ' stash ' , { id = ' fridge_ ' .. data.motel .. ' _ ' .. identifier .. ' _ ' .. data.index , name = ' Fridge ' , slots = 30 , weight = 20000 , coords = GetEntityCoords ( cache.ped ) } )
end ,
[ ' exit ' ] = function ( data )
local coord = LocalPlayer.state . lastloc or vec3 ( data.coord . x , data.coord . y , data.coord . z )
DoScreenFadeOut ( 500 )
while not IsScreenFadedOut ( ) do
Wait ( 10 )
end
SendNUIMessage ( {
type = ' door '
} )
return Teleport ( coord.x , coord.y , coord.z , 0.0 , true )
end ,
}
config.Text = {
[ ' stash ' ] = ' Stash ' ,
[ ' fridge ' ] = ' My Fridge ' ,
[ ' wardrobe ' ] = ' Wardrobe ' ,
[ ' bed ' ] = ' Sleep ' ,
[ ' door ' ] = ' Door ' ,
[ ' exit ' ] = ' Exit ' ,
}
config.icons = {
[ ' door ' ] = ' fas fa-door-open ' ,
[ ' stash ' ] = ' fas fa-box ' ,
[ ' wardrobe ' ] = ' fas fa-tshirt ' ,
[ ' fridge ' ] = ' fas fa-ice-cream ' ,
[ ' bed ' ] = ' fas fa-bed ' ,
[ ' exit ' ] = ' fas fa-door-open ' ,
}
config.stashblacklist = {
[ ' stash ' ] = { -- type of inventory
blacklist = { -- list of blacklists items
water = true ,
} ,
} ,
[ ' fridge ' ] = { -- type of inventory
blacklist = { -- list of blacklists items
WEAPON_PISTOL = true ,
} ,
} ,
}
PlayerData , ESX , QBCORE , zones , shelzones , blips = { } , nil , nil , { } , { } , { }
function import ( file )
local name = ( ' %s.lua ' ) : format ( file )
local content = LoadResourceFile ( GetCurrentResourceName ( ) , name )
local f , err = load ( content )
return f ( )
end
if GetResourceState ( ' es_extended ' ) == ' started ' then
ESX = exports [ ' es_extended ' ] : getSharedObject ( )
elseif GetResourceState ( ' qb-core ' ) == ' started ' then
QBCORE = exports [ ' qb-core ' ] : GetCoreObject ( )
end