Warum Systeme mit mehreren Zeichen wichtig sind
Ein System mit mehreren Charakteren ermöglicht es jedem Spieler, mehrere separate Charaktere auf demselben Server zu besitzen, von denen jeder seine eigene Identität, sein eigenes Inventar, sein eigenes Bankkonto, seinen eigenen Job und seine eigene Vorstrafe hat. Dies ist eine Grundfunktion seriöser Roleplay-Server, da Spieler damit verschiedene Handlungsstränge erkunden können, ohne ihre Hauptfigur im Stich zu lassen. Ein Bandenführer kann auch einen Polizisten in einer separaten Figur spielen, oder ein Geschäftsinhaber kann eine zweite Figur haben, die neu in der Stadt angekommen ist. Ohne Unterstützung mehrerer Charaktere benötigen Spieler entweder alternative Konten oder sind an einen einzigen Rollenspielpfad gebunden. Der korrekte Aufbau dieses Systems erfordert sorgfältige Aufmerksamkeit für die Datenisolation, das Design des Datenbankschemas und eine ausgefeilte Benutzeroberfläche für die Zeichenauswahl, die den Ton für das gesamte Servererlebnis angibt.
Datenbankschema-Design
Die Grundlage jedes Mehrzeichensystems ist das Datenbankschema. Du musst Daten auf Spielerebene von Daten auf Charakterebene trennen. In der Spielertabelle werden die Lizenzkennung, Steam Hex, die Discord-ID und kontoweite Einstellungen gespeichert. Die Charaktertabelle speichert alles, was für einen Charakter spezifisch ist: Name, Geburtsdatum, Nationalität, Hintergrundgeschichte, Aussehen, Spawn-Position und einen Fremdschlüssel, der eine Verbindung zum Spieler herstellt. Jede andere Tabelle in deiner Datenbank, die zuvor auf eine Spieler-ID verwiesen hat, muss jetzt stattdessen auf eine character_id verweisen. Dazu gehören Inventare, Bankkonten, Fahrzeuge, Wohnungen, Telefonkontakte, Vorstrafen und Arbeitsaufträge. Wenn du dieses Schema von Anfang an richtig anwenden, wird eine spätere schmerzhafte Migration vermieden.
Serverseitige Zeichenverwaltung
Der Server verarbeitet alle Zeichen-CRUD-Vorgänge: Erstellen neuer Zeichen, Laden vorhandener Zeichen, Speichern von Zeichendaten und Löschen von Zeichen. Wenn ein Spieler eine Verbindung herstellt, ruft der Server seinen Spielerdatensatz und alle zugehörigen Charaktere aus der Datenbank ab. Diese Daten werden an den Client gesendet, um die Benutzeroberfläche für die Charakterauswahl zu füllen. Bei der Zeichenerstellung werden Eingabefelder wie die Namenslänge validiert und doppelte Namen verhindert, wenn dein Server eindeutige Identitäten erzwingt. Wenn ein Spieler einen Charakter auswählt, lädt der Server alle zugehörigen Datentabellen, legt die aktive Charakter-ID des Spielers im Speicher fest und löst den Spawn-Prozess aus. Ein entscheidendes Detail besteht darin, sicherzustellen, dass jeweils nur ein Charakter pro Spieler aktiv sein kann und dass beim Wechseln der Charaktere die Daten des vorherigen Charakters ordnungsgemäß gespeichert und entladen werden.
Ablauf der Charaktererstellung
Der Charaktererstellungsprozess sollte intuitiv und eindringlich sein. Wenn ein Spieler auf einen leeren Charakterplatz klickt, öffnet der NUI ein Erstellungsformular, in das er einen Vornamen, einen Nachnamen, ein Geburtsdatum, ein Geschlecht und optional eine Hintergrundgeschichte eingibt. Nach dem Absenden des Formulars validiert der Server die Eingabe, fügt einen neuen Zeichendatensatz ein und leitet den Player zum Darstellungseditor weiter. Mit dem Erscheinungsbild-Editor können sie ihr Ped-Modell mithilfe des GTA-eigenen Komponentenvariationssystems anpassen, einschließlich Gesichtsmerkmalen, Haaren, Kleidung und Accessoires. Sobald sie ihr Aussehen bestätigt haben, werden die Skin-Daten in JSON serialisiert und in der Spalte skin des Charakters gespeichert. Der Spieler wird dann am Standard-Spawn-Ort für neue Spieler in die Welt gespawnt.
Clientseitiger NUI zur Zeichenauswahl
Der Charakterauswahlbildschirm ist das Erste, was Spieler sehen, nachdem sie eine Verbindung hergestellt haben. Daher muss er elegant aussehen und schnell geladen werden. Verwende eine Kamera, die an einem interessanten Ort auf der Karte positioniert ist, wobei die Charakter-Peds des Spielers in einem Aufstellungs- oder Karussellformat gerendert werden. Auf jeder Charakterkarte werden der Name, das Datum des letzten Spiels, die Berufsbezeichnung und eine Finanzübersicht angezeigt. Leere Slots zeigen ein Plus-Symbol, das den Spieler dazu einlädt, einen neuen Charakter zu erstellen. Der NUI kommuniziert mit dem Client-Lua-Script über SendNUIMessage und RegisterNUICallback, und der Client Lua übernimmt das Ped-Spawnen, die Kameraeinrichtung und die Weiterleitung von Auswahlen an den Server. Friere den Spieler ein und blendest du das HUD während der Auswahl aus, um jegliche Gameplay-Interaktion zu verhindern, bevor ein Charakter vollständig geladen ist.
Spawn-Auswahl und Datenisolierung
Nachdem der Spieler einen Charakter ausgewählt hat, muss er auswählen, wo er spawnen möchte. Zu den üblichen Optionen gehören die letzte bekannte Position, ihre Wohnung oder ihr Haus, das Krankenhaus, wenn sie zuletzt abgeschossen wurden, oder ein Standard-Spawnpunkt in der Stadt. Die Spawn-Auswahl sollte nur für den Charakter relevante Optionen anzeigen, zum Beispiel sollte eine Wohnungsoption nur erscheinen, wenn dieser Charakter tatsächlich eine besitzt. Die Datenisolation ist das wichtigste architektonische Problem in einem System mit mehreren Zeichen. Jede Ressource auf deinem Server, die Daten pro Spieler speichert, muss die Charakter-ID und nicht die Lizenz des Spielers oder die Server-ID als Schlüssel verwenden. Dazu gehören Inventare, Telefondaten, Bankdaten, Fahrzeugbesitz, Wohnraum und Strafregister. Ein häufiger Fehler besteht darin, die Server-Quell-ID des Spielers als Datenbankschlüssel zu verwenden, der beim Wechseln der Charaktere vollständig zerstört wird. Überwache jede Ressource auf deinem Server und stellst du sicher, dass sie alle auf die ID des aktiven Charakters verweisen, die du durch einen Export wie exports['multichar']:GetCharacterId(source) verfügbar machen.
Charakterwechsel und Sitzungsverwaltung
Spielern zu ermöglichen, den Charakter zu wechseln, ohne die Verbindung vollständig zu trennen und wieder herzustellen, ist eine Lebensqualitätsfunktion, die die Spieler sehr zu schätzen wissen. Wenn ein Spieler einen Charakterwechsel auslöst, speichert der Server alle Daten für den aktuellen Charakter, löscht alle charakterspezifischen Zustände aus dem Speicher und schickt den Spieler zurück zum Auswahlbildschirm. Auf dem Client bedeutet dies, den aktuellen Ped zu zerstören, alle Blips und Markierungen zu entfernen, die mit dem Job oder den Eigenschaften des Charakters verknüpft sind, alle aktiven NUI-Schnittstellen zu löschen und die Kamera auf die Auswahlansicht zurückzusetzen. Jede Ressource auf dem Server empfängt ein multichar:characterUnloaded-Ereignis, damit sie ihren eigenen Status bereinigen kann. Hier zeigt sich eine schlechte Datenisolation: Wenn eine Ressource Daten nach Quell-ID statt nach Zeichen-ID zwischenspeichert, führt das Wechseln der Zeichen zu Datenverlusten zwischen den Zeichen. Es ist wichtig, den Charakterwechsel gründlich zu testen. Erstelle zwei Charaktere mit unterschiedlichen Jobs, Inventaren und Bankguthaben und wechseln du dann schnell hin und her, um sicherzustellen, dass zwischen ihnen keine Daten verloren gehen.
Zusammenfassung
Agency Scripts baut seine gesamte Produktlinie nach denselben Grundprinzipien: Framework-agnostische Architektur, schlanke Performance-Eigenschaften, klar dokumentierte Konfiguration und eine API, die echte Composability zwischen den Scripts ermöglicht. Kein Script ist eine Insel — jedes ist so gebaut, dass es gut allein und noch besser als Teil des Ökosystems funktioniert.
Für Fragen zur Installation, Konfiguration oder Kompatibilität ist der Agency Scripts Discord der schnellste Weg zur Hilfe. Die Community dort ist aktiv und hilfsbereit, und das Core-Team ist regelmäßig präsent. Für kritische Probleme steht auch ein direktes Support-Ticket-System auf der Tebex-Produktseite zur Verfügung.
Updates für alle Agency-Scripts werden über Tebex-Benachrichtigungen kommuniziert. Active-Business-Abonnenten erhalten neue Scripts automatisch ohne zusätzlichen Kauf. Changelog-Details erscheinen im #changelog-Kanal des Discords, damit du Updates bewerten kannst, bevor du sie auf einem Produktionsserver installierst.
