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
| Mod | Nerede ayarlanır | Ne kontrol eder | En iyisi için | Notlar |
|---|---|---|---|---|
| Onaylı Lisans | txAdmin → Ayarlar → Oyuncu Yöneticisi → Beyaz Liste Modu | license: (Rockstar) | Çoğu sunucu | Basit, güvenilir; manuel onaylar veya ön onaylar desteklenir |
| Discord Üyesi | txAdmin (Discord bağlantılı) | discord: guild üyesi mi | Topluluk merkezli Discord | Discord olmayan kullanıcılar engellendi |
| Discord Rolü | txAdmin (Discord bağlantılı) | discord: belirli bir role sahip | Rol tabanlı erişim (bağışçı, personel) | Rol otomasyonlarıyla birleştirin |
| Yalnızca yönetici | txYöneticisi | Yalnızca yöneticiler | Bakım/geliştirme geceleri | Sunucuyu etkili bir şekilde kilitler, önerilmez |
| Özel Script | Lua/JS kaynağı | İstediğiniz herhangi bir tanımlayıcı | Ayrıntılı kurallar & UX | Kod 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
- Açık txAdmin → Ayarlar → Oyuncu Yöneticisi.
- Ayarlamak Beyaz Liste Modu şunlardan birine: Onaylı Lisans, Discord Üyesi, Discord Rolü, veya Yalnızca yönetici.
- Bir ayarla Red Mesajı, örn.:
Not whitelisted. Apply at discord.gg/yourinvite - 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:110000112345678steam:11000010abcdef0discord: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.awaitileMySQL.Async.fetchScalarve 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 rolemağ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 edinlicense:. - Discord ID eksik: Kullanıcının Discord çalışıyor olmalı ve sunucunuzun okuyacak şekilde ayarlanmış olması gerekir
discord:; Discord entegrasyonunu doğrulayın. licensevslicense2: 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:valuetam 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)
