SCRIPT

Documentación de Sistema VIP

ov_vip

Sistema VIP por niveles para qb-core: dinero inicial, armas, vehiculos, kit, salario, bono de velocidad, zona de pruebas y proteccion contra duplicacion de armas, todo desde un menu con /vip.

Que hace

ov_vip administra membresias VIP con fecha de caducidad y entrega a cada nivel un paquete de beneficios configurable. Los jugadores lo manejan desde un menu (NUI) que se abre con /vip; el personal lo otorga y retira con comandos.

Requisitos

Instalacion

El recurso viene protegido con Asset Escrow de Cfx.re: se descarga desde el Portal de Cfx.re con la cuenta Cfx.re del comprador y solo funciona en servidores de esa cuenta. Segun su fxmanifest.lua, quedan sin cifrar shared/config.lua, shared/locale.lua y la carpeta web/ (la interfaz). Nota: shared/armas.lua (el catalogo de armas) si esta cifrado, por lo que el catalogo no se edita a mano.

  1. Descarga el recurso desde el Portal de Cfx.re y copia la carpeta ov_vip en resources/.
  2. Base de datos: las tablas ov_vip, ov_vip_armas, ov_vip_auditoria, ov_vip_vehicle_claims, ov_vip_vehicle_catalog y ov_vip_cooldowns se crean solas al arrancar (CREATE TABLE IF NOT EXISTS). Tambien se incluye sql/ov_vip.sql por si prefieres crearlas a mano. La carpeta sql/ incluye ademas un archivo de migracion opcional y manual desde otro sistema VIP; no se ejecuta sola y solo tiene sentido si ya usabas ese sistema con los mismos citizenid.
  3. Agrega en server.cfg (despues de sus dependencias): `` ensure oxmysql ensure ox_lib ensure qb-core ensure ox_inventory ensure ov_vip ``
  4. Concede el permiso de administracion a tu grupo de admins (permiso ACE por defecto ov_vip.admin): `` add_ace group.admin ov_vip.admin allow ``
  5. Opcional: define la convar ov_admin_log_webhook en el server.cfg con el webhook de Discord donde quieras recibir los avisos de la auditoria (el recurso la lee con GetConvar). Si no la defines, simplemente no se envian avisos a Discord.
  6. Opcional: si vas a usar Config.AceVip (permisos ACE temporales mientras el jugador tenga VIP), agrega tambien add_ace resource.ov_vip command.add_ace allow y add_ace resource.ov_vip command.remove_ace allow.
  7. Revisa en shared/config.lua los items del kit, el catalogo de vehiculos (Config.CatalogoVehiculos), el garaje por defecto y las coordenadas de la zona de pruebas, y reinicia el servidor.

Configuracion

Todo en shared/config.lua.

ClaveValor por defectoPara que sirve
Config.Comando'vip'Comando que abre el menu.
Config.PermisoAdmin'ov_vip.admin'Permiso ACE de los comandos de administracion.
Config.DiasPorDefecto30Dias que otorga /darvip si no se indican.
Config.DiasMaximo3650Maximo de dias por otorgamiento.
Config.SalarioIntervaloMin60Cada cuantos minutos se paga el salario (al banco).
Config.RevisionCaducidadSeg60Cada cuantos segundos se revisan los VIP caducados.
Config.EsperaReclamo3Segundos de espera entre dos reclamos del mismo jugador.
Config.KitCooldown1800Segundos entre usos de /kit.
Config.KitItemsradio, kit de reparacion, 2 botiquines, 3 vendas, 2 aguas, 2 sandwichesContenido del kit (item, count, noConsumible).
Config.VelocidadExtra.activotrueActiva el bono de velocidad en vehiculos.
Config.BonoFarmeo.activofalseSolo expone el export GetFarmeoBonus; otro script debe usarlo para tener efecto.
Config.Rgbactivo = true, intervaloMs = 450Efecto /rgb de neones.
Config.AceVip{}Permisos ACE concedidos mientras el jugador tenga VIP.
Config.EventosCompatColatrueEmite eventos de prioridad de cola al otorgar o quitar VIP.
Config.BloquearArmasComunestrueBloquea tambien las armas comunes (una sola copia por serie, siempre en el inventario de su dueno).
Config.Antidupe.auditoriaMin20Minutos entre auditorias automaticas (0 las apaga).
Config.Antidupe.accionFuera'borrar'Que hacer con un arma bloqueada fuera del inventario de su dueno ('borrar' o 'reportar').
Config.Antidupe.accionHuerfana'borrar'Que hacer con un item con marcas VIP que no esta en el libro contable.
Config.Antidupe.mismaLicencia'avisar'Varios personajes de una licencia: 'avisar' o 'bloquear'.
Config.Antidupe.maxReposiciones20Tope de reposiciones de una misma arma por periodo VIP.
Config.ZonaPruebas.duracionArma60Segundos de la prueba de arma.
Config.ZonaPruebas.duracionVehiculo120Segundos de la prueba de vehiculo.
Config.ZonaPruebas.municionPrueba250Municion durante la prueba.
Config.ZonaPruebas.arma / .vehiculocoordenadas x, y, z, wDonde aparece el jugador y el vehiculo de prueba.
Config.GarajePorDefectonombre = 'GARAGE CENTRAL', tipo = 'car'Garaje de entrega si el jugador no tiene vehiculos guardados.
Config.CatalogoVehiculos4 modelos de ejemploCatalogo base de vehiculos VIP.
Config.CategoriasVehiculoSTART, ELITE, COLECCIONABLE, BLINDADO_32, FULL_BLINDADO, ABUSER, LANZAMIENTO, BRONCECategorias validas para el catalogo.
Config.Crafteocooldown = 1800, maxMunicion = 2000Fabricacion de municion para armas VVS.
Config.Reparacion.cooldown1800Segundos entre reparaciones de armas.
Config.Niveles7 nivelesPor nivel: dineroInicial, velocidad, salario, comandos, armas, vehiculos, crafteoMunicion.

