SCRIPT

Documentación de Socio: companero guardaespaldas

Otra Vida Socio (ov_socio)

Que hace

ov_socio da a cada jugador un companero controlado por el servidor: un guardaespaldas y sicario que lo sigue, lo protege y pelea por el. Usa el mismo modelo de personaje que los jugadores (mp_m_freemode_01 o mp_f_freemode_01), con su propio rostro, pelo, ropa y forma de caminar, que el jugador edita en un estudio con camara.

Lo mas importante:

Requisitos

RequisitoDetalle
Frameworkqb-core
Dependencias declaradas en el fxmanifestox_lib, oxmysql, qb-core
ox_inventoryLo usa el servidor para gastar la venda de las habilidades de cuidado y de revivir. Debe existir el item configurado en Config.Acceso.ItemRevivir y Config.Habilidades.cuidado.item (por defecto bandage)
illenium-appearanceSolo para el comando /sociolook (copiar tu apariencia al socio). El resto funciona sin el
Lua5.4 (lua54 'yes')
Base de datosMySQL o MariaDB, mediante oxmysql

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_socio dentro de resources.
  3. Agrega en server.cfg, despues de ox_lib, oxmysql, qb-core y ox_inventory:
   ensure ov_socio
  1. Decide quien puede usarlo. Por defecto el acceso esta cerrado (Config.Acceso.Todos = false): pueden usar /socio los jugadores con los permisos de qb-core god, admin o mod, y quien reciba el acceso con /darsocio. Para abrirlo a todos, pon Config.Acceso.Todos = true en config.lua.
  2. Inicia el servidor. No hay archivo .sql: al arrancar se crean solas las tablas ov_socio_acceso, ov_socio_slots, ov_socio_estado y ov_socio_conjuntos (CREATE TABLE IF NOT EXISTS).

El recurso no usa permisos ACE propios ni lee convars de server.cfg. Los permisos de staff se comprueban con QBCore.Functions.HasPermission.

Archivos editables: en el fxmanifest.lua, escrow_ignore deja sin cifrar config.lua y la carpeta html/ (interfaz). Los demas archivos, incluido looks.lua (los aspectos iniciales), no estan en escrow_ignore, asi que van cifrados por Asset Escrow.

Configuracion

Todo esta en config.lua. Opciones principales:

