Skip to content

🏨 Hotel

Documentation relating to the spooni_hotel.

1. Installation

spooni_hotel works only with VORP, RSG & RPX.

To install spooni_hotel:

  • Download the resource
  • Drag and drop the resource into your resources folder
    • spooni_hotel
  • Add this ensure in your server.cfg
      ensure spooni_hotel
  • Execute the SQL file
    • hotel.sql
  • Now you can configure and translate the script as you like
    • config.lua
    • translation.lua
    • functions.lua
  • At the end, restart the server

If you have any problems, you can always open a ticket in the Spooni Discord.

2. Usage

With this script, you can create hotels where guests can rent rooms. The script allows you to name rooms, set prices and determine the rental period. You can also create storage and checkroom areas. It offers an easy way to manage and customize your hotel.

3. For developers

Config.lua
lua
Config = {}

Config.DevMode = true -- only for testing, not for the live server
Config.Framework = 'vorp' -- select your framework (vorp, rpx, rsg, rsg-old) *rsg-old = old inventory version
Config.Locale = 'en' -- select your language (en, de, fr, es)

Config.Key = 0x760A9C6F -- [G]
Config.DoorControlKey = 0xCEFD9220 -- [E]

Config.Society = nil -- 'dl_society', 'mega_companies', 'syn_society', 'custom' or nil
Config.HotelManagementCommand = 'hotel'
Config.MaxRoomsPerPlayer = 5

