Antes de empezar#
Antes de instalar Bus Driver Job, asegúrate de que tu servidor cumple los requisitos mínimos. Tres cosas son obligatorias — la base de datos, ox_lib y un framework; todo lo demás es opcional.
Requisito | Estado | Notas |
|---|---|---|
| Obligatorio | Acceso a la base de datos. El esquema se instala solo. |
| Obligatorio | Callbacks del servidor y el programador que actualiza y reinicia las clasificaciones. |
Framework | Obligatorio | ESX ( |
Target | Opcional |
|
Llaves de vehículos | Opcional | Entrega al conductor las llaves del autobús. Se detectan once sistemas de llaves por sí solos. |
Ropa | Opcional |
|
Combustible | Opcional |
|
| Opcional | Dibuja los avisos [E] como interfaz de texto 3D en lugar de texto plano. |
Todo lo específico del framework o de terceros está detrás de un pequeño archivo puente abierto, y el recurso elige el correcto mirando lo que ya está en ejecución:
Capa | Cómo se elige |
|---|---|
Framework | Detectado: |
Llaves de vehículos | Detectado: qs-vehiclekeys · qb-vehiclekeys · qbx_vehiclekeys · F_RealCarKeysSystem · fivecode_carkeys · glfp10_carkeys · mono_carkeys · ti_vehicleKeys · vehicles_keys · wasabi_carlock · xd_locksystem |
Avisos 3D | Detectado: |
Pagos de rutas | Detectado: |
Target, combustible, qs-inventory | Se activan a mano en |
Cada integración opcional se desactiva en silencio cuando falta su recurso — no se entrega ninguna llave, el depósito se queda como apareció y el aviso se dibuja como texto plano. Integraciones tiene los detalles de cada una.
github.comReleases · overextended/oxmysqlMySQL resource for FXServer.github.comReleases · overextended/ox_libA FiveM resource and script library for Lua and JS.Descargar Bus Driver Job#
Después de comprar Bus Driver Job, el recurso se vincula automáticamente a tu cuenta de CFX Portal.
Inicia sesión en CFX Portal con la misma cuenta que usaste al finalizar la compra, abre Granted Assets y descarga Bus Driver Job.
Después de extraer la descarga, deberías tener las siguientes carpetas:
[busjob]/
├── qs-busjob/
│ ├── config/ -- config.lua and translations.lua: what you edit
│ ├── client/ -- framework/, vehiclekeys/ and clothing.lua are open
│ ├── server/ -- framework/ and missions.lua are open
│ ├── web/build/ -- the interface, ready to run
│ └── fxmanifest.lua
└── [sql]/
└── qs-busdriver.sql -- optional: the same schema the resource builds itselfLa carpeta debe llamarse
qs-busjob. El recurso comprueba su propio nombre al iniciarse: una copia renombrada muestra You have renamed the script! y congela la consola del servidor. Además, cada export se llama a través de ese nombre —exports['qs-busjob'].
Instalar el recurso#
Mueve la carpeta qs-busjob al directorio de recursos de tu servidor. Puede estar en cualquier lugar dentro de él, incluida una carpeta de categoría:
resources/
└── [qs]/
└── qs-busjob/Una vez copiada, abre tu server.cfg y asegúrate de que cada dependencia — y todo lo que debe detectar — se inicia antes que Bus Driver Job:
ensure oxmysql
ensure ox_lib
# Framework
ensure es_extended
# ensure qb-core
# ensure qbx_core
# Optional: target, keys, fuel, 3D prompts
ensure ox_target
ensure qs-vehiclekeys
ensure LegacyFuel
ensure qs-textui
ensure qs-busjobEl orden de carga importa. La detección solo ve los recursos que ya están iniciados: un script de llaves que se inicia después nunca se usa, y un framework que se inicia después deja el trabajo sin ningún framework — sin despachador, sin blip y sin rutas.
La base de datos#
No hay ningún archivo SQL que importar. Bus Driver Job crea sus propias tablas en el primer inicio, todas con el prefijo qs_busdriverjob, y añade cualquier columna que le falte a una instalación anterior:
Tabla | Contiene |
|---|---|
| El nivel y la experiencia de cada conductor, además de la experiencia y las ganancias históricas, de temporada y diarias para las clasificaciones. |
| Una fila de control que registra cuándo se reiniciaron por última vez las clasificaciones diaria y de temporada. |
| Premios de clasificación guardados para un ganador que estaba desconectado en el reinicio, pagados en su siguiente inicio de sesión. |
| El último top tres de cada clasificación, mostrado como los últimos ganadores en Statistics. |
En ESX también registra cada trabajo listado en Config.busdriverjob en las tablas jobs y job_grades con un rango (0, driver). Y ajusta la collation de sus columnas identifier a la de tu framework — users.identifier en ESX, players.citizenid en QBCore — para que la clasificación funcione en MariaDB 11.4 y posteriores, donde cambió la collation predeterminada.
[sql]/qs-busdriver.sqlsolo sirve para preparar una base de datos fuera del servidor, o para leer lo que el recurso va a crear. Cada sentencia que contiene esIF NOT EXISTSoINSERT IGNORE, así que importarlo no cambia nada y es seguro ejecutarlo dos veces.
Dar el trabajo a los jugadores#
Cualquiera puede abrir el panel del trabajo y consultar las estadísticas. Lo que requiere el trabajo es iniciar una ruta — por defecto bus_driver, y el blip del depósito solo se muestra a los jugadores que lo tienen.
Nada que crear — el primer inicio registra bus_driver con el rango 0. Contrata a alguien desde el juego:
/setjob <server id> bus_driver 0QBCore guarda sus trabajos en un archivo en lugar de la base de datos, así que añade el trabajo a qb-core/shared/jobs.lua y reinicia el servidor:
['bus_driver'] = {
label = 'Bus Driver',
defaultDuty = true,
offDutyPay = false,
grades = {
['0'] = { name = 'Driver', payment = 10 },
},
},Después contrata a alguien con /setjob <server id> bus_driver 0.
Añade el trabajo a qbx_core/shared/jobs.lua y reinicia el servidor:
['bus_driver'] = {
label = 'Bus Driver',
defaultDuty = true,
offDutyPay = false,
grades = {
[0] = { name = 'Driver', payment = 10 },
},
},Después contrata a alguien con /setjob <server id> bus_driver 0.
Para usar un trabajo que ya tienes, o varios, lístalos; para dejar conducir a cualquiera, desactiva el requisito:
-- config/config.lua
Config.RequireJob = true -- false lets anyone take a route, without a job
Config.busdriverjob = {
['bus_driver'] = true,
-- ['bus'] = true, -- e.g. the bus job QBCore ships with
}Configurar el recurso#
Todo lo que normalmente cambias está en un solo archivo, config/config.lua, dividido en secciones numeradas. Los demás archivos abiertos son puentes que solo tocas para dar soporte a algo nuevo:
Archivo | Contenido |
|---|---|
| El trabajo, la interacción, el despachador, los autobuses y las plazas, las rutas, los niveles, los pasajeros y las tarifas, la clasificación, el marcador, la depuración y los webhooks de Discord. |
| El idioma ( |
| El uniforme del conductor, masculino y femenino, al principio del archivo. |
| Un puente por sistema de llaves. |
| Los puentes de ESX y QBCore: cuentas de dinero, identificadores, comprobaciones de trabajo y la aparición del autobús. |
| Las tres misiones opcionales de qs-inventory. |
Los valores que conviene revisar primero:
Config.RequireJob = true -- false: anyone may take a route
Config.Target = false -- true: third-eye on the dispatcher instead of E
Config.TargetScript = 'ox' -- 'ox' or 'qb'
Config.Clothing = true -- driver uniform while on a route
-- Where the dispatcher stands, where buses appear, where they are handed back
Config.StartJob.ped.coords = vector4(846.8366, -1948.2135, 28.9644, 132.5054)
Config.VehicleSpawnCoords = { vector4(839.7751, -1934.2310, 28.9909, 353.2833), ... }
Config.DeliverBusCoords = vector3(847.8856, -1952.8138, 28.99)
Config.Fuel = false -- true to fill the tank on spawn
Config.FuelExport = exports['LegacyFuel'] -- your fuel resource
-- config/translations.lua
Config.Language = 'en' -- en · it · es · fr · pt · de · ru · tr · nl · cn · zh-twLa configuración se lee cuando se inicia el recurso, así que aplica los cambios con
restart qs-busjob. Un reinicio termina cada ruta en curso y retira su autobús, así que hazlo cuando nadie esté conduciendo. Cada opción aparece en la referencia de configuración.
Verificar la instalación#
Después de completar la instalación, reinicia tu servidor y lee la consola. En el primer inicio verás las líneas de lo que el recurso tuvo que hacer — el trabajo de ESX y la corrección de collation si tu base de datos la necesitaba:
[qs-busjob] Registered the ESX job "bus_driver"
[qs-busjob] aligned 4 identifier column(s) to utf8mb4_uca1400_ai_ci, matching users.identifier.Una línea roja has not answered … after 10s significa que el framework no se inicia antes de qs-busjob. Después entra en tu servidor y haz el primer recorrido:
Encuentra el depósito
Un blip Bus Station marca el depósito para cualquiera que pueda conducir. El despachador está bajo un marcador azul flotante: acércate y pulsa E, o usa tu third eye si
Config.Targetestá activado. La cámara pasa al despachador y se abre el panel del trabajo.Toma una ruta
Elige Cityline Route, deja seleccionado el Bus y pulsa Start route. La pantalla se funde y apareces sentado en un autobús en el depósito, con uniforme y con las llaves.
Atiende las paradas
Sigue el GPS hasta la primera parada, detente junto a ella y pulsa E. El autobús se detiene mientras los pasajeros suben y bajan, y después se marca la siguiente parada.
Devuelve el autobús
Después de la última parada, vuelve al depósito y pulsa E en el punto de devolución. Te bajas, se retira el autobús y el pago llega con una notificación.
¿Algo no funciona bien? Activa
Config.Debug = truey reinicia: el recurso explica lo que está haciendo en la consola del servidor y en F8, lo que muestra hasta dónde llegó antes de detenerse. Vuelve a desactivarlo en un servidor en producción.



