Spare 20 % mit WELCOMEAngebote ansehen
FiveM-Whitelist

FiveM-Whitelist – Vollständige Anleitung (txAdmin, Skripte, DB)

Eine Whitelist in FiveM ist ein Zugriffskontrollmechanismus, der den Serverzugriff auf vorab genehmigte Spieler beschränkt, die anhand ihrer eindeutigen Kennungen (Rockstar-Lizenz, Steam-ID, Discord-ID usw.) abgeglichen werden. Unten findest du eine produktionsbereite Anleitung, die die integrierte Whitelist von txAdmin, Skriptmuster, Datenbankspeicherung und Zuverlässigkeitshinweise abdeckt.


TL;DR Optionsmatrix

ModusWo einstellenWas wird geprüftAm besten fürHinweise
Genehmigte LizenztxAdmin → Einstellungen → Spielerverwaltung → Whitelist-ModusLizenz: (Rockstar)Die meisten ServerEinfach, zuverlässig; manuelle Genehmigungen oder Vorabgenehmigungen werden unterstützt
Discord-MitgliedtxAdmin (Discord verknüpft)Zwietracht: ist GildenmitgliedGemeinschaften mit Schwerpunkt auf DiscordNicht-Discord-Benutzer blockiert
Discord-RolletxAdmin (Discord verknüpft)Zwietracht: hat eine besondere RolleRollenbasierter Zugriff (Spender, Mitarbeiter)Kombiniere mit Rollenautomatisierungen
Nur AdministratorentxAdminNur AdministratorenWartungs-/EntwicklungsnächteSperrt den Server effektiv, nicht empfohlen
Benutzerdefiniertes SkriptLua/JS-RessourceAlle gewünschten KennungenGranulare Regeln und UXBenötigt Code + Wartung

Empfehlung: Verwenden Genehmigte Lizenz für die Basislinie (jeder hat eine Rockstar-Lizenz), dann füge hinzu Discord-Rolle als zusätzliches Tor für Sonderebenen.


Wie man die Whitelist in txAdmin aktiviert und bedient

Voraussetzungen

  • txAdmin läuft (im Lieferumfang von FXServer enthalten).
  • Für Discord-Modi: Discord-Integration konfiguriert (Bot eingeladen, Gilde/Rolle ausgewählt).

Whitelist aktivieren

  1. Offen txAdmin → Einstellungen → Player-Manager.
  2. Satz Whitelist-Modus zu einem von: Genehmigte Lizenz, Discord-Mitglied, Discord-Rolle, oder Nur Administratoren.
  3. Setze eine Ablehnungsnachricht, zB:
    Nicht auf der Whitelist. Bewirb dich unter discord.gg/deineeinladung
  4. Speichern.

Spieler genehmigen (zwei Flows)

  • Passiv (Warteschlange): Wenn ein nicht zugelassener Spieler versucht, beizutreten, erscheint eine Anfrage unter Whitelist. Mit einem Klick genehmigen/ablehnen.
  • Aktiv (vorab genehmigt): Gehe zu Whitelist → Genehmigung hinzufügen und füge eine Kennung in das Formular ein Typ:Wert, zB
    • Lizenz:110000112345678
    • Dampf:11000010abcdef0
    • Zwietracht:123456789012345678

Widerrufen

  • Offen Spieler oder Whitelist und klicke Widerrufen neben der Genehmigung.

Tipps

  • Bevorzugen Lizenz Kennungen für den Basiszugriff (universell vorhanden).
  • Behalte deine Ablehnungsnachricht umsetzbar (Discord-Link + Grundregeln + Ticket-CTA).
  • Für Mitarbeiter/Entwickler, Stapelanforderungen: zB muss sein Lizenz + Discord-Rolle.

Details zur technischen Implementierung

Whitelists laufen während der Verbindungsaufschub Phase. Der Server überprüft den Kennungssatz des Spielers und akzeptiert oder lehnt ihn ab, bevor die Ressourcen geladen werden. Dadurch wird die Auslastung gering gehalten und nicht zugelassene Spieler frühzeitig blockiert.

Kennungstypen (Zuverlässigkeit)

  • Lizenz: (Rockstar) — stabil, an den Kauf des Spiels gebunden; empfohlener Primärschlüssel.
  • Dampf: – nur vorhanden, wenn Steam ausgeführt wird; kann fehlen, wenn Spieler Steam nicht verwenden.
  • Zwietracht: – nur vorhanden, wenn Discord ausgeführt wird und Ihr Server es liest.
  • IP-Adresse: – dynamisch; für Telemetrie/Ratenbegrenzung verwenden, nicht für Identität.

Minimales Whitelist-Skript (UX-Aufschub + Multi-ID)

-- resource: simple-whitelist
-- fxmanifest.lua should include '@oxmysql/lib/MySQL.lua' if you use DB code below.

local STATIC_WHITELIST = {
 ["license:110000112345678"] = true,
 ["steam:11000010abcdef0"] = true,
 ["discord:123456789012345678"] = true,
}

local function collectIdentifiers(src)
 local ids = {}
 for _, id in ipairs(GetPlayerIdentifiers(src)) do ids[id] = true end
 return ids
