Comandos#
Housing Creator registra algunos comandos en el juego, dos de ellos con teclas que los jugadores pueden cambiar en la configuración de FiveM. Los nombres de comandos que vienen de la config se pueden renombrar allí.
Comando | Quién | Descripción |
|---|---|---|
| Propietarios, inquilinos, poseedores de llaves | Abre el panel de gestión de la casa en la que estás. Fuera de un edificio de apartamentos, muestra tus apartamentos. Tecla: |
| Administradores, trabajos inmobiliarios | Abre el creador: casas, tiendas de muebles y agencias. Tecla: |
| Todos | Abre el buscador de casas. Solo cuando |
| Miembros de la agencia con acceso al menú de jefe | Abre el menú de jefe de la agencia inmobiliaria. Nombre y tecla opcional en |
| Administradores, trabajos inmobiliarios | Junto a una casa, desaloja a su inquilino (sigue anunciada en alquiler). En un edificio de apartamentos, muestra las unidades alquiladas. Nombre: |
| Administradores | Abre el creador de muebles: añade, edita y fotografía los artículos del catálogo. Nombre: |
| Administradores | Abre Shell Studio: construye y edita tus propios shells. Nombre: |
| Todos | Vuelve a enviar todas las casas a tu cliente — para cuando las casas o los blips no cargaron al entrar. |
| Consola del servidor | Migración única para servidores que vienen de una versión muy antigua: mueve los muebles del antiguo formato de almacenamiento al actual y después pide un reinicio. |
| Consola del servidor | Muestra las casas cuyas coordenadas guardadas están rotas. Una casa así se omite al iniciar para que las demás sigan cargando. |
revert_decorationsmodifica tu base de datos. Haz una copia de seguridad antes y ejecútalo solo al pasar de una versión antigua. MientrasConfig.Debugestá activado, también se registran algunos comandos de desarrollador; desaparecen cuando se desactiva.
Exports de cliente#
Para HUDs, menús radiales, selectores de spawn y cualquier otra cosa que necesite saber dónde está el jugador.
Dónde está el jugador
exports['qs-housing']:getEnteredHouse() -- house the player is inside, or nil
exports['qs-housing']:getCurrentHouse() -- house whose zone the player is in (outside too), or nil
exports['qs-housing']:GetCurrentHouseData() -- access to the current house (below)
exports['qs-housing']:GetCurrentHouseUpgrades() -- upgrades of the current houseGetCurrentHouseData devuelve haskey, isOwned, isOfficialOwner, rentable, purchasable, houseRented, billsCutOff, lightsOn y más.
local house = exports['qs-housing']:getEnteredHouse()
if house and exports['qs-housing']:GetCurrentHouseData().haskey then
print('At home in', house)
endDatos de la casa
exports['qs-housing']:getHouseData(house) -- one house: coords, price, interior, upgrades...
exports['qs-housing']:getHouseList() -- every house (waits until houses are loaded)
exports['qs-housing']:getShells() -- the shell list from the config (client and server)Entrar y salir
exports['qs-housing']:enterHouse(house, false) -- teleports the player in, without checking keys
exports['qs-housing']:CleanupPlayerHousingState() -- forces the player out of every housing stateLlama a CleanupPlayerHousingState desde un script de multipersonaje o de cierre de sesión antes de cambiar de personaje.
Interfaces
exports['qs-housing']:OpenPropertyHub(house, houseData, currentHouseData)
exports['qs-housing']:ClosePropertyHub()
exports['qs-housing']:OpenAgencyBossMenu(agencyId)
exports['qs-housing']:inDecorate() -- true while decorate mode is openCámaras de seguridad
local cams = exports['qs-housing']:GetSecurityCameras() -- { { id = 12 }, ... }
if cams[1] then
exports['qs-housing']:WatchSecurityCamera(cams[1].id)
endShells
Añade un shell desde otro recurso sin editar la config:
exports['qs-housing']:AddShell({ model = 'my_shell_model', stash = { maxweight = 1000000, slots = 10 } })Exports de servidor#
Cómo otros recursos controlan Housing Creator. target significa el id de servidor de un jugador o su identificador (citizenid en QBCore).
Leer la propiedad
exports['qs-housing']:GetPlayerHouses(source) -- { 'house_1', ... } owned or rented
exports['qs-housing']:GetPlayerPropertiesByIdentifier(identifier) -- with label, address, coords, image; works offline
exports['qs-housing']:GetHouseOwner(house) -- identifier, 'realestate' or 'agency_<id>'
exports['qs-housing']:GetPlayerInsideHouse(source) -- the house the player is saved inside
exports['qs-housing']:CheckHasKey(identifier, identifier, house, source)
exports['qs-housing']:CanOwnAnotherHouse(identifier) -- under the house limit (VIP slots included)Dar y quitar casas
local ok, err = exports['qs-housing']:AssignHouseToPlayer(target, house, { notify = true, skipMaxLimit = false })
-- err: invalid_house, invalid_target, house_not_found, house_already_owned, max_houses_reached
exports['qs-housing']:ClearHouseOwnership(house, { notify = true }) -- back on the market
exports['qs-housing']:ReleaseRenter(house, true) -- evict the tenant, keep it listed
exports['qs-housing']:BankHandover(house, identifier) -- bank deal; nil returns it to market
exports['qs-housing']:deleteHouse(house) -- deletes the house completelyNinguno de estos cobra dinero. AssignHouseToPlayer es el export para recompensas, casas iniciales y herramientas de administración.
Borrado de personajes y jugadores atascados
local ok, summary = exports['qs-housing']:OnCharacterWipe(identifier)
-- summary = { released = {...}, cleared = {...}, transferred = {...} }
exports['qs-housing']:ClearPlayerInsideByIdentifier(identifier) -- player spawns outside next timeOnCharacterWipe finaliza los alquileres, vacía o traspasa las casas en propiedad y elimina al personaje de todas las listas de llaves. Llámalo desde tu script de borrado de personajes.
Llaves
exports['qs-housing']:GiveMetaKey(source, house) -- gives a new physical key item
exports['qs-housing']:RemoveMetaKey(source, house)
exports['qs-housing']:CheckHasMetaKey(source, house)
exports['qs-housing']:CanBuyHouseFurniture(source, house) -- owner, or a key holder allowed to buy furnitureLos exports de meta llaves están disponibles mientras Config.EnableMetaKey está activado.
Pagos: hipoteca, alquiler y facturas
Para apps bancarias y apps de teléfono. Primero pide un presupuesto, cobra el dinero a tu manera y después confirma:
local quote = exports['qs-housing']:QuoteHousingPayment(target, house, 'mortgage') -- 'mortgage' | 'rent' | 'bill'
if quote.ok and MyBank.Charge(target, quote.amount) then
exports['qs-housing']:ConfirmHousingPayment(target, house, 'mortgage', { alreadyCollected = true })
end
-- Without alreadyCollected, Housing Creator charges the player itself.
exports['qs-housing']:PayHouseMortgage(target, house, {})
exports['qs-housing']:PayHouseRent(target, house, {})
exports['qs-housing']:PayHouseBill(source, billId)Para leer todo aquello a lo que está vinculado un jugador — en propiedad, alquilado, llaves, hipoteca, alquiler pendiente, facturas sin pagar:
local result = exports['qs-housing']:GetPlayerHousingContracts(target)
local one = exports['qs-housing']:GetHouseContract(house, target)Config.HousingApps.AllowedResources limita qué recursos pueden llamarlos. Vacío significa cualquiera. Con SkipAutoChargeOnExternalPay, un pago hecho de esta forma omite el siguiente cobro automático.
Casas VIP
exports['qs-housing']:GrantVipHouse(target, house, { notify = true }) -- free, skips the house limit
exports['qs-housing']:RevokeVipHouse(house)
exports['qs-housing']:SetVipExtraHouseSlots(identifier, 2) -- added to Config.MaxOwnedHouses
exports['qs-housing']:GetVipExtraHouseSlots(identifier)Bloquear ventas y transferencias
Retira una casa del mercado por completo — no se puede comprar, alquilar ni hipotecar, y desaparece del buscador y del mapa:
exports['qs-housing']:SetHouseForSale(house, false)
exports['qs-housing']:IsHouseForSale(house)O veta acciones concretas de los jugadores con tus propias reglas:
exports['qs-housing']:RegisterHouseTransactionVeto('gang_rules', function(ctx)
-- ctx.action: 'sell_bank', 'list_player_sale', 'buy_from_player' or 'transfer'
if ctx.action == 'transfer' and IsGangHouse(ctx.house) then
return false, 'Gang houses cannot be transferred'
end
return true
end)
exports['qs-housing']:UnregisterHouseTransactionVeto('gang_rules')Muebles
Añade artículos a una categoría existente del catálogo (como funcionan los packs de [dlc]), o coloca muebles en una casa:
exports['qs-housing']:AddFurniture('sofa', {
object = 'my_sofa', label = 'My Sofa', price = 1200,
description = 'Comfortable.', img = 'https://example.com/my_sofa.webp',
colorlabel = 'Grey', colors = {},
})
exports['qs-housing']:addDecorationToHouse(house, {
modelName = 'my_sofa',
coords = vec3(0.0, 0.0, 0.0),
rotation = vec3(0.0, 0.0, 0.0),
inStash = true, -- true: goes to the owner's furniture stash
inHouse = false,
})
exports['qs-housing']:addDecorationBatchToHouse(house, { ... })Agencias
exports['qs-housing']:GetAgencyById(id)
exports['qs-housing']:GetAgencyByName(name)
exports['qs-housing']:GetPlayerAgencyMembership(identifier) -- agency, rank and permissions
exports['qs-housing']:CanManageHouse(source, house) -- owner or agency manager
exports['qs-housing']:ResolveAgencyIdForHouse(house)Después de cambiar datos por tu cuenta
exports['qs-housing']:RefreshHouseCache(house, 'bills') -- 'bills', 'house_meta_keys' or 'meta_key_valid'Eventos#
Eventos de servidor para escuchar con AddEventHandler:
Evento | Se dispara cuando |
|---|---|
|
|
| Se crea, edita o elimina una casa en el creador. |
|
|
|
|
|
|
Eventos de cliente:
AddEventHandler('housing:onEnterHouse', function(house) end) -- entered a house interior
AddEventHandler('housing:onExitHouse', function(house) end)
AddEventHandler('housing:handleEnterZone', function(house) end) -- walked into a property zone
AddEventHandler('housing:handleExitZone', function(house) end)
RegisterNetEvent('qs-housing:client:contractUpdated', function(data) end) -- { house, action }Compatibilidad con qb-houses#
Los scripts escritos para qb-houses siguen funcionando: exports['qb-houses']:hasKey(...) lo responde Housing Creator, y los selectores de spawn todavía pueden disparar qb-houses:client:enterOwnedHouse y qb-houses:client:LastLocationHouse. La consola te recuerda que migres esos scripts a los exports de qs-housing; no ejecutes el qb-houses real a la vez.



