Skip to content

About

FiveM admin menu with ESX Legacy & standalone support, rank-based permissions, bans, warnings and Discord logging

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

TakeAdmin Banner

TakeAdmin

Das Admin-Menü für FiveM im klassischen GTA-Look.
Schnell, sicher und vollständig auf Deutsch , mit ESX Legacy oder komplett standalone.

Version 1.0.0 FiveM OneSync ESX Legacy Lua 5.4

Schnellstart · Funktionen · Rechte · Dokumentation · Fehler melden


Warum TakeAdmin?

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

Funktionen

Admin-Werkzeuge

  • Noclip und Godmode
  • Spectate von Spielern
  • Spieler-Blips auf der Karte
  • Teleport zu Spielern und Spieler holen
  • Aufräumen von Fahrzeugen und Objekten
  • Screenshots von Spielern¹

Moderation

  • Banns mit Speicherung in MySQL oder JSON
  • Verwarnungen mit Verlauf
  • Report-System für Spieler
  • Interner Admin-Chat
  • Rang-Schutz gegen Missbrauch
  • Konsolenbefehle für Bann-Verwaltung

ESX Legacy

  • Geld und Gruppen verwalten
  • Items vergeben²
  • Wiederbeleben³
  • Hunger und Durst setzen⁴
  • Blendet sich ohne ESX automatisch aus

Sicherheit

  • Keine Aktion ohne Serverprüfung
  • Unerlaubte Zugriffe werden geloggt
  • Eingaben werden validiert
  • Geheimnisse bleiben auf dem Server
  • Gruppen nur bis zum eigenen Rang vergebbar

¹ benötigt screenshot-basic · ² ox_inventory · ³ esx_ambulancejob · ⁴ esx_basicneeds


Schnellstart

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.git

2. 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 TakeAdmin

4. Rechte vergeben: siehe Rechte. Fertig.


Abhängigkeiten

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

Rechte

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.admin
Rechte 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.


Befehle

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.


Konfiguration

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
  1. In Discord: Kanal-Einstellungen → Integrationen → Webhooks → Neuer Webhook
  2. Webhook-URL kopieren
  3. In server/sv_config.lua eintragen
  4. 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

Häufige Fragen

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.

Für Entwickler

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
Loading
Neue Funktion hinzufügen
  1. Recht mit Level in Config.Permissions eintragen
  2. Serverseitig mit Action(name, perm, needsTarget, fn) registrieren
  3. Alle Eingaben prüfen (tonumber, Trim(s, max))
  4. Aktion mit Log(...) protokollieren
  5. Menüeintrag mit Can('<perm>') ausblenden
  6. Neue Dateien in fxmanifest.lua eintragen, 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.


Mitmachen

Beiträge sind willkommen, müssen aber die folgenden Regeln einhalten. Pull Requests, die dagegen verstoßen, werden ohne weitere Prüfung geschlossen.

Vor dem Start

  • 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.

Ablauf

  1. Repository forken
  2. Branch vom aktuellen main anlegen, benannt nach Art der Änderung: feat/… für Funktionen, fix/… für Fehler, docs/… für Doku, refactor/… für Umbauten
  3. Änderungen nach Conventional Commits committen, z. B. fix: Teleport bei leerem Ziel abfangen
  4. Pull Request gegen main öffnen und die Vorlage vollständig ausfüllen: Was wurde geändert, warum, und wie wurde getestet

Pflichtregeln für Code

  • 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.Permissions mit 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.

Vor dem Pull Request prüfen

  • node --check html/script.js lä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.lua eingetragen
  • README und docs/ aktualisiert, falls sich Funktionen, Rechte, Befehle oder Konfiguration ändern

Ungetesteter Code, auch automatisch generierter, wird nicht angenommen.

Rechtliches

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.


Lizenz

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.

About

FiveM admin menu with ESX Legacy & standalone support, rank-based permissions, bans, warnings and Discord logging

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors