Warum Türschlösser im Roleplay wichtig sind
Türschlosssysteme sind eine der am meisten unterschätzten, aber dennoch wesentlichen Komponenten eines jeden seriösen FiveM-Roleplay-Servers. Ohne ordnungsgemäße Türverwaltung können Spieler ohne Einschränkungen Polizeiwaffenkammern, Krankenhauspersonalräume und Bandenverstecke betreten und so das Eintauchen völlig unterbrechen. Ein gut implementiertes Türschlosssystem ermöglicht es Serverbesitzern, den Zugang zu jedem Innenbereich auf der Karte zu kontrollieren, von Regierungsgebäuden bis hin zu spielereigenen Unternehmen. Es schafft natürliche Grenzen, die Rollenspielinteraktionen wie Schlüsselaustausch, Schlösserknackszenarien und koordinierte Verstöße fördern. In diesem Leitfaden gehen wir Schritt für Schritt durch den Aufbau eines kompletten Türschlosssystems auf Basis von ox_doorlock und erweitern es anschließend um benutzerdefinierte Schlossknackmechanismen, Schlüsselkartenauthentifizierung, Türgruppen und geschäftsspezifische Zugangskontrolle.
ox_doorlock einrichten
Die ox_doorlock-Ressource ist die am weitesten verbreitete Türschlosslösung im FiveM-Ökosystem und bietet eine saubere API, eine integrierte Admin-Benutzeroberfläche zum Platzieren von Türen sowie Unterstützung sowohl für Doppeltüren als auch für animierte Türen im Garagenstil. Bevor du benutzerdefinierten Code schreiben, benötigst du eine solide Grundlage. Installiere ox_doorlock neben ox_lib, von dem es für UI-Komponenten und Dienstprogrammfunktionen abhängt. Deine server.cfg muss sicherstellen, dass die Ressourcen in der richtigen Reihenfolge starten, wobei zuerst deine Datenbank ausgeführt wird, dann ox_lib und schließlich ox_doorlock. Nach der Ausführung kannst du mit dem integrierten Admin-Befehl zu jeder Tür in der Spielwelt gehen und diese mit einem Klick registrieren.
Nach der Registrierung von Türen über die Admin-Schnittstelle speichert ox_doorlock jeden Eintrag in der Datenbank mit Koordinaten, Richtung, Modell-Hash und Sperrstatus. Du kannst diese programmgesteuert abfragen und bearbeiten. Die Ressource stellt sowohl Exporte als auch Ereignisse zum Umschalten von Sperren, Überprüfen des Status und Verwalten des Zugriffs bereit. Es ist wichtig, die Datenstruktur zu verstehen, bevor darauf benutzerdefinierte Funktionen erstellt werden.
Bau einer Schlossknack-Mechanik
Lockpicking fügt eine Gameplay-Ebene hinzu, die verschlossenen Türen für kriminelle Charaktere eine Bedeutung verleiht. Anstatt dass Türen absolute Barrieren darstellen, werden sie zu kompetenzbasierten Herausforderungen. Der beste Ansatz ist ein Minispiel, das Timing und Präzision erfordert und dafür sorgt, dass sich das Ergebnis eher verdient als zufällig anfühlt. Wir werden das integrierte Skillcheck-System von Das Scheitern des Fertigkeitschecks sollte Konsequenzen wie das Brechen des Dietrichs oder die Alarmierung der Polizei in der Nähe durch ein Einsatzereignis haben.
Auf der Serverseite musst du den Lockpick-Versuch validieren, bei einem Fehlschlag den Lockpick-Gegenstand entfernen, bei Erfolg die Tür aufschließen und optional einen Polizeialarm auslösen. Hier ist eine Ratenbegrenzung wichtig, um Spam-Versuchen vorzubeugen. Speichere eine Abklingzeit pro Spieler und Tür, damit dieser nach einem Fehlschlag nicht sofort erneut versuchen kann. Der Server-Betreuer sollte außerdem überprüfen, ob sich der Spieler tatsächlich in der Nähe der Tür befindet, die er angeblich knackt, um eine Ausnutzung aus der Ferne zu verhindern.
Implementierung eines Schlüsselkartensystems
Schlüsselkarten bieten im Vergleich zu einfachen Schlüsselgegenständen einen strukturierteren Zugangskontrollmechanismus. Du eignen sich gut für Firmengebäude, Regierungseinrichtungen und Sperrbereiche, in denen der Zugang an bestimmte Freigabestufen gebunden sein sollte. Das Schlüsselkartensystem weist jeder Tür eine Sicherheitsstufe von 1 bis 5 zu und Spieler müssen eine Schlüsselkarte mit gleicher oder höherer Freigabe besitzen, um sie zu öffnen. Dadurch entsteht eine natürliche Hierarchie, bei der eine Schlüsselkarte der Ebene 3 alle Türen der Ebenen 1, 2 und 3 öffnet, jedoch keinen Zugang zu den eingeschränkten Bereichen der Ebenen 4 oder 5 hat. Schlüsselkarten können von Jobsystemen ausgegeben, als Beute gefunden oder über ein Fortschrittssystem hergestellt werden.
Türgruppen und Geschäftszugang
Die Verwaltung einzelner Türen wird nicht mehr skalierbar, wenn dein Server Hunderte von verschlossenen Türen hat. Türgruppen lösen dieses Problem, indem du einer benannten Gruppe mehrere Türen zuweisen und den Zugriff auf die gesamte Gruppe gleichzeitig steuern können. Eine Polizeistation könnte 15 verschlossene Türen haben, die alle für den Polizeibeamten zugänglich sein sollten. Anstatt jede Tür einzeln zu konfigurieren, weise sie alle der Gruppe „police_station“ zu und gewähren den Zugriff basierend auf dem Jobnamen. Wenn ein Administrator einen neuen Beamten anstellt, erhält dieser automatisch Zugang zu jeder Tür in der Gruppe, ohne dass eine manuelle Konfiguration erforderlich ist.
Geschäftstüren fügen eine weitere Dimension hinzu, indem sie den Türzugang an Eigentumsunterlagen knüpfen. Wenn ein Spieler ein Unternehmen kauft, sollte er automatisch die Kontrolle über alle mit diesem Grundstück verbundenen Türen erlangen. Das System muss den Unternehmenseigentum in Echtzeit überprüfen, da Immobilien verkauft oder übertragen werden können. Implementiere einen Rückruf, der deine Geschäftstabelle abfragt, um den aktuellen Eigentümer zu überprüfen, und speichern du das Ergebnis dann mit einer kurzen TTL zwischen, um zu vermeiden, dass die Datenbank bei jeder Türinteraktion belastet wird.
Synchronisieren von Türzuständen zwischen Clients
Die Türsynchronisierung ist einer der schwierigeren Aspekte eines Türschlosssystems. Wenn ein Spieler eine Tür aufschließt, muss jeder Spieler in der Nähe sehen, wie sie sich öffnet. Die nativen FiveM-Türsteuerungen arbeiten auf Client-Basis, was bedeutet, dass jeder Client den Türstatus unabhängig verwaltet. Ohne ordnungsgemäße Synchronisierung sieht ein Spieler, wie sich eine Tür öffnet, während ein anderer sieht, wie sie geschlossen wird. ox_doorlock übernimmt die grundlegende Statussynchronisierung, benutzerdefinierte Erweiterungen müssen jedoch bei der Statusweitergabe vorsichtig sein. Verwende State Bags oder serverautorisierende Ereignisse, um Türänderungen innerhalb eines angemessenen Bereichs an alle Spieler zu übertragen. Vermeide die Synchronisierung jedes Türwechsels mit dem gesamten Server, da dies bei großen Servern mit Hunderten von Türen zu unnötigem Netzwerkaufwand führt.
Sicherheitsüberlegungen und Anti-Exploit
Türschlosssysteme sind ein häufiges Ziel von Ausbeutern, da das Umgehen einer Tür häufig Zugang zu verbotenen Gegenständen, Waffen oder Geld ermöglicht. Jede Türumschaltanfrage muss serverseitig validiert werden. Vertraue niemals den vom Kunden gesendeten Tür-IDs, ohne die Nähe und Zugriffsrechte des Spielers zu überprüfen. Implementiere die Protokollierung jeder Türstatusänderung, damit Administratoren verdächtige Muster überprüfen können, z. B. wenn ein Spieler Tresortüren aufschließt, zu denen er keinen Zugang haben sollte. Begrenze die Rate aller Türinteraktionen, um Brute-Force-Versuche am Lockpicking-System zu verhindern. Erwäge das Hinzufügen eines serverseitigen Ereignisloggers, der die Steam-ID, die Tür-ID, den Zeitstempel und die Zugriffsmethode des Spielers für Audit-Trails aufzeichnet. Diese Protokolle sind von unschätzbarem Wert, wenn es um die Untersuchung von Exploits oder die Beilegung von Streitigkeiten zwischen Spielern darüber geht, wer wann auf was zugegriffen hat.
Alles zusammenfügen
Ein serienreifes Türschlosssystem vereint alle diese Komponenten in einem einheitlichen Rahmen. Der Einstiegspunkt ist eine Zielsysteminteraktion, entweder ox_target oder Wenn sie Jobzugriff haben, zeige eine Schaltfläche zum Entsperren an. Wenn sie eine Schlüsselkarte haben, zeige eine Wischoption an. Wenn sie einen Dietrich haben und die Tür als öffnbar gekennzeichnet ist, zeige die Option „Dietrich knacken“ an. Jeder Pfad wird in den entsprechenden Handler eingespeist, der auf dem Server validiert und das Ergebnis mit nahegelegenen Clients synchronisiert. Die Konfiguration sollte datengesteuert über Datenbankeinträge oder gemeinsam genutzte Konfigurationsdateien erfolgen, damit Serverbesitzer Türzugänge hinzufügen, entfernen und ändern können, ohne den Code zu berühren. Diese modulare Architektur bedeutet, dass du das Minispiel zum Öffnen von Schlössern austauschen, neue Zugriffsmethoden wie biometrische Scanner hinzufügen oder in völlig andere Inventarsysteme integrieren können, ohne die Kernlogik neu schreiben zu müssen.