Valores por nivel (leidos de Config.Niveles):

NivelDinero inicialArmas (cupo)Vehiculos (cupo)VelocidadSalario
pvp1000001000
elitepvp1000001000
bronce10000004135000
silver5000007130
gold100000012515000
diamond200000013725000
lanzamiento10000001100

Comandos y permisos

Jugadores

ComandoEfecto
/vipAbre el menu (sin VIP muestra los niveles).
/kitEntrega el kit (con espera).
/ropa, /peluqueria, /armarioAbren la tienda de ropa, la peluqueria y el armario (via illenium-appearance), segun lo que incluya el nivel.
/rgbNeones del vehiculo en ciclo de color (niveles que lo incluyen, por defecto gold y diamond).

Administracion (permiso ACE ov_vip.admin; desde la consola del servidor siempre se puede)

ComandoEfecto
/darvip [id] [nivel] [dias]Otorga el VIP. Acepta alias de nivel (bronze, plata, oro, diamante, elite, elite-pvp).
/quitarvip [id] o /quitarvip cid:[citizenid]Quita el VIP y retira lo concedido; con cid: funciona con personajes desconectados.
/vipcatalogoCon listar, agregar <modelo> <categoria> <nombre> y quitar <modelo> administra el catalogo de vehiculos.
/vipzonaImprime tu posicion para configurar la zona de pruebas.
/vipauditar [simular] o /vipauditar jugador [id]Ejecuta la auditoria antiduplicacion; simular solo informa.

Exports del servidor: IsVIP(citizenid), GetVIPLevel(citizenid), GetVIPInfo(source), HasVIPCommand(source, comando), GetSpeedBoost(source), GetFarmeoBonus(source), GrantVIP(source, nivel, dias, quien) y RevokeVIP(source, quien).

Eventos del servidor al otorgar o quitar: ov_vip:granted y ov_vip:revoked (reciben citizenid, source, nivel). Con Config.EventosCompatCola activo tambien se emiten con un nombre de compatibilidad que escucha ov_cola para la prioridad en la cola de conexion.

Como se usa

  1. Un administrador otorga el VIP con /darvip. El jugador recibe el dinero inicial y un aviso.
  2. El jugador escribe /vip para ver su nivel, la fecha de caducidad y sus beneficios.
  3. Armas: elige un arma del catalogo de su nivel y la reclama. Puede probarla antes en la zona de pruebas. Si la pierde, la recupera desde el menu.
  4. Vehiculos: elige un modelo de su cupo y lo reclama; aparece en su garaje. Tambien puede hacer un test drive.
  5. Kit: /kit entrega los items del kit si no esta en espera.
  6. Municion y reparacion: para armas VVS, el menu permite fabricar municion (minijuego) y reparar el arma, con esperas entre usos.
  7. El salario llega al banco cada Config.SalarioIntervaloMin minutos mientras el jugador esta conectado y su VIP esta vigente.
  8. Cuando el VIP caduca, el jugador recibe un aviso y se retira lo concedido que no sea permanente.

Para administradores

Preguntas frecuentes

Necesito crear las tablas a mano? No. El recurso las crea al arrancar. sql/ov_vip.sql es opcional.

Funciona sin illenium-appearance? Si, pero /ropa, /peluqueria y /armario mostraran un aviso de no disponible.

Un arma del catalogo no aparece en el menu. Solo aparecen las armas cuyo item existe en ox_inventory. Revisa la consola al iniciar: se avisa de las que faltan.

No puedo reclamar un vehiculo. Revisa que el nivel tenga cupo (pvp y elitepvp tienen 0), que la categoria tenga modelos en el catalogo y que exista un garaje valido en garage_locations (por defecto GARAGE CENTRAL, tipo car).

Como cambio los dias maximos o el kit? Config.DiasMaximo y Config.KitItems en shared/config.lua.

Pierde el jugador el dinero o los vehiculos cuando acaba el VIP? No. Se retiran las armas, la municion del reclamo y los objetos no consumibles del kit; el dinero cobrado y los vehiculos ya entregados se conservan.

Actualizaciones y soporte

Las versiones nuevas aparecen en el Portal de Cfx.re y en la tienda. Antes de actualizar, guarda una copia de tu shared/config.lua. Para soporte, abre un ticket en el Discord de la tienda: [enlace de soporte]. Indica la version del recurso (1.1.0 en el manifest actual), el error de la consola y la version de ox_inventory y qb-core.