Files
devx-rp/docs/ARCHITECTURE.md
T
2026-08-05 01:29:39 +02:00

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.