diff --git a/README.md b/README.md index 3da0360..ed1be1f 100644 --- a/README.md +++ b/README.md @@ -14,10 +14,21 @@ Das Projekt besteht aus zwei Teilen: **Voraussetzungen:** FiveM-Server-Artifacts, MySQL/MariaDB, ein Lizenzschlüssel von [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 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 [github.com/overextended/oxmysql](https://github.com/overextended/oxmysql/releases) und nach `resources/[standalone]/oxmysql/` entpacken. @@ -33,9 +44,13 @@ Das Projekt besteht aus zwei Teilen: | Pfad | Inhalt | |---|---| | `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-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 @@ -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` > (später an Bank/Item-System koppeln). -### 🚓 Polizei & Rettungsdienst — *neu zu bauen* -Das gemeinsame Fraktions-CAD wurde entfernt. Polizei und Rettungsdienst sollen als -**zwei getrennte Module** entstehen (`aether-police`, `aether-ems`). +### 🚓 Polizei (`resources/[aether]/aether-police/`) ✅ migriert +Polizei-Managementsystem als **Tablet** (Taste **F5**). Modular aufgebaut wie das +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: -`aether_records` (Personenakten), `aether_wanted` (Fahndungen), `aether_jail` (Haft), -`aether_treasury` (Staatskasse). +### 🏥 Medizin (`resources/[aether]/aether-medical/`) ✅ migriert +Klinik-/Rettungsdienst-Managementsystem als **Klinik-PC** (Taste **F6**). Ein +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` - (Verletzt-Screen) werden ausgelöst, aber derzeit von niemandem verarbeitet -- **Waffenschein**: `exports['aether-documents']:StelleAus(charakterId, 'ws', …)` — solange - niemand ausstellt, bleiben Waffen bei Ammu-Nation gesperrt + (Verletzt-Screen) — von der jeweiligen Leitstelle verarbeitbar +- **Waffenschein**: `exports['aether-documents']:StelleAus(charakterId, 'ws', …)` - **Kennzeichenabfrage**: `exports['aether-garage']:HoleHalter(kennzeichen)` - **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 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). > Der Avatar koppelt konzeptionell an dieselben Komponenten wie der Charakter-Ersteller (`character/`). -### 🛡️ Admin-Dashboard (`admin/`) -Web-Prototyp des **zentralen Server-Admin-Dashboards** — reines HTML/CSS/JS. -Zum Ansehen `admin/index.html` im Browser öffnen. +### 🛡️ Admin-Panel (`resources/[aether]/aether-admin/`) ✅ migriert +Zentrales Server-Admin-Panel als echtes Resource, im Spiel mit **F9** (`/adminpanel`). +Aus dem Web-Prototyp `admin/` hervorgegangen und an `aether-core` gekoppelt. -**Bereiche:** -- **Dashboard** (Live-KPIs, 24h-Chart, Schnellaktionen, Ressourcen-Status, Admin-Log) -- **Weltkarte** mit Live-Standorten + **Quick-Menü** je Spieler (Verwalten/Kamera/TP/Freeze/Kick) -- **Spieler**: Tabelle + gruppiertes Aktions-Panel (Teleport, Zustand, Geben, Moderation: - Heal/Revive/Freeze/God/Mute, Geld, Item, Fahrzeug, Job, Warn/Kick/Ban) -- **Fahrzeuge**: Bild-Spawner (Autos/Bikes/Helis/Boote/Flugzeuge) + **Tuning** (Motor/Getriebe/ - Bremsen/Panzerung/Turbo/Lack), Reparieren/Herholen/Löschen -- **Live-Kameras** (WebRTC-Spectate, Einzel- & Multi-Cam-Views), **Kill-/Deathcams** - (manuell speicherbar, sonst Auto-Löschung nach 24 h) -- **Staatsprojekte** (aktivierbar nach positiver Abstimmung aus der Handy-Staat-App) -- **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** +- **Rechte** kommen aus `aether_users.admin_group` (`user` < `support` < `admin` < `owner`) — + **jede** der Aktionen wird serverseitig gegen eine Rechte-Matrix geprüft; die Oberfläche + blendet nur aus, was ohnehin abgelehnt würde. +- **Bereiche:** Dashboard, Weltkarte (Live-Positionen), Spieler (Teleport/Zustand/Geben/ + Moderation), Fahrzeuge, Immobilien, Fraktionen (inkl. Payday), Wirtschaft, Staatsprojekte, + **Live-Kameras**, Weltsteuerung, Ankündigungen, Bans & Warns, Reports, Ressourcen, + Audit-Log, Admin-Team, Einstellungen. +- **Bans** schreiben in `aether_users` — der Core sperrt darüber bereits beim Connect. +- Spieler melden aus dem Spiel mit **`/report `**; jede eingreifende Aktion landet + im Prüfprotokoll (`aether_admin_log`). -> Die „Kamera-Feeds" sind stilisierte Simulationen (in FiveM WebRTC-Stream). Datenmodelle -> (`players`, `weltFahrzeuge`, `staatsprojekte`, `killcams`, `fraktionen` …) sind vom UI getrennt. +**Live-Kameras (echtes WebRTC):** ein separater **Media-Server (SFU)** unter +`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/`) Web-Prototyp der **Fraktions-/Gang-Verwaltung** aus Führungssicht — reines HTML/CSS/JS. diff --git a/untitled.md b/untitled.md deleted file mode 100644 index e69de29..0000000