THE ORB
Studio başlatılıyor

Reliable network event overflow

Bir script tek bir oyuncuya o kadar çok şey gönderdi ki bağlantısı yetişemedi, ve o oyuncu atıldı.

groupsOyuncular rastgele atılıyorcodeGeliştirici gerektirir

Önce şunu yap

Kimlere ve ne zaman olduğunu not et. Bunun için birinin gürültücü script'i bulması gerekiyor.

bug_reportBunun yerine tüm konsolunu yapıştır

Ne anlama gelir

Bir istemci için, güvenilir kanalın tutabileceğinden fazla olay kuyruğa alındı. FiveM daha da geride kalmak yerine bağlantıyı düşürür, o yüzden oyuncular belirgin bir sebep olmadan atılır.

Kanal istemci başınadır, yani atılan oyuncu, illa olağandışı bir şey yapan kişi değildir.

Neden olur

Ne sıklıkla doğru cevap olduğuna göre sıralı.

  1. 1

    Bir tick döngüsünde tetiklenen bir olay

    Kısa bir Wait'li bir thread'in içinde, oyuncu başına TriggerClientEvent, ders kitabı nedenidir.

  2. 2

    Bir döngüde yayın

    Tekrar eden herhangi bir şeyin içinde TriggerClientEvent('x', -1, ...), oyuncu sayısıyla çarpılır.

  3. 3

    Çok büyük yükler

    Komple bir envanter ya da her oyuncunun haritası, sık sık gönderilir. Boyut, kanalı sayı kadar kesin doldurur.

  4. 4

    İstemciyle sunucu arasında bir geri besleme döngüsü

    İstemci bir sunucu olayı tetikler, sunucu bir istemci olayıyla yanıtlar, istemci yine yanıtlar.

  5. 5

    Bir olayı spamleyen bir hileci

    Ki bu aynı zamanda bir güvenlik sorunudur — güvenlik açığı tarayıcısına bak.

Hangisinin seninki olduğu nasıl anlaşılır

Onları say. Sunucuda bir dakika boyunca olay başına bir sayaç, suçluyu hemen ortaya çıkarır:

local counts = {}
local realTrigger = TriggerClientEvent
-- sarmala, say, 60 saniyede bir yazdır

Nereye bakmalı

Bir CreateThread içindeki her TriggerClientEvent, ve -1'e yapılan her yayın.

Nasıl düzeltilir

Olay akışı değil, durum gönder. State bag'ler bir kez ve yalnızca değiştiklerinde çoğaltılır:

-- her tick'te TriggerClientEvent yerine
Entity(veh).state:set('fuel', level, true)

Olay göndermek zorunda olduğunda, kıs ve topla:

if GetGameTimer() - lastSend > 1000 then
    lastSend = GetGameTimer()
    TriggerClientEvent('myres:update', src, batchedPayload)
end

Hâlâ kendi kodunda mı takıldın?

Bu sayfa, bu hatanın genelde ne anlama geldiğini anlatır. Konsolunu Server Fixer'a yapıştır; içindeki her şeyi sıraya dizer ve önce ne yapman gerektiğini söyler. Kendin uğraşmak istemiyorsan ORBIE script'i onarır ve kaynağı sunucuna atmaya hazır geri verir.

bug_reportServer Fixer'ı aç

Bu tür bir hata için Güvenlik Tarayıcısı buraya götüren olay işleme biçimini işaretler.

Bununla birlikte gelen hatalar