README aktualisiert, untitled.md entfernt
- Datenbank-Einrichtung um Docker-Compose mit Auto-Migration ergänzt - aether-medical, aether-police und das echte aether-admin (WebRTC-Kameras) dokumentiert; veraltete "neu zu bauen"- und Prototyp-Abschnitte ersetzt - leere untitled.md gelöscht Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
e4b82dd685
commit
190594eff2
91
README.md
91
README.md
@ -14,10 +14,21 @@ Das Projekt besteht aus zwei Teilen:
|
|||||||
**Voraussetzungen:** FiveM-Server-Artifacts, MySQL/MariaDB, ein Lizenzschlüssel von
|
**Voraussetzungen:** FiveM-Server-Artifacts, MySQL/MariaDB, ein Lizenzschlüssel von
|
||||||
[keymaster.fivem.net](https://keymaster.fivem.net).
|
[keymaster.fivem.net](https://keymaster.fivem.net).
|
||||||
|
|
||||||
1. **Datenbank anlegen** — Schema einspielen:
|
1. **Datenbank bereitstellen** — entweder per Docker (empfohlen, mit automatischer
|
||||||
|
Migration aller Schemas):
|
||||||
|
```bash
|
||||||
|
cp .env.example .env # Zugangsdaten anpassen
|
||||||
|
docker compose up -d # MariaDB starten + alle Schemas einspielen
|
||||||
|
```
|
||||||
|
…oder manuell einspielen:
|
||||||
```bash
|
```bash
|
||||||
mysql -u root -p < sql/aether.sql
|
mysql -u root -p < sql/aether.sql
|
||||||
|
mysql -u root -p aether < sql/aether_medical.sql
|
||||||
|
mysql -u root -p aether < sql/aether_police.sql
|
||||||
|
mysql -u root -p aether < sql/aether_admin.sql
|
||||||
```
|
```
|
||||||
|
Details zum Docker-Setup (idempotente Migration, Adminer, neue Migrationen):
|
||||||
|
[`docker/README.md`](docker/README.md).
|
||||||
2. **oxmysql herunterladen** (nicht in diesem Repo enthalten) von
|
2. **oxmysql herunterladen** (nicht in diesem Repo enthalten) von
|
||||||
[github.com/overextended/oxmysql](https://github.com/overextended/oxmysql/releases)
|
[github.com/overextended/oxmysql](https://github.com/overextended/oxmysql/releases)
|
||||||
und nach `resources/[standalone]/oxmysql/` entpacken.
|
und nach `resources/[standalone]/oxmysql/` entpacken.
|
||||||
@ -33,9 +44,13 @@ Das Projekt besteht aus zwei Teilen:
|
|||||||
| Pfad | Inhalt |
|
| Pfad | Inhalt |
|
||||||
|---|---|
|
|---|---|
|
||||||
| `server.cfg` | Serverkonfiguration, Startreihenfolge der Ressourcen |
|
| `server.cfg` | Serverkonfiguration, Startreihenfolge der Ressourcen |
|
||||||
| `sql/aether.sql` | Datenbankschema (Benutzer, Charaktere, Inventar, Fahrzeuge, Transaktionen) |
|
| `docker-compose.yml`, `docker/` | MariaDB + automatische DB-Migration (`schema_migrations`) |
|
||||||
|
| `sql/` | Schemas: `aether.sql` (Basis), `aether_medical.sql`, `aether_police.sql`, `aether_admin.sql` |
|
||||||
| `resources/[aether]/aether-core/` | **Fundament**: Spielerverwaltung, Charaktere, Geld, Zustand, NUI-Helfer |
|
| `resources/[aether]/aether-core/` | **Fundament**: Spielerverwaltung, Charaktere, Geld, Zustand, NUI-Helfer |
|
||||||
| `resources/[aether]/aether-loading/` | Ladebildschirm (migriert) |
|
| `resources/[aether]/aether-medical/` | Medizin-/Klinik-Managementsystem (migriert) |
|
||||||
|
| `resources/[aether]/aether-police/` | Polizei-Managementsystem (migriert) |
|
||||||
|
| `resources/[aether]/aether-admin/` | Server-Admin-Panel mit WebRTC-Live-Kameras (migriert) |
|
||||||
|
| *(weitere `resources/[aether]/…`)* | siehe Abschnitt **Systeme** |
|
||||||
|
|
||||||
### aether-core
|
### aether-core
|
||||||
|
|
||||||
@ -432,21 +447,32 @@ paketweise verkauft (z. B. „9mm ×30" liefert 30 Stück).
|
|||||||
> beliebige weitere Läden mit wenigen Zeilen anlegbar. Geld liegt in `spieler`
|
> beliebige weitere Läden mit wenigen Zeilen anlegbar. Geld liegt in `spieler`
|
||||||
> (später an Bank/Item-System koppeln).
|
> (später an Bank/Item-System koppeln).
|
||||||
|
|
||||||
### 🚓 Polizei & Rettungsdienst — *neu zu bauen*
|
### 🚓 Polizei (`resources/[aether]/aether-police/`) ✅ migriert
|
||||||
Das gemeinsame Fraktions-CAD wurde entfernt. Polizei und Rettungsdienst sollen als
|
Polizei-Managementsystem als **Tablet** (Taste **F5**). Modular aufgebaut wie das
|
||||||
**zwei getrennte Module** entstehen (`aether-police`, `aether-ems`).
|
Klinik-System: ein Kern mit Plugin-Registry und Rechteprüfung, an den sich Fachmodule
|
||||||
|
selbst anmelden. Personenakten, Fahndungen und Haft setzen auf den CAD-Tabellen
|
||||||
|
`aether_records`, `aether_wanted`, `aether_jail` auf; dazu Statistik und Administration.
|
||||||
|
|
||||||
Die Datenbanktabellen aus dem CAD bleiben bestehen und sind weiterverwendbar:
|
### 🏥 Medizin (`resources/[aether]/aether-medical/`) ✅ migriert
|
||||||
`aether_records` (Personenakten), `aether_wanted` (Fahndungen), `aether_jail` (Haft),
|
Klinik-/Rettungsdienst-Managementsystem als **Klinik-PC** (Taste **F6**). Ein
|
||||||
`aether_treasury` (Staatskasse).
|
Plugin-Kern (`Kern.RegistriereModul`) trägt **15 Fachmodule**: Dashboard, MDT,
|
||||||
|
Patienten, Leitstelle/Einsätze, Behandlung, Labor, Operation, Medikamente,
|
||||||
|
**Stationen & Belegung**, **Intensivstation**, **Blutbank**, **Fuhrpark**,
|
||||||
|
**Nachrichten/Aushänge**, **Berichte** und **Textbausteine**. Eigenes Rollen-/
|
||||||
|
Rechtesystem (`medical_personal`), ~34 Tabellen (`medical_*`).
|
||||||
|
|
||||||
Offene Anschlusspunkte, die auf ein solches Modul warten:
|
> Durchgehendes Prinzip: **Das System dokumentiert, es entscheidet nicht.** Jeder
|
||||||
|
> Vorgang trägt den verantwortlichen Mediziner; das System stellt keine Diagnose,
|
||||||
|
> verabreicht nichts, entlässt niemanden von selbst und leitet nichts aus Zeitablauf
|
||||||
|
> ab. Fristen *erinnern* nur.
|
||||||
|
|
||||||
|
**Integrations-Anschlusspunkte** (für Polizei/Medizin und andere Module):
|
||||||
- **Notruf-Events** `aether:phone:notruf` (110/112 aus dem Handy) und `aether:death:notruf`
|
- **Notruf-Events** `aether:phone:notruf` (110/112 aus dem Handy) und `aether:death:notruf`
|
||||||
(Verletzt-Screen) werden ausgelöst, aber derzeit von niemandem verarbeitet
|
(Verletzt-Screen) — von der jeweiligen Leitstelle verarbeitbar
|
||||||
- **Waffenschein**: `exports['aether-documents']:StelleAus(charakterId, 'ws', …)` — solange
|
- **Waffenschein**: `exports['aether-documents']:StelleAus(charakterId, 'ws', …)`
|
||||||
niemand ausstellt, bleiben Waffen bei Ammu-Nation gesperrt
|
|
||||||
- **Kennzeichenabfrage**: `exports['aether-garage']:HoleHalter(kennzeichen)`
|
- **Kennzeichenabfrage**: `exports['aether-garage']:HoleHalter(kennzeichen)`
|
||||||
- **Wiederbelebung**: `exports['aether-death']:Wiederbeleben(quelle, helferQuelle)`
|
- **Wiederbelebung**: `exports['aether-death']:Wiederbeleben(quelle, helferQuelle)`
|
||||||
|
- **Fuhrpark/Blutbank/Bettenspiegel** je als Export für fremde Ressourcen (reine Auskunft)
|
||||||
|
|
||||||
### 🧑 Charakterauswahl (`resources/[aether]/aether-character/`) ✅ migriert
|
### 🧑 Charakterauswahl (`resources/[aether]/aether-character/`) ✅ migriert
|
||||||
Vollständig an den Server angebunden: Die Liste kommt aus der Datenbank, Erstellen und Löschen
|
Vollständig an den Server angebunden: Die Liste kommt aus der Datenbank, Erstellen und Löschen
|
||||||
@ -578,26 +604,29 @@ Zum Ansehen `clothing/index.html` im Browser öffnen.
|
|||||||
> `kategorien` (Stile + Preise), `farben`, `getragen` (Besitz) vs. `outfit` (Anprobe).
|
> `kategorien` (Stile + Preise), `farben`, `getragen` (Besitz) vs. `outfit` (Anprobe).
|
||||||
> Der Avatar koppelt konzeptionell an dieselben Komponenten wie der Charakter-Ersteller (`character/`).
|
> Der Avatar koppelt konzeptionell an dieselben Komponenten wie der Charakter-Ersteller (`character/`).
|
||||||
|
|
||||||
### 🛡️ Admin-Dashboard (`admin/`)
|
### 🛡️ Admin-Panel (`resources/[aether]/aether-admin/`) ✅ migriert
|
||||||
Web-Prototyp des **zentralen Server-Admin-Dashboards** — reines HTML/CSS/JS.
|
Zentrales Server-Admin-Panel als echtes Resource, im Spiel mit **F9** (`/adminpanel`).
|
||||||
Zum Ansehen `admin/index.html` im Browser öffnen.
|
Aus dem Web-Prototyp `admin/` hervorgegangen und an `aether-core` gekoppelt.
|
||||||
|
|
||||||
**Bereiche:**
|
- **Rechte** kommen aus `aether_users.admin_group` (`user` < `support` < `admin` < `owner`) —
|
||||||
- **Dashboard** (Live-KPIs, 24h-Chart, Schnellaktionen, Ressourcen-Status, Admin-Log)
|
**jede** der Aktionen wird serverseitig gegen eine Rechte-Matrix geprüft; die Oberfläche
|
||||||
- **Weltkarte** mit Live-Standorten + **Quick-Menü** je Spieler (Verwalten/Kamera/TP/Freeze/Kick)
|
blendet nur aus, was ohnehin abgelehnt würde.
|
||||||
- **Spieler**: Tabelle + gruppiertes Aktions-Panel (Teleport, Zustand, Geben, Moderation:
|
- **Bereiche:** Dashboard, Weltkarte (Live-Positionen), Spieler (Teleport/Zustand/Geben/
|
||||||
Heal/Revive/Freeze/God/Mute, Geld, Item, Fahrzeug, Job, Warn/Kick/Ban)
|
Moderation), Fahrzeuge, Immobilien, Fraktionen (inkl. Payday), Wirtschaft, Staatsprojekte,
|
||||||
- **Fahrzeuge**: Bild-Spawner (Autos/Bikes/Helis/Boote/Flugzeuge) + **Tuning** (Motor/Getriebe/
|
**Live-Kameras**, Weltsteuerung, Ankündigungen, Bans & Warns, Reports, Ressourcen,
|
||||||
Bremsen/Panzerung/Turbo/Lack), Reparieren/Herholen/Löschen
|
Audit-Log, Admin-Team, Einstellungen.
|
||||||
- **Live-Kameras** (WebRTC-Spectate, Einzel- & Multi-Cam-Views), **Kill-/Deathcams**
|
- **Bans** schreiben in `aether_users` — der Core sperrt darüber bereits beim Connect.
|
||||||
(manuell speicherbar, sonst Auto-Löschung nach 24 h)
|
- Spieler melden aus dem Spiel mit **`/report <Text>`**; jede eingreifende Aktion landet
|
||||||
- **Staatsprojekte** (aktivierbar nach positiver Abstimmung aus der Handy-Staat-App)
|
im Prüfprotokoll (`aether_admin_log`).
|
||||||
- **Immobilien**, **Fraktionen** (Gehalt/h, erstellen/löschen), **Wirtschaft**
|
|
||||||
- **Weltsteuerung** (Zeit/Wetter/Blackout/Cleanup), **Ankündigungen**
|
|
||||||
- **Bans & Warns**, **Reports/Support**, **Ressourcen**, **Audit-Log**, **Admin-Team**, **Einstellungen**
|
|
||||||
|
|
||||||
> Die „Kamera-Feeds" sind stilisierte Simulationen (in FiveM WebRTC-Stream). Datenmodelle
|
**Live-Kameras (echtes WebRTC):** ein separater **Media-Server (SFU)** unter
|
||||||
> (`players`, `weltFahrzeuge`, `staatsprojekte`, `killcams`, `fraktionen` …) sind vom UI getrennt.
|
`aether-admin/media-server/` routet die Streams; der FiveM-Server prüft nur Rechte, stellt
|
||||||
|
kurzlebige Token aus und weist Ziel-Clients zum Senden an. Das Bild liefert die
|
||||||
|
**Bildschirmfreigabe** der Client-NUI (`getDisplayMedia`) — kein OBS nötig, sofern das
|
||||||
|
FiveM-CEF des Clients die Aufnahme erlaubt.
|
||||||
|
|
||||||
|
> Der Web-Prototyp `admin/` (reines HTML/CSS/JS, per `admin/index.html` im Browser ansehbar)
|
||||||
|
> bleibt als Design-Vorlage erhalten. Einrichtung der Kameras: `aether-admin/media-server/README.md`.
|
||||||
|
|
||||||
### 🎖️ Fraktions-/Gang-Verwaltung (`factions/`)
|
### 🎖️ Fraktions-/Gang-Verwaltung (`factions/`)
|
||||||
Web-Prototyp der **Fraktions-/Gang-Verwaltung** aus Führungssicht — reines HTML/CSS/JS.
|
Web-Prototyp der **Fraktions-/Gang-Verwaltung** aus Führungssicht — reines HTML/CSS/JS.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user