SCRIPT

Documentación de Mesas de crafteo

Otra Vida Crafteo (ov_crafteo)

Que hace

ov_crafteo agrega mesas de fabricacion a servidores FiveM con qb-core. Los jugadores convierten materiales de su inventario en armas, municion, accesorios o comida, con una interfaz propia de tres columnas, vista previa 3D del objeto y una cola de fabricacion que sigue corriendo aunque el jugador se desconecte.

Lo mas importante:

Requisitos

RequisitoDetalle
Frameworkqb-core
Dependencias declaradas en el fxmanifestqb-core, ox_inventory, ox_lib, oxmysql
Apuntado (opcional)Config.Target = { 'ov_target', 'ox_target' }: se usa el primero que este iniciado. Si ninguno esta, el recurso muestra el texto [E] al acercarse a la mesa
Maestria (opcional)Config.Maestria.recurso (por defecto sbr-mastery). Solo se usa si ese recurso esta iniciado y expone SubmitSample. Puedes desactivarlo con activo = false
Lua5.4 (lua54 'yes')
Base de datosMySQL o MariaDB, mediante oxmysql

Todos los ingredientes y resultados de las recetas deben existir como items en ox_inventory. Segun la guia del producto, una receta que usa un item inexistente se desactiva sola al arrancar y queda avisada en consola.

Instalacion

  1. Descarga el recurso desde el Portal de Cfx.re (seccion de assets comprados) con la cuenta Cfx.re con la que hiciste la compra. El recurso viene protegido con Asset Escrow de Cfx.re: solo funciona en servidores cuya clave de licencia pertenece a tu cuenta.
  2. Copia la carpeta ov_crafteo dentro de resources.
  3. Asegurate de que los items de las recetas existen en ox_inventory (hierro iron, acero steel, caucho rubber, chatarra metalscrap, plastico plastic, y los resultados que uses). Edita las recetas si tus items se llaman distinto.
  4. Agrega en server.cfg, despues de ox_lib, oxmysql, qb-core, ox_inventory y tu recurso de apuntado:
   ensure ov_crafteo
  1. Da el permiso de administracion:
   add_ace group.admin ov_crafteo.admin allow
  1. Inicia el servidor. No hay archivo .sql: al arrancar se crean solas las tablas ov_crafteo_cola y ov_crafteo_xp (CREATE TABLE IF NOT EXISTS).

El codigo no lee convars de server.cfg.

