Zum Inhalt springen

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


DateiWas sie bestimmtOffen?
config.luaSprache, Framework, Fotos, Creator-Befehl, Live-Raster, wer das Tablet nutzen darf und Kamera-PropsJa
bridge/client_bridge.luaFramework-Erkennung, Job des Spielers, Benachrichtigungen und Hilfetext-HinweisJa
bridge/server_bridge.luaFramework-Erkennung, Identifikatoren, Jobs, nutzbare Items, Items hinzufügen/entfernen, Server-MeldungenJa
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/*.luaAlle Texte, im Spiel und auf dem TabletIn dieser Version escrowed
client/, server/Das SkriptEscrowed

OptionWas sie tutStandard
Config.LocaleWelche Sprache verwendet wird'en'
Config.Frameworkesx, qbcore oder auto zur automatischen Erkennung. Bei QBox erkennt auto es über die QBCore-Kompatibilität als qbcore; zum Festlegen nutze qbcore'auto'
Config.EvidenceEnabledFotos an oder aus. Ausgeschaltet bewirken die Leertaste in einer Kamera und der Schnappschuss im Raster nichtstrue
Config.CreatorCommandDer Befehl, der den Admin-Creator öffnet'camcreator'
Config.CreatorAceDie ACE-Berechtigung, die der Creator benötigt'mic_cctvcreator.open'
Config.LiveGridFPSWie oft das Raster pro Sekunde aktualisiert wird. 1 bis 15; höher ist flüssiger, aber rechenintensiver5
Config.BlackScreenBehindUIZeichnet einen schwarzen Hintergrund hinter das Tablet, um die Kamerasprünge während der Raster-Aktualisierung zu verbergentrue
Config.AllowedJobsJobs, die das Tablet öffnen dürfen. Leer bedeutet jeder. Siehe unten{}
Config.SpawnDistanceWie nah du sein musst, damit ein Kamera-Prop gespawnt wird60.0
Config.BreakableCameraOb Kameras überhaupt zerstört werden könnentrue
Config.RepairDistanceWie weit der Reparaturlaser reicht20.0
Config.RepairTimeWie lange eine Reparatur in Millisekunden dauert5000

Diesen Teil solltest du entscheiden, bevor jemand eine Kamera platziert.

  • Jeder mit einem cctv_tablet kann 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.

Immer Job-Kameras, sichtbar für jeden im Creator angehakten Job. Eine Creator-Kamera ohne ausgewählten Job ist für niemanden sichtbar.

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

Der Besitzer kann seine Kamera über das Tablet entfernen und erhält das Item zurück.


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.


Kamera platzieren (über ein Item)

TasteWas sie tut
UmschauenBewegt die Vorschau auf die anvisierte Oberfläche
MausradDreht die Kamera
EPlatziert sie; du wirst nach einem Namen gefragt
Rechtsklick / ESCBricht den Vorgang ab

Durch eine Kamera schauen

TasteWas sie tut
W / SNach oben und unten neigen
A / DDrehen. Wand- und Mastkameras stoppen bei jeweils 45°; 360°-Modelle drehen sich rundherum
MausradZoom
EnterWechselt zwischen Normal-, Nacht- und Wärmebildsicht
LeertasteNimmt ein Foto für die Beweisgalerie auf
Rücktaste / ESCZurü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:

TasteWas sie tut
← / →Modell wechseln
MausradDrehen
EPlatzieren; Name eingeben
Rechtsklick / ESCZurück zum Creator-Menü

BefehlWerWas er tut
/camcreatorSpieler 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.


Clientseitig für andere Ressourcen, die Informationen über die Kameras benötigen:

ExportArgumenteRückgabewert
GetCameraStatuscamera id'online', 'broken' oder 'offline', falls die ID unbekannt ist
GetCameraIdFromEntityentity handleDie Kamera-ID eines gespawnten Kamera-Props oder nichts
IsPlacing—true, während der Spieler eine Kamera platziert
HideNearbyCameracoordsVersteckt das nächste Kamera-Prop im Umkreis von 2 m und gibt es zurück
UnhideCamerapropZeigt ein mit HideNearbyCamera verstecktes Prop wieder an

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.


DateiWas sie abdeckt
bridge/client_bridge.luaFramework-Erkennung, Bridge.GetPlayerJob, Bridge.Notify und Bridge.ShowTextUI / Bridge.HideTextUI für den Reparatur-Hinweis
bridge/server_bridge.luaFramework-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).