Config.Hotels = {
    -- VT HOTEL
    {
      enable = true,
      name = 'Valentine Hotel', -- hotel name
      society = 'valhotel', -- job name
      hotelID = 1, -- must be unique
      management = true, -- if true the job can manage the hotel
      coords = vector3(-326.216, 772.9606, 117.43), -- general load coords
      blip = {
          enabled = true,  -- true or false
          coords = vector3(-326.216, 772.9606, 117.43), -- coords
          sprite = -211556852, -- sprite
          scale = 0.7, -- scale
      },
      rooms = {
        {
          name = 'Room 1A', -- display name
          roomID = 1, -- must be unique
          management = true, -- if true the room can be managed
          hash = 3693364451, -- doorhash
          rotation = 99.90252685546875, -- rotation when door is closed
          slots = 100, -- inventory Slots
          weight = 1000,
          maxRentDays = 3, -- if -1 you can rent it infinitly
          price = 2.0,
          coords = {
            door = vector3(-321.966, 765.6128, 117.44), -- door location
            inv = vector3(-327.947, 764.2562, 117.43), -- inventory location or nil
            closet = vector3(-325.132, 766.4810, 117.43), -- closet location or nil
          },
          blip = {
            enabled = false, -- true or false
            sprite = -211556852, -- sprite
            scale = 0.7, -- scale
            colorOccupied = true, -- true or false
          },
        },
        {
          name = 'Room 1B',
          roomID = 2,
          management = true,
          hash = 183181940,
          rotation = -79.89644622802734,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(-322.057, 762.1725, 117.45),
            inv = vector3(-326.643, 761.7160, 117.43),
            closet = vector3(-323.857, 759.5326, 117.45),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Room 2A',
          roomID = 3,
          management = true,
          hash = 3765902977,
          rotation = 100.11988830566406,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(-322.365, 767.4810, 121.63), 
            inv = vector3(-327.361, 764.3541, 121.63), 
            closet = vector3(-325.598, 766.8895, 121.63),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Room 2B',
          roomID = 4,
          management = true,
          hash = 238680582,
          rotation = -79.66508483886719,
          slots = 100, 
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(-321.440, 762.0906, 121.63),
            inv = vector3(-326.472, 759.2954, 121.63),
            closet = vector3(-325.937, 761.4972, 121.63), 
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Room 2C',
          roomID = 5,
          management = true,
          hash = 3049177115,
          rotation = -80.00006866455078,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(-323.538, 774.0122, 121.63),
            inv = vector3(-328.231, 772.6199, 121.63),
            closet = vector3(-329.832, 775.4370, 121.63),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
      },
    },
    -- SD CASINO BOAT
    {
      enable = true,
      name = 'St. Denis Casino Boat Hotel', -- hotel name
      society = 'sdcasino', -- job name
      hotelID = 2, -- must be unique
      management = true, -- if true the job can manage the hotel
      coords = vector3(3293.958251953125, -1301.9976806640625, 45.79931640625), -- general load coords
      blip = {
          enabled = true,  -- true or false
          coords = vector3(3293.958251953125, -1301.9976806640625, 45.79931640625), -- coords
          sprite = -211556852, -- sprite
          scale = 0.7, -- scale
      },
      rooms = {
        {
          name = 'Apartment 1', -- display name
          roomID = 1, -- must be unique
          management = true, -- if true the room can be managed
          hash = 568836657, -- doorhash
          rotation = 89.9999771118164, -- rotation when door is closed
          slots = 100, -- inventory Slots
          weight = 1000,
          maxRentDays = 3, -- if -1 you can rent it infinitly
          price = 2.0,
          coords = {
            door = vector3(3293.958251953125, -1301.9976806640625, 45.79931640625), -- door location
            inv = vector3(3297.73486328125, -1301.4080810546875, 45.7857551574707), -- inventory location or nil
            closet = vector3(3296.58251953125, -1300.2508544921875, 45.81586837768555), -- closet location or nil
          },
          blip = {
            enabled = false, -- true or false
            sprite = -211556852, -- sprite
            scale = 0.7, -- scale
            colorOccupied = true, -- true or false
          },
        },
        {
          name = 'Apartment 2',
          roomID = 2,
          management = true,
          hash = 1306597923,
          rotation = 89.9999771118164,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(3282.916259765625, -1297.950927734375, 45.89453125),
            inv = vector3(3281.2255859375, -1298.6038818359375, 45.84315872192383),
            closet = vector3(3281.959228515625, -1294.502197265625, 45.94842147827148),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 3',
          roomID = 3,
          management = true,
          hash = 1614659292,
          rotation = -90.00000762939453,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(3282.914306640625, -1325.6790771484375, 45.51763916015625),
            inv = vector3(3280.467529296875, -1328.06787109375, 45.52330780029297),
            closet = vector3(3280.605224609375, -1325.5576171875, 45.52330780029297),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
      },
    },
    -- FROM HERE ALL SPOONI MICOS WITH APARTMENT ROOMS
    -----------------------------------------------------
    -- ST DENIS HOTEL
    {
      enable = true,
      name = 'St. Denis Hotel', -- hotel name
      society = 'sdhotel', -- job name
      hotelID = 3, -- must be unique
      management = true, -- if true the job can manage the hotel
      coords = vector3(2622.229, -1012.455, 44.234), -- general load coords
      blip = {
          enabled = true,  -- true or false
          coords = vector3(2622.229, -1012.455, 44.234), -- coords
          sprite = -211556852, -- sprite
          scale = 0.7, -- scale
      },
      rooms = {
        {
          name = 'Apartment 1', -- display name
          roomID = 1, -- must be unique
          management = true, -- if true the room can be managed
          hash = 1379714587, -- doorhash
          rotation = 99.99993133544922, -- rotation when door is closed
          slots = 100, -- inventory Slots
          weight = 1000,
          maxRentDays = 3, -- if -1 you can rent it infinitly
          price = 2.0,
          coords = {
            door = vector3(2616.3066, -1005.5200, 49.0800), -- door location
            inv = vector3(2610.6520, -1000.6770, 50.00), -- inventory location or nil
            closet = vector3(2613.8928, -1005.8916, 50.00), -- closet location or nil
          },
          blip = {
            enabled = false, -- true or false
            sprite = -211556852, -- sprite
            scale = 0.7, -- scale
            colorOccupied = true, -- true or false
          },
        },
        {
          name = 'Apartment 2',
          roomID = 2,
          management = true,
          hash = 2380840306, -- [4181732049] = {4181732049, -113235247, 'p_door15x', 2621.4523925781, -1006.3774414062, 49.072444915771}
          rotation = 99.81073760986328,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2621.4523, -1006.3774, 49.0724),
            inv = vector3(2620.96337, -999.5526, 50.00),
            closet = vector3(2625.6035, -1005.6461, 50.00),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 3',
          roomID = 3,
          management = true,
          hash = 3065182112,
          rotation = 100.11162567138672,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2618.6245, -1009.4004, 49.0840),
            inv = vector3(2613.7363, -1006.8591, 50.00),
            closet = nil,
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 4',
          roomID = 4,
          management = true,
          hash = 42209089,
          rotation = 9.61076164245605,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2620.9440, -1014.9393, 49.0724),
            inv = nil,
            closet = vector3(2623.1899, -1014.9474, 50.00),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
      },
    },
    -- SD FLORIST
    {
      enable = true,
      name = 'St. Denis Florist Hotel', -- hotel name
      society = 'sdflorist', -- job name
      hotelID = 4, -- must be unique
      management = true, -- if true the job can manage the hotel
      coords = vector3(2681.038, -1186.50, 59.284), -- general load coords
      blip = {
          enabled = true,  -- true or false
          coords = vector3(2681.038, -1186.50, 59.284), -- coords
          sprite = -211556852, -- sprite
          scale = 0.7, -- scale
      },
      rooms = {
        {
          name = 'Apartment 1', -- display name
          roomID = 1, -- must be unique
          management = true, -- if true the room can be managed
          hash = 3299540066, -- doorhash
          rotation = 90.0150146484375, -- rotation when door is closed
          slots = 100, -- inventory Slots
          weight = 1000,
          maxRentDays = 3, -- if -1 you can rent it infinitly
          price = 2.0,
          coords = {
            door = vector3(2678.64990234375,-1182.5699462890625,56.35373306274414), -- door location
            inv = vector3(2673.696, -1181.39, 57.345), -- inventory location or nil
            closet = vector3(2675.863, -1185.29, 57.345), -- closet location or nil
          },
          blip = {
            enabled = false, -- true or false
            sprite = -211556852, -- sprite
            scale = 0.7, -- scale
            colorOccupied = true, -- true or false
          },
        },
        {
          name = 'Apartment 2',
          roomID = 2,
          management = true,
          hash = 3153235648,
          rotation = 89.99994659423828,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2678.64990234375,-1192.0899658203125,56.38077163696289),
            inv = vector3(2674.596, -1187.16, 57.350),
            closet = vector3(2672.463, -1186.90, 57.349),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 3',
          roomID = 3,
          management = true,
          hash = 407553899,
          rotation = 89.95580291748047,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2678.64990234375,-1182.5699462890625,59.90999984741211),
            inv = vector3(2675.116, -1181.64, 60.883),
            closet = vector3(2677.298, -1180.88, 60.883),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 4',
          roomID = 4,
          management = true,
          hash = 2721560444,
          rotation = 89.99994659423828,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2678.64990234375,-1191.949951171875,60.52000045776367),
            inv = vector3(2675.042, -1191.05, 61.529),
            closet = vector3(2672.398, -1186.95, 61.529),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
      },
    },
    -- SD General Store
    {
      enable = true,
      name = 'St. Denis General Store Hotel', -- hotel name
      society = 'sdgeneralstore', -- job name
      hotelID = 5, -- must be unique
      management = true, -- if true the job can manage the hotel
      coords = vector3(2586.397, -1163.36, 59.172), -- general load coords
      blip = {
          enabled = true,  -- true or false
          coords = vector3(2586.397, -1163.36, 59.172), -- coords
          sprite = -211556852, -- sprite
          scale = 0.7, -- scale
      },
      rooms = {
        {
          name = 'Apartment 1', -- display name
          roomID = 1, -- must be unique
          management = true, -- if true the room can be managed
          hash = 726203270, -- doorhash
          rotation = 90.0605697631836, -- rotation when door is closed
          slots = 100, -- inventory Slots
          weight = 1000,
          maxRentDays = 3, -- if -1 you can rent it infinitly
          price = 2.0,
          coords = {
            door = vector3(2588.7099609375,-1161.1600341797,58.209999084473), -- door location
            inv = vector3(2591.22802734375, -1161.448486328125, 58.11981964111328), -- inventory location or nil
            closet = vector3(2589.558837890625, -1158.4837646484375, 58.1590690612793), -- closet location or nil
          },
          blip = {
            enabled = false, -- true or false
            sprite = -211556852, -- sprite
            scale = 0.7, -- scale
            colorOccupied = true, -- true or false
          },
        },
        {
          name = 'Apartment 2',
          roomID = 2,
          management = true,
          hash = 227196938,
          rotation = -90.12598419189453,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2588.7099609375,-1162.5799560547,58.209999084473),
            inv = vector3(2593.039794921875, -1164.9698486328125, 58.11981964111328),
            closet = vector3(2589.48291015625, -1165.9271240234375, 58.11981964111328),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 3',
          roomID = 3,
          management = true,
          hash = 1993806501,
          rotation = -89.97947692871094,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2588.6999511719,-1170.0300292969,58.209999084473),
            inv = vector3(2593.017822265625, -1171.7730712890625, 58.11981964111328),
            closet = vector3(2589.674072265625, -1172.358154296875, 58.15949630737305),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 4',
          roomID = 4,
          management = true,
          hash = 992516957,
          rotation = -89.97947692871094,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2586.2800292969,-1170.0400390625,58.209999084473),
            inv = vector3(2585.51708984375, -1173.39404296875, 58.11981964111328),
            closet = vector3(2580.093017578125, -1173.134033203125, 58.1590690612793),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 5',
          roomID = 5,
          management = true,
          hash = -1077107569,
          rotation = 89.62045288085938,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2588.75,-1161.1600341797,62.360000610352),
            inv = vector3(2592.507080078125, -1161.1142578125, 62.24541091918945),
            closet = vector3(2591.350341796875, -1154.8992919921875, 62.24541091918945),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 6',
          roomID = 6,
          management = true,
          hash = 415751663,
          rotation = -89.62483215332031,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2588.75,-1162.5799560547,62.360000610352),
            inv = vector3(2591.2763671875, -1168.725341796875, 62.24541091918945),
            closet = vector3(2590.763916015625, -1162.3599853515625, 62.2286148071289),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 7',
          roomID = 7,
          management = true,
          hash = -117532942,
          rotation = -89.82498931884766,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2588.75,-1170.0300292969,62.360000610352),
            inv = vector3(2591.940673828125, -1173.349609375, 62.28850936889648),
            closet = vector3(2592.446533203125, -1170.223876953125, 62.28850936889648),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 8',
          roomID = 8,
          management = true,
          hash = -729756169,
          rotation = -89.82498931884766,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2586.2800292969,-1170.0400390625,62.360000610352),
            inv = vector3(2579.8193359375, -1173.4427490234375, 62.22991561889648),
            closet = vector3(2584.27734375, -1169.8275146484375, 62.22991561889648),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
      },
    },
    -- SD Jeweler
    {
      enable = true,
      name = 'St. Denis Jeweler Hotel', -- hotel name
      society = 'sdjeweler', -- job name
      hotelID = 6, -- must be unique
      management = true, -- if true the job can manage the hotel
      coords = vector3(2666.080078125,-1296.1300048828,54.48250579834), -- general load coords
      blip = {
          enabled = true,  -- true or false
          coords = vector3(2666.080078125,-1296.1300048828,54.48250579834), -- coords
          sprite = -211556852, -- sprite
          scale = 0.7, -- scale
      },
      rooms = {
        {
          name = 'Apartment 1', -- display name
          roomID = 1, -- must be unique
          management = true, -- if true the room can be managed
          hash = -1205973305, -- doorhash
          rotation = -65.00010681152344, -- rotation when door is closed
          slots = 100, -- inventory Slots
          weight = 1000,
          maxRentDays = 3, -- if -1 you can rent it infinitly
          price = 2.0,
          coords = {
            door = vector3(2666.080078125,-1296.1300048828,54.48250579834), -- door location
            inv = vector3(2664.863037109375, -1300.5645751953125, 54.47348403930664), -- inventory location or nil
            closet = vector3(2660.93505859375, -1299.5267333984375, 54.4750747680664), -- closet location or nil
          },
          blip = {
            enabled = false, -- true or false
            sprite = -211556852, -- sprite
            scale = 0.7, -- scale
            colorOccupied = true, -- true or false
          },
        },
        {
          name = 'Apartment 2',
          roomID = 2,
          management = true,
          hash = 1038211660,
          rotation = 115.26647186279297,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2665.719970703125, -1295.3599853515625, 54.48250579833984),
            inv = vector3(2660.586181640625, -1292.3057861328125, 54.48635482788086),
            closet = vector3(2660.91162109375, -1296.3355712890625, 54.47644424438476),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 3',
          roomID = 3,
          management = true,
          hash = -973673864,
          rotation = -65.00010681152344,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2665.9306640625, -1296.239990234375, 58.71552658081055),
            inv = vector3(2661.04736328125, -1301.0660400390625, 58.71421813964844),
            closet = vector3(2666.56591796875, -1299.83984375, 58.71421813964844),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 4', -- display name
          roomID = 4, -- must be unique
          management = true, -- if true the room can be managed
          hash = -709785107, -- doorhash
          rotation = 114.99994659423828, -- rotation when door is closed
          slots = 100, -- inventory Slots
          weight = 1000,
          maxRentDays = 3, -- if -1 you can rent it infinitly
          price = 2.0,
          coords = {
            door = vector3(2665.460205078125, -1295.199951171875, 58.71552658081055), -- door location
            inv = vector3(2660.604736328125, -1292.7529296875, 58.71421813964844), -- inventory location or nil
            closet = vector3(2661.71630859375, -1289.5330810546875, 58.71421813964844), -- closet location or nil
          },
          blip = {
            enabled = false, -- true or false
            sprite = -211556852, -- sprite
            scale = 0.7, -- scale
            colorOccupied = true, -- true or false
          },
        },
      },
    },
    -- ANNESBURG BEERHALL
    {
      enable = true,
      name = 'Annesburg Bierhalle Hotel', -- hotel name
      society = 'annbierhalle', -- job name
      hotelID = 7, -- must be unique
      management = true, -- if true the job can manage the hotel
      coords = vector3(2958.849853515625, 1347.8719482421875, 48.00776290893555), -- general load coords
      blip = {
          enabled = true,  -- true or false
          coords = vector3(2958.849853515625, 1347.8719482421875, 48.00776290893555), -- coords
          sprite = -211556852, -- sprite
          scale = 0.7, -- scale
      },
      rooms = {
        {
          name = 'Apartment 1', -- display name
          roomID = 1, -- must be unique
          management = true, -- if true the room can be managed
          hash = 991450127, -- doorhash
          rotation = 159.6256866455078, -- rotation when door is closed
          slots = 100, -- inventory Slots
          weight = 1000,
          maxRentDays = 3, -- if -1 you can rent it infinitly
          price = 2.0,
          coords = {
            door = vector3(2958.849853515625, 1347.8719482421875, 48.00776290893555), -- door location
            inv = vector3(2956.545166015625, 1344.5506591796875, 48.01533889770508), -- inventory location or nil
            closet = vector3(2960.760986328125, 1339.8970947265625, 48.00645446777344), -- closet location or nil
          },
          blip = {
            enabled = false, -- true or false
            sprite = -211556852, -- sprite
            scale = 0.7, -- scale
            colorOccupied = true, -- true or false
          },
        },
        {
          name = 'Apartment 2',
          roomID = 2,
          management = true,
          hash = 1474792857,
          rotation = -20.59811973571777,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2959.100830078125, 1351.7640380859375, 48.00776290893555),
            inv = vector3(2967.28369140625, 1353.43505859375, 48.01699066162109),
            closet = vector3(2963.42626953125, 1351.2308349609375, 48.00645446777344),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'Apartment 3',
          roomID = 3,
          management = true,
          hash = 1230106754,
          rotation = -20.59811973571777,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2956.53759765625, 1352.7073974609375, 48.00776290893555),
            inv = vector3(2959.455810546875, 1358.690673828125, 48.00645446777344),
            closet = vector3(2958.39111328125, 1354.8404541015625, 48.00645446777344),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
      },
    },
    -- SD Newspaper
    {
      enable = true,
      name = 'St. Denis Newspaper', -- hotel name
      society = 'sdnews', -- job name
      hotelID = 8, -- must be unique
      management = true, -- if true the job can manage the hotel
      coords = vector3(2615.912, -1347.47, 50.137), -- general load coords
      blip = {
          enabled = true,  -- true or false
          coords = vector3(2616.412, -1345.85, 80.174), -- coords
          sprite = -211556852, -- sprite
          scale = 0.7, -- scale
      },
      rooms = {
        {
          name = 'F2 Apartment 1', -- display name
          roomID = 1, -- must be unique
          management = true, -- if true the room can be managed
          hash = 2166693749, -- doorhash
          rotation = -142.00, -- rotation when door is closed
          slots = 100, -- inventory Slots
          weight = 1000,
          maxRentDays = 3, -- if -1 you can rent it infinitly
          price = 2.0,
          coords = {
            door = vector3(2609.169189453125, -1349.22705078125, 61.96007537841797), -- door location
            inv = vector3(2604.98193359375, -1345.042236328125, 61.96668243408203), -- inventory location or nil
            closet = vector3(2600.844482421875, -1355.1136474609375, 61.95890045166015), -- closet location or nil
          },
          blip = {
            enabled = false, -- true or false
            sprite = -211556852, -- sprite
            scale = 0.7, -- scale
            colorOccupied = true, -- true or false
          },
        },
        {
          name = 'F2 Apartment 2',
          roomID = 2,
          management = true,
          hash = 130805160,
          rotation = -49.99,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2615.167236328125, -1344.94873046875, 61.96007537841797),
            inv = vector3(2611.86376953125, -1346.56298828125, 61.94361877441406),
            closet = vector3(2609.059814453125, -1342.126220703125, 61.93889999389648),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'F3 Apartment 1',
          roomID = 3,
          management = true,
          hash = 4263466771,
          rotation = -49.90,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2614.8203125, -1344.5845947265625, 66.46558380126953),
            inv = vector3(2617.6875, -1339.1058349609375, 66.4429931640625),
            closet = vector3(2611.779541015625, -1345.4444580078125, 66.44587707519531),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'F3 Apartment 2',
          roomID = 4,
          management = true,
          hash = 824787050,
          rotation = -139.99,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2608.655029296875, -1348.623779296875, 66.46558380126953),
            inv = vector3(2604.2421875, -1356.8685302734375, 66.40367889404297),
            closet = vector3(2606.277587890625, -1362.1839599609375, 66.44621276855469),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'F4 Room 1',
          roomID = 5,
          management = true,
          hash = 1200696398,
          rotation = 39.99,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2600.466064453125, -1358.2198486328125, 70.93123626708984),
            inv = vector3(2601.629150390625, -1356.6497802734375, 70.91329193115234),
            closet = vector3(2601.405517578125, -1351.8106689453125, 70.92283630371094),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'F4 Room 2',
          roomID = 6,
          management = true,
          hash = 742896487,
          rotation = 39.99,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2605.4140625, -1354.0721435546875, 70.93123626708984),
            inv = vector3(2603.220947265625, -1352.1082763671875, 70.91329193115234),
            closet = vector3(2607.05419921875, -1352.080810546875, 70.9814682006836),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'F4 Room 3',
          roomID = 7,
          management = true,
          hash = 1437107752 ,
          rotation = 39.99,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2610.8994140625, -1349.4649658203125, 70.93523406982422),
            inv = vector3(2609.12451171875, -1347.8211669921875, 70.91329193115234),
            closet = vector3(2608.278564453125, -1346.8126220703125, 70.91329956054688),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'F4 Room 4',
          roomID = 8,
          management = true,
          hash = 672542324 ,
          rotation = 39.99,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2616.144287109375, -1345.08447265625, 70.94248962402344),
            inv = vector3(2617.6875, -1338.6656494140625, 70.91329956054688),
            closet = vector3(2613.939208984375, -1342.77734375, 70.91328430175781),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'F4 Room 5',
          roomID = 9,
          management = true,
          hash = 2220254083 ,
          rotation = -139.99,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2622.036376953125, -1340.1055908203125, 70.94248962402344),
            inv = vector3(2619.51123046875, -1333.7606201171875, 70.91404724121094),
            closet = vector3(2623.833984375, -1337.3433837890625, 70.91329193115234),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'F4 Room 6',
          roomID = 10,
          management = true,
          hash = 250378413 ,
          rotation = 39.99,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2626.5869140625, -1344.9149169921875, 70.94248962402344),
            inv = vector3(2625.768798828125, -1337.732666015625, 70.91329956054688),
            closet = vector3(2625.49951171875, -1342.9844970703125, 70.91507720947266),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
      },
    },
    -- SD Antiques Store
    {
      enable = true,
      name = 'St. Antiques Store', -- hotel name
      society = 'sdantiques', -- job name
      hotelID = 9, -- must be unique
      management = true, -- if true the job can manage the hotel
      coords = vector3(2635.311, -1358.72, 50.465), -- general load coords
      blip = {
          enabled = true,  -- true or false
          coords = vector3(2631.766, -1361.77, 68.808), -- coords
          sprite = -211556852, -- sprite
          scale = 0.7, -- scale
      },
      rooms = {
        {
          name = 'F1 Apartment 1', -- display name
          roomID = 1, -- must be unique
          management = true, -- if true the room can be managed
          hash = 759667685, -- doorhash
          rotation = 40.00, -- rotation when door is closed
          slots = 100, -- inventory Slots
          weight = 1000,
          maxRentDays = 3, -- if -1 you can rent it infinitly
          price = 2.0,
          coords = {
            door = vector3(2629.506103515625, -1363.954833984375, 60.89883422851562), -- door location
            inv = vector3(2631.934326171875, -1355.080322265625, 60.86739730834961), -- inventory location or nil
            closet = vector3(2637.749755859375, -1356.5975341796875, 60.86998748779297), -- closet location or nil
          },
          blip = {
            enabled = false, -- true or false
            sprite = -211556852, -- sprite
            scale = 0.7, -- scale
            colorOccupied = true, -- true or false
          },
        },
        {
          name = 'F1 Apartment 2',
          roomID = 2,
          management = true,
          hash = 146395850,
          rotation = -49.73,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2623.078857421875, -1362.8653564453125, 59.47077560424805),
            inv = vector3(2625.507080078125, -1366.5794677734375, 59.42181015014648),
            closet = vector3(2627.892333984375, -1369.3450927734375, 59.45175170898437),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'F2 Apartment 1',
          roomID = 3,
          management = true,
          hash = 4202247753,
          rotation = 129.89,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2641.276611328125, -1359.72705078125, 65.35139465332031),
            inv = vector3(2634.48193359375, -1359.1959228515625, 65.34432983398438),
            closet = vector3(2633.334716796875, -1354.4552001953125, 65.34456634521484),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
        {
          name = 'F2 Apartment 2',
          roomID = 4,
          management = true,
          hash = 519962450,
          rotation = -49.50,
          slots = 100,
          weight = 1000,
          maxRentDays = 3,
          price = 2.0,
          coords = {
            door = vector3(2623.07763671875, -1362.8641357421875, 63.68118286132812),
            inv = vector3(2625.706298828125, -1372.9234619140625, 63.6578483581543),
            closet = vector3(2628.34521484375, -1370.7412109375, 63.66416168212893),
          },
          blip = {
            enabled = false,
            sprite = -211556852,
            scale = 0.7,
            colorOccupied = true,
          },
        },
      },
    },
    -- SD Toy Store
    {
      enable = true,
      name = 'St. Toy Store', -- hotel name
      society = 'sdtoy', -- job name
      hotelID = 10, -- must be unique
      management = true, -- if true the job can manage the hotel
      coords = vector3(2639.897, -1368.73, 50.649), -- general load coords
      blip = {
          enabled = true,  -- true or false
          coords = vector3(2639.897, -1368.73, 65.649), -- coords
          sprite = -211556852, -- sprite
          scale = 0.7, -- scale
      },
      rooms = {
        {
          name = 'F2 Apartment 1', -- display name
          roomID = 1, -- must be unique
          management = true, -- if true the room can be managed
          hash = 4201425067, -- doorhash
          rotation = 130.00, -- rotation when door is closed
          slots = 100, -- inventory Slots
          weight = 1000,
          maxRentDays = 3, -- if -1 you can rent it infinitly
          price = 2.0,
          coords = {
            door = vector3(2644.591552734375, -1371.1353759765625, 58.19290924072265), -- door location
            inv = vector3(2642.7578125, -1368.44287109375, 58.18084335327148), -- inventory location or nil
            closet = vector3(2647.249755859375, -1368.8896484375, 58.10561370849609), -- closet location or nil
          },
          blip = {
            enabled = false, -- true or false
            sprite = -211556852, -- sprite
            scale = 0.7, -- scale
            colorOccupied = true, -- true or false
          },
        },
      },
    },
}
Functions.lua
lua
local VORPcore

