first commit
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
# 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:
|
||||
|
||||
```lua
|
||||
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.
|
||||
Reference in New Issue
Block a user