end

AddEventHandler("playerConnecting", function(name, setKickReason, deferrals)
 local src = source
 deferrals.defer()
 deferrals.update(("Checking whitelist for %s..."):format(name))

 local ids = collectIdentifiers(src)

 -- Require at least a Rockstar license in all cases
 local hasLicense = false
 for id, _ in pairs(ids) do
 if id:sub(1, 8) == "license:" then hasLicense = true break end
 end
 if not hasLicense then
 return deferrals.done("You must start the game normally (Rockstar license missing). Restart and try again.")
 end

 -- Static allowlist quick‑path
 for id, _ in pairs(ids) do
 if STATIC_WHITELIST[id] then
 return deferrals.done()
 end
 end

 -- Fallback: not approved
 return deferrals.done("Not whitelisted. Apply at discord.gg/yourinvite")
end)

Verwenden Verzögerungen.Update um Fortschrittsmeldungen anzuzeigen, während du IDs und/oder eine Datenbank überprüfst. Dies reduziert falsche “Timeout”-Meldungen.


Datenbankgesteuerte Whitelist (oxmysql, produktionsbereit)

Schema

CREATE TABLE IF NOT EXISTS whitelist (
 id INT UNSIGNED NOT NULL AUTO_INCREMENT,
 identifier VARCHAR(64) NOT NULL,
 note VARCHAR(120) NULL,
 added_by VARCHAR(64) NULL,
 added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY (id),
 UNIQUE KEY u_identifier (identifier)
);

Serverseitige Prüfung (oxmysql)

-- Benötigt oxmysql. Füge zu fxmanifest hinzu: '@oxmysql/lib/MySQL.lua'
AddEventHandler('playerConnecting', function(name, setKickReason, deferrals)
 local src = source
 deferrals.defer()
 deferrals.update('Whitelist wird überprüft...')

 local ids = {}
 for _, id in ipairs(GetPlayerIdentifiers(src)) do table.insert(ids, id) end

 -- Single scalar: Ist eine Kennung genehmigt?
 local rowCount = MySQL.scalar.await(
 'SELECT COUNT(*) FROM whitelist WHERE identifier IN (?)',
 { ids }
 )

 if rowCount and rowCount > 0 then
 return deferrals.done()
 else
 return deferrals.done('Zugriff verweigert. Bewirb dich unter discord.gg/deineeinladung')
 end
end)

Admin-QoL-Befehle (Beispiel)

RegisterCommand('wladd', function(src, args)
 if src ~= 0 then return end -- nur Konsole aus Vereinfachung
 local identifier = args[1]
 if not identifier or not identifier:find(':') then
 print('Verwendung: wladd identifierType:identifierValue')
 return
 end
 local ok = MySQL.prepare.await('INSERT IGNORE INTO whitelist (identifier,note,added_by) VALUES (?, ?, ?)', {
 identifier, 'manuell hinzugefügt', 'Konsole'
 })
 print(ok and ('Auf Whitelist gesetzt: %s'):format(identifier) or 'Fehler beim Hinzufügen')
end, true)

RegisterCommand('wlrm', function(src, args)
 if src ~= 0 then return end
 local identifier = args[1]
 local ok = MySQL.prepare.await('DELETE FROM whitelist WHERE identifier = ?', { identifier })
 print(ok and ('Entfernt: %s'):format(identifier) or 'Fehler beim Entfernen')
end, true)

Für mysql-async, ersetzen MySQL.scalar.await mit MySQL.Async.fetchScalar und der Parameterstil mit @param/?. Bevorzugen oxmysql für Leistung und warte auf Unterstützung.

Leistung

  • Behalte eine EINZIGARTIGER Index An Kennung (siehe Schema).
  • Optional Aufwärmen eines Speichercaches beim Start und bei Änderungen; DB nur bei Cache-Fehlern treffen.
  • Rate-limit wiederholte fehlgeschlagene Verbindungsversuche Lizenz/IP.

Regeln für mehrere Kennungen

Einige Server erfordern mehrere IDs (z. B. sowohl Steam als auch Discord) für Mitarbeiterstufen. Beispielmuster:

