$ ABD Doları
  • $ ABD Doları
  • € AVRO
  • £ GBP
  • $ Avustralya Doları
  • R$ BRL
  • İsviçre Frangı İsviçre Frangı
  • ¥ Japon Yeni
FiveM Beyaz Listesi

FiveM Beyaz Liste — Tam Kılavuz (txAdmin, Scripts, DB)

FiveM'teki bir beyaz liste, sunucu girişini önceden onaylanmış oyuncularla sınırlayan, benzersiz tanımlayıcıları (Rockstar lisansı, Steam ID, Discord ID, vb.) ile eşleşen bir erişim kontrol mekanizmasıdır. Aşağıda, txAdmin'in yerleşik beyaz listesini, betik desenlerini, veritabanı depolamayı ve güvenilirlik notlarını kapsayan, üretime hazır bir kılavuz bulunmaktadır.


TL;DR Seçenek Matrisi

ModNerede ayarlanırNe kontrol ederEn iyisi içinNotlar
Onaylı LisanstxAdmin → Ayarlar → Oyuncu Yöneticisi → Beyaz Liste Modulicense: (Rockstar)Çoğu sunucuBasit, güvenilir; manuel onaylar veya ön onaylar desteklenir
Discord ÜyesitxAdmin (Discord bağlantılı)discord: guild üyesi miTopluluk merkezli DiscordDiscord olmayan kullanıcılar engellendi
Discord RolütxAdmin (Discord bağlantılı)discord: belirli bir role sahipRol tabanlı erişim (bağışçı, personel)Rol otomasyonlarıyla birleştirin
Yalnızca yöneticitxYöneticisiYalnızca yöneticilerBakım/geliştirme geceleriSunucuyu etkili bir şekilde kilitler, önerilmez
Özel ScriptLua/JS kaynağıİstediğiniz herhangi bir tanımlayıcıAyrıntılı kurallar & UXKod ve bakım gerektirir

Tavsiye: Kullanmak Onaylı Lisans temel için (herkesin bir Rockstar lisansı vardır), ardından ekleyin Discord Rolü özel kademeler için ek bir kapı olarak


txAdmin'de Beyaz Liste Nasıl Etkinleştirilir & Yönetilir

Ön koşullar

  • txAdmin çalışıyor (FXServer ile birlikte gelir).
  • Discord modları için: Discord entegrasyonu yapılandırıldı (bot davet edildi, sunucu/rol seçildi).

Beyaz listeyi etkinleştir

  1. Açık txAdmin → Ayarlar → Oyuncu Yöneticisi.
  2. Ayarlamak Beyaz Liste Modu şunlardan birine: Onaylı Lisans, Discord Üyesi, Discord Rolü, veya Yalnızca yönetici.
  3. Bir ayarla Red Mesajı, örn.:
    Not whitelisted. Apply at discord.gg/yourinvite
  4. Kaydet.

Oyuncuları onayla (iki akış)

  • Pasif (sıra): Onaylanmamış bir oyuncu katılmaya çalıştığında, altında bir istek belirir Beyaz liste. Tek tıkla onayla\/reddet.
  • Aktif (ön onay): Git Beyaz liste → Onay Ekle ve forma bir tanımlayıcı yapıştırın type:value, örn.
    • license:110000112345678
    • steam:11000010abcdef0
    • discord:123456789012345678

İptal Et

  • Açık Oyuncular veya Beyaz liste ve tıkla İptal Et onayın yanında.

İpuçları

  • Tercih etmek license temel erişim için tanımlayıcılar (evrensel olarak mevcut).
  • Seninkini sakla red mesajı eyleme dönüştürülebilir (Discord bağlantısı + temel kurallar + bilet CTA).
  • Personel\/geliştiriciler için, yığın gereksinimleri: örn., şu olmalı license + discord role.

Teknik Uygulama Detayları

Beyaz listeler, bağlantı geciktirme aşamasında çalışır. bağlantı geciktirme aşamasında. Sunucu, oyuncunun tanımlayıcı kümesini inceler ve kaynaklar yüklenmeden önce kabul eder veya reddeder. Bu, yükü düşük tutar ve onaylanmamış oyuncuları erken engeller.

Tanımlayıcı Türleri (güvenilirlik)

  • license: (Rockstar) — kararlı, oyun satın alımına bağlı; önerilen birincil anahtar.
  • steam: — yalnızca Steam çalışıyorsa mevcuttur; oyuncular Steam kullanmıyorsa eksik olabilir.
  • discord: — yalnızca Discord çalışıyorsa ve sunucunuz onu okuyorsa mevcuttur.
  • ip: — dinamik; kimlik için değil, telemetri/hız sınırlaması için kullanın.

Minimum Beyaz Liste Betiği (geciktirme UX + çoklu kimlik)

-- 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)

Kullanmak deferrals.update kimlikleri ve/veya bir veritabanını kontrol ederken ilerleme mesajları göstermek için. Bu, yanlış “zaman aşımı” raporlarını azaltır.


Veritabanı Tabanlı Beyaz Liste (oxmysql, üretime hazır)

Şema

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)
);

Sunucu tarafı kontrolü (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)

Yönetici Kullanım Kolaylığı Komutları (örnek)

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)

İçin mysql-async, değiştirin MySQL.scalar.await ile MySQL.Async.fetchScalar ve parametre stilini şununla değiştirin: @param/?. Tercih edin oxmysql performans ve await desteği için.

