$ USD
  • $ USD
  • € EUR
  • Britse pond (£ GBP)
  • $ AUD
  • R$ BRL
  • CHF CHF
  • ¥ JPY
FiveM Whitelist

FiveM Whitelist — Volledige Gids (txAdmin, Scripts, DB)

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

ModusWaar in te stellenWat het controleertBeste voorNotities
Goedgekeurde licentietxAdmin → Instellingen → Spelerbeheer → Whitelistmoduslicense: (Rockstar)De meeste serversEenvoudig, betrouwbaar; handmatige goedkeuringen of voorafgaande goedkeuringen ondersteund
Discord-lidtxAdmin (Discord gekoppeld)discord: is guildlidGemeenschappen gericht op DiscordNiet-Discord-gebruikers geblokkeerd
Discord-roltxAdmin (Discord gekoppeld)discord: heeft specifieke rolRolgebonden toegang (donor, personeel)Combineer met rolaanpassingen
Alleen beheerderstxAdminAlleen beheerdersOnderhouds-/ontwikkelavondenEffectief server vergrendelen, niet aanbevolen
Aangepast ScriptLua/JS resourceAlle identifiers die je wiltGranulaire regels & UXHeeft 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

  1. Open txAdmin → Instellingen → Spelerbeheer.
  2. Instellen Whitelist-modus naar een van: Goedgekeurde licentie, Discord-lid, Discord-rol, of Alleen beheerders.
  3. Stel een Afwijzingsbericht, in, bijvoorbeeld:
    Not whitelisted. Apply at discord.gg/yourinvite
  4. 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:110000112345678
    • steam:11000010abcdef0
    • discord: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.await met MySQL.Async.fetchScalar en 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 role via 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 aan license:.
  • Discord ID ontbreekt: Gebruiker moet Discord draaien en uw server moet zijn ingesteld om te lezen discord:; verifieer Discord integratie.
  • license vs license2: 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:value exact (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)
Geef een reactie