2.2 KiB
Architektur
Ressourcen
devx_core
Serverautoritative Spieler-Sessions, Identifier, Geld, Callbacks und Positionsspeicherung. Andere DevX-Ressourcen greifen ausschließlich über Exports und validierte Serverevents auf Sitzungsdaten zu.
devx_characters
Charakterliste, Erstellung, Auswahl und manueller Spawn. Der Spieler wird nicht vom Basic-Gamemode automatisch gespawnt.
devx_banking
Konten, Kontonummern, Überweisungen und Transaktionshistorie. Geldoperationen werden serialisiert, damit zwei gleichzeitige Buchungen ein Konto nicht überziehen.
devx_housing
Kaufbare Objekte. Mehrere Wohnungen können denselben GTA-Innenraum benutzen, weil jeder Eigentümer beim Betreten in einen eigenen OneSync-Routing-Bucket verschoben wird.
devx_hud
Eigene kleine NUI für Charaktername, Bargeld und Kontostand. Die Minimap wird nach dem Spawn dauerhaft eingeblendet.
devx_phone
Eigene, originale NUI. In v0.1 zeigt sie Charakter- und Bankdaten. Kontakte, Nachrichten und Anrufe sind für spätere Versionen vorbereitet.
Vertrauensgrenzen
- Der Client darf niemals Kontostände, Eigentum oder Charakterbesitz festlegen.
- Jeder Charakterzugriff wird gegen die FiveM-
license:des Spielers geprüft. - Beträge werden auf Ganzzahlen, Positivität und Obergrenzen geprüft.
- Wohnungskäufe und Bankbuchungen besitzen serverseitige Sperren.
- NUI ist nur Darstellung; alle fachlichen Entscheidungen trifft der Server.
Erweiterungsprinzip
Neue Systeme erhalten eine eigene Ressource und verwenden Core-Exports. Beispiele:
local player = exports.devx_core:GetPlayer(source)
local ok = exports.devx_core:RemoveCash(source, 100, 'Kauf')
Für Datenbankzugriffe stets Platzhalter verwenden; niemals SQL-Strings mit ungeprüften Clientwerten zusammensetzen.
Charaktervorschau und Begrüßungssequenz
devx_characters erzeugt für die Auswahl einen lokalen, nicht synchronisierten
Vorschau-Ped und eine Skriptkamera. Der echte Spieler bleibt währenddessen
unsichtbar und eingefroren. Neue Charaktere starten einmalig am Flughafen.
Fahrer, Fahrzeug, Dialoge und Fahrt laufen clientseitig; der erfolgreiche
Abschluss wird serverseitig im Charakterfeld metadata gespeichert.