Hotel Script Fivem Apr 2026

-- NUI callback for payment RegisterNUICallback('payRoom', function(data, cb) SetNuiFocus(false, false) TriggerServerEvent('hotel:payRent', data.room, data.price) cb('ok') end)

-- Payment interval (in minutes) Config.PaymentInterval = 60

-- Notification function function Notify(msg, type) if Config.Framework == 'esx' then TriggerEvent('esx:showNotification', msg) else TriggerEvent('QBCore:Notify', msg, type or 'info') end end local playerRoom = nil local currentKey = nil -- Load framework if Config.Framework == 'esx' then ESX = exports["es_extended"]:getSharedObject() else QBCore = exports['qb-core']:GetCoreObject() end hotel script fivem

MySQL.query('SELECT room_number FROM hotel_rentals WHERE citizenid = ? AND room_number = ? AND paid_until > ?', {identifier, roomNumber, os.time()}, function(result) if result[1] then -- Teleport player into room TriggerClientEvent('hotel:enterRoom', src, roomNumber) else Notify(src, 'You do not have access to this room', 'error') end end) end)

-- Room door interaction Citizen.CreateThread(function() for _, room in pairs(Config.Rooms) do exports['ox_target']:addBoxZone({ coords = room.doorCoords, size = vector3(0.6, 0.6, 1.2), rotation = 0, debug = false, options = { { name = 'use_room_key', label = 'Use Room Key', icon = 'fas fa-door-open', onSelect = function() TriggerServerEvent('hotel:useKey', room.number) end } } }) end end) -- NUI callback for payment RegisterNUICallback('payRoom'

-- Handle payment and room assignment RegisterNetEvent('hotel:payRent') AddEventHandler('hotel:payRent', function(roomNumber, price) local src = source local identifier = getIdentifier(src)

client_scripts { 'config.lua', 'client.lua' } msg) else TriggerEvent('QBCore:Notify'

-- Simple key item use (if using item) RegisterNetEvent('hotel:useKeyItem') AddEventHandler('hotel:useKeyItem', function(roomNumber) TriggerServerEvent('hotel:useKey', roomNumber) end) local framework = nil if Config.Framework == 'esx' then ESX = exports['es_extended']:getSharedObject() else QBCore = exports['qb-core']:GetCoreObject() end -- Register item (for key) if Config.Framework == 'esx' then ESX.RegisterUsableItem('hotel_key', function(source) TriggerClientEvent('hotel:useKeyItem', source) end) else QBCore.Functions.CreateUseableItem('hotel_key', function(source, item) TriggerClientEvent('hotel:useKeyItem', source, item.info.room) end) end

-- Use key on door RegisterNetEvent('hotel:useKey') AddEventHandler('hotel:useKey', function(roomNumber) local src = source local identifier = getIdentifier(src)

function removeMoney(source, amount) if Config.Framework == 'esx' then local xPlayer = ESX.GetPlayerFromId(source) if xPlayer.getMoney() >= amount then xPlayer.removeMoney(amount) return true end else local Player = QBCore.Functions.GetPlayer(source) if Player.Functions.RemoveMoney('cash', amount) then return true end end return false end

for _, room in pairs(Config.Rooms) do if not occupiedRooms[room.number] then roomNumber = room.number break end end if not roomNumber then Notify(src, 'No rooms available', 'error') return end end) end