NovaLst 1
NovaLst
SLyFeLLowTR 1
SLyFeLLowTR
xranzei 1
xranzei
InfernoShade 1
InfernoShade
shrpnl 1
shrpnl
D 1
delimuratt
noisiv 1
noisiv
Manwe Work 1
Manwe Work
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Cannn6161 1
Cannn6161
onur akbaş 1
onur akbaş
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

[C++] Game-Client Paket Transferi

  • Konuyu başlatan Konuyu başlatan olkan41
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 8
  • Görüntüleme Görüntüleme 1K

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

paylaşım için teşekkürler. Beyaz temada yazılar okunmuyor düzeltir misin
Onca yazıyı nasıl değiştireyim 2 dk dark moduna al :)
 
Anlatım Tamamen Bana Aittir.

Dün ki Konumuzda Client-Game İle Arasındaki İletişimden Bahsettik. Bugün ise Game-Client İletişiminden Bahsedeceğim.


Dün ki Konumuzda DungeonInfo Sisteminden Örnek Alarak Başladık ve Tekrar DungeonInfo İle Devam Edeceğiz. DungeonInfo Sistemimiz de Buton İle Soğuma Süresini Sıfırladık. Fakat Bu İşlem QuestFlag ile Gerçekleştiği İçin Soğuma Süresi Anlık Penceremizde Güncellenmiyordu. Işınlandığımızda Güncelleniyordu. Çünkü Karakter Tekrar Load Olduğu İçin affect.sql, quest.sql vs. Tekrar Load Ediyordu.

Dün ki Konumuzu Okuduysanız Şimdi ki Anlatacaklarımı da İyi Anlayacaksınız.

Öncelikle
Paket.h'de Bir Adet Sabit Sayı Tanımlıyorum.


Ekli dosyayı görüntüle 92389

Ardından Bir Struct Yapısı Oluşturup İçine Elemanlarımı Veri Tipleri İle Birlikte Ekliyorum.

Ekli dosyayı görüntüle 92390

Burayı Hallettik.

Şimdi Dün Yaptığımız
DungeonInfo.cpp Dosyamızdaki Fonksiyon İçindeki Nelerin Client Tarafına İletileceğini Yapalım.

Ekli dosyayı görüntüle 92391

TPacketGCSendResetTime Yapımızı packet adlı Bir Değişkenin Temsil Etmesini İstiyorum.
packet.bHeader Değişkenine
HEADER_GC_DUNGEON_INFO_RESET_TIME Sabit Değeri Atıyorum.
packet.dungeonIdx Elamanımıza idx (Client'den Gelen Sayımız) Atıyorum.
packet.iFlagTime Elamanımıza iTime Değişkenin Değerini Atıyorum.

Özet:


bHeader Bizim Sabit Sayımız.
dungeonIdx Client'e Göndereceğimiz ve Client'deki Butonlardan Gelen Sayımızı Alacak Eleman.
iFlagTime Sıfırlama Süremiz. Yani Client'e 0 Olarak Göndereceğiz.

GameSource Bu Kadar Şimdi Client Source Tarafına Geçelim.

GameSource/Packet.h 'deki Olayı Anlatmayacağım Bir Fark Yok Copy-Paste

ClientSource/PythonNetworkStream.cpp

Burada Başlık ve Boyutları Belirliyoruz.

Ekli dosyayı görüntüle 92392

ClientSource/PythonNetworkStream.h

Burada Tanımlamayı Yapıyorum.

Ekli dosyayı görüntüle 92393

ClientSource/PythonNetworkStreamPhaseGame.cpp

Burada Aynı Mantık İnput_Main.cpp'deki Gibi Fakat Bu Sefer Game'den Gelen Paketimiz

Ekli dosyayı görüntüle 92394

Burada Kısa ve Özetle Anlatmam Gerekirse (Burada Herşey Döngü İçindedir): header Değişkenimiz Her Döngüde Paket Başlıklarımıza Karşılık Gelir. Bizim Paket Başlığımıza Karşılık Geldiğinde Bizi RecvDungeonInfoResetTime() Adlı Fonksiyona Gönderir ve Bu Fonksiyon Paketi Okur ve İlgili İşlemleri Yapar.

Gelelim Fonksiyona


Ekli dosyayı görüntüle 92395

TPacketGCSendResetTime Yapımızı packet adlı Bir Değişkenin Temsil Etmesini İstiyorum.
Ardından Bu Paket Yapısının Boyutu Kadar Veri Almasını ve Bu Verilerin Paket Değişkenine Yerleştirilmesini Yapıyorum.
Son Olarak;


PyCallClassMemberFunc ()
İşlemi İle Root Tarafında Kullanacaklarımı Yazıyorum. Game Tarafından Ne Getirdiysek Onların Root Tarafına Aktarılması İçin.

Client Source İşlemi Bitti Şimdi Root Tarafına Geçelim.

Root/Game.py

Client'den Gelen 2 Argümanlı İşlev İsmimizi Yazıyoruz.

Ekli dosyayı görüntüle 92397

Herşey Bu Kadar. Sizin Böyle Bir Sisteminizin Olmasına Gerek Yok veya constInfo.dungeonDurations[] Ne İşe Yaradığını Anlatmayacağım Burada Size Client-Game ve Game-Client İlişkisinin Nasıl Çalıştığından Bahsetmek İstedim.

Dün Sadece Client'den Game Tarafına Gönderdiğimizde Pencerede Anlık Yenilenmiyordu Sadece Işınlandığımızda Yenileniyordu. Şimdi Game-Client Tarafını Yaptık.
O Nedenle Artık Anlık Güncelleniyor.

KANIT:

giphy.gif












Paylaşım için teşekkürler.
 
Paylaşım için teşekkürler
 
Paylaşım için teşekkürler.
 
  • Beğeni
Reactions: Wcn

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst