- Mesaj
- 568
- Çözümler
- 18
- Beğeni
- 556
- Puan
- 829
- Ticaret Puanı
- 0
Serverimde daha önce bir kişinin yaşadığı bir problem farkettim, problem şu;
Görüldüğü gibi shutdown komutu ile oyunu kapatınca giriş yapılmaya çalışıldığı taktirde paket hatası oluşup oyun kapanıyor. Bu sorun sanırsam packet encryption (cryptopp) kaldırınca oluşuyor.
sorunun temel kaynağı AUTH çekirdeğinin diğer çekirdekler gibi P2P bağlantısı kurmuyor olması, sadece DB ile bağlantı kuruyor. Bu yüzden shutdown komutu gönderimi sırasında gönderilen P2P paketi AUTH'a ulaşmamakta.
Çözümü ise şöyle;
game/cmd_general.cpp içerisinde aratılır:
ve fonksiyonun içerisinde ki
yazan kısmın hemen üstüne eklenir;
game/input_db.cpp içerisinde aratılır:
ve hemen aşağısına eklenir;
common/tables.h açılır ve aratılır:
ve hemen aşağısına eklenir (numaralandırmanın uygun olduğuna dikkat edin, bende 182 numarası boş);
tekrar aratılır:
ve yine hemen aşağısına eklenir;
db/clientmanager.cpp açılır ve aratılır:
ve hemen altına eklenir;
bu kadar. İşlemlerden sonra artık oyundan atmak yerine uyarı mesajı verecek;
Görüldüğü gibi shutdown komutu ile oyunu kapatınca giriş yapılmaya çalışıldığı taktirde paket hatası oluşup oyun kapanıyor. Bu sorun sanırsam packet encryption (cryptopp) kaldırınca oluşuyor.
sorunun temel kaynağı AUTH çekirdeğinin diğer çekirdekler gibi P2P bağlantısı kurmuyor olması, sadece DB ile bağlantı kuruyor. Bu yüzden shutdown komutu gönderimi sırasında gönderilen P2P paketi AUTH'a ulaşmamakta.
Çözümü ise şöyle;
game/cmd_general.cpp içerisinde aratılır:
C++:
ACMD(do_shutdown)
ve fonksiyonun içerisinde ki
C++:
Shutdown(10)
C++:
db_clientdesc->DBPacketHeader(HEADER_GD_GO_SHUTDOWN, 0, 0);
game/input_db.cpp içerisinde aratılır:
C++:
case HEADER_DG_WEDDING_END
ve hemen aşağısına eklenir;
C++:
case HEADER_DG_GO_SHUTDOWN:
g_bNoMoreClient = true;
break;
common/tables.h açılır ve aratılır:
C++:
HEADER_DG_ITEMAWARD_INFORMER = 180,
ve hemen aşağısına eklenir (numaralandırmanın uygun olduğuna dikkat edin, bende 182 numarası boş);
C++:
HEADER_DG_GO_SHUTDOWN = 182,
tekrar aratılır:
C++:
HEADER_GD_DELETE_AWARDID = 138,
ve yine hemen aşağısına eklenir;
C++:
HEADER_GD_GO_SHUTDOWN = 146,
db/clientmanager.cpp açılır ve aratılır:
C++:
case HEADER_GD_DELETE_AWARDID:
ve hemen altına eklenir;
C++:
case HEADER_GD_GO_SHUTDOWN:
m_pkAuthPeer->EncodeHeader(HEADER_DG_GO_SHUTDOWN, 0, 0);
break;
bu kadar. İşlemlerden sonra artık oyundan atmak yerine uyarı mesajı verecek;
Son düzenleme: