Antes de empezar#
Antes de instalar Treasure Hunting, asegúrate de que tu servidor cumple los requisitos mínimos. Tres cosas son obligatorias — oxmysql, ox_lib y un framework — y todo lo demás se detecta a partir de los recursos que ya usas.
Requisito | Estado | Notas |
|---|---|---|
| Obligatorio | Los niveles, la experiencia, las ganancias y la clasificación se guardan en MySQL o MariaDB. |
| Obligatorio | Callbacks, la barra de progreso y el cron que reinicia la clasificación. |
Framework | Obligatorio |
|
Inventario | Opcional | Con ox_inventory y qs-inventory se comunica directamente; cualquier otro recurre a las funciones de ítems del propio framework. |
Target | Opcional |
|
Llaves de vehículos | Opcional | Da y quita las llaves de un barco alquilado. Se detectan once sistemas; consulta Integraciones. |
| Opcional | Se usan para la barra de progreso y los avisos 3D cuando están en ejecución. En caso contrario, ox_lib y texto integrado. |
Cada integración opcional se degrada por sí sola: un servidor sin target, sin sistema de llaves y sin interfaz de Quasar sigue ejecutando cada búsqueda de principio a fin.
github.comReleases · overextended/oxmysqlMySQL resource for FXServer.github.comReleases · overextended/ox_libA FiveM resource and script library for Lua and JS.Descargar Treasure Hunting#
Tras comprar Treasure Hunting, el recurso se vincula automáticamente a tu cuenta del CFX Portal.
Inicia sesión en el CFX Portal con la misma cuenta que usaste al finalizar la compra, abre Granted Assets y descarga Treasure Hunting. Con otra cuenta el asset no aparece.
Tras extraer la descarga, deberías tener la siguiente carpeta:
[treasurehunting]/
├── [img]/ -- item pictures for your inventory
├── [sql]/qs-TreasureHunter.sql -- optional, the resource builds the tables itself
├── items.lua -- every item, ready to copy into your inventory
├── qs-treasure-hunter/ -- the script
└── qs-treasure-hunter-props/ -- the streamed metal detector modelSe necesitan ambos recursos.
qs-treasure-hunter-propstransmite el modeloskv_metaldetector; sin él, el detector nunca aparece en las manos del jugador.
Instalar el recurso#
Mueve la carpeta [treasurehunting] completa al directorio de recursos de tu servidor:
resources/
└── [qs]/
└── [treasurehunting]/Luego abre tu server.cfg e inicia los dos recursos después de todo aquello de lo que leen:
ensure oxmysql
ensure ox_lib
# Your framework
ensure qb-core # or es_extended / qbx_core
# Optional integrations
ensure ox_inventory # or qs-inventory, qb-inventory...
ensure ox_target # or qb-target
ensure qs-vehiclekeys # or any supported key system
# Treasure Hunting
ensure qs-treasure-hunter-props
ensure qs-treasure-hunterEl orden importa. El framework, el inventario y el sistema de llaves se detectan a partir de los recursos que ya están iniciados cuando se inicia Treasure Hunting, así que nada de lo que se inicie después se ve.
La base de datos#
No hay nada que importar. En su primer inicio, el recurso crea sus tablas, añade cualquier columna que le falte a una instalación anterior y alinea la collation de sus columnas identifier con la de tu framework, para que la clasificación pueda unirlas en cualquier versión de MySQL o MariaDB.
Tabla | Contenido |
|---|---|
| Una fila por personaje: nivel, experiencia, y la experiencia y las ganancias históricas, de temporada y diarias. |
| Una única fila de control con la fecha del último reinicio diario y de temporada, para que ningún reinicio pague dos veces. |
| Dinero de la clasificación que se debe a ganadores que estaban desconectados en el reinicio, pagado la próxima vez que entren. |
| El último podio diario y de temporada, mostrado como los ganadores anteriores en la vista de estadísticas. |
El trabajo en sí solo es necesario cuando Config.RequireJob es true. Por defecto, cualquiera puede buscar tesoros.
Nada que hacer. Cada trabajo de Config.TreasureHunterJob se escribe en jobs y job_grades al iniciar si aún no existe, con un único grado Novice.
QBCore guarda los trabajos en un archivo, no en la base de datos. Añade esto a qb-core/shared/jobs.lua:
['treasure_hunter'] = {
label = 'Treasure Hunter',
defaultDuty = true,
offDutyPay = false,
grades = {
['0'] = { name = 'Novice', payment = 10 },
},
},Añade el mismo trabajo a qbx_core/shared/jobs.lua, usando claves numéricas para los grados:
['treasure_hunter'] = {
label = 'Treasure Hunter',
defaultDuty = true,
offDutyPay = false,
grades = {
[0] = { name = 'Novice', payment = 10 },
},
},
[sql]/qs-TreasureHunter.sqlhace exactamente lo mismo que el primer inicio. Importarlo es opcional — útil para preparar una base de datos fuera del servidor — y seguro de ejecutar dos veces, ya que cada sentencia esIF NOT EXISTSoINSERT IGNORE.
Registrar los ítems#
El recurso no crea ítems: da y quita los que conoce tu inventario. Copia las entradas que necesites de items.lua al archivo de ítems de tu inventario, y las imágenes de [img]/ a su carpeta de imágenes. Un ítem configurado pero no registrado se nombra en la consola del servidor y en una notificación, así que es fácil detectar uno que falte.
Ítem | Usable | Qué es |
|---|---|---|
| Sí | Saca o guarda el detector. Necesario para la búsqueda con detector de metales. |
| Sí | Pone o quita la máscara y la botella. Solo cuando |
| Sí | Reduce el círculo en una búsqueda con detector de metales. Se destruye al usarlo. |
| Sí | Reduce el círculo en una búsqueda submarina. Se destruye al usarlo. |
| No | Se gastan automáticamente al abrir una caja o un cofre antiguo. |
| No | Hallazgos comunes de la playa y el mar. |
| No | Mejores hallazgos de las búsquedas con detector y submarinas. |
| No | Botín de cofres antiguos y legendarios. |
Los cuatro ítems usables tienen que llamar a los exports de cliente del recurso. Elige el formato de tu inventario:
En ox_inventory/data/items.lua:
['metal_detector'] = {
label = 'Metal Detector', weight = 8000, stack = false,
client = { export = 'qs-treasure-hunter.toggleMetalDetector' },
},
['diving_gear'] = {
label = 'Diving Gear', weight = 8000, stack = false,
client = { export = 'qs-treasure-hunter.toggleDivingGear' },
},
['clue_map'] = {
label = 'Clue Map', weight = 100,
client = { export = 'qs-treasure-hunter.useClueMap' },
},
['treasure_map'] = {
label = 'Treasure Map', weight = 100,
client = { export = 'qs-treasure-hunter.useTreasureMap' },
},
['treasure_key'] = { label = 'Treasure Key', weight = 100 },
['ancient_key'] = { label = 'Ancient Key', weight = 200 },
['gold_nugget'] = { label = 'Gold Nugget', weight = 200 },
-- ...and the rest of the loot the same wayitems.lua ya está escrito en este formato. Descomenta los bloques y pégalos en tu archivo de ítems, por ejemplo:
['metal_detector'] = {
['name'] = 'metal_detector',
['label'] = 'Metal Detector',
['weight'] = 8,
['type'] = 'item',
['image'] = 'metal_detector.png',
['unique'] = false,
['useable'] = true,
['shouldClose'] = true,
['description'] = nil,
client = { export = 'qs-treasure-hunter.toggleMetalDetector' },
},
['crushed_can'] = {
['name'] = 'crushed_can',
['label'] = 'Crushed Can',
['weight'] = 1,
['type'] = 'item',
['image'] = 'crushed_can.png',
['unique'] = false,
['useable'] = false,
['shouldClose'] = true,
['description'] = 'An old crushed can, not worth much but recyclable.'
},Un inventario que no puede llamar a un client.export al usarse sigue funcionando. Registra los ítems como ítems normales y activa esto en config/config.lua:
Config.RegisterUsableItemsManually = trueEl recurso registra entonces el detector, el equipo de buceo y cada mapa de Config.Maps como usables a través del propio framework.
Verificar la instalación#
Reinicia el servidor y lee la consola. Un primer inicio puede mostrar líneas como estas, y ninguna es un error:
[qs-treasure-hunter] Registered the ESX job "treasure_hunter"
[qs-treasure-hunter] Added missing column qs_treasure_hunter.total_experience
[qs-treasure-hunter] aligned 2 identifier column(s) to utf8mb4_uca1400_ai_ci, matching users.identifier.Luego entra en el servidor y completa el primer ciclo:
Habla con el buscador de tesoros
El NPC está junto al Alamo Sea en Sandy Shores, bajo el blip Treasure Hunter y un marcador flotante. Pulsa
E(o usa tu target) y se abre el panel del trabajo.Inicia la búsqueda con detector de metales
Elige Metal Detector Hunt y pulsa Start mission. Aparece un círculo verde en el mapa, y se te entrega un detector si no tienes uno.
Rastrea y excava
Usa el ítem del detector, mantén pulsado el clic derecho para rastrear y sigue la señal hasta que aparezca el aviso de excavar. Termina todos los cofres y la búsqueda paga. A partir de ahí, Uso explica las otras dos búsquedas.
Todo lo que probablemente cambiarás — pagos, precios, ubicaciones, ventajas y recompensas — está en
config/config.lua. Configuración recorre cada sección.



