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/.
Qué archivo decide qué
Sección titulada «Qué archivo decide qué»| Archivo | Qué decide | ¿Abierto? |
|---|---|---|
config.lua | Idioma, framework, fotos, el comando del creador, la cuadrícula en directo, quién puede usar la tablet y los props de las cámaras | Sí |
bridge/client_bridge.lua | Detección del framework, el trabajo del jugador, las notificaciones y el aviso de texto de ayuda | Sí |
bridge/server_bridge.lua | Detección del framework, identificadores, trabajos, ítems usables, añadir y quitar ítems, notificaciones del servidor | Sí |
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/*.lua | Todos los textos, en el juego y en la tablet | Con escrow en esta versión |
client/, server/ | El script | Con escrow |
General: config.lua
Sección titulada «General: config.lua»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.Locale | Qué idioma se usa | 'en' |
Config.Framework | esx, qbcore o auto para detectarlo. En QBox, auto lo detecta como qbcore gracias a su compatibilidad con QBCore; para fijarlo, usa qbcore | 'auto' |
Config.EvidenceEnabled | Activa o desactiva las fotos. Desactivadas, Espacio en una cámara y la captura de la cuadrícula no hacen nada | true |
Config.CreatorCommand | El comando que abre el creador para administradores | 'camcreator' |
Config.CreatorAce | El permiso ACE que necesita el creador | 'mic_cctvcreator.open' |
Config.LiveGridFPS | Cuántas veces por segundo se actualiza la cuadrícula. De 1 a 15; más alto es más fluido y más pesado | 5 |
Config.BlackScreenBehindUI | Dibuja negro detrás de la tablet para ocultar los saltos entre cámaras mientras se actualiza la cuadrícula | true |
Config.AllowedJobs | Trabajos que pueden abrir la tablet. Vacío significa todo el mundo. Mira más abajo | {} |
Config.SpawnDistance | A qué distancia tienes que estar para que aparezca el prop de una cámara | 60.0 |
Config.BreakableCamera | Si las cámaras se pueden romper o no | true |
Config.RepairDistance | Hasta dónde llega el láser de reparación | 20.0 |
Config.RepairTime | Cuánto tarda una reparación, en milisegundos | 5000 |
Quién ve cada cámara
Sección titulada «Quién ve cada cámara»Esta es la parte que conviene decidir antes de que nadie coloque una cámara.
Config.AllowedJobs vacío (por defecto)
Sección titulada «Config.AllowedJobs vacío (por defecto)»- Cualquiera con una
cctv_tabletpuede 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.
Cámaras del creador para administradores
Sección titulada «Cámaras del creador para administradores»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.
Pruebas y registros
Sección titulada «Pruebas y registros»- 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.
Retirar una cámara
Sección titulada «Retirar una cámara»El propietario puede quitar su cámara desde la tablet y recupera el ítem.
Romper y reparar
Sección titulada «Romper y reparar»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.
Controles
Sección titulada «Controles»Colocar una cámara (desde un ítem)
| Tecla | Qué hace |
|---|---|
| Mirar alrededor | Mueve la vista previa a la superficie que miras |
| Rueda del ratón | La rota |
| E | La coloca; se te pide un nombre |
| Clic derecho / ESC | Cancela |
Mirar a través de una cámara
| Tecla | Qué hace |
|---|---|
| W / S | Inclinar arriba y abajo |
| A / D | Girar. Las cámaras de pared y de poste se detienen a 45° a cada lado; los modelos 360° giran por completo |
| Rueda del ratón | Zoom |
| Enter | Alterna entre visión normal, nocturna y térmica |
| Espacio | Hace una foto para la galería de pruebas |
| Retroceso / ESC | Vuelve 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:
| Tecla | Qué hace |
|---|---|
| ← / → | Cambia de modelo |
| Rueda del ratón | Rota |
| E | Coloca; se te pide un nombre |
| Clic derecho / ESC | Vuelve al menú del creador |
Comandos y permisos
Sección titulada «Comandos y permisos»| Comando | Quién | Qué hace |
|---|---|---|
/camcreator | Jugadores con el permiso de Config.CreatorAce | Abre 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.
Exports
Sección titulada «Exports»Del lado del cliente, para otros recursos que necesiten saber de las cámaras:
| Export | Argumentos | Devuelve |
|---|---|---|
GetCameraStatus | id de la cámara | 'online', 'broken', u 'offline' si el id no se conoce |
GetCameraIdFromEntity | handle de entidad | El id de cámara de un prop de cámara generado, o nada |
IsPlacing | — | true mientras el jugador está colocando una cámara |
HideNearbyCamera | coords | Oculta el prop de cámara más cercano en un radio de 2 m y lo devuelve |
UnhideCamera | prop | Vuelve a mostrar un prop ocultado con HideNearbyCamera |
Idiomas
Sección titulada «Idiomas»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.
El bridge
Sección titulada «El bridge»| Archivo | Qué cubre |
|---|---|
bridge/client_bridge.lua | Detección del framework, Bridge.GetPlayerJob, Bridge.Notify, y Bridge.ShowTextUI / Bridge.HideTextUI para el aviso de reparación |
bridge/server_bridge.lua | Detecció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).