Script Fivem - Hotel

-- Target interaction exports['ox_target']:addLocalEntity(npc, { { name = 'hotel_reception', label = 'Rent a Room', icon = 'fas fa-key', onSelect = function() TriggerServerEvent('hotel:checkRentStatus') end } }) end)

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

shared_scripts { '@ox_lib/init.lua', -- optional but recommended '@es_extended/imports.lua' -- if using ESX } hotel script fivem

if roomNumber == nil then -- Find free room MySQL.query('SELECT room_number FROM hotel_rentals WHERE paid_until > ?', {os.time()}, function(occupied) local occupiedRooms = {} for _, v in pairs(occupied) do occupiedRooms[v.room_number] = true end

-- Helper functions function getIdentifier(source) if Config.Framework == 'esx' then local xPlayer = ESX.GetPlayerFromId(source) return xPlayer.identifier else local Player = QBCore.Functions.GetPlayer(source) return Player.PlayerData.citizenid end end { { name = 'hotel_reception'

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

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

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)