Performans

  • Bir tane tut UNIQUE indeksi Açık identifier (şemaya bakın).
  • İsteğe bağlı bir bellek önbelleğini ısıt başlangıçta ve değişiklikte; yalnızca önbellek kaçırıldığında DB'ye eriş.
  • Tekrarlanan başarısız bağlantı denemelerini hız sınırına tabi tut license/IP.

Multi‑Identifier Rules

Bazı sunucular, personel kademeleri için birden fazla kimlik (örneğin, hem Steam hem de Discord) gerektirir. Örnek desen:

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

Beyaz Liste olarak Discord kullanma (özel kod yok)

Topluluğunuz Discord üzerinde çalışıyorsa, txAdmin'yi kullanın Discord Üyesi veya Discord Rolü modlar:

  • txAdmin'nizi Discord loncanıza bağlayın.
  • Seçmek Discord Üyesi herhangi bir lonca üyesine izin ver veya Discord Rolü belirli bir rol ile erişimi kısıtlamak için (örneğin, @Whitelisted).
  • Kale Onaylı Lisans Her iki koşulu da istiyorsanız ikinci bir aşama olarak.

En iyi uygulama: bir tane bakım #whitelist-requests kanal + hafif form. Bir bot veya moderasyon akışı aracılığıyla onay sonrası rol atamasını otomatikleştirin.

FAXES: FiveM için Discord Beyaz Liste Sistemi


Entegrasyon Fikirleri

  • Discord botları: bir kullanıcı bir başvuruyu tamamladığında, boost yaptığında veya abone olduğunda otomatik olarak onaylayın.
  • Web paneli: personel tanımlayıcıları ekler/kaldırır, denetim izi ile.
  • Ücretli katmanlar: ver discord role mağazanız (Tebex/Patreon) aracılığıyla ve txAdmin rol modunun erişimi zorlamasına izin verin.

Sorun Giderme ve Dikkat Edilmesi Gerekenler

  • Oyuncu txAdmin isteklerinde görünmüyor: Beyaz listenin doğru profilde etkinleştirildiğinden emin olun; oyuncunun gerçekten erteleme aşamasına ulaştığını kontrol edin (txAdmin canlı konsolu izleyin).
  • Steam Kimliği eksik: Steam çalışıyor olmalı; yalnızca şunlara göre beyaz listenizi oluşturmayın steam:. Tercih edin license:.
  • Discord ID eksik: Kullanıcının Discord çalışıyor olmalı ve sunucunuzun okuyacak şekilde ayarlanmış olması gerekir discord:; Discord entegrasyonunu doğrulayın.
  • license vs license2: Bazı framework'ler iki lisans alanı kaydeder; verileri taşırken veritabanı sorgularınızın/geçiş sorgularınızın her ikisini de dikkate aldığından emin olun.
  • Gecikme zaman aşımları: Her zaman çağır deferrals.update(...) DB'yi beklerken; yaklaşık 10-15 saniye içinde yanıt verin.
  • Eşleşmeyen tanımlayıcı biçimi: Yapıştırdığınızdan emin olun type:value tam olarak (küçük harf türü, iki nokta üst üste ayırıcı).
  • Yüksek trafik ani yükselişleri: Önbelleği bellekte tutun, başlangıçta önceden ısıtın ve veritabanı çağrılarını debounce edin.

SEO SSS (Schema uyumlu içerik)

FiveM beyaz listesi için en iyi tanımlayıcı nedir?
Rockstar license: en evrensel ve güvenilir olanıdır; birincil anahtarınız olarak kullanın.

Kodlama yapmadan Discord ile beyaz listeye alabilir miyim?
Evet. txAdmin destekler Discord Üyesi Ve Discord Rolü Discord bağlandığında beyaz liste modları.

Ayrıcalık (whitelist) için Steam'ye ihtiyacım var mı?
Hayır. Birçok oyuncu Steam çalıştırmıyor; yapmaktan kaçının steam: temel erişim için zorunlu.

Birden fazla kontrolü birleştirebilir miyim (örneğin, lisans + Discord rolü)?
Evet. txAdmin rol modunu kullanın Ve Özel betiğinizde veya kabul akışınızda bir lisans kontrolünü saklayın.

Oyuncuları nasıl önceden onaylarım?
txAdmin → Beyaz liste → Onay Ekle, yapıştır identifierType:identifier (örneğin, license:...).


Kopyala-Yapıştır Red Mesajları (markanızı kullanın)

  • Kuyruk tabanlı: You’re not whitelisted yet. Apply in #whitelist-requests → discord.gg/yourinvite
  • Rolle filtrelenmiş: Your Discord account doesn’t have @Whitelisted. Join discord.gg/yourinvite and request access.
  • Bakım: Server is in Admin‑only mode for maintenance. Please try again later.

Çözüm

FiveM Ayrıcalık (whitelist), bağlantı erteleme aşamasında oyuncu tanımlayıcılarını doğrular ve onaylanmamış kullanıcıları kaynaklar yüklenmeden engeller. Çoğu sunucu için etkinleştirin Onaylı Lisans txAdmin içinde, isteğe bağlı olarak katman Discord Rolü topluluk erişimi için ve şunu kullanın: Veritabanı destekli ölçek için önbelleğe alma ile liste.


Ek: Orijinal Minimal Örnek (referans için)

-- 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)
Bir yanıt yazın