FiveM anticheat temelleri: ne yapılacağı ve anticheat'in ne yapamayacağı

FiveM anticheat temelleri: sunucuda önce doğrulayın, OneSync varlık sınırları, patlamaları iptal edin, Discord webhook günlükleri, txAdmin yasaklamaları ve anticheat'in ne yapamayacağı.

Hileciler halka açık bir sunucu çalıştırmanın bir parçasıdır. Araçları spawn ederler, haritayı patlatırlar, kendilerine para ve silah verirler ve dürüst oyuncularınızı kaçırırlar. Tek "anticheat" kaynağı bunu düzeltmez. Çalışan şey birkaç katmandır, en önemli olanla başlayarak: istemciye güvenmeyin.

Katman 1: sunucuda doğrulayın

Bir rol yapma sunucusundaki çoğu hile motor hackı değildir. Birisi kendi olaylarınızı seçtikleri değerlerle tetikliyordur. Bunu önce düzeltin ve sorunun büyük bir kısmı kaybolur.

  • Fiyatları, ödülleri ve tutarları sunucuda hesaplayın.
  • source kullanın, hiçbir zaman istemci tarafından gönderilen oyuncu kimliği değil.
  • Eyleme geçmeden önce işi, mesafeyi ve soğuma sürelerini kontrol edin.

Kodla tam yöntem sunucu olaylarını güvenli hale getirme kısmında. Eğer bu makaleden sadece bir şey yaparsanız, bunu yapın.

Katman 2: OneSync ile varlık kontrolü

OneSync ile sunucu varlıklar (araçlar, pedlar, nesneler) hakkında bilir ve kimlerin onları oluşturacağını kontrol edebilir. Bu hilecilerin şeyler spawn etmesini durdurmak sağlar.

  • Varlık kilidi. OneSync'in istemciden oluşturulan varlıkların bloke edildiği veya sınırlandırıldığı bir kilit modu var. Güçlü, ancak istemciden araçları veya nesneleri spawn eden herhangi bir betiği bozar. Açmadan önce yapılarınızda tam ayarı okumak için OneSync belgelerine bakın ve spawnı önce sunucuya taşıyın. Bkz. araçları sunucu tarafında spawn etme.
  • entityCreating olayı. Sunucu varlıkları oluşturuldukça inceleyebilir ve istememek olanları iptal edebilir.
lua
AddEventHandler('entityCreating', function(entity)
    local model = GetEntityModel(entity)
    if model == `jet` then
        CancelEvent()
    end
end)

Bu örnek bir jeti herhangi bir yerden oluşturmayı reddeder. Sunucunuzda kimsenin oluşturmaması gereken modellerin kendi listenizi oluşturun ve dikkat edin: çok geniş bir kural kendi betiklerinizin varlıklarını iptal eder.

OneSync bunu etkinleştirmek için etkinleştirilmelidir. Bkz. OneSync ve oyuncu sınırları.

Katman 3: oyun olaylarını işleyin

FiveM bazı oyun eylemlerini sunucuya olay olarak gönderir ve sunucu bunları iptal edebilir. İki yaygın:

Patlamalar

lua
AddEventHandler('explosionEvent', function(sender, ev)
    -- sender is the player who caused the explosion
    -- ev holds the explosion type and position
    CancelEvent()
end)

Her patlamayı iptal etmek el bombaları ve kendi yazılı patlamalarınızı da durduracaktır. ev içindeki verilerle dar tutun. Örneğin ev.explosionType bakın ve sunucunuzda hiçbir zaman olmaması gereken türleri iptal edin veya önce günlüğe normal oynanışın ne ürettiğini görün.

lua
local blocked = { [1] = true }  -- example: replace with the types you decide to block

AddEventHandler('explosionEvent', function(sender, ev)
    if blocked[ev.explosionType] then
        CancelEvent()
        print(('Blocked explosion from player %s'):format(sender))
    end
end)

Silahlar

Sunucu ayrıca silahları verme, kaldırma ve ateş etme gibi olaylar alır, giveWeaponEvent gibi. Kendilerine silah veren hileciler bunları tetiklerler. Envanteriniz silahları işlerse, olayın vermeyi istediğini oyuncunun sahip olduğu şeyse karşılaştırın ve eşleşmemişse iptal edin. Önce günlüğe kaydedin, daha sonra zorlayın, böylece istemli oyuncuları engellemeyin.

Ateş, projektil ve silah hasarı için başka oyun olayları vardır. Bir tane kullanmadan önce Cfx belgelerinde arayın ve bir geliştirme sunucusunda test edin.

Dikkat: çok sıkı bir oyun olayı işleyici dürüst oyuncuları cezalandırır. Birkaç gün boyunca sadece günlük modu ile başlayın, günlükleri okuyun ve ardından zorlayın.

Katman 4: şüpheli davranışı günlüğe kaydedin

Tek bir sinyal üzerinden yasaklamayın. Günlüğe kaydedin, okuyun, ardından hareket edin. Discord webhook personel görebilecekleri günlükleri göndermek için kolay bir yerdir.