local function hasType(ids, typ)
 for id, _ in pairs(ids) do if id:sub(1, #typ+1) == (typ..':') then return true end end
 return false
end

-- Require license, and if staff, also discord
if not hasType(ids, 'license') then
 return deferrals.done('Start the game normally (license missing).')
end
if staffModeEnabled and not hasType(ids, 'discord') then
 return deferrals.done('Join our Discord and link your account to enter.')
end

Discord als Whitelist verwenden (kein benutzerdefinierter Code)

Wenn deine Community auf Discord läuft, verwende txAdmins Discord-Mitglied oder Discord-Rolle Modi:

  • Verlinke txAdmin mit deinem Discord-Gilden.
  • Auswählen Discord-Mitglied jedem Gildenmitglied zu erlauben, oder Discord-Rolle durch eine bestimmte Rolle zu sperren (zB @Whitelisted).
  • Halten Genehmigte Lizenz als zweiten Zugang, wenn du beide Bedingungen möchtest.

Bewährte Methode: pflegen eine #Whitelist-Anfragen Kanal + leichtgewichtiges Formular. Automatisiere die Rollenzuweisung nach der Genehmigung über einen Bot oder einen Moderationsablauf.

FAXES: Ein Discord-Whitelist-System für FiveM


Integrationsideen

  • Discord-Bots: Automatische Genehmigung, wenn ein Benutzer eine Bewerbung abschließt, Boosts durchführt oder sich anmeldet.
  • Web-Panel: Mitarbeiter können Kennungen hinzufügen/entfernen, mit Prüfpfad.
  • Bezahlte Stufen: gewähren Discord-Rolle über deinen Shop (Tebex/Patreon) und lass txAdmin den Rollenmodus durchsetzen.

Fehlerbehebung und Fallstricke

  • Der Player wird in den txAdmin-Anfragen nicht angezeigt: Stelle sicher, dass die Whitelist im richtigen Profil aktiviert ist; überprüfe, ob der Spieler tatsächlich die Deferral-Stufe erreicht hat (beobachte die txAdmin-Live-Konsole).
  • Steam-ID fehlt: Steam muss laufen; verwende deine Whitelist nicht nur auf Dampf:. Bevorzugen Lizenz:.
  • Discord-ID fehlt: Der Benutzer muss Discord laufen haben und Ihr Server muss zum Lesen eingerichtet sein Zwietracht:; Discord-Integration überprüfen.
  • Lizenz gegen Lizenz2: Einige Frameworks zeichnen zwei Lizenzfelder auf; stelle sicher, dass deine Migration/Datenbankabfragen beide berücksichtigen, wenn du Daten verschiebst.
  • Verzögerungszeitüberschreitungen: Immer anrufen Verzögerungen.Update(...) während du auf die DB wartest; antworte innerhalb von ~10–15 Sekunden.
  • Nicht übereinstimmendes Kennungsformat: Stelle sicher, dass du einfügst Typ:Wert genau (Kleinbuchstaben, Doppelpunkt als Trennzeichen).
  • Hohe Verkehrsspitzen: Whitelist im Speicher zwischenspeichern, beim Start vorwärmen und DB-Aufrufe entprellen.

SEO-FAQ (Schema-fähiger Inhalt)

Was ist der beste Identifikator für die FiveM-Whitelist?
Der Rockstar Lizenz: ist der universellste und zuverlässigste; verwende ihn als deinen Primärschlüssel.

Kann ich mich bei Discord ohne Codierung auf die Whitelist setzen lassen?
Ja. txAdmin unterstützt Discord-Mitglied Und Discord-Rolle Whitelist-Modi, sobald Discord verknüpft ist.

Benötige ich Steam für die Whitelist?
Nein. Viele Spieler nutzen keinen Steam; vermeide es, Dampf: für den Basiszugriff obligatorisch.

Kann ich mehrere Prüfungen kombinieren (z. B. Lizenz + Discord-Rolle)?
Ja. Verwende den txAdmin-Rollenmodus Und behalte eine Lizenzprüfung in deinem benutzerdefinierten Skript oder Admissions-Flow bei.

Wie kann ich Spieler vorab genehmigen?
txAdmin → Whitelist → Genehmigung hinzufügen, Paste identifierType:Kennung (z.B, Lizenz:...).


Kopier‑Einfüge-Ablehnungsnachrichten (verwende deine Marke)

  • Warteschlangenbasiert: Du bist noch nicht auf der Whitelist. Bewirb dich in #whitelist-requests → discord.gg/yourinvite
  • Rollenbegrenzt: Dein Discord-Konto hat nicht @Whitelisted. Tritt discord.gg/deineeinladung bei und beantrage Zugriff.
  • Wartung: Der Server befindet sich im Admin‑nur-Modus für Wartungsarbeiten. Bitte versuche es später noch einmal.

Abschluss

Eine FiveM-Whitelist validiert Spieler-Identifikatoren während der Verbindungsverzögerungsphase und blockiert nicht genehmigte Benutzer, bevor Ressourcen geladen werden. Für die meisten Server, aktiviere Genehmigte Lizenz in txAdmin, optional Layer Discord-Rolle für Community-Gating, und verwende eine DB-gestützt Liste mit Caching für die Skalierung.


Anhang: Originales Minimalbeispiel (als Referenz)

-- server.lua
local whitelist = {
 ["steam:110000132456789"] = true,
 ["license:abc123def456789"] = true,
 ["discord:123456789012345678"] = true
}

AddEventHandler("playerConnecting", function(name, setKickReason, deferrals)
 local player = source
 local identifiers = GetPlayerIdentifiers(player)
 local whitelisted = false
 
 deferrals.defer()
 
 for _, id in pairs(identifiers) do
 if whitelist[id] then
 whitelisted = true
 break
 end
 end
 
 if not whitelisted then
 deferrals.done("Nicht whitelisted. Bewirb dich bei: dein-discord.gg/einladung")
 else
 deferrals.done()
 end
end)
Schreibe einen Kommentar