Der Rollenspielwert physischer Post
In einer Zeit, in der die meisten FiveM-Server vollständig auf Telefonbenachrichtigungen und digitale Nachrichten angewiesen sind, sorgt ein physisches Post- und Briefsystem für eine herausragende Immersionsebene. Spieler können handgeschriebene Briefe an andere Charaktere schreiben, Pakete mit Gegenständen versenden, offizielle Mitteilungen der Regierung erhalten, Rechnungen von Unternehmen erhalten und sogar mysteriöse anonyme Notizen finden. Dadurch entstehen Rollenspielmöglichkeiten, die die digitale Kommunikation einfach nicht reproduzieren kann. Ein im Briefkasten einer Person hinterlassener Drohbrief hat mehr Gewicht als eine Textnachricht. Ein handgeschriebener Liebesbrief fühlt sich persönlicher an als eine E-Mail. Per Post zugestellte Gerichtsvorladungen wirken offizieller. Über den Rollenspielwert hinaus schafft ein Postsystem eine natürliche Beschäftigungsmöglichkeit für Postangestellte, die in der ganzen Stadt Post abholen, sortieren und zustellen. Dieses Tutorial behandelt den Aufbau eines vollständigen Mailsystems vom Datenbankschema bis hin zur Zustellungsmechanik.
Datenbankschema für das Mailsystem
Die Datenbank muss Briefe, Pakete, Postfachzuordnungen und Zustellstatus verwalten. Jede E-Mail-Nachricht verfügt über eine Absender-ID, eine Empfänger-ID, einen Typ, der Briefe von Paketen unterscheidet, eine Betreffzeile, den Hauptinhalt für Briefe, angehängte Artikeldaten für Pakete, Zeitstempel für Erstellung und Zustellung sowie Statusflags, die verfolgen, ob die E-Mail aussteht, unterwegs ist, zugestellt oder gelesen wird. Postfächer sind an Immobilienadressen gebunden, sodass Spieler, die eine Wohnung besitzen oder mieten, über ein persönliches Postfach verfügen. Überall in der Stadt verteilte öffentliche Briefkästen dienen Spielern ohne Unterkunft, sodass sie ein Postamt aufsuchen müssen, um ihre Post abzuholen. Das Schema sollte auch systemgenerierte E-Mails für automatisierte Benachrichtigungen wie Rechnungen, Gerichtsdokumente, Bewerbungen und Regierungsankündigungen unterstützen, die durch Scripts ohne Absender eines Spielers ausgelöst werden können.
Briefe schreiben und versenden
Die Benutzeroberfläche zum Schreiben von Briefen sollte sich anfühlen, als würde man einen echten Brief verfassen. Präsentiere den Spielern einen NUI, der einem Blatt Papier ähnelt und Felder für den Namen des Empfängers, eine Betreffzeile und einen Freitexttext enthält. Verwende im NUI eine Schriftart im Handschriftstil, um die Ästhetik der physischen Buchstaben zu verstärken. Das Empfängerfeld sollte die Charakterdatenbank nach Namen durchsuchen, anstatt von den Spielern die Kenntnis interner Kennungen zu verlangen. Wenn der Player mit dem Schreiben fertig ist und auf „Senden“ klickt, sendet der Client die Daten an den Server, der den Inhalt validiert, prüft, ob der Absender über genügend Geld für die Portokosten verfügt, die Kosten abzieht und die Postsendung mit dem Status „Ausstehend“ in die Datenbank einfügt. Lege angemessene Grenzen für die Textlänge fest, etwa 500 Zeichen für Standardbriefe und 1000 für Premium-Versand, um Missbrauch zu verhindern und dennoch aussagekräftige Nachrichten zu ermöglichen. Der Brief gelangt dann in die Zustellpipeline und wartet darauf, dass ein Postmitarbeiter ihn bearbeitet oder der automatische Zustelltimer abläuft.
Paketsystem mit Artikelanhängen
Pakete erweitern das Mailsystem über den Text hinaus, indem sie es Spielern ermöglichen, sich gegenseitig physische Gegenstände zu senden. Ein Spieler besucht ein Postamt, wählt Gegenstände aus seinem Inventar aus, die er in ein Paket aufnehmen möchte, schreibt optional eine Notiz und zahlt die Portogebühr für das Paket. Der Server entfernt die Elemente aus dem Inventar des Absenders und speichert sie als JSON-Blob in der Anhangspalte des E-Mail-Elements. Wenn der Empfänger das Paket in seinem Briefkasten oder bei der Post öffnet, deserialisiert der Server die Anhangsdaten und fügt jeden Artikel wieder dem Inventar des Empfängers hinzu, wobei er zunächst prüft, ob verfügbarer Platz vorhanden ist. Wenn der Vorrat des Empfängers voll ist, bleibt das Paket in seinem Briefkasten, bis er Platz macht. Dies schafft eine legitime Möglichkeit, Gegenstände an Offline-Spieler zu senden, und eröffnet Roleplay für Pflegepakete, Beweislieferungen und den Austausch von Geschenken. Validiere alle Artikeldaten auf dem Server, um doppelte Exploits zu verhindern, und protokollierest du jede Pakettransaktion zur Überprüfung durch den Administrator.
Jobs und Zustellwege für Postangestellte
Der Job als Postangestellter verwandelt die Postzustellung von einem Hintergrundprozess in einen aktiven Rollenspielinhalt. Spieler, die sich bei der Post anmelden, erhalten einen Lieferwagen und eine Route mit ausstehenden Postsendungen zur Zustellung. Die Route wird generiert, indem alle ausstehenden Postsendungen abgefragt, nach Zustellzonen gruppiert und eine geordnete Abfolge von Wegpunkten erstellt werden, die die Reisedistanz minimiert. Jeder Stopp auf der Route platziert einen Markierungspunkt auf der Karte und eine Markierung am Zielbriefkasten. Wenn der Postangestellte die Markierung erreicht und die Interaktionstaste drückt, wechselt die Postsendung vom Status „Ausstehend“ in den Status „Zugestellt“ und wird im Postfach des Empfängers verfügbar. Postangestellte erhalten ein Grundgehalt plus Prämien pro Zustellung und schaffen so eine ehrliche Einkommensquelle. Implementiere für Server ohne aktive Postmitarbeiter einen automatischen Zustellungstimer, der ausstehende E-Mails nach einer konfigurierbaren Verzögerung in den Status „Zugestellt“ versetzt und so sicherstellt, dass die E-Mails schließlich ankommen, auch wenn niemand auf dem Postweg unterwegs ist.
Mailbox-Interaktions- und Leseschnittstelle
Wenn sich ein Spieler seinem Postfach nähert und mit ihm interagiert, fragt der Server alle an ihn adressierten E-Mails mit dem Status „Zugestellt“ oder „Gelesen“ ab. Der NUI zeigt eine Liste im Posteingangsstil an, in der jede E-Mail mit Absendername, Betreff, Typsymbol und Zeitstempel angezeigt wird. Ungelesene Briefe werden mit einer Hervorhebung oder einem Badge-Indikator angezeigt. Wenn du auf einen Brief klicken, wird dieser im Vollansichtsmodus geöffnet, der wie ein physischer Brief auf Papier aussieht, mit dem Absender und dem Datum oben, dem Haupttext in der Mitte und einer Schaltfläche zum Schließen. Bei Paketen zeigt die Ansicht die beigefügte Notiz und eine Liste der enthaltenen Gegenstände mit einer Schaltfläche „Paket öffnen“, die die Gegenstände in das Inventar des Spielers überträgt. Markiere Briefe beim Öffnen als gelesen und entfernst du sie nach einer konfigurierbaren Aufbewahrungsfrist aus dem Postfach, um ein Aufblähen der Datenbank zu verhindern. Füge eine Antwortschaltfläche hinzu, die das Empfängerfeld mit dem Namen des ursprünglichen Absenders vorab ausfüllt, um die Hin- und Her-Korrespondenz zu vereinfachen. Gestalte Systemmitteilungen anders und verwendest du einen offiziellen Briefkopf, um sie von der vom Spieler verfassten E-Mail zu unterscheiden.
Systembenachrichtigungen und automatisierte E-Mails
Über die Kommunikation von Spieler zu Spieler hinaus wird das Mailsystem zu einem leistungsstarken Werkzeug für andere Server-Scripts, um immersive Benachrichtigungen zu übermitteln. Anstelle langweiliger Toast-Benachrichtigungen können Scripts formelle E-Mails senden. Ein Gerichtssystem verschickt offizielle Vorladungen auf dem Briefkopf der Regierung. Ein Unternehmen versendet Rechnungen und Zahlungserinnerungen. Ein Immobilienverwaltungs-Script sendet Mietzahlungsbescheide und Räumungswarnungen. Ein Fraktionssystem verschickt Rekrutierungsbriefe oder Missionsbriefings. Erstelle einen einfachen Serverexport, den jede Ressource aufrufen kann, um ein System-Mail-Element in die Warteschlange zu stellen, ohne die Interna des Mail-Systems verstehen zu müssen. Der Export akzeptiert eine Empfängerkennung, einen Betreff, einen Text, einen E-Mail-Typ und optionale Anhänge. Dadurch wird dein E-Mail-System zu einer universellen Benachrichtigungsebene, die sich in die Spielwelt integriert fühlt, anstatt ein aufdringliches UI-Overlay zu sein, das die Immersion unterbricht.
