Een whitelist in FiveM is een toegangscontrolemechanisme dat servertoegang beperkt tot vooraf goedgekeurde spelers, gekoppeld aan hun unieke identificatoren (Rockstar-licentie, Steam-ID, Discord-ID, enz.). Hieronder vindt u een productieklare handleiding met txAdmin's ingebouwde whitelist, scriptpatronen, databaseopslag en betrouwbaarheidsnotities.
TL;DR Optiesmatrix
| Modus | Waar in te stellen | Wat het controleert | Beste voor | Notities |
|---|---|---|---|---|
| Goedgekeurde licentie | txAdmin → Instellingen → Spelerbeheer → Whitelistmodus | license: (Rockstar) | De meeste servers | Eenvoudig, betrouwbaar; handmatige goedkeuringen of voorafgaande goedkeuringen ondersteund |
| Discord-lid | txAdmin (Discord gekoppeld) | discord: is guildlid | Gemeenschappen gericht op Discord | Niet-Discord-gebruikers geblokkeerd |
| Discord-rol | txAdmin (Discord gekoppeld) | discord: heeft specifieke rol | Rolgebonden toegang (donor, personeel) | Combineer met rolaanpassingen |
| Alleen beheerders | txAdmin | Alleen beheerders | Onderhouds-/ontwikkelavonden | Effectief server vergrendelen, niet aanbevolen |
| Aangepast Script | Lua/JS resource | Alle identifiers die je wilt | Granulaire regels & UX | Heeft code + onderhoud nodig |
Aanbeveling: Gebruik Goedgekeurde licentie voor de basislijn (iedereen heeft een Rockstar-licentie), voeg dan Discord-rol toe als extra poort voor speciale niveaus.
Hoe Whitelist in te schakelen en te beheren in txAdmin
Voorwaarden
- txAdmin actief (meegeleverd met FXServer).
- Voor Discord-modi: Discord-integratie geconfigureerd (bot uitgenodigd, guild/rol geselecteerd).
Whitelist inschakelen
- Open txAdmin → Instellingen → Spelerbeheer.
- Instellen Whitelist-modus naar een van: Goedgekeurde licentie, Discord-lid, Discord-rol, of Alleen beheerders.
- Stel een Afwijzingsbericht, in, bijvoorbeeld:
Not whitelisted. Apply at discord.gg/yourinvite - Opslaan.
Spelers goedkeuren (twee stromen)
- Passief (wachtrij): Wanneer een niet-goedgekeurde speler probeert te joinen, verschijnt er een verzoek onder Whitelist. Keur af/goed met één klik.
- Actief (vooraf goedkeuren): Ga naar Whitelist → Goedkeuring toevoegen en plak een identifier in het formulier
type:value, bijvoorbeeld.license:110000112345678steam:11000010abcdef0discord:123456789012345678
Intrekken
- Open Spelers of Whitelist en klik Intrekken naast de goedkeuring.
Tips
- Geef de voorkeur aan license identifiers voor basis toegang (universeel aanwezig).
- Houd uw afwijzingsbericht actiegericht (Discord link + basisregels + ticket CTA).
- Voor personeel/devs, stapelvereisten: bijv. moet zijn
license+discord role.
Technische implementatiedetails
Whitelists worden uitgevoerd tijdens de verbindingsuitstel fase. De server inspecteert de ingestelde speler-ID en accepteert of weigert voordat bronnen worden geladen. Dit houdt de belasting laag en blokkeert niet-goedgekeurde spelers vroegtijdig.
Identifier Types (betrouwbaarheid)
license:(Rockstar) — stabiel, gekoppeld aan gameaankoop; aanbevolen primaire sleutel.steam:— aanwezig alleen als Steam draait; kan ontbreken als spelers Steam niet gebruiken.discord:— alleen aanwezig als Discord draait en je server het leest.ip:— dynamisch; gebruik voor telemetrie/rate-limit, niet voor identiteit.
Minimaal Whitelist Script (deferrals UX + 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)
Gebruik deferrals.update om voortgangsmeldingen weer te geven terwijl u ID's en/of een database controleert. Dit vermindert valse “timeout”-meldingen.
Database-gedreven Whitelist (oxmysql, productie-klaar)
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) );
Server-side controle (oxmysql)
-- Requires oxmysql. Add to fxmanifest: '@oxmysql/lib/MySQL.lua'
AddEventHandler('playerConnecting', function(name, setKickReason, deferrals)
local src = source
deferrals.defer()
deferrals.update('Verifying whitelist...')
local ids = {}
for _, id in ipairs(GetPlayerIdentifiers(src)) do table.insert(ids, id) end
-- Single scalar: any identifier approved?
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('Access denied. Apply at discord.gg/yourinvite')
end
end)
Admin QoL commando's (voorbeeld)
RegisterCommand('wladd', function(src, args)
if src ~= 0 then return end -- console only for simplicity
local identifier = args[1]
if not identifier or not identifier:find(':') then
print('Usage: wladd identifierType:identifierValue')
return
end
local ok = MySQL.prepare.await('INSERT IGNORE INTO whitelist (identifier,note,added_by) VALUES (?, ?, ?)', {
identifier, 'manual add', 'console'
})
print(ok and ('Whitelisted: %s'):format(identifier) or 'Failed to add')
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 ('Removed: %s'):format(identifier) or 'Failed to remove')
end, true)
Voor mysql-async, vervangen
MySQL.scalar.awaitmetMySQL.Async.fetchScalaren de parameterstijl met@param/?. Geef de voorkeur aan oxmysql voor prestaties & await ondersteuning.
Prestaties
- Houd een UNIQUE index aan
identifier(zie schema). - Optioneel een geheugencache opwarmen bij het opstarten en bij wijziging; raak de DB alleen aan bij cache-miss.
- Beperk herhaalde mislukte verbindingspogingen door
license/IP.
Multi-Identifier Regels
Sommige servers vereisen meerdere ID's (bijv. zowel Steam als Discord) voor staff-niveaus. Voorbeeldpatroon:
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
Gebruik Discord als de Whitelist (geen aangepaste code)
Als uw community draait op Discord, gebruik dan txAdmin's Discord-lid of Discord-rol modi:
- Koppel txAdmin aan uw Discord-guild.
- Kies Discord-lid om elk groepslid toe te staan, of Discord-rol om te filteren op een specifieke rol (bijv.,
@Whitelisted). - Houden Goedgekeurde licentie als een tweede poort als je beide voorwaarden wilt.
Beste praktijk: onderhouden een #whitelist-requests kanaal + lichtgewicht formulier. Automatiseer roltoewijzing na goedkeuring via een bot of moderatiestroom.
FAXES: Een Discord Whitelist Systeem voor FiveM
Integratie-ideeën
- Discord bots: automatisch goedkeuren wanneer een gebruiker een aanvraag voltooit, boost, of zich abonneert.
- Webpaneel: personeel voegt/verwijdert identifiers, met audit trail.
- Betaalde niveaus: verlenen
discord rolevia je winkel (Tebex/Patreon) en laat txAdmin role-mode toegang afdwingen.
Problemen oplossen & Valkuilen
- Speler niet weergegeven in txAdmin-verzoeken: Zorg ervoor dat de whitelist is ingeschakeld in het juiste profiel; controleer of de speler daadwerkelijk het uitstelstadium heeft bereikt (bekijk de live console van txAdmin).
- Steam ID ontbreekt: Steam moet draaien; baseer uw whitelist niet uitsluitend op
steam:. Geef de voorkeur aanlicense:. - Discord ID ontbreekt: Gebruiker moet Discord draaien en uw server moet zijn ingesteld om te lezen
discord:; verifieer Discord integratie. licensevslicense2: Sommige frameworks registreren twee licentievelden; zorg ervoor dat je migratie/DB-queries beide overwegen bij het verplaatsen van gegevens.- Uitstel-time-outs: Roep altijd aan
deferrals.update(...)terwijl je wacht op de DB; reageer binnen ~10-15 seconden. - Ongelijk formaat van de identifier: Zorg ervoor dat u plakt
type:valueexact (kleine letters, dubbele punt scheidingsteken). - Hoge verkeerspieken: Cache-whitelist in het geheugen, vooraf opwarmen bij het opstarten en DB-aanroepen debouncen.
SEO FAQ (Schema-klaar content)
Wat is de beste identifier voor FiveM whitelist?
De Rockstar license: is het meest universele en betrouwbare; gebruik het als uw primaire sleutel.
Kan ik whitelisten met Discord zonder te coderen?
Ja. txAdmin ondersteunt Discord-lid En Discord-rol whitelist-modi zodra Discord is gekoppeld.
Heb ik Steam nodig voor de whitelist?
Nee. Veel spelers draaien Steam niet; vermijd het maken van steam: verplicht voor basis toegang.
Kan ik meerdere controles combineren (bijv. licentie + Discord rol)?
Ja. Gebruik txAdmin rolmodus En een licentiecontrole behouden in uw aangepaste script of toelatingsproces.
Hoe keur ik spelers vooraf goed?
txAdmin → Whitelist → Goedkeuring toevoegen, plak identifierType:identifier (bijv., license:...).
Kopieer-Plak Afwijzingsberichten (gebruik uw merk)
- Wachtrij-gebaseerd:
You’re not whitelisted yet. Apply in #whitelist-requests → discord.gg/yourinvite - Rol‑gegate:
Your Discord account doesn’t have @Whitelisted. Join discord.gg/yourinvite and request access. - Onderhoud:
Server is in Admin‑only mode for maintenance. Please try again later.
Conclusie
Een FiveM-whitelist valideert spelersidentificaties tijdens de verbindingsuitstel-fase en blokkeert niet-goedgekeurde gebruikers voordat bronnen worden geladen. Voor de meeste servers, inschakelen Goedgekeurde licentie in txAdmin, optioneel laag Discord-rol voor community gating, en gebruik een DB-gebaseerd lijst met caching voor schaal.
Bijlage: Origineel Minimaal Voorbeeld (ter referentie)
-- 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("Not whitelisted. Apply at: your-discord.gg/invite")
else
deferrals.done()
end
end)
