Comandos#
Los comandos de jugador funcionan para cualquiera donde tienen sentido. Los comandos de creador requieren ser administrador o tener el trabajo Config.CreatorJobs. Los comandos de administrador requieren el grupo de administración del framework: ESX admin / superadmin, QBCore god / admin.
Comando | Quién | Descripción |
|---|---|---|
| Propietario del garaje | Gestión del garaje privado en el que estás: dar llaves, titulares de llaves, vender. |
| Propietario del garaje | Modo de decoración dentro de tu garaje privado. |
| Todos | Activa o desactiva la música del garaje para ti. |
|
| Abre el formulario de depósito para el coche más cercano: depósito, tiempo, tarifa, pago para liberar y nota. |
| Miembros del trabajo | En el garaje de tu trabajo: añade a la flota del trabajo el coche que posees y en el que estás sentado, o retira uno de ella. |
| Creador | Crear, editar, eliminar garajes y teletransportarse a ellos. |
| Creador | El Furniture Creator. El nombre es |
| Administrador | Entrega un coche a un jugador; se deja en el depósito. Sin matrícula, se genera una aleatoria. |
| Administrador | Registra a nombre de ese jugador el coche en el que estás sentado. |
| Administrador o trabajo de depósito | Envía el coche con propietario más cercano al depósito (un coche de trabajo vuelve a su garaje de trabajo). Úsalo en lugar de |
| Administrador o consola | Envía al depósito todos los coches persistentes sin nadie al volante. |
| Administrador, ACE o trabajo | Reparación completa instantánea del coche en el que estás o junto al que estás. El acceso se configura en |
| Administrador | Te teletransporta a donde se vio por última vez un coche persistente. |
| Consola | Vuelve a añadir los garajes predeterminados que se eliminaron. Los garajes existentes no se tocan. |
| Consola | Mueve al depósito de su tipo todos los coches guardados en un garaje que ya no existe. |
Dar /repairvehicle a un grupo de staff mediante ACE:
add_ace group.admin qs-advancedgarages.repairvehicle allowExports de cliente#
Para abrir garajes desde tus propios scripts (una app del teléfono, una entrada radial, una puerta de housing) y leer lo que existe.
Abrir y cerrar un garaje
-- Open the garage menu of a garage by name
exports['qs-advancedgarages']:OpenGarageMenu('Legion Square', false) -- (garage, isImpound)
-- Aircraft garages and impounds open as a list
exports['qs-advancedgarages']:OpenPlaneGarageList('Airport Hangar')
-- Close the menu and put the player back
exports['qs-advancedgarages']:closeMenu()
-- true while the player is in a garage menu or inside a garage interior
local busy = exports['qs-advancedgarages']:usingGarages()Combina OpenGarageMenu con el interruptor Allow open garage menu del creador desactivado para abrir un garaje solo desde tu propio script.
Leer garajes
-- Every garage, as plain tables. true also includes the job garages.
local garages = exports['qs-advancedgarages']:GetAllGarages(true)
for name, garage in pairs(garages) do
print(name, garage.type, garage.isJobGarage, garage.coords.menuCoords.x)
end
-- Only the garages this player owns
local mine = exports['qs-advancedgarages']:GetGarages()
-- Sell one of them (as the Sell button does)
exports['qs-advancedgarages']:SellGarage('Del Perro Private')GetAllGaragesPlainData es lo mismo que GetAllGarages.
Embargar desde tu propio script
-- The same as /impound, without the job check
exports['qs-advancedgarages']:ImpoundVehicle()
-- Only the form: returns what the officer filled in, or nil if cancelled
local form = exports['qs-advancedgarages']:OpenImpoundForm('vehicle') -- or an entity, 'boat', 'plane'
if form then
-- form = { garage, price, time, getByPay, note }
TriggerServerEvent('my-mdt:impound', plate, form) -- then call the server export impound()
endReparar
exports['qs-advancedgarages']:RepairNearestVehicle() -- the car you are in or next to
exports['qs-advancedgarages']:RepairSpecificVehicle('ABC123') -- by exact plate textAmbos borran también las abolladuras guardadas, así que la reparación se mantiene al guardar el coche.
Decoración e interiores
-- Is the player decorating right now?
local decorating = exports['qs-advancedgarages']:inDecorate()
-- Add a piece to a furniture category from another resource
exports['qs-advancedgarages']:AddFurniture('sofa', {
object = 'prop_couch_01', label = 'Leather Couch', price = 1500,
img = 'https://...', description = 'Comfortable',
})
-- Add a shell model to the list the creator offers
exports['qs-advancedgarages']:AddShell({ model = 'my_garage_shell' })Un garaje temporal en tiempo de ejecución
exports['qs-advancedgarages']:CreateGarage('event-parking', {
type = 'vehicle',
available = true,
coords = {
menuCoords = vector3(832.22, -1264.15, 26.29),
spawnCoords = vector4(832.22, -1264.15, 26.29, 180.0),
},
})El garaje existe hasta el siguiente reinicio y no se escribe en la base de datos. Para un garaje permanente usa /garagecreator.
Exports de servidor#
Cómo otro recurso controla los garajes: un MDT que embarga, una recompensa que entrega un coche, un script que hace aparecer vehículos con propietario o cambia su matrícula.
impound
Embarga un coche con propietario que está fuera en el mundo. Todas las opciones son opcionales.
local ok, garage = exports['qs-advancedgarages']:impound(plate, {
garage = 'Hayes Autos', -- an impound of the vehicle's type; default: Config.DefaultImpounds / nearest
price = 1500, -- release fee
time = 30 * 60, -- seconds before it can be released
getByPay = true, -- may pay to release before the time ends
note = 'Illegally parked', -- shown to the owner
source = officerId, -- officer to notify and log
})
if not ok then print('Could not impound', plate) endRechaza una matrícula que no pertenece a nadie, o un coche que no está fuera.
GiveVehicle
Hace lo mismo que /givecar, en nombre de un administrador source.
-- (admin source, { target id, model, plate? }, 'vehicle' | 'boat' | 'plane')
exports['qs-advancedgarages']:GiveVehicle(source, { targetId, 'sultan', 'GIFT01' }, 'vehicle')SpawnVehicle
Hace aparecer un vehículo con propietario como coche persistente, busca un lugar libre cerca de las coordenadas y entrega las llaves.
-- (vehicle row id, owner identifier, type, coords vec4, props, source?, warp?, exactCoords?)
local data = exports['qs-advancedgarages']:SpawnVehicle(row.id, row.owner, 'vehicle', coords, props, source, true)
-- data = { id, type, entity, netID, vehicle, plate, owner }Persistencia
Para tiendas de vehículos y scripts que hacen aparecer coches con propietario por su cuenta:
-- Make an existing, owned, networked car persistent
exports['qs-advancedgarages']:setVehicleToPersistent(netId)
-- Save and remove it: into a garage, or to the impound when no garage is given
-- (to the recovery point instead with Config.Impound.Enabled = false)
exports['qs-advancedgarages']:removeVehicleFromPersistent(plate, 'Legion Square')
-- Forget and delete the entity without touching the database
exports['qs-advancedgarages']:dropPersistentEntity(plate)
-- Replace its saved properties (the whole table), written to the database at once
exports['qs-advancedgarages']:updatePersistentVehicleProps(plate, props)
-- Change the plate of a persistent car, on the car and in the database
exports['qs-advancedgarages']:updateVehiclePlate(oldPlate, newPlate)
-- /mdv on behalf of a player (same job/admin check)
exports['qs-advancedgarages']:deleteVehicle(source)Seguro
local insured = exports['qs-advancedgarages']:IsVehicleInsured(plate) -- true / false
local policy = exports['qs-advancedgarages']:GetVehicleInsurance(plate)
-- policy = { tier = 'kasko', owner, expiresAt, autoRenew } or nilLeer garajes
local garages = exports['qs-advancedgarages']:GetAllGarages(true) -- true includes job garages
local impounds = exports['qs-advancedgarages']:getImpoundGarages() -- only impoundsEventos#
Evento | Lado | Uso |
|---|---|---|
| Servidor, escuchar | Se dispara con |
| Cliente, disparar | Guarda el coche en el que está el jugador, en el garaje en el que se encuentra. |
| Cliente, disparar | Lo usan los scripts de housing para dar a una casa su garaje e indicar a los garajes quién tiene la llave. |
Los exports que reciben una matrícula la esperan exactamente como está guardada. Recórtala primero si viene de
GetVehicleNumberPlateText, que rellena las matrículas con espacios.



