Comandos#
Apartments registra cuatro comandos de chat y un atajo de teclado. Cada nombre es un ajuste en config/main.lua, así que puedes cambiarlos.
Comando | Quién | Descripción |
|---|---|---|
| Jugadores | Abre el Apartment Menu para reclamar un apartamento, para un jugador que no tiene ninguno. El nombre es |
| Dentro de un apartamento | Abre Apartments Location para colocar el stash, el armario o el cargador. El nombre es |
| Dentro de un apartamento | Abre el menú de decoración. Asignado a |
| Administradores | Abre el Furniture Creator. A cualquier otro se le muestra You do not have permissions. El nombre es |
| Solo depuración | Solo existe mientras |
Quién cuenta como administrador lo define tu framework — consulta Acceso de administrador en Instalación.
Exports del cliente#
Para saber dónde está el jugador desde tus propios scripts — una app del teléfono, un menú radial, un trabajo que no debería ejecutarse en casa — y para ampliar el catálogo.
¿El jugador está en casa o decorando?
local atHome = exports['qs-apartments']:InApartment() -- inside any apartment
local decorating = exports['qs-apartments']:inDecorate() -- the decoration menu is openAmbos devuelven true o false — úsalos para mantener apartado un menú, un arma o un emote.
Añadir muebles desde otro recurso
exports['qs-apartments']:AddFurniture('chair', {
object = 'prop_chair_01a',
label = 'Garden chair',
description = 'Plastic, but comfortable.',
price = 150,
img = 'https://...',
colorlabel = 'White',
colors = {},
})El primer argumento es una clave de categoría existente de config/furniture.lua. La pieza se añade al menú de decoración de ese jugador hasta que el recurso se reinicie, así que llámalo en cada cliente. Para una pieza permanente que todos los jugadores reciban y puedan revender, usa el Furniture Creator o config/furniture.lua en su lugar.
Añadir un nivel de shell
exports['qs-apartments']:AddShell({ model = 'shell_michael' })Añade un nivel a Config.Shells en ese cliente, con el siguiente número libre. Añadirlo al archivo de configuración es más sencillo; en cualquier caso, el nivel necesita que coloques su puerta de salida una vez.
Exports compartidos#
Disponibles tanto en el cliente como en el servidor.
GetApartments
Todos los edificios, con el formato que usaba qb-apartments, para que un selector de spawn o una app de teléfono escrita para él siga funcionando:
local apartments = exports['qs-apartments']:GetApartments()
-- { Starting = true, Locations = { [key] = { name, label, image, description, price, tier, coords, area } } }
for key, building in pairs(apartments.Locations) do
print(key, building.label, building.price, building.coords.enter)
endEventos#
Los mismos eventos que usan los menús integrados, para controlar Apartments desde un selector de spawn, un menú radial o una herramienta de administración.
Dar un apartamento a un jugador
Se envía desde el propio cliente del jugador. Es gratis — no se cobra nada:
-- building key, label, first spawn
TriggerServerEvent('apartments:server:CreateApartment', 'sr_drive_a', 'South Rockford Drive', true)Se añade un número a la etiqueta, al jugador se le muestra You have received an apartment y se configuran sus blips. Con true como último argumento, además se le lleva adentro y se abre el creador de personajes — el flujo del apartamento inicial.
Enviar a un jugador a su apartamento
-- server side: the apartment ID and its building key, from player_apartments
TriggerClientEvent('apartments:client:SpawnInApartment', source, 'sr_drive_a4821', 'sr_drive_a')Abrir los menús desde un menú radial
ExecuteCommand('ApartmentDecoration') -- the decoration menu
TriggerEvent('qs-apartments:client:locations') -- stash, wardrobe and charger points
TriggerEvent('apartments:client:HandleLeaveApartment') -- walk out
TriggerEvent('apartments:client:SetHomeBlip', 'sr_drive_a') -- redraw the blips, this one as homeLos dos primeros solo se abren mientras el jugador está dentro de un apartamento.
Saber cuándo un jugador llega a casa
Apartments dispara dos eventos de cliente, pensados para scripts que funcionan dentro de las viviendas:
AddEventHandler('weed:handleEnterZone', function(apartmentId)
-- the player just walked in
end)
AddEventHandler('weed:handleExitZone', function()
-- the player just left
end)Mientras un jugador está en casa, los metadatos de su framework también guardan inside.apartment.apartmentType (el edificio) y inside.apartment.apartmentId, como hacía qb-apartments.
Muebles con tu propio evento#
Cualquier pieza puede hacer algo tuyo: un portátil que abre un ordenador, una rocola, una caja fuerte. Incluye su modelo en Config.DynamicFurnitures con un evento y un offset — dónde se sitúa el aviso sobre el modelo:
-- config/furniture.lua
Config.DynamicFurnitures = {
['prop_laptop_01a'] = {
event = 'my-laptop:open',
offset = { x = 0.0, y = 0.0, z = 0.3 },
},
}Cuando un jugador ha colocado ese modelo, al situarse junto a él se muestra [E] - Interact — o Interact with object con un target — y el evento se dispara en su cliente con el ID de la pieza:
-- client side, in your resource
AddEventHandler('my-laptop:open', function(furnitureId)
-- furnitureId is unique to this placed piece
end)El modelo también debe ser una pieza de una categoría de muebles, o los jugadores no tendrán nada que comprar. No uses event en una pieza que ya sea un stash o un armario.
Sobre los mensajes#
Todo lo que lee un jugador viene de locales/<language>.json, en el idioma definido por Config.Locale. Para cambiar el texto de un aviso o una notificación, edítalo ahí — las claves se agrupan según dónde aparecen: entrance_menu, drawtext, vault_code, decorate, furniture_creator, junk, cleaner.



