Ir al contenido

Personalización

Los ajustes están en config.lua. Los dos archivos del bridge están abiertos para que puedas adaptar la parte del framework. La tablet en sí es HTML plano en html/.


ArchivoQué decide¿Abierto?
config.luaIdioma, framework, fotos, el comando del creador, la cuadrícula en directo, quién puede usar la tablet y los props de las cámarasSí
bridge/client_bridge.luaDetección del framework, el trabajo del jugador, las notificaciones y el aviso de texto de ayudaSí
bridge/server_bridge.luaDetección del framework, identificadores, trabajos, ítems usables, añadir y quitar ítems, notificaciones del servidorSí
items/Definiciones de ítems para ox, qb y ESX, y los iconos en items/images/Sí
html/La tablet: index.html, app.js, app.css, el mapa (map.js, map.css) y sus teselas en html/tiles/Sin escrow
locales/*.luaTodos los textos, en el juego y en la tabletCon escrow en esta versión
client/, server/El scriptCon escrow

OpciónQué hacePor defecto
Config.LocaleQué idioma se usa'en'
Config.Frameworkesx, qbcore o auto para detectarlo. En QBox, auto lo detecta como qbcore gracias a su compatibilidad con QBCore; para fijarlo, usa qbcore'auto'
Config.EvidenceEnabledActiva o desactiva las fotos. Desactivadas, Espacio en una cámara y la captura de la cuadrícula no hacen nadatrue
Config.CreatorCommandEl comando que abre el creador para administradores'camcreator'
Config.CreatorAceEl permiso ACE que necesita el creador'mic_cctvcreator.open'
Config.LiveGridFPSCuántas veces por segundo se actualiza la cuadrícula. De 1 a 15; más alto es más fluido y más pesado5
Config.BlackScreenBehindUIDibuja negro detrás de la tablet para ocultar los saltos entre cámaras mientras se actualiza la cuadrículatrue
Config.AllowedJobsTrabajos que pueden abrir la tablet. Vacío significa todo el mundo. Mira más abajo{}
Config.SpawnDistanceA qué distancia tienes que estar para que aparezca el prop de una cámara60.0
Config.BreakableCameraSi las cámaras se pueden romper o notrue
Config.RepairDistanceHasta dónde llega el láser de reparación20.0
Config.RepairTimeCuánto tarda una reparación, en milisegundos5000

Esta es la parte que conviene decidir antes de que nadie coloque una cámara.

  • Cualquiera con una cctv_tablet puede abrirla.
  • Una cámara que coloca un jugador es privada: solo la ve él.
  • Después, el propietario puede compartirla con su trabajo (se convierte en una cámara de trabajo para todos los de ese trabajo) o ponerle un nombre de acceso y una contraseña. Cualquiera que los escriba en su tablet añade la cámara a ella.

Config.AllowedJobs configurado, por ejemplo policía y sheriff

Sección titulada «Config.AllowedJobs configurado, por ejemplo policía y sheriff»
  • Solo esos trabajos pueden abrir la tablet; a cualquier otro se le indica que no está autorizado.
  • Una cámara que coloca un jugador se convierte en una cámara de trabajo del trabajo que tenga en ese momento.

Siempre son cámaras de trabajo, visibles para todos los trabajos marcados en el creador. Una cámara del creador sin ningún trabajo marcado no la ve nadie.

  • Una foto hecha desde una cámara privada es privada para quien la hizo. Una foto de una cámara de trabajo pertenece al trabajo. Cualquiera de las dos se puede compartir con tu trabajo desde la galería.
  • Los registros de intrusión se muestran para cada cámara a la que tienes acceso: los 30 más recientes. Reparar una cámara borra su registro.

El propietario puede quitar su cámara desde la tablet y recupera el ítem.


Con Config.BreakableCamera activado, una cámara queda fuera de servicio cuando una bala impacta a menos de un metro aproximadamente, o cuando recibe un golpe cuerpo a cuerpo, una explosión o un vehículo. El creador puede marcar cámaras concretas como irrompibles.

El kit de reparación, cctv_repair, enciende un láser. Apúntalo a una cámara rota dentro de Config.RepairDistance, pulsa E y espera Config.RepairTime. El kit no se gasta. Retroceso o ESC lo guardan.


Colocar una cámara (desde un ítem)

TeclaQué hace
Mirar alrededorMueve la vista previa a la superficie que miras
Rueda del ratónLa rota
ELa coloca; se te pide un nombre
Clic derecho / ESCCancela

Mirar a través de una cámara

TeclaQué hace
W / SInclinar arriba y abajo
A / DGirar. Las cámaras de pared y de poste se detienen a 45° a cada lado; los modelos 360° giran por completo
Rueda del ratónZoom
EnterAlterna entre visión normal, nocturna y térmica
EspacioHace una foto para la galería de pruebas
Retroceso / ESCVuelve a la tablet

El creador para administradores (/camcreator)

Elige un modelo (pared, pared 360, poste, poste 360), un nombre base, los trabajos que pueden verla y si se puede romper, y entra en el modo de colocación:

TeclaQué hace
← / →Cambia de modelo
Rueda del ratónRota
EColoca; se te pide un nombre
Clic derecho / ESCVuelve al menú del creador

ComandoQuiénQué hace
/camcreatorJugadores con el permiso de Config.CreatorAceAbre el creador para administradores. Cambia el nombre con Config.CreatorCommand

Concede el permiso en server.cfg con una línea add_ace para el grupo que quieras, por ejemplo dando mic_cctvcreator.open a group.admin. Si cambias Config.CreatorAce, concede el nuevo nombre en su lugar.


Del lado del cliente, para otros recursos que necesiten saber de las cámaras:

ExportArgumentosDevuelve
GetCameraStatusid de la cámara'online', 'broken', u 'offline' si el id no se conoce
GetCameraIdFromEntityhandle de entidadEl id de cámara de un prop de cámara generado, o nada
IsPlacing—true mientras el jugador está colocando una cámara
HideNearbyCameracoordsOculta el prop de cámara más cercano en un radio de 2 m y lo devuelve
UnhideCamerapropVuelve a mostrar un prop ocultado con HideNearbyCamera

Vienen once: en, es, fr, de, it, pt, ar, ja, pl, ru, tr. Pon el código en Config.Locale. La tablet y los textos del juego usan el mismo archivo.

En esta versión los archivos de locales/ forman parte del código protegido, así que no se pueden editar. Si necesitas un idioma que no está o una redacción distinta, pregunta en el Discord.


ArchivoQué cubre
bridge/client_bridge.luaDetección del framework, Bridge.GetPlayerJob, Bridge.Notify, y Bridge.ShowTextUI / Bridge.HideTextUI para el aviso de reparación
bridge/server_bridge.luaDetección del framework, Bridge.GetPlayerIdentifier, Bridge.GetPlayerJob, Bridge.RegisterUsableItem, Bridge.AddItem, Bridge.AddItemWithMetadata, Bridge.RemoveItem, Bridge.Notify

Otro recurso de notificaciones: cambia Bridge.Notify en los dos archivos.

Otra interfaz de texto (ox_lib, okok…): Bridge.ShowTextUI y Bridge.HideTextUI en el archivo del cliente. En QBCore usan el DrawText propio de QBCore; si no, el texto de ayuda del juego.

Inventario: cuando ox_inventory está en marcha, los ítems se añaden y se quitan a través de él en cualquiera de los dos frameworks. Si no, se usan las funciones propias del framework.

Otro framework: configura Config.Framework y rellena el bloque de detección y las funciones de identificador, trabajo e ítems en los dos archivos. Sin framework, el script recurre al identificador license: y trata a todo el mundo como unemployed, pero los ítems (la tablet incluida) solo se registran en ESX y QBCore (QBox incluido, gracias a su compatibilidad con QBCore).