Varlık İletimini Kontrol Etme

Varsayılan olarak, entity'ler bir oyuncuya yalnızca aynı PVS (Potansiyel Görünürlük Kümesi) içindeyse iletilir. Bu, oyuncunun ağ üzerinden yalnızca görebileceği entity'ler hakkında bilgi aldığı anlamına gelir.

Bunun olmasını istemeyebilirsiniz.

Her şeyden önce

Bu rehber hem scriptli hem de scriptli olmayan entity'leri ele almaktadır.

Scriptli bir entity üzerinde, ENTITY:UpdateTransmitState fonksiyonunun çağrılması gereken her seferde Entity:AddEFlags( EFL_FORCE_CHECK_TRANSMIT ) fonksiyonunu çağırmanız gerekir. Bunu ENTITY:Initialize içinde yapabilirsiniz:

function ENT:Initialize() -- ..... self:AddEFlags( EFL_FORCE_CHECK_TRANSMIT ) -- ..... end

Scriptli olmayan entity'lerin ENTITY:UpdateTransmitState fonksiyonu asla çağrılmaz, bu nedenle Entity:AddEFlags( EFL_FORCE_CHECK_TRANSMIT ) kullanmamalısınız.

Her Zaman İlet

Entity'nizin her zaman tüm oyunculara iletilmesini istiyorsanız, bunu entity'nizin sunucu tarafına ekleyin.

function ENT:UpdateTransmitState() return TRANSMIT_ALWAYS end

Bu, oyun kurallarını kontrol eden bir entity'niz varsa kullanışlıdır. Örneğin, oyun modunuzun bir tur zamanlayıcısı olduğunu hayal edin. Turun başlayıp başlamadığını ve ne zaman biteceğini belirten erişimcilere (accessor) sahip, tur zamanlayıcısını temsil eden bir entity'niz olabilir. İstemci tarafında, entity oluşturulduğunda, entity işaretçisiyle (pointer) genel bir değişken saklayabilir (değeri entity'nin Initialize fonksiyonunda ayarlayarak) ve bu entity'ye dayanarak HUD'daki bilgileri güncelleyebilirsiniz.

Scriptli olmayan bir entity'de, yalnızca onu her zaman PVS (Potansiyel Görünürlük Kümesi) içinde olmaya zorlayabilirsiniz:

entity:AddEFlags( EFL_IN_SKYBOX )

TRANSMIT_ALWAYS'in aksine, bu durum ağa bağlı olmayan bir entity'nin ağa bağlanmasını zorlamaz.

Asla İletme

Bazen entity'ler sadece sunucu tarafında kullanım içindir. İstemciye asla gönderilmemelerini sağlamak için bunu entity'nize ekleyebilirsiniz.

function ENT:UpdateTransmitState() return TRANSMIT_NEVER end

İstemci, entity'nin varlığından asla haberdar olmaz. Bu, sunucunun kullandığı ancak istemcinin bilmesine gerek olmayan oyuncu doğma noktaları gibi şeyler için kullanışlıdır.

Bu, nokta tabanlı (point based) entity'lerin varsayılan ayarıdır.

PVS İletimi

Varsayılan ayar şudur..

function ENT:UpdateTransmitState() return TRANSMIT_PVS end

base_point tabanlı bir entity oluşturursanız ve normal bir entity gibi iletilmesini isterseniz, bunu eklemeniz gerekir.

Belirli oyunculardan gizleme

Belirli entity'lerin belirli oyunculara iletilmesini şu fonksiyonu çağırarak engelleyebilirsiniz:

entity:SetPreventTransmit( ply, true )

Tekrar iletilmesine izin vermek isterseniz şu fonksiyonu çağırabilirsiniz:

entity:SetPreventTransmit( ply, false )

Bu yalnızca oyuncunun veri almasını engellemek için çalışır - tam tersi için değil (entity'yi TRANSMIT_NEVER yapıp bu fonksiyonu sadece belirli oyunculara göndermek için kullanamazsınız).

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord