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
| Modus | Wo einstellen | Was wird geprüft | Am besten für | Hinweise |
|---|---|---|---|---|
| Genehmigte Lizenz | txAdmin → Einstellungen → Spielerverwaltung → Whitelist-Modus | Lizenz: (Rockstar) | Die meisten Server | Einfach, zuverlässig; manuelle Genehmigungen oder Vorabgenehmigungen werden unterstützt |
| Discord-Mitglied | txAdmin (Discord verknüpft) | Zwietracht: ist Gildenmitglied | Gemeinschaften mit Schwerpunkt auf Discord | Nicht-Discord-Benutzer blockiert |
| Discord-Rolle | txAdmin (Discord verknüpft) | Zwietracht: hat eine besondere Rolle | Rollenbasierter Zugriff (Spender, Mitarbeiter) | Kombiniere mit Rollenautomatisierungen |
| Nur Administratoren | txAdmin | Nur Administratoren | Wartungs-/Entwicklungsnächte | Sperrt den Server effektiv, nicht empfohlen |
| Benutzerdefiniertes Skript | Lua/JS-Ressource | Alle gewünschten Kennungen | Granulare Regeln und UX | Benö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
- Offen txAdmin → Einstellungen → Player-Manager.
- Satz Whitelist-Modus zu einem von: Genehmigte Lizenz, Discord-Mitglied, Discord-Rolle, oder Nur Administratoren.
- Setze eine Ablehnungsnachricht, zB:
Nicht auf der Whitelist. Bewirb dich unter discord.gg/deineeinladung - 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, zBLizenz:110000112345678Dampf:11000010abcdef0Zwietracht: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.awaitmitMySQL.Async.fetchScalarund 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:. BevorzugenLizenz:. - Discord-ID fehlt: Der Benutzer muss Discord laufen haben und Ihr Server muss zum Lesen eingerichtet sein
Zwietracht:; Discord-Integration überprüfen. LizenzgegenLizenz2: 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:Wertgenau (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)