lua
local WEBHOOK = GetConvar('anticheat_webhook', '')

local function logToDiscord(text)
    if WEBHOOK == '' then return end
    PerformHttpRequest(WEBHOOK, function() end, 'POST',
        json.encode({ username = 'Anticheat', content = text }),
        { ['Content-Type'] = 'application/json' })
end

AddEventHandler('explosionEvent', function(sender, ev)
    logToDiscord(('Explosion from %s (%s), type %s'):format(GetPlayerName(sender), sender, ev.explosionType))
end)

Webhook URL'sini server.cfg içinde set anticheat_webhook "https://..." ile ayarlayın, betikte değil ve özel tutun. URL'ye sahip olan herkes kanalınıza gönderi yapabilir.

Günlüğe ne kaydedilecek: başarısız sunucu tarafı kontrolleri (imkansız tutarlar, yanlış mesafe), engellenen patlamalar, iptal ettiğiniz varlık spawnları, tekrarlanan olay spam'ı. Oyuncu adını, sunucu kimliğini ve lisans gibi bir tanımlayıcı ekleyin, böylece onları yasaklayabilirsiniz.

Katman 5: txAdmin ile hareket edin

Günlükler hileci gösterdiğinde, kaldırın. txAdmin kullanarak uyarı verin veya yasaklayın, böylece eylem kaydedilir ve yeniden başlatmalardan sağ kalır. Bkz. txAdmin ile moderasyon. Bir betikte, DropPlayer(source, 'reason') bir oyuncuyu tekmelemiyor, ancak bir yasak tanımlayıcılar kaydedilecek şekilde moderasyon araçlarınız aracılığıyla gitmelidir.

Anticheat'in ne yapamayacağı

Sınırlar hakkında dürüst olun.

  • İstemci hileciye aittir. Yalnızca istemcide kontrol edilen her şey kapatılabilir. Yalnızca sunucu kontrolleri güvenilirdir.
  • Hiçbir araç her şeyi yakalamaz. Yeni hiler ortaya çıkar ve algılama her zaman adım geridedir.
  • Obfüskasyon güvenlik değildir. Gizli olay adları ve istemci kodundaki "gizli" jetonlar okunabilir.
  • Ücretsiz veya sızan anticheat kodu bir riskdir. Hile geliştiriciler onu da okur ve bazıları backdoor'lar içerir. Bilinmeyen kaynaklardan kaynak alırken dikkatli olun.
  • İnsanlar hala önemlidir. Aktif personel, açık bir rapor sistemi ve hızlı yasaklamalar herhangi bir betikten daha fazla yapar.

Katmanları birleştirin, kaynakları güncel tutun ve günlüklerinizi gözden geçirin. Bu, sunucunuzu diğerlerine kıyasla zor hedefler yapar.

Kontrol Listesi

Belirtisi Düzeltme
Oyuncular ücretsiz para veya öğe alırlar Sunucuda olayları doğrulayın, olaylar kılavuzuna bakın
Hileciler araçları ve nesneleri spawn ettirler OneSync varlık kontrolleri ve entityCreating; spawnı sunucuya taşıyın
Haritada patlama explosionEvent işleyicisi CancelEvent ile, tür tarafından daraltan
Silah verme hileleri Silah olaylarını envanterinizle karşılaştırın, önce günlüğe kaydedin
Hilecilerin ne yaptığı hakkında hiçbir fikir Günlükleri convar'da tutulan Discord webhook'a gönderin
Hileci bulundu txAdmin'den kaydedilen tanımlayıcılarla yasaklayın
Kural dürüst oyuncuları engeller Sadece günlük moda geçin ve durumu daraltın

Kısa yanıtlar

Bir anticheat kaynağına ihtiyacım var mı?

Önce kendi betiklerinizi güvenli hale getirin, çünkü bu en yaygın istismarı durdurur. Anticheat kaynağı algılamayı üstüne ekleyebilir, ancak sunucu tarafı doğrulamanın yerini almaz.

Anticheat her hileci durdurabilir mi?

Hayır. Hileciler uyum sağlar ve oyun istemcisi onların makinesindedir. Hedef hileciliği zorlaştırmak, belirgin olanı algılamak ve suçluları hızlı çıkarmaktır.

Sunucuda oyun olaylarını iptal etmek güvenli mi?

Evet, dikkatli bir şekilde. Bir olayı iptal etmek herkes için durmuyor, bu nedenle kendi betikleriniz gibi normal oynanışın patlamaları oluşturmaya devam ettiğini test edin canlı sunucuda kural çalıştırmadan önce.

Bu sorunu yaşatmayan scriptler

CCTV Security CamerasYerleştirilebilir kameralar, canlı çoklu görüntü tableti ve basılı delil fotoğrafları.Scripti gör →Shop CreatorBir dakikadan kısa sürede dükkân kurun — sahipler, çalışanlar, kasalar ve soygunlar dahil.Scripti gör →Tebex TemplateTebex mağazanız için kod gerektirmeyen premium tema; tamamen Tebex panelinden düzenlenir.Scripti gör →

Okumaya devam edin