if Config.Framework == 'vorp' then
    VORPcore = exports.vorp_core:GetCore()
end

-- Notify
function clNotify(text, error, success)
    if Config.Framework == 'vorp' then
        if error then
            VORPcore.NotifyAvanced(text, 'menu_textures', 'cross', 'COLOR_RED', 4000)
        elseif success then
            VORPcore.NotifyAvanced(text, 'hud_textures', 'check', 'COLOR_GREEN', 4000)
        else
            VORPcore.NotifyAvanced(text, 'inventory_items', 'provision_jail_keys', 'COLOR_PURE_WHITE', 4000)
        end
    end
    if Config.Framework == 'rpx' then
        if error then
            exports['rpx-core']:ShowAdvancedRightNotification(text, 'menu_textures', 'cross', 'COLOR_RED', 4000)
        elseif success then
            exports['rpx-core']:ShowAdvancedRightNotification(text, 'hud_textures', 'check', 'COLOR_GREEN', 4000)
        else
            exports['rpx-core']:ShowAdvancedRightNotification(text, 'inventory_items', 'provision_jail_keys', 'COLOR_PURE_WHITE', 4000)
        end
    end
    if Config.Framework == "rsg" or Config.Framework == "rsg-old" then
        if error then
            local dataError = {description = text, duration = 4000, type = 'error' }
            TriggerEvent('ox_lib:notify', dataError)
        elseif success then
            local dataSuccess = {description = text, duration = 4000, type = 'success' }
            TriggerEvent('ox_lib:notify', dataSuccess)
        else
            local data = {description = text, duration = 4000, type = 'inform' }
            TriggerEvent('ox_lib:notify', data)
        end
    end
