Shutdown komutu düzenlemesi

  • Konuyu açan Konuyu açan Denizeri24
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 3
  • Gösterim Gösterim 575

Denizeri24

Gentleman
Geliştirici
Usta Üye
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:
C++:
Genişlet Daralt Kopyala
ACMD(do_shutdown)

ve fonksiyonun içerisinde ki
C++:
Genişlet Daralt Kopyala
Shutdown(10)
yazan kısmın hemen üstüne eklenir;

C++:
Genişlet Daralt Kopyala
db_clientdesc->DBPacketHeader(HEADER_GD_GO_SHUTDOWN, 0, 0);


game/input_db.cpp içerisinde aratılır:
C++:
Genişlet Daralt Kopyala
case HEADER_DG_WEDDING_END

ve hemen aşağısına eklenir;

C++:
Genişlet Daralt Kopyala
    case HEADER_DG_GO_SHUTDOWN:
        g_bNoMoreClient = true;
        break;

common/tables.h açılır ve aratılır:
C++:
Genişlet Daralt Kopyala
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++:
Genişlet Daralt Kopyala
HEADER_DG_GO_SHUTDOWN                        = 182,

tekrar aratılır:
C++:
Genişlet Daralt Kopyala
HEADER_GD_DELETE_AWARDID                    = 138,

ve yine hemen aşağısına eklenir;

C++:
Genişlet Daralt Kopyala
HEADER_GD_GO_SHUTDOWN                        = 146,

db/clientmanager.cpp açılır ve aratılır:
C++:
Genişlet Daralt Kopyala
case HEADER_GD_DELETE_AWARDID:

ve hemen altına eklenir;

C++:
Genişlet Daralt Kopyala
            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:
Üst