Das Admin-Menü für FiveM im klassischen GTA-Look.
Schnell, sicher und vollständig auf Deutsch , mit ESX Legacy oder komplett standalone.
Schnellstart · Funktionen · Rechte · Dokumentation · Fehler melden
Viele Admin-Menüs prüfen Rechte nur auf dem Client und sind damit für Cheater ein offenes Tor. TakeAdmin geht einen anderen Weg: Jede Aktion wird auf dem Server geprüft, jeder Versuch protokolliert, und kein Teammitglied kann gegen einen höheren Rang vorgehen.
| Merkmal | Beschreibung |
|---|---|
| Serverseitig abgesichert | Rechte, Ziel und Rang werden bei jeder Aktion zentral auf dem Server geprüft |
| GTA-Look | NUI-Menü im Stil des originalen Interaktionsmenüs, bedienbar mit Tastatur |
| ESX oder Standalone | Volle ESX-Legacy-Integration, läuft aber auch ohne Framework über ACE |
| Lückenlose Logs | Alle Aktionen in der Server-Konsole und optional in Discord |
| Komplett auf Deutsch | Oberfläche, Meldungen, Kommentare und Dokumentation |
|
Admin-Werkzeuge
|
Moderation
|
|
ESX Legacy
|
Sicherheit
|
¹ benötigt screenshot-basic · ² ox_inventory · ³ esx_ambulancejob · ⁴ esx_basicneeds
Important
TakeAdmin benötigt OneSync. Ohne OneSync funktionieren Spectate, Teleport, Blips und das Aufräumen nicht.
1. Herunterladen
Lade die neueste Version unter Releases herunter oder klone das Repository:
git clone https://github.com/finnconradtc/TakeAdmin.git2. Einfügen
Lege den Ordner in resources/. Der Ordnername muss exakt TakeAdmin lauten.
3. Starten
Trage TakeAdmin in der server.cfg nach seinen Abhängigkeiten ein:
ensure oxmysql
ensure es_extended
ensure TakeAdmin4. Rechte vergeben: siehe Rechte. Fertig.
| Ressource | Status | Zweck |
|---|---|---|
| OneSync | Pflicht | Spectate, Teleport, Blips, Aufräumen |
| oxmysql | Empfohlen | Speicherung von Banns und Verwarnungen in MySQL |
| es_extended | Optional | ESX-Menü und Gruppen |
| ox_inventory | Optional | Items vergeben |
| screenshot-basic | Optional | Screenshots von Spielern |
esx_ambulancejob |
Optional | Wiederbeleben |
esx_basicneeds |
Optional | Hunger und Durst |
TakeAdmin arbeitet mit Levels. Jede Gruppe hat ein Level, jede Funktion ein Mindest-Level in Config.Permissions.
| Gruppe | Level | ACE-Recht |
|---|---|---|
superadmin |
100 | takeadmin.superadmin |
admin |
80 | takeadmin.admin |
mod |
50 | takeadmin.mod |
support |
20 | takeadmin.support |
Das Level stammt aus der ESX-Gruppe oder aus ACE. Gilt beides, zählt das höhere.
Rechte per ACE vergeben
# Gruppe mit TakeAdmin-Recht verknüpfen
add_ace group.admin takeadmin.admin allow
# Spieler der Gruppe zuweisen
add_principal identifier.license:DEINE_LICENSE group.adminRechte per ESX vergeben
Gib dem Spieler einfach die passende ESX-Gruppe, zum Beispiel admin. TakeAdmin liest sie automatisch über xPlayer.getGroup() aus.
Note
Rang-Schutz: Aktionen gegen Spieler mit höherem Rang werden abgelehnt, und niemand kann eine Gruppe über dem eigenen Rang vergeben.
| Befehl | Ort | Beschreibung |
|---|---|---|
/report <Text> |
Ingame | Meldung an das Team senden |
/a <Text> |
Ingame | Nachricht im Admin-Chat |
ta_bans |
Konsole | Alle aktiven Banns anzeigen |
ta_unban <ID> |
Konsole | Bann aufheben |
Taste und Befehl zum Öffnen des Menüs legst du in config.lua fest.
| Datei | Inhalt | Für Clients lesbar |
|---|---|---|
config.lua |
Gruppen, Rechte, Tasten, Listen | Ja |
server/sv_config.lua |
Discord-Webhook und andere Geheimnisse | Nein |
Warning
config.lua wird an alle Clients gesendet. Trage niemals Webhooks, Tokens oder Passwörter dort ein.
Discord-Logs einrichten
- In Discord: Kanal-Einstellungen → Integrationen → Webhooks → Neuer Webhook
- Webhook-URL kopieren
- In
server/sv_config.luaeintragen restart TakeAdmin
Speicherung von Banns und Verwarnungen
Mit oxmysql |
Ohne oxmysql |
|---|---|
Tabellen takeadmin_bans und takeadmin_warns |
Dateien data/bans.json und data/warns.json |
| werden beim ersten Start automatisch angelegt | werden automatisch genutzt |
Das Menü öffnet sich nicht.
Prüfe, ob du eine Gruppe mit Rechten hast (ESX oder ACE) und ob
ensure TakeAdmin nach den Abhängigkeiten steht.
Spectate, Teleport oder Blips funktionieren nicht.
OneSync ist nicht aktiv. Aktiviere es in txAdmin oder per
set onesync on in der server.cfg.
Das ESX-Menü fehlt.
es_extended läuft nicht oder startet erst nach TakeAdmin.
Die Oberfläche zeigt noch die alte Version.
Verbinde dich einmal neu, der FiveM-Cache hält die alte NUI fest.
Banns landen nicht in der Datenbank.
oxmysql fehlt oder startet nach TakeAdmin. In diesem Fall wird automatisch data/bans.json genutzt.
Ich kann einen bestimmten Spieler nicht bannen.
Der Spieler hat einen höheren Rang als du. Das ist der Rang-Schutz und gewollt.
Projektstruktur
TakeAdmin/
├── fxmanifest.lua Ladereihenfolge der Skripte
├── config.lua Shared-Config: Gruppen, Rechte, Tasten, Listen
├── client/
│ ├── utils.lua TriggerCallback, DoAction, Notify, Teleport
│ ├── menu.lua Menü-Engine und Item-Bausteine
│ ├── menus.lua Alle Menüs und Untermenüs
│ ├── features.lua Noclip, Godmode, Spectate, Blips
│ └── main.lua Öffnen per Taste/Befehl, NUI-Init
├── server/
│ ├── sv_config.lua Geheimnisse (Discord-Webhook)
│ ├── utils.lua GetLevel, HasPerm, Log, RegisterCallback
│ ├── bans.lua Banns und Verwarnungen
│ └── main.lua Callbacks, Aktionen, Befehle
├── html/ NUI-Oberfläche
├── data/ JSON-Speicher
└── docs/ Dokumentation
Ablauf einer Aktion
sequenceDiagram
participant C as Client
participant S as Server
participant L as Logs
C->>S: DoAction(name, target, data)
S->>S: Aktion registriert?
S->>S: HasPerm(src, perm)?
S->>S: Ziel vorhanden und Rang niedriger?
alt erlaubt
S->>S: Aktion ausführen
S->>L: Log(...)
else verweigert
S->>L: Unerlaubter Zugriff
end
Neue Funktion hinzufügen
- Recht mit Level in
Config.Permissionseintragen - Serverseitig mit
Action(name, perm, needsTarget, fn)registrieren - Alle Eingaben prüfen (
tonumber,Trim(s, max)) - Aktion mit
Log(...)protokollieren - Menüeintrag mit
Can('<perm>')ausblenden - Neue Dateien in
fxmanifest.luaeintragen, Doku aktualisieren
Can()blendet nur aus. Die eigentliche Sicherheit kommt immer vom Server.
Ausführlich mit Codebeispiel: docs/entwicklung.md
Testen
# JavaScript prüfen
node --check html/script.js
# Lua-Syntax prüfen
npm i luaparse
node -e "require('luaparse').parse(require('fs').readFileSync('server/main.lua','utf8'),{luaVersion:'5.3'});console.log('OK')"Im Spiel mit restart TakeAdmin testen. Nach NUI-Änderungen einmal neu verbinden.
Beiträge sind willkommen, müssen aber die folgenden Regeln einhalten. Pull Requests, die dagegen verstoßen, werden ohne weitere Prüfung geschlossen.
- Erst ein Issue, dann Code. Neue Funktionen und größere Änderungen müssen vorher als Issue besprochen und freigegeben werden. Kleine Bugfixes und Tippfehler sind davon ausgenommen.
- Keine Duplikate. Prüfe vorher, ob es zum Thema bereits ein Issue oder einen Pull Request gibt.
- Sicherheitslücken nicht öffentlich melden. Lücken werden nicht als Issue gepostet, sondern direkt an finnconradtc gemeldet.
- Repository forken
- Branch vom aktuellen
mainanlegen, benannt nach Art der Änderung:feat/…für Funktionen,fix/…für Fehler,docs/…für Doku,refactor/…für Umbauten - Änderungen nach Conventional Commits committen, z. B.
fix: Teleport bei leerem Ziel abfangen - Pull Request gegen
mainöffnen und die Vorlage vollständig ausfüllen: Was wurde geändert, warum, und wie wurde getestet
- Ein Pull Request, ein Thema. Keine Sammel-PRs mit mehreren unabhängigen Änderungen.
- Nie dem Client vertrauen. Jede Aktion mit Wirkung läuft über eine serverseitige
Action(...)mit Rechteprüfung. PRs mit reiner Client-Prüfung werden abgelehnt. - Eingaben validieren. Alle Daten vom Client werden auf Typ und Länge geprüft (
tonumber,Trim(s, max)). - Alles protokollieren. Jede Admin-Aktion wird mit
Log(...)geloggt. - Rechte eintragen. Neue Funktionen bekommen ein eigenes Recht in
Config.Permissionsmit sinnvollem Level. - Keine Geheimnisse im Shared-Code. Webhooks, Tokens und Schlüssel gehören ausschließlich in
server/sv_config.lua. - Bestehenden Stil übernehmen. Kein Umformatieren von Code, der nicht zur Änderung gehört.
- Keine neuen Pflicht-Abhängigkeiten ohne vorherige Absprache. Optionale Ressourcen müssen sauber erkannt werden, TakeAdmin muss ohne sie weiterlaufen.
- Keine Breaking Changes an
config.lua, Datenbanktabellen oder Befehlen ohne Absprache im Issue. - Sprache Deutsch. Texte im Spiel, Kommentare und Doku werden auf Deutsch geschrieben.
-
node --check html/script.jsläuft ohne Fehler - Geänderte Lua-Dateien sind syntaktisch korrekt
- Im Spiel getestet, mit und ohne ESX, falls die Änderung ESX betrifft
- Rang-Schutz und Rechte geprüft, auch mit einer niedrigeren Gruppe
- Neue Dateien in
fxmanifest.luaeingetragen - README und
docs/aktualisiert, falls sich Funktionen, Rechte, Befehle oder Konfiguration ändern
Ungetesteter Code, auch automatisch generierter, wird nicht angenommen.
Mit dem Einreichen eines Pull Requests erklärst du dich mit den Bedingungen zu Beiträgen in der LICENSE einverstanden. Ein Anspruch auf Übernahme besteht nicht.
TakeAdmin steht unter einer eigenen Lizenz. Kostenlos nutzbar auf eigenen Servern. Verkauf, Reupload und das Entfernen der Credits sind nicht gestattet.
Die vollständigen Bedingungen stehen in der Datei LICENSE.
TakeAdmin wird entwickelt von finnconradtc
Wenn dir TakeAdmin gefällt, freue ich mich über einen Stern auf GitHub.