Archivos editables: en el fxmanifest.lua, escrow_ignore deja sin cifrar web/** (interfaz, estilos y modelos 3D), shared/config.lua y shared/locale.lua (textos). El resto del codigo (client/ y server/) va cifrado por Asset Escrow.

Configuracion

Todo esta en shared/config.lua. Opciones principales:

ClaveValor por defectoPara que sirve
Config.AcePermiso'ov_crafteo.admin'Permiso ACE de administracion (tambien salta las restricciones de grupo de las mesas)
Config.ComandoAdmin'crafteo_admin'Comando del menu de administracion
Config.Target{ 'ov_target', 'ox_target' }Recursos de apuntado que se prueban en orden
Config.Tecla38 (E)Tecla del aviso de texto cuando no hay apuntado
Config.IconoTarget'fa-solid fa-hammer'Icono de la opcion de apuntado
Config.DistanciaTarget2.0Distancia de apuntado
Config.MaxCantidad10Unidades maximas por pedido
Config.MaxPedidosPorMesa6Pedidos en cola por mesa y jugador
Config.MargenDistancia3.0Metros extra permitidos sobre el radio de la mesa
Config.LimiteAccionMs500Espera minima entre acciones
Config.LimiteAccionesMinuto40Acciones maximas por minuto
Config.XpBase10XP necesaria para pasar del nivel 1 al 2
Config.XpMultiplicador1.5Crecimiento de la XP requerida por nivel
Config.MaxNivel50Nivel maximo
Config.Maestriaactivo = true, recurso = 'sbr-mastery', actividadPorDefecto = 'fabricar', actividadPorCategoria = { armas = 'fabricar_arma' }Integracion opcional con maestria
Config.Blipsprite = 566, color = 2, escala = 0.7Marca de cada mesa en el mapa
Config.Categoriasarmas, municion, accesorios, cocinaCategorias, con label y descripcion
Config.Recetas20 recetas de ejemploCada una con categoria, nivel, xp, tiempo (ms por unidad), descripcion, ingredientes y resultado
Config.Modelos3D12 modelosReceta o item resultado a modelo .glb de web/modelos/
Config.Mesas15 mesas activas y una de cocina apagadaMesas con id, label, coords (vector4), radio, categorias y grupo

Cada mesa acepta grupo = { 'nombre' }: solo pueden usarla jugadores cuyo trabajo o banda coincida con alguno de esos nombres. Sin grupo, la mesa es abierta. Una mesa con enable = false o sin coords no se crea.

Las mesas y recetas incluidas son un ejemplo: las coordenadas son del mapa base y los nombres de grupo (armas, municiones) deben existir como trabajos o bandas en tu servidor, o quitarse. Modifica Config.Mesas a tu gusto.

Estructura de una receta:

WEAPON_PISTOL = {
    categoria = 'armas', nivel = 1, xp = 10, tiempo = 30000,
    descripcion = 'Pistola semiautomatica.',
    ingredientes = { { 'iron', 30 }, { 'steel', 20 }, { 'rubber', 5 } },
    resultado = { 'WEAPON_PISTOL', 1 },
},

Comandos y permisos

ElementoDetalle
/crafteo_adminMenu de administracion (nombre en Config.ComandoAdmin). Exige el permiso ACE
/crafteo_materiales [cantidad]Entrega al admin todos los materiales que usan las recetas (cantidad por defecto 100, entre 1 y 1000). Exige el permiso ACE. Util para pruebas
Permiso ACEov_crafteo.admin (Config.AcePermiso)
Tecla EAbre la mesa cuando no hay recurso de apuntado iniciado
Opcion de apuntadoAparece sobre la mesa como "Usar mesa de fabricacion" (texto definido en shared/locale.lua)

El recurso no define exports ni eventos pensados para otros scripts.

Como se usa

  1. Acercate a una mesa (tiene marca en el mapa). Apunta a la mesa con el ojo de interaccion, o pulsa E si aparece el aviso de texto.
  2. A la izquierda elige una categoria y una receta. Ves tu nivel y la barra de XP de la categoria.
  3. En el centro ves la vista previa 3D, la descripcion, el tiempo, la XP, el nivel requerido y los ingredientes con lo que tienes y lo que necesitas.
  4. Elige la cantidad (hasta el maximo configurado) y pulsa Fabricar. Los ingredientes se descuentan en ese momento.
  5. A la derecha ves tus materiales y la cola En fabricacion. Cuando un pedido termina, pulsa Reclamar.
  6. Puedes cerrar la interfaz y alejarte. El pedido avanza con el reloj del servidor y la cola se conserva si te desconectas.

Reclamar: entrega lo fabricado y suma la XP. Si no cabe en el inventario, el pedido sigue en la cola.

Borrar todo: cancela lo no terminado y devuelve el 100 % de los ingredientes. Si no hay espacio para devolver todo, no cancela nada. Lo ya terminado queda para reclamar.

La interfaz se cierra sola si el jugador muere o se aleja de la mesa.

Para administradores

  1. Escribe /crafteo_admin (con el permiso asignado). El menu permite ver las mesas, teletransportarte a una y recargar la configuracion sin reiniciar el recurso. La edicion de mesas y recetas desde el juego no esta incluida: se hace en shared/config.lua.
  2. Para agregar una mesa, anade una entrada a Config.Mesas con un id unico, label, coords, radio y categorias. Para restringirla, agrega grupo.
  3. Para agregar una receta, anade una entrada a Config.Recetas con los items reales de tu inventario. Para su modelo 3D, usa Config.Modelos3D (los modelos van en web/modelos/ y se declaran en web/modelos/index.json).
  4. Despues de editar, usa Recargar configuracion en el menu o reinicia el recurso.
  5. Para probar, /crafteo_materiales 100 te entrega los materiales de todas las recetas.
  6. Los datos de los jugadores estan en ov_crafteo_cola (pedidos) y ov_crafteo_xp (XP por categoria), asociados al citizenid.

Preguntas frecuentes

Me dice que no tengo acceso a la mesa. La mesa tiene grupo y el jugador no tiene ese trabajo ni esa banda. Cambia el grupo de la mesa o da el trabajo al jugador. Los admins con el permiso ACE saltan esta restriccion.

Reclame y no recibi nada. Si el inventario esta lleno, el pedido sigue en la cola. Hay que hacer espacio y reclamar de nuevo.

Los niveles desbloquean recetas? Cada receta tiene un campo nivel. Las recetas de ejemplo estan todas en nivel 1, asi que por defecto subir de nivel no desbloquea nada nuevo. Sube el nivel de las recetas que quieras bloquear.

Es obligatorio usar un sistema de maestria? No. Config.Maestria solo actua si el recurso indicado esta iniciado. Ponlo en activo = false para desactivarlo.

Como cambio los tiempos o el numero de unidades? Edita tiempo (milisegundos por unidad) en cada receta y Config.MaxCantidad.

Donde veo los errores? En la consola del servidor (mensajes [ov_crafteo]) y en la consola F8 del cliente.

Actualizaciones y soporte

Las versiones nuevas aparecen en el Portal de Cfx.re (en tus recursos comprados) y en la tienda. Descargalas con la misma cuenta Cfx.re de la compra y reemplaza la carpeta, conservando tus cambios en shared/config.lua y shared/locale.lua. Para soporte, abre un ticket en el Discord de la tienda: [enlace de soporte]. Indica la version del recurso, el error de consola y los pasos para reproducirlo.