Anpassung
Die Einstellungen befinden sich in config.lua. Die beiden Bridge-Dateien sind offen, damit du die Framework-Seite anpassen kannst. Das Tablet selbst besteht aus reinem HTML in html/.
Welche Datei entscheidet was
Abschnitt betitelt „Welche Datei entscheidet was“| Datei | Was sie bestimmt | Offen? |
|---|---|---|
config.lua | Sprache, Framework, Fotos, Creator-Befehl, Live-Raster, wer das Tablet nutzen darf und Kamera-Props | Ja |
bridge/client_bridge.lua | Framework-Erkennung, Job des Spielers, Benachrichtigungen und Hilfetext-Hinweis | Ja |
bridge/server_bridge.lua | Framework-Erkennung, Identifikatoren, Jobs, nutzbare Items, Items hinzufügen/entfernen, Server-Meldungen | Ja |
items/ | Item-Definitionen für ox, qb und ESX sowie die Icons in items/images/ | Ja |
html/ | Das Tablet: index.html, app.js, app.css, die Karte (map.js, map.css) und ihre Kacheln in html/tiles/ | Nicht escrowed |
locales/*.lua | Alle Texte, im Spiel und auf dem Tablet | In dieser Version escrowed |
client/, server/ | Das Skript | Escrowed |
Allgemein — config.lua
Abschnitt betitelt „Allgemein — config.lua“| Option | Was sie tut | Standard |
|---|---|---|
Config.Locale | Welche Sprache verwendet wird | 'en' |
Config.Framework | esx, qbcore oder auto zur automatischen Erkennung. Bei QBox erkennt auto es über die QBCore-Kompatibilität als qbcore; zum Festlegen nutze qbcore | 'auto' |
Config.EvidenceEnabled | Fotos an oder aus. Ausgeschaltet bewirken die Leertaste in einer Kamera und der Schnappschuss im Raster nichts | true |
Config.CreatorCommand | Der Befehl, der den Admin-Creator öffnet | 'camcreator' |
Config.CreatorAce | Die ACE-Berechtigung, die der Creator benötigt | 'mic_cctvcreator.open' |
Config.LiveGridFPS | Wie oft das Raster pro Sekunde aktualisiert wird. 1 bis 15; höher ist flüssiger, aber rechenintensiver | 5 |
Config.BlackScreenBehindUI | Zeichnet einen schwarzen Hintergrund hinter das Tablet, um die Kamerasprünge während der Raster-Aktualisierung zu verbergen | true |
Config.AllowedJobs | Jobs, die das Tablet öffnen dürfen. Leer bedeutet jeder. Siehe unten | {} |
Config.SpawnDistance | Wie nah du sein musst, damit ein Kamera-Prop gespawnt wird | 60.0 |
Config.BreakableCamera | Ob Kameras überhaupt zerstört werden können | true |
Config.RepairDistance | Wie weit der Reparaturlaser reicht | 20.0 |
Config.RepairTime | Wie lange eine Reparatur in Millisekunden dauert | 5000 |
Wer welche Kamera sieht
Abschnitt betitelt „Wer welche Kamera sieht“Diesen Teil solltest du entscheiden, bevor jemand eine Kamera platziert.
Config.AllowedJobs leer (Standard)
Abschnitt betitelt „Config.AllowedJobs leer (Standard)“- Jeder mit einem
cctv_tabletkann es öffnen. - Eine von einem Spieler platzierte Kamera ist privat: Nur er kann sie sehen.
- Der Besitzer kann sie danach mit seinem Job teilen — sie wird zu einer Job-Kamera für jeden in diesem Job — oder ihr einen Zugangsnamen und ein Passwort geben. Jeder, der diese Daten in sein Tablet eingibt, fügt die Kamera hinzu.
Config.AllowedJobs festgelegt, zum Beispiel Police und Sheriff
Abschnitt betitelt „Config.AllowedJobs festgelegt, zum Beispiel Police und Sheriff“- Nur diese Jobs können das Tablet öffnen; alle anderen erhalten die Meldung, dass sie nicht autorisiert sind.
- Eine platzierte Kamera wird automatisch zu einer Job-Kamera für den Job, den der Spieler gerade ausübt.
Kameras aus dem Admin-Creator
Abschnitt betitelt „Kameras aus dem Admin-Creator“Immer Job-Kameras, sichtbar für jeden im Creator angehakten Job. Eine Creator-Kamera ohne ausgewählten Job ist für niemanden sichtbar.
Beweise und Logs
Abschnitt betitelt „Beweise und Logs“- Ein Foto von einer privaten Kamera ist privat für die Person, die es aufgenommen hat. Ein Foto von einer Job-Kamera gehört dem Job. Beides kann aus der Galerie mit dem eigenen Job geteilt werden.
- Einbruchs-Logs werden für jede Kamera angezeigt, auf die du Zugriff hast — die 30 neuesten. Die Reparatur einer Kamera löscht ihren Logeintrag.
Eine Kamera abbauen
Abschnitt betitelt „Eine Kamera abbauen“Der Besitzer kann seine Kamera über das Tablet entfernen und erhält das Item zurück.
Zerstörung und Reparatur
Abschnitt betitelt „Zerstörung und Reparatur“Wenn Config.BreakableCamera aktiv ist, geht eine Kamera offline, sobald eine Kugel im Umkreis von etwa einem Meter einschlägt oder sie von einem Nahkampfangriff, einer Explosion oder einem Fahrzeug getroffen wird. Der Creator kann einzelne Kameras als unzerstörbar markieren.
Das Reparaturset, cctv_repair, aktiviert einen Laser. Richte ihn innerhalb von Config.RepairDistance auf eine zerstörte Kamera, drücke E und warte Config.RepairTime. Das Kit wird nicht verbraucht. Rücktaste oder ESC steckt es wieder weg.
Steuerung
Abschnitt betitelt „Steuerung“Kamera platzieren (über ein Item)
| Taste | Was sie tut |
|---|---|
| Umschauen | Bewegt die Vorschau auf die anvisierte Oberfläche |
| Mausrad | Dreht die Kamera |
| E | Platziert sie; du wirst nach einem Namen gefragt |
| Rechtsklick / ESC | Bricht den Vorgang ab |
Durch eine Kamera schauen
| Taste | Was sie tut |
|---|---|
| W / S | Nach oben und unten neigen |
| A / D | Drehen. Wand- und Mastkameras stoppen bei jeweils 45°; 360°-Modelle drehen sich rundherum |
| Mausrad | Zoom |
| Enter | Wechselt zwischen Normal-, Nacht- und Wärmebildsicht |
| Leertaste | Nimmt ein Foto für die Beweisgalerie auf |
| Rücktaste / ESC | Zurück zum Tablet |
Der Admin-Creator (/camcreator)
Wähle ein Modell (Wand, 360 Wand, Mast, 360 Mast), einen Basisnamen, die berechtigten Jobs und ob sie zerstört werden kann, und wechsle in den Platzierungsmodus:
| Taste | Was sie tut |
|---|---|
| ← / → | Modell wechseln |
| Mausrad | Drehen |
| E | Platzieren; Name eingeben |
| Rechtsklick / ESC | Zurück zum Creator-Menü |
Befehle und Berechtigungen
Abschnitt betitelt „Befehle und Berechtigungen“| Befehl | Wer | Was er tut |
|---|---|---|
/camcreator | Spieler mit der Berechtigung Config.CreatorAce | Öffnet den Admin-Creator. Ändere den Namen über Config.CreatorCommand |
Vergib die Berechtigung in der server.cfg mit einer add_ace-Zeile für die gewünschte Gruppe, beispielsweise mic_cctvcreator.open für group.admin. Wenn du Config.CreatorAce änderst, vergib stattdessen den neuen Namen.
Exports
Abschnitt betitelt „Exports“Clientseitig für andere Ressourcen, die Informationen über die Kameras benötigen:
| Export | Argumente | Rückgabewert |
|---|---|---|
GetCameraStatus | camera id | 'online', 'broken' oder 'offline', falls die ID unbekannt ist |
GetCameraIdFromEntity | entity handle | Die Kamera-ID eines gespawnten Kamera-Props oder nichts |
IsPlacing | — | true, während der Spieler eine Kamera platziert |
HideNearbyCamera | coords | Versteckt das nächste Kamera-Prop im Umkreis von 2 m und gibt es zurück |
UnhideCamera | prop | Zeigt ein mit HideNearbyCamera verstecktes Prop wieder an |
Sprachen
Abschnitt betitelt „Sprachen“Elf Sprachen werden mitgeliefert: en, es, fr, de, it, pt, ar, ja, pl, ru, tr. Trage den Code in Config.Locale ein. Das Tablet und die In-Game-Texte nutzen dieselbe Datei.
In dieser Version sind die Dateien in locales/ Teil des geschützten Codes und können nicht direkt bearbeitet werden. Falls du eine fehlende Sprache oder andere Formulierungen benötigst, frage im Discord nach.
Die Bridge
Abschnitt betitelt „Die Bridge“| Datei | Was sie abdeckt |
|---|---|
bridge/client_bridge.lua | Framework-Erkennung, Bridge.GetPlayerJob, Bridge.Notify und Bridge.ShowTextUI / Bridge.HideTextUI für den Reparatur-Hinweis |
bridge/server_bridge.lua | Framework-Erkennung, Bridge.GetPlayerIdentifier, Bridge.GetPlayerJob, Bridge.RegisterUsableItem, Bridge.AddItem, Bridge.AddItemWithMetadata, Bridge.RemoveItem, Bridge.Notify |
Ein anderes Benachrichtigungssystem: passe Bridge.Notify in beiden Dateien an.
Ein anderes Text-UI (ox_lib, okok…): Bridge.ShowTextUI und Bridge.HideTextUI in der Client-Datei. Bei QBCore wird standardmäßig das DrawText von QBCore genutzt; andernfalls der normale Hilfetext des Spiels.
Inventar: läuft ox_inventory, werden Items auf beiden Frameworks darüber hinzugefügt und entfernt. Andernfalls kommen die bordeigenen Funktionen des Frameworks zum Einsatz.
Ein anderes Framework: setze Config.Framework und passe den Erkennungsblock sowie die Funktionen für Identifikatoren, Jobs und Items in beiden Dateien an. Ohne Framework greift das Skript auf den license:-Identifikator zurück und stuft jeden als unemployed ein, Items — einschließlich des Tablets — werden jedoch nur auf ESX und QBCore registriert (QBox inklusive über dessen QBCore-Kompatibilität).