end

function svNotify(src, text, error, success)
    if Config.Framework == 'vorp' then
        if error then
            VORPcore.NotifyAvanced(src, text, 'menu_textures', 'cross', 'COLOR_RED', 4000)
        elseif success then
            VORPcore.NotifyAvanced(src, text, 'hud_textures', 'check', 'COLOR_GREEN', 4000)
        else
            VORPcore.NotifyAvanced(src, text, 'inventory_items', 'provision_jail_keys', 'COLOR_PURE_WHITE', 4000)
        end
    end
    if Config.Framework == 'rpx' then
        if error then
            exports['rpx-core']:ShowAdvancedRightNotification(src, text, 'menu_textures', 'cross', 'COLOR_RED', 4000)
        elseif success then
            exports['rpx-core']:ShowAdvancedRightNotification(src, text, 'hud_textures', 'check', 'COLOR_GREEN', 4000)
        else
            exports['rpx-core']:ShowAdvancedRightNotification(src, text, 'inventory_items', 'provision_jail_keys', 'COLOR_PURE_WHITE', 4000)
        end
    end
    if Config.Framework == "rsg" or Config.Framework == "rsg-old" then
        if error then
            local dataError = {description = text, duration = 4000, type = 'error' }
            TriggerClientEvent('ox_lib:notify', src, dataError)
        elseif success then
            local dataSuccess = {description = text, duration = 4000, type = 'success' }
            TriggerClientEvent('ox_lib:notify', src, dataSuccess)
        else
            local data = {description = text, duration = 4000, type = 'inform' }
            TriggerClientEvent('ox_lib:notify', src, data)
        end
    end
end

-- Wardrobe
function ClothingMenuEvent()
    -- TriggerEvent('syn_clothing:OpenOutfits')
    TriggerEvent('kd_clothingstore:openWardrobe', false)
end

-- Society
function AddMoneyToSociety(society, money)
    if society ~= nil and money > 0 then
        if Config.Society == 'dl_society' then
            exports.dl_society:addSocietyMoney(society, money)
        end

        if Config.Society == 'mega_companies' then
            CompaniesManager.addMoney(society, money)
        end

        if Config.Society == 'syn_society' then
            local ledgerresult = exports.oxmysql:fetchSync('SELECT ledger FROM society_ledger WHERE job = ?', {society})
            if ledgerresult and ledgerresult[1] and ledgerresult[1].ledger then
                local currentLedger = ledgerresult[1].ledger
                local newLedger = currentLedger + money
                exports.oxmysql:execute('UPDATE society_ledger SET ledger = ? WHERE job = ?', {newLedger, society})
            else
                print("No Ledger found for Job '" .. society .. "'!")
            end
        end

        if Config.Society == 'custom' then
            -- Your Add Money to Society Logic here
            print(society, money)
        end
    end
end