net

Net kütüphanesi, istemci ve sunucu arasında veri göndermenin birkaç yolundan biridir.

Net kütüphanesinin başlıca avantajları, büyük boyut sınırı (mesaj başına 64kb) ve veriyi geriye doğru - istemciden sunucuya - gönderebilme yeteneğidir.

Kısa bir başlangıç için Net Kütüphanesi Kullanımı sayfasına bakın.

Alanlar

Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. net.ReadType aracılığıyla ağ üzerinden gönderilebilen türlerin bir listesidir.
Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. Bu bir fonksiyon DEĞİLDİR, net kütüphanesi tarafından net.Receive ile eklenen net alıcılarını saklamak için dahili olarak kullanılan bir tablodur. Anahtar, küçük harfli net mesajı adıdır ve değer, mesajın geri arama (callback) fonksiyonudur. net.Receivers tablosunu değiştirmek, util.AddNetworkString içinde kullanılan net dize havuzunu (string pool) etkilemez.
Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. net.WriteType aracılığıyla ağ üzerinden gönderilebilen türlerin bir listesidir.

Metotlar

net.Abort()
net.Start ile başlatılmış bir net mesajını iptal eder, böylece hemen hatasız yeni bir tane başlatabilirsiniz.
net.Broadcast()
O anda oluşturulmuş net mesajını (bkz. net.Start) bağlı olan tüm oyunculara gönderir. Daha fazla bilgi Net Kütüphanesi Kullanımı sayfasında bulunabilir.
Mevcut mesajda okunacak kalan veri miktarını döndürür. Veri gönderirken hiçbir şey yapmaz. Bu, motor tarafından dahili olarak kullanılan 6 ekstra biti (veya yukarı yuvarlanmış 1 baytı) içerecektir.
Mevcut mesajın boyutunu döndürür. Bu, veriyi ağ üzerinden göndermek için motor tarafından dahili olarak kullanılan 3 ekstra baytı (24 bit) içerecektir.
net.Incoming( number length, Player client )
Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. Muhtemelen net.Receive fonksiyonunu arıyorsunuz. Motor tarafından Lua durumuna bir mesajın geldiğini bildirmek için çağrılan fonksiyondur.
Alınan net mesajından bir açı (angle) okur. Bilgiyi yazdığınız sırayla okumanız gerekir.
Alınan net mesajından bir bit okur. Bilgiyi yazdığınız sırayla okumanız gerekir.
Alınan net mesajından bir boolean (doğru/yanlış değeri) okur. Bilgiyi yazdığınız sırayla okumanız gerekir.
table net.ReadColor( boolean hasAlpha = true )
Mevcut net mesajından bir Renk (Color) okur. Bilgiyi yazdığınız sırayla okumanız gerekir.
string net.ReadData( number length )
Mesajdan saf ikili (binary) veri okur. Bilgiyi yazdığınız sırayla okumanız gerekir.
Alınan net mesajından çift duyarlıklı bir sayı okur. Bilgiyi yazdığınız sırayla okumanız gerekir.
Alınan net mesajından bir varlık (entity) okur. Belirtilen varlığın var olup olmadığını her zaman kontrol etmelisiniz, çünkü kaldırılmış olabilir ve bu nedenle oyuncunun PVS'sinin (Potansiyel Görünürlük Seti) dışındaysa veya zaten kaldırılmışsa NULL olabilir. Bilgiyi yazdığınız sırayla okumanız gerekir.
Alınan net mesajından bir ondalıklı sayı (floating point number) okur. Bilgiyi yazdığınız sırayla okumanız gerekir.
Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. Bir 'word', yani temel olarak işaretsiz kısa (unsigned short) bir tamsayı okur. Bu, mesajın 'başlığını' (header) okumak için dahili olarak kullanılır. Bu başlık, util.NetworkIDToString aracılığıyla karşılık gelen mesaj adına dönüştürülebilen işaretsiz kısa bir tamsayıdır.
number net.ReadInt( number bitCount )
Alınan net mesajından bir tamsayı (integer) okur. Bilgiyi yazdığınız sırayla okumanız gerekir.
Alınan net mesajından bir VMatrix okur. Bilgiyi yazdığınız sırayla okumanız gerekir.
Net mesajından bir normal vektör okur. Bilgiyi yazdığınız sırayla okumanız gerekir.
Alınan net mesajından net.WritePlayer ile yazılmış bir oyuncu varlığını okur. Belirtilen varlığın var olup olmadığını her zaman kontrol etmelisiniz, çünkü kaldırılmış olabilir ve bu nedenle yerel oyuncunun PVS'sinin dışındaysa veya zaten kaldırılmışsa NULL olabilir. Bilgiyi yazdığınız sırayla okumanız gerekir.
Net akışından null ile sonlandırılmış bir dize (string) okur. Dizenin boyutu, dizedeki her bir ASCII karakteri için 8 bit artı 8 bittir. Bilgiyi yazdığınız sırayla okumanız gerekir.
table net.ReadTable( boolean sequential = false )
Alınan net mesajından bir tablo (table) okur. Ekstra bilgi için net.WriteTable sayfasına bakın. Bazen net kütüphanesi aracılığıyla bir tablo gönderilirken anahtarların sırası değişebilir. Bu yüzden karşılaştırma yaparken dikkatli olun (Bkz. Örnek 1). Fonksiyonun yürütülmesi sırasında `net.ReadType: Couldn't read type X` hatası alabilirsiniz, sorun ağ üzerinden serileştirilemeyen/gönderilemeyen nesneler gönderiyor olmanızdır. Bilgiyi yazdığınız sırayla okumanız gerekir.
any net.ReadType( number typeID = net.ReadUInt(8) )
Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. net.ReadTable tarafından dahili olarak kullanılır. net.WriteType ile yazılmış, belirtilen türdeki bir değeri net mesajından okur. Bilgiyi yazdığınız sırayla okumanız gerekir.
number net.ReadUInt( number bitCount )
Alınan net mesajından belirtilen bit sayısına sahip işaretsiz bir tamsayı (unsigned integer) okur. Bilgiyi yazdığınız sırayla okumanız gerekir.
Alınan net mesajından 64 bitlik işaretsiz bir tamsayı okur. Bilgiyi yazdığınız sırayla okumanız gerekir.
Alınan net mesajından bir vektör (vector) okur. Bu fonksiyonla gönderilen vektörler sıkıştırılır, bu da hassasiyet kaybına neden olabilir. Daha fazla bilgi için net.WriteVector sayfasına bakın. Bilgiyi yazdığınız sırayla okumanız gerekir.
net.Receive( string messageName, function callback )
Bir net mesajı işleyicisi (handler) ekler. Net mesajını almak için yalnızca bir alıcı kullanılabilir. Mesaj işleyicisi geri aramasının (callback) içinde net.Read* fonksiyonlarını kullanabilirsiniz. Ne yaptığınızı bilmiyorsanız, düzgün çalışması için bu fonksiyonu diğer herhangi bir fonksiyonun veya kancanın (hook) dışına koymalısınız! Bilgiyi yazdığınız sırayla okumanız gerekir. Her net mesajının 64KB'lık bir uzunluk sınırı vardır!
net.Send( Player ply ) (+ 2 overloads)
Mevcut net mesajını belirtilen oyuncu(lar)a gönderir
net.SendOmit( Player ply ) (+ 1 overload)
Mevcut mesajı (bkz. net.Start) belirtilen oyuncu veya oyuncular hariç herkese gönderir.
net.SendPAS( Vector position )
Mevcut net mesajını (bkz. net.Start) pozisyonla aynı Potansiyel Duyulabilir Set'te (PAS) bulunan tüm oyunculara gönderir veya basitçe söylemek gerekirse, bu pozisyondan sesleri potansiyel olarak duyabilecek tüm oyuncuları ekler.
net.SendPVS( Vector position )
Mevcut net mesajını (bkz. net.Start) pozisyonun PVS'sindeki (Potansiyel Görünürlük Seti) tüm oyunculara gönderir veya daha basit bir ifadeyle, mesajı bu pozisyonu potansiyel olarak görebilen oyunculara gönderir.
Mevcut net mesajını (bkz. net.Start) sunucuya gönderir. Net mesajının sunucu tarafından başarıyla alınabilmesi için oyuncu nesnesinin sunucuda mevcut olması gerekir. Her net mesajının 65.533 bayt (yaklaşık 64 KiB) uzunluk sınırı vardır ve net mesajınız bundan büyükse hata verir ve gönderilemez. Mesaj adı önceden util.AddNetworkString ile havuza eklenmelidir!
boolean net.Start( string messageName, boolean unreliable = false )
Yeni bir net mesajı başlatır. Eğer başka bir net mesajı zaten başlatılmış ve henüz gönderilmemişse, o mesaj atılacaktır. Bu fonksiyonu çağırdıktan sonra, verilerinizi yazmak için (eğer varsa) net.Write fonksiyonlarını çağırmak ve ardından aşağıdaki fonksiyonlardan birini çağırarak bitirmek isteyeceksiniz: net.Send net.SendOmit net.SendPAS net.SendPVS net.Broadcast net.SendToServer Her net mesajının 65.533 bayt (yaklaşık 64 KiB) uzunluk sınırı vardır ve net mesajınız bundan büyükse hata verir ve gönderilemez. Net kütüphanesinin, gönderilen mesajların eklendiği ve aynı anda kabaca 256 kb tutabilen dahili bir arabelleği (buffer) vardır. Daha fazlasını göndermeye çalışmak, arabellek taşması nedeniyle istemcinin sunucudan atılmasına yol açacaktır. Net kütüphanesi limitleri hakkında daha fazla bilgi burada bulunabilir. Mesaj adı önceden util.AddNetworkString ile havuza eklenmelidir! Net mesajları, istemcinin GM:InitPostEntity kancası çağrılana kadar istemciye güvenilir bir şekilde ulaşmaz.
net.WriteAngle( Angle angle )
Mevcut net mesajına bir açı (angle) yazar.
net.WriteBit( boolean boolean )
Mevcut net mesajına bir boolean (1 veya 0 olarak) ekler. Lütfen bit'in burada bir boolean'dan (true/false) yazıldığını, ancak net.ReadBit'in bir sayı döndürdüğünü unutmayın.
net.WriteBool( boolean boolean )
Mevcut net mesajına bir boolean ekler. net.WriteBit'in takma adıdır (alias).
net.WriteColor( table Color, boolean writeAlpha = true )
Mevcut net mesajına bir Renk (Color) ekler.
net.WriteData( string binaryData, number length = #binaryData )
Mesaja bir parça ikili (binary) veri yazar.
net.WriteDouble( number double )
Mevcut net mesajına çift duyarlıklı bir sayı ekler.
net.WriteEntity( Entity entity )
Entity:EntIndex'ini kullanarak mevcut net mesajına bir varlık (entity) ekler. Varlığı okumak için olan fonksiyon için net.ReadEntity sayfasına bakın.
net.WriteFloat( number float )
Mevcut net mesajına bir float (ondalıklı sayı) ekler.
net.WriteInt( number integer, number bitCount )
Mevcut net mesajına işaretli bir tamsayı - pozitif/negatif bir tam sayı - ekler. Alıcı tarafta net.ReadInt ile geri okunabilir. İşaretsiz bir sayı (asla negatif olmayacağını bildiğiniz bir sayı) göndermek için net.WriteUInt kullanın. Tam sayı olmayan bir sayı (ör. 2.25) için net.WriteFloat kullanın.
net.WriteMatrix( VMatrix matrix )
Mevcut net mesajına bir VMatrix yazar.
net.WriteNormal( Vector normal )
Net mesajına normalleştirilmiş/yön vektörü (uzunluğu 1 olan Vektör) yazar. Bu fonksiyon, net.WriteVector'a kıyasla daha az bant genişliği kullanır ve uzunluğu > 1 olan vektörleri düzgün bir şekilde göndermez.
net.WritePlayer( Player ply )
Entity:EntIndex'ini kullanarak mevcut net mesajına bir oyuncu varlığı ekler. Bu, net.WriteEntity'ye göre az miktarda ağ bant genişliğinden tasarruf sağlar. Varlığı okumak için olan fonksiyon için net.ReadPlayer sayfasına bakın.
net.WriteString( string string )
Mevcut net mesajına bir dize (string) ekler. Yazılan verinin boyutu, dizedeki her bir ASCII karakteri için 8 bit + null sonlandırıcı için 8 bittir. Tek bir yazılan dizenin izin verilen maksimum uzunluğu 65532 karakterdir. (yani net mesajının kendi sınırı)
net.WriteTable( table table, boolean sequential = false )
Mevcut net mesajına bir tablo (table) ekler. Her anahtar/değer çifti başına 16 ekstra bit ekler, bu nedenle mümkünse her bir anahtar/değeri tam türüyle ayrı ayrı yazmanız daha iyidir. Tüm net mesajlarının 64kb'lık bir arabelleği vardır. Bu fonksiyon, bu arabellek aşıldığında kontrol etmez veya hata vermez. util.TableToJSON ve util.Compress kullanarak ortaya çıkan dizeyi 60kb'lık parçalar halinde göndermeyi ve alıcı tarafta tersini yapmayı düşünebilirsiniz.
net.WriteType( any Data )
Bu dahili olarak kullanılır - kullanabilseniz de muhtemelen kullanmamalısınız. net.WriteTable tarafından dahili olarak kullanılır. Mevcut net mesajına herhangi bir türde değer ekler. net.ReadType ile okumayı kolaylaştırmak için, türü belirten ek bir 8-bitlik işaretsiz tamsayı, değerden önce pakete otomatik olarak yazılacaktır. Yazdığınız veri türünü biliyorsanız, gönderilen veri miktarını azaltmak için o özel veri türü için tasarlanmış bir fonksiyon kullanın.
net.WriteUInt( number unsignedInteger, number bitCount )
Mevcut net mesajına belirtilen bit sayısına sahip işaretsiz bir tamsayı ekler. Negatif ve pozitif sayılar göndermek istiyorsanız net.WriteInt kullanın. Tam sayı olmayan bir sayı (ör. 2.25) için net.WriteFloat kullanın. İşaretsiz sayılar negatif sayıları desteklemez.
net.WriteUInt64( string uint64 )
Mevcut net mesajına 64 bitlik işaretsiz bir tamsayı ekler. Bir uint64 için sınır 18.446.744.073.709.551.615'tir. Sınırın üzerindeki her şey sınıra ayarlanacaktır. İşaretsiz sayılar negatif sayıları desteklemez.
net.WriteVector( Vector vector )
Mevcut net mesajına bir vektör (vector) ekler. Bu fonksiyonla gönderilen vektörler sıkıştırılır, bu da hassasiyet kaybına neden olabilir. 16384'ten büyük veya -16384'ten küçük XYZ bileşenleri geri döndürülemez şekilde değiştirilir (en anlamlı bitler kırpılır) ve ondalık noktadan sonraki hassasiyet düşüktür.

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