Cómo funcionan las integraciones#
Todo lo que depende de otro recurso está detrás de un pequeño archivo puente sin cifrar en client/custom/, server/custom/ o custom/. Al iniciar, config/main.lua comprueba qué recursos compatibles están en ejecución y elige el puente correspondiente:
Capa | Compatibles | Sin él |
|---|---|---|
Framework | es_extended · qb-core · qbx_core | Obligatorio — el recurso no se iniciará. |
Inventario | qs-inventory · qb-inventory · ox_inventory · tgiann-inventory · origen_inventory | Sin stash, sin tienda y el selector de ítems del creador vacío. |
Target | ox_target · qb-target | Establece |
Llaves de vehículos | qs-vehiclekeys · qb-vehiclekeys · qbx_vehiclekeys · wasabi_carlock · MrNewbVehicleKeys · F_RealCarKeysSystem · fivecode_carkeys · glfp10_carkeys · mono_carkeys · ti_vehicleKeys · vehicles_keys · xd_locksystem | Los vehículos del garaje y las sillas de ruedas aparecen sin llaves. |
Combustible | qs-fuelstations · LegacyFuel · ox_fuel · cdn-fuel · ps-fuel · lj-fuel · okokGasStation · esx-sna-fuel · ti_fuel · BigDaddy-Fuel · lc_fuel (manual) | Se establece el nivel de combustible nativo. |
Ropa | qs-appearance · illenium-appearance · fivem-appearance · qb-clothing · codem-appearance · ak47_clothing · raid_clothes · rcore_clothes · rcore_clothing · sleek-clothestore · tgiann-clothing · p_appearance · mAppearance (manual) | QBCore abre qb-clothing; ESX abre un menú de conjuntos guardados desde esx_datastore. |
Menú de jefe | esx_society · qb-management | El punto de jefe indica que el sistema no es compatible. |
Facturación | esx_billing · qb-billing · qs-billing · okokBilling | La acción Bill muestra un error. |
Dispatch | origen_police · emergency_dispatch | Solo la lista Dispatch integrada en el menú EMS. |
Teléfono | qs-smartphone-pro · qs-smartphone · lb-phone | Solo se usa cuando las alertas de socorro por teléfono están activadas. |
Seguro | m-Insurance | Sin descuento al ingresar. |
Interfaz | qs-interface · qs-textui | Notificaciones integradas, text UI de ox_lib y círculo de progreso. |
Ejecuta un recurso por capa. Con dos sistemas de llaves o dos inventarios iniciados, se puede elegir cualquiera de ellos. La detección solo ve los recursos iniciados antes de
qs-medical-creatorenserver.cfg.
Frameworks#
es_extended carga el puente de ESX; qb-core y qbx_core cargan el puente de QBCore, que Qbox usa a través de su compatibilidad con QBCore. Los puentes están en custom/esx/ y custom/qb/ y contienen todas las llamadas al framework: dinero, ítems, trabajos, nombres, comprobaciones de administrador y el indicador de muerte.
Función | ESX | QBCore / Qbox |
|---|---|---|
Estado de muerte guardado en |
| metadatos |
Servicio | Cambio de trabajo con | El indicador de en servicio del trabajo |
Jefe | Nombre de rango | Rango con |
Administrador | Grupos |
|
Al reanimar | Reinicia esx_basicneeds | Reinicia hambre, sed y estrés |
Comandos adicionales |
|
|
¿Renombraste tu recurso de framework? Sustituye la detección por el valor a mano — Config.Framework = 'esx' o 'qb' — y apunta la línea exports['es_extended'] / exports['qb-core'] del puente al nuevo nombre.
Inventarios: stash y tienda#
El inventario decide cómo se abren el stash de EMS y la farmacia, y proporciona al selector de ítems del creador los nombres y las imágenes. El stash es personal para cada médico.
Inventario | Stash | Farmacia |
|---|---|---|
| Sí | A través de |
| Sí | La tienda del inventario. |
| Sí — se registra en el primer uso | Un menú de ox_lib; cada compra cobra en efectivo y entrega un ítem. |
| Sí | La tienda del inventario. |
| Sí | No incluida — añade una función |
El tamaño del stash viene de Config.DefaultStashData. Es posible ejecutarlo sin un inventario compatible para pruebas, pero la consola avisa cada pocos segundos — no está pensado para un servidor en producción.
Target y avisos#
Con Config.UseTarget = true, cada punto del hospital y el maletín médico se convierten en opciones de target — mediante ox_target cuando está en ejecución; si no, qb-target. El tamaño de la caja es Config.TargetWidth × Config.TargetHeight, y Config.ZoneDebug las dibuja. Con false, cada punto es un aviso flotante que se usa con E — dibujado por qs-textui si está en ejecución.
Notificaciones, text UI y barras de progreso#
Si qs-interface está en ejecución, se usan sus notificaciones y barras de progreso; si no, Medical Creator muestra sus propias notificaciones emergentes y el círculo de progreso de ox_lib. qs-textui sustituye el text UI de ox_lib de la misma forma. Todo está en custom/client.lua — cambia una función ahí para usar otro recurso de notificaciones o de progreso.
Facturación#
La acción Bill pide al médico una cantidad y factura al jugador más cercano:
Recurso | Qué ocurre |
|---|---|
| Una factura a |
| Una factura a |
| Una factura personalizada para la sociedad |
| La cantidad se cobra de inmediato del banco del paciente y se ingresa en la cuenta de qb-management del trabajo. |
Alertas de dispatch y teléfono#
Cuando un jugador derribado pulsa G, pueden ocurrir tres cosas:
Integrado: se notifica a los médicos en servicio y la llamada aparece en Dispatch en el menú EMS. Siempre activo, salvo que las alertas por teléfono lo sustituyan.
Recurso de dispatch: con
origen_policeoemergency_dispatchen ejecución, también se envía allí una alerta de "persona herida" con la ubicación. El texto está enclient/custom/dispatch/.Teléfono: con
Config.UsePhoneDistressSignal = true, se envía una alerta de trabajo con la ubicación a cada trabajo deConfig.Jobsen qs-smartphone, qs-smartphone-pro o lb-phone, en lugar de la lista integrada.
Ropa, llaves y combustible#
El punto de vestuario abre el menú de conjuntos de tu script de ropa. Los vehículos del garaje y las sillas de ruedas reciben llaves mediante tu sistema de llaves y el depósito lleno mediante tu script de combustible. Cada puente es un archivo en client/custom/wardrobe/, vehiclekeys/ o fuel/. lc_fuel y mAppearance tienen puentes pero no se detectan — configúralos a mano (consulta más abajo).
Seguro médico#
Con m-Insurance en ejecución, un jugador con un seguro médico válido paga menos al ingresar:
Config.InsuranceDiscount = {
checkIn = 0.5, -- 50% off the check-in price
}Otro script de seguros se conecta a través de server/custom/insurance/: una función HasHealthInsurance(source) que devuelve true o false.
Registros de Discord#
Cuatro canales, cada uno con su propio webhook en server/webhooks.lua. Deja uno vacío para desactivarlo.
Canal | Qué se envía |
|---|---|
| Cada muerte: asesino y víctima, arma y causa, o suicidio — con una captura de pantalla de la víctima. |
| Reanimaciones de administrador con |
|
|
| Hospitales creados, editados y eliminados, y por quién. |
-- server/webhooks.lua
Config.ShowWebhookIP = false -- true shows the player's IP in each log
_G['webhook'] = {
revive = 'https://discord.com/api/webhooks/...',
heal = '',
death = 'https://discord.com/api/webhooks/...',
creator = 'https://discord.com/api/webhooks/...'
}
_G['fivemanage'] = {
webhook = '' -- your FiveManage API token, for screenshots
}Cada registro identifica al jugador con su id de servidor y todos sus identificadores (Steam, Discord, license, FiveM). Las capturas de pantalla necesitan screenshot-basic en ejecución y un token de FiveManage. Los registros se ponen en cola, así que una ráfaga de muertes nunca alcanza el límite de solicitudes de Discord.
Mapas y bob74_ipl#
Medical Creator funciona en cualquier MLO de hospital — dibuja la zona a su alrededor y coloca las camas sobre sus propios props de cama. Si bob74_ipl está en ejecución, su interior de Pillbox se desactiva unos segundos después del inicio, y de nuevo cada vez que bob74_ipl se reinicia, para que nunca se superponga con el hospital_map incluido ni con tu MLO.
Anular la detección#
Cada capa en config/main.lua es una lista de nombres de recursos y el puente que elige cada uno. Para forzar uno, sustituye la detección por el valor del puente:
-- Auto, the default: the first started resource in the list wins.
Config.Fuel = DependencyCheck(fuels) or 'standalone'
-- Pinned by hand:
Config.Fuel = 'lc_fuel'
Config.Wardrobe = 'mAppearance'
Config.Inventory = 'ox_inventory'Vale la pena hacerlo cuando dos candidatos se ejecutan a la vez, cuando se renombró un recurso o para un puente que viene sin detección automática.
Añadir el tuyo#
Dar soporte a un recurso que no está en la lista requiere un archivo y una línea:
Copia el puente más parecido
Duplica un archivo de la misma carpeta — por ejemplo
client/custom/fuel/LegacyFuel.lua— y ponle el nombre de tu recurso.Cambia la guarda y las llamadas
El archivo empieza con una guarda como
if Config.Fuel ~= 'LegacyFuel' then. Pon ahí tu valor y luego sustituye los exports dentro de cada función por los de tu recurso.Regístralo
Añade
['my_fuel'] = 'my_fuel'a la lista correspondiente enconfig/main.lua, o fíjalo como se muestra arriba, y reinicia.
Las funciones que necesita cada tipo:
Tipo | Carpeta | Funciones |
|---|---|---|
Combustible |
|
|
Llaves |
|
|
Ropa |
|
|
Inventario |
|
|
Menú de jefe |
|
|
Dispatch |
|
|
Teléfono |
|
|
Un recurso de target diferente se conecta en client/custom/target/main.lua, y un framework diferente duplicando custom/esx/ o custom/qb/.
Idiomas#
Se incluyen 27 traducciones en locales/. Establece Config.Locale en uno de estos:
ar · bg · ca · cs · da · de · el · en · es · fa · fr · hi · hu · it · ja · ko
nl · no · pl · pt · ro · ru · sl · sv · th · tr · zh-CNUn texto que falte recurre al inglés, así que una traducción parcial nunca rompe la interfaz. Para un idioma nuevo, copia locales/en.json a un código nuevo, tradúcelo y establece Config.Locale en ese código.