ClaveValor por defectoPara que sirve
Config.Comando'socio'Comando del panel
Config.ComandoSicario'sicario'Comando del contrato
Config.ComandoDar'darsocio'Comando de staff para dar o quitar el acceso
Config.ComandoNivel'socionivel'Comando de staff para fijar el nivel
Config.ComandoLook'sociolook'Comando para copiar tu apariencia al socio
Config.Acceso.TodosfalseSi es true, cualquier jugador puede usar el socio
Config.Acceso.Permisos{ 'god', 'admin', 'mod' }Permisos de qb-core que cuentan como staff
Config.Acceso.ItemRevivir'bandage'Item que gasta revivir al socio
Config.Blipsprite = 480, color = 2, scale = 0.85, nombre = 'Socio'Marca del socio en el mapa
Config.CombatesaludBase = 300, chalecoBase = 100, punteria = 70, municion = 250, radioDefensa = 40.0, arma WEAPON_COMBATPISTOLParametros de combate
Config.SicarioHabilitado = true, Precio = 250000, Cuenta = 'bank', EsperaHoras = 6, AvisarObjetivo = true, VuelveTras = 180000, DistanciaAproximacion = 70.0Contrato de sicario
Config.Humores5 humoresPostura, distancia, velocidad, rango, caminado y frases de cada uno
Config.HumorInicial'protector'Humor al crear el socio
Config.ProgresoNiveles = { 0, 100, 300, 700, 1500 }, XpPorMinuto = 1, XpPorBaja = 10, XpPorDefensa = 5, XpPorCuidado = 8, TopeEventosPorHora = 120Niveles y XP
Config.Habilidades7 habilidadesNivel requerido y parametros de cada una (umbral de cura, radio, salud del Ejecutor, etc.)
Config.SeguimientoPasoRastro = 1.5, LargoRastro = 40, AtascoMs = 3500, TeletransporteDist = 60.0, EsperaTeletransporteMs = 6000, ReintentosAntes = 2Comportamiento al seguir y al atascarse
Config.Navuna zona de ejemplo y MaxIteraciones = 30000Mapas de navegacion (archivos nav/*.json)
Config.Estudiocamaras, luces, MaxConjuntos = 8Ajustes del estudio de apariencia
Config.Caminados14 estilosFormas de caminar
Config.Emotes9 emotesSaludar, bailar, sentarse, fumar, brazos cruzados, aplaudir, senalar, facepalm y guardia
Config.AparienciaPorDefectof y mApariencia inicial cuando no se elige ninguna

La unica zona de navegacion incluida (Config.Nav.Zonas) corresponde a un interior concreto del mapa base. En el resto del mapa se usa la navegacion nativa del juego. Se pueden agregar mas zonas con archivos .json propios; consulta el archivo de configuracion.

Comandos y permisos

ComandoQuienAccion
/socioCon accesoAbre el panel: invocar, guardar, ordenar, vehiculo, arma, humor, habilidades, emotes y estudio
/socioseguirCon accesoAlterna entre seguir y esperar
/sociovenirCon acceso"Ven aqui"
/socioatacarCon accesoAtaca tu objetivo
/sociomarcarCon accesoMarca o quita la marca del objetivo al que apuntas (requiere la habilidad Ejecutor)
/sicario <id>Con accesoContrata un sicario contra otro jugador
/sociolook [id]Con accesoCopia tu apariencia actual al socio. El staff puede indicar el ID de otro jugador
/darsocio [id] [quitar]StaffConcede o retira el acceso (sin id: a ti mismo)
/socionivel <id> <nivel>StaffFija el nivel del socio (1 a 5)

Las teclas /socioatacar, /socioseguir, /sociovenir y /sociomarcar se registran con RegisterKeyMapping sin tecla por defecto: cada jugador las asigna en Ajustes, Teclas, FiveM.

Exports del servidor

ExportUso
ActivarCompra(src, sexo, aspecto)Concede el acceso y deja el aspecto inicial elegido (sexo = 'm' o 'f', aspecto = numero del 1 al 4 de looks.lua). Pensado para una tienda o sistema de compras. Devuelve true si funciono
TieneSocio(src)true si el jugador tiene un socio activo ahora mismo

Evento del servidor: ovsocio:conceder (con el ID del jugador y true o false) concede o retira el acceso.

Exports del cliente: GetSocio (ped del socio o nil), GetSexo, TomarSocio (lo pone en espera) y SoltarSocio (lo devuelve a seguir).

-- Servidor: conceder el socio tras una compra
exports.ov_socio:ActivarCompra(source, 'm', 2)

Como se usa

  1. Escribe /socio. La primera vez eliges si tu socio es hombre o mujer.
  2. Invocalo desde el panel. Para guardarlo, usa la misma opcion.
  3. Dale ordenes con los comandos o las teclas que hayas asignado.
  4. Elige su humor y activa o desactiva sus habilidades segun el nivel.
  5. Abre el estudio para cambiar rostro, pelo, ropa y forma de caminar. Puedes guardar hasta 8 conjuntos.
  6. Para revivirlo o curarlo necesitas el item configurado (por defecto, una venda).
  7. Con /sicario <id> mandas a tu socio contra otro jugador: cuesta lo configurado, se cobra de la cuenta definida, hay un tiempo de espera entre contratos y la victima recibe un aviso. El socio se acerca desde lejos y, pasado un tiempo, vuelve contigo.

El socio gana XP con el tiempo y al ayudarte; cada nivel desbloquea habilidades segun Config.Habilidades.

Para administradores

  1. Decide el modelo de acceso: Config.Acceso.Todos = true para abrirlo a todos, o dejarlo cerrado y conceder con /darsocio <id>. Para retirar, /darsocio <id> quitar.
  2. Con /socionivel <id> <1-5> ajustas el nivel de un jugador (por ejemplo para pruebas).
  3. Si vendes el socio en tu tienda, llama al export ActivarCompra desde tu script de compras.
  4. Puedes desactivar el contrato de sicario con Config.Sicario.Habilitado = false, o cambiar su precio, cuenta y espera.
  5. Ajusta combate, humores y habilidades en config.lua y reinicia el recurso.
  6. Los datos estan en las tablas ov_socio_acceso (permiso y ultimo contrato), ov_socio_slots (apariencia por sexo), ov_socio_estado (humor, XP, ajustes) y ov_socio_conjuntos (conjuntos de ropa), asociadas al citizenid.

Preguntas frecuentes

Escribo /socio y no pasa nada. El jugador no tiene acceso. Usa /darsocio o activa Config.Acceso.Todos.

Necesito illenium-appearance? Solo para /sociolook. El estudio del propio socio no lo necesita.

El socio se atasca en interiores. Fuera de las zonas con mapa de navegacion usa la navegacion nativa del juego, y si se atasca sigue el rastro o se reubica. Puedes agregar mapas .json propios en Config.Nav.Zonas.

Como cambio el precio del sicario? En Config.Sicario.Precio y Config.Sicario.Cuenta.

Donde cambio las frases o el comportamiento de cada humor? En Config.Humores.

Donde veo los errores? En la consola del servidor y en F8.

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 config.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.