--[[ Other Scripts ]]
start 0r_lib
start 0r_apartment-v2
QBOX Starter Apartment ?
Q: I want new players to choose an apartment and have a random room, what should I do?
A: First of all, you should be using qbx_spawn for this. After this you won't need qbox_apartment. However, it is your responsibility to make sure that other scripts that use it don't malfunction. The functions have been edited to replace qbx_apartments. So if you use other scripts, you should fix them according to your settings. Here is what you need to do in order:
1- 0r-apartment-v2\modules\bridge\qb\server.lua If you are already using the latest update, you do not need to !
Line 24~ apartments:client:setupSpawnUI
RegisterNetEvent("apartments:client:setupSpawnUI", function(cData, firstSpawn, isNew)
if not cData then return end
if Utils.Functions.IsResourceStart('qbx_core') then
local Locations = Config.Apartments
local upLocations = {}
for key, value in pairs(Locations) do
upLocations[#upLocations + 1] = {
label = value.label,
coords = value.coords.enter,
propertyId = key,
}
end
TriggerEvent("qb-spawn:client:setupSpawns", cData, true, upLocations)
else
Client.Functions.TriggerServerCallback("0r-apartment:Server:GetPlayerRooms", function(result)
if #result > 0 then
TriggerEvent("qb-spawn:client:setupSpawns", cData, false, nil)
TriggerEvent("qb-spawn:client:openUI", true)
else
if isNew and Config.ApartmentStarting then
local Locations = Config.Apartments
TriggerEvent("qb-spawn:client:setupSpawns", cData, true, Locations)
TriggerEvent("qb-spawn:client:openUI", true)
else
TriggerEvent("qb-spawn:client:setupSpawns", cData, false, nil)
TriggerEvent("qb-spawn:client:openUI", true)
end
end
end, cData.citizenid or cData.cid)
end
end)
2- qbx_spawn\client\main.lua Line 188~ inputHandler & qb-spawn:client:setupSpawns Update:
local function inputHandler()
while DoesCamExist(previewCam) do
if IsControlJustReleased(0, 188) then
previousButtonID = currentButtonID
currentButtonID -= 1
if currentButtonID < 1 then
currentButtonID = #spawns
end
updateScaleform()
elseif IsControlJustReleased(0, 187) then
previousButtonID = currentButtonID
currentButtonID += 1
if currentButtonID > #spawns then
currentButtonID = 1
end
updateScaleform()
elseif IsControlJustReleased(0, 191) then
DoScreenFadeOut(1000)
while not IsScreenFadedOut() do
Wait(0)
end
TriggerServerEvent('QBCore:Server:OnPlayerLoaded')
TriggerEvent('QBCore:Client:OnPlayerLoaded')
FreezeEntityPosition(cache.ped, false)
DisplayRadar(true)
local spawnData = spawns[currentButtonID]
if spawnData.propertyId then
if GetResourceState('0r-apartment-v2') == 'started' then
TriggerServerEvent("apartments:server:CreateApartment", spawnData.propertyId, spawnData.label)
else
TriggerServerEvent('qbx_properties:server:enterProperty', { id = spawnData.propertyId, isSpawn = true })
end
else
SetEntityCoords(cache.ped, spawnData.coords.x, spawnData.coords.y, spawnData.coords.z, false, false, false, false)
SetEntityHeading(cache.ped, spawnData.coords.w or 0.0)
end
DoScreenFadeIn(1000)
break
end
Wait(0)
end
stopCamera()
end
AddEventHandler('qb-spawn:client:setupSpawns', function(cData, useExtra, extraLocations)
spawns = {}
if not useExtra then
local lastCoords, lastPropertyId = lib.callback.await('qbx_spawn:server:getLastLocation')
spawns[#spawns + 1] = {
label = locale('last_location'),
coords = lastCoords,
propertyId = lastPropertyId
}
for i = 1, #config.spawns do
spawns[#spawns + 1] = config.spawns[i]
end
local properties = lib.callback.await('qbx_spawn:server:getProperties')
for i = 1, #properties do
spawns[#spawns + 1] = properties[i]
end
else
spawns = extraLocations
end
Wait(400)
managePlayer()
setupCamera()
setupMap()
Wait(400)
currentButtonID = 1
scaleformDetails(currentButtonID)
inputHandler()
end)
Q: I want new players to choose an apartment and have a random room, what should I do?
A: First of all, you should be using qb-spawn and qb-multicharacter and qb-apartments for this. After this you won't need qb-apartments. However, it is your responsibility to make sure that other scripts that use it don't malfunction. The functions have been edited to replace qb-apartments. So if you use other scripts, you should fix them according to your settings. Here is what you need to do in order:
1- In qb-multicharacter: server/main.lua replace this code block:
RegisterNetEvent('qb-multicharacter:server:createCharacter', function(data)
local src = source
local newData = {}
newData.cid = data.cid
newData.charinfo = data
if QBCore.Player.Login(src, false, newData) then
repeat
Wait(10)
until hasDonePreloading[src]
if GetResourceState('0r-apartment-v2') == 'started' then -- > This place has changed !
local randbucket = (GetPlayerPed(src) .. math.random(1,999))
SetPlayerRoutingBucket(src, randbucket)
print('^2[qb-core]^7 '..GetPlayerName(src)..' has successfully loaded!')
QBCore.Commands.Refresh(src)
loadHouseData(src)
TriggerClientEvent("qb-multicharacter:client:closeNUI", src)
TriggerClientEvent('apartments:client:setupSpawnUI', src, newData, true, true) -- > This place has changed !
GiveStarterItems(src)
else
print('^2[qb-core]^7 '..GetPlayerName(src)..' has successfully loaded!')
QBCore.Commands.Refresh(src)
loadHouseData(src)
TriggerClientEvent("qb-multicharacter:client:closeNUIdefault", src)
GiveStarterItems(src)
end
end
end)
2- In qb-spawn/fxmanifest: replace shared_scripts with the following.
local Apartments = Config.Apartments -- You should add this at the top.
You must change all Apartments.Locations definitions in the file to Apartments.
For example: client line 136.
TriggerServerEvent("apartments:server:CreateApartment", appaYeet, Apartments.Locations[appaYeet].label) Instead
> to
TriggerServerEvent("apartments:server:CreateApartment", appaYeet, Apartments[appaYeet].label)
-- As you can see, instead of `Apartments.Locations` I wrote `Apartments`
4- qb-spawn/client.lua line 135 / function RegisterNUICallback('chooseAppa', function(data, cb)
local appaYeet = tonumber(data.appType) or data.appType
if type(appaYeet) == "number" then
appaYeet = appaYeet + 1
end
Then restart your server. Everything should work properly. Please don't create a support ticket until you are sure everything is working properly.
What You Need to Know
Q: Where is the sql file ?
A: database.sql
Q: How to add a motel ?
A: You can take an example from Config.Apartments in the Config file.