Comandos#
Comando | Quién | Qué hace |
|---|---|---|
| Administrador | Abre el creador: la lista de tiendas, el mapa y cada ajuste del servidor. |
| Administrador | Repara por completo el vehículo en el que estás. El nombre es el ajuste |
| Consola del servidor | Restablece un sistema de conducción a sus valores por defecto: |
Las tres teclas no son comandos, pero igualmente encajan aquí: la tablet es F6, el menú radial del mecánico es F5 y el nitro es LSHIFT, todas reasignables por el jugador en Settings → Key Bindings → FiveM. El valor por defecto del nitro viene de un ajuste, y el juego solo lo toma al arrancar, así que cámbialo y reinicia el recurso.
Exports del cliente#
Para manejar los trabajos de mecánico desde tus propios scripts — un script de trabajo, una misión, una grúa propia.
Reparaciones y trabajos rápidos
Cada uno sigue el mismo camino que el menú radial, incluido el requisito de ítem y la prueba de habilidad, y cada uno se registra en el historial de servicio de la tienda.
exports['qs-mechanic-creator']:PerformFullRepair()
exports['qs-mechanic-creator']:PerformBodyRepair()
exports['qs-mechanic-creator']:PerformEngineRepair()
exports['qs-mechanic-creator']:WashVehicle()
exports['qs-mechanic-creator']:FlipVehicle()
exports['qs-mechanic-creator']:FuelVehicle()El propio menú radial
Útil si prefieres abrirlo desde tu propio menú en lugar de con una tecla.
exports['qs-mechanic-creator']:OpenRadialMenu()
exports['qs-mechanic-creator']:CloseRadialMenu()Daño en las ruedas
Para un script de garaje o almacenamiento de vehículos que quiera gestionar el daño por sí mismo en lugar de dejar que se reaplique automáticamente — restaurándolo antes de que alguien suba, por ejemplo.
-- Which wheels are currently broken off. Returns a list of wheel indices,
-- or an empty table when the vehicle has none.
local broken = exports['qs-mechanic-creator']:GetVehicleWheelDamage(vehicle)
-- Put the stored damage back on a vehicle that was just respawned.
exports['qs-mechanic-creator']:ApplyVehicleWheelDamage(vehicle)Fuera de carretera
-- Clears the mud state from a vehicle's wheels.
exports['qs-mechanic-creator']:ForceResetVehicleWheels(vehicle)El vestuario
Para que un script de ropa o de servicio sepa si alguien lleva ropa de trabajo, y mantenga a salvo su propio atuendo.
local atWork = exports['qs-mechanic-creator']:IsInWorkWear()
local civilian = exports['qs-mechanic-creator']:GetCivilianClothing()
exports['qs-mechanic-creator']:SetCivilianClothing(clothing)Exports del servidor#
Cómo otro recurso maneja Mechanic Creator — un banco, un script de nóminas, un recaudador de impuestos o un flujo de facturación propio.
GetMechanicBalance
El dinero que tiene una tienda. Se lee de la base de datos y no de una caché, así que es la cifra contra la que realmente se mide un gasto.
local balance = exports['qs-mechanic-creator']:GetMechanicBalance(mechanicId)
-- returns a number; 0 when there is no such shopAddMechanicBalance
Ingresa dinero en los fondos de una tienda y lo registra en su libro de cuentas como depósito, donde la tablet lo muestra como ingreso.
-- mechanicId the shop the money goes to
-- amount a positive number; anything else is refused
-- reason optional, what the ledger will show
-- (defaults to your resource name, which is recorded either way)
local ok, balance = exports['qs-mechanic-creator']:AddMechanicBalance(
mechanicId, 5000, 'Weekly subsidy'
)
-- returns true and the resulting balance, or false when the shop does not existRemoveMechanicBalance
Retira dinero de los fondos de una tienda y lo registra como retirada. El saldo nunca baja de cero, y el cálculo se hace en la base de datos bajo un bloqueo, así que dos llamadas en el mismo tick no pueden dejarlo en negativo entre ambas.
local paid, available = exports['qs-mechanic-creator']:RemoveMechanicBalance(
mechanicId, 2500, 'Business tax'
)
-- returns false when the shop cannot cover it, with what it does hold,
-- so you can say how short it is
if not paid then
print(('The shop only has %d'):format(available))
endGetMechanicByJob
La tienda que atiende un trabajo o banda del framework, para un script que conoce el trabajo pero no la tienda. Un dueño tiene prioridad sobre un trabajo, la misma regla que aplica la comprobación de permisos, así que una tienda que alguien compró deja de responder al trabajo que quedó en ella. El nombre se compara igual que en esa comprobación: sin espacios sobrantes y sin distinguir mayúsculas, y cuenta cualquiera de los trabajos de una tienda — una tienda atendida por mechanic, bennys responde a ambos.
local mechanicId, all = exports['qs-mechanic-creator']:GetMechanicByJob('mechanic')
-- returns the shop id, or nil when no shop is staffed by that job.
-- A job with more than one shop answers with the first by id and hands you
-- the whole sorted list as a second value.SendEngineSwapInvoice
Factura a un cliente un motor a través del recurso de facturación que uses, abonándolo a la tienda. Útil cuando el cambio lo organizó tu propio script y no el portátil.
-- customerSource the player being billed
-- engineName what appears on the invoice
-- mechanicShopId the shop the money goes to
-- overrideAmount optional; omit to use the catalogue price
exports['qs-mechanic-creator']:SendEngineSwapInvoice(
customerSource, engineName, mechanicShopId, overrideAmount
)Vestuarios
local outfits = exports['qs-mechanic-creator']:GetWardrobe(shopId)
local all = exports['qs-mechanic-creator']:GetAllWardrobes()Exports de ítems#
Son lo que llama un inventario cuando un jugador usa uno de los cuatro ítems. No los llamas tú — los indicas en la lista de ítems de tu inventario, algo que Ítems de inventario explica por completo.
Ítem | Export del servidor | Export del cliente |
|---|---|---|
|
|
|
| Mismo nombre que el ítem | Mismo nombre que el ítem |
Webhooks de Discord#
Un sistema de registro completo, configurado en un solo archivo: server/custom/webhooks.lua. Diez categorías que cubren más de treinta y cinco eventos individuales, cada uno activable por separado, con limitación de frecuencia para que Discord no te limite.
Crea los webhooks en Discord
Server Settings → Integrations → Webhooks. Crea uno por cada canal en el que quieras repartir los registros y copia cada URL. Usar una sola URL en todas partes también está bien.
Pégalos
lua Webhooks.Enabled = true Webhooks.Links = { shop_management = "https://discord.com/api/webhooks/...", employee_management = "https://discord.com/api/webhooks/...", orders = "https://discord.com/api/webhooks/...", modifications = "https://discord.com/api/webhooks/...", society = "https://discord.com/api/webhooks/...", garage = "https://discord.com/api/webhooks/...", items = "https://discord.com/api/webhooks/...", repairs = "https://discord.com/api/webhooks/...", towing = "https://discord.com/api/webhooks/...", errors = "https://discord.com/api/webhooks/..." }Quita lo que no quieras
Cada categoría tiene su propio indicador
enabledy una lista de eventos individuales debajo, enWebhooks.Events. Una categoría sin URL simplemente no registra nada.
Categoría | Registra |
|---|---|
| Tiendas creadas, editadas y eliminadas. |
| Contrataciones, despidos y cambios de permisos. |
| Pedidos realizados y completados, y las piezas realmente instaladas. |
| Entradas y salidas de dinero de los fondos de una tienda. |
| Vehículos guardados y sacados; remolques y volteos. |
| Uso de ítems, y cada reparación realizada. |
| Problemas que encontró el recurso. Conviene enviarlos a un canal privado. |
Rechazar una acción#
Dos hooks en config/config.lua te permiten poner tu propia condición delante de cualquier acción de mecánico — una licencia que exija tu servidor, una comprobación de servicio, un cooldown propio.
-- Return false to refuse. Leave as nil to allow everything.
Config.CanPerformMechanicAction = nil
-- Runs just before an allowed action. Leave as nil to do nothing.
Config.BeforeMechanicAction = nilAmbos vienen como nil, y el archivo documenta los argumentos que recibe cada uno encima del ajuste.



