K
ıymetli paylaşım rmeğinize sağlıkÖncelikle belirteyim açıklama pentagram arkadaşımızdan alıntıdır bende bu paket olayını çözmeye çalışıyorum güzel bir kaynak
Paket, knight online sunucusu ve istemcisi arasındaki veri alışverişinde kullanılan veri parçalarına verilen addır. Oyun, MMORPG türünde bir oyun olduğu için, oyunun kalbi sunucu programında yatmaktadır. Yani, oyun içerisinde yaptığınız bütün işlemler sizin bilgisayarınız tarafından değil, sunucu bilgisayarı tarafından hesaplanmakta, işlenmekte ve çevrenizdeki oyunculara ve size bu verinin aktarılması sağlanmaktadır. Aklınıza gelebilecek her türlü aktivite(oyuna giriş, sunucu seçimi, karakter seçimi, karakter yaratma, büyü kullanma, envanterde eşya konumu değiştirme ve binlercesi), istemci tarafından bir 'istek' haline getirilerek sunucuya iletiliir. Bu işleme basit bir açıdan yaklaşalım ve oyuna giriş sistemini inceleyelim.
Öncelikle, oyuna girişin gerçekleşebilmesi için sunucunun istemciden iki bilgi edinmesi gerekir. Birincisi, kullanıcı adınız, ikincisi ise parolanız. Bu iki bilgi, bir işlem kodu(opcode) ile birleştirilerek, aşağıdakine benzer bir formda sunucuya iletilir. İşlem kodu, sunucunun ve istemcinin paketin hangi işlem için gönderildiğini anlamasına yarar. Yani, her işlemin (oyuna giriş, karakter seçme vs.) kendine özgü eşsiz bir kodu vardır. Oyuna giriş için bu kod 0xF3'tür. İşlem kodlarının tam listesine shared\packets.h dosyasını açarak erişebilirsiniz.
*** Hidden text: cannot be quoted. ***
Yukarıdaki paket, verinin ağ üzerinde iletilen halidir. Verimize, knight online protokolünün gereksinimi olan HEADER, SIZE ve TAIL verileri eklenmiş durumda. Şimdi bu paketi ayıklayalım, yani içerisindeki asıl veriyi okuyalım.
*** Hidden text: cannot be quoted. ***
Örnek olarak, bir paket oluşturalım.
*** Hidden text: cannot be quoted. ***