ShadowFon 1
ShadowFon
noisiv 1
noisiv
Manwe Work 1
Manwe Work
romegames 1
romegames
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Bvural41 1
Bvural41
NovaLst 1
NovaLst
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Metin2 Socket User DC Sorunu Çözümü (p2p)

  • Konuyu başlatan Konuyu başlatan GDTR
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 10
  • Görüntüleme Görüntüleme 3K
  • Etiketler Etiketler
    metin2 socket p2p

GDTR

● ● ●
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye
Fahri Üye
Katılım
19 Eyl 2011
Konular
3,423
Mesajlar
8,597
Çözüm
12
Online süresi
1mo 28d
Reaksiyon Skoru
754
Altın Konu
0
TM Yaşı
14 Yıl 8 Ay 28 Gün
Başarım Puanı
394
MmoLira
6,445
DevLira
12
Ticaret - 100%
1   0   0

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!

Merhaba arkadaşlar


Bu konuyu daha önce açmıştım. Socket(P2P) olayını kısaca anlatmak gerekirse web üzerinden göndereceğiniz komutları oyun içinde anlık olarak gönderip alabiliyorsunuz.

Yukarıdaki fonksiyonu denediğimde istediğiniz oyuncuyu oyundan atmak istediğinizde atamıyorsunuz. Bunun sebebi game source kısmındaki anlamadığım bir hatadan dolayı olduğu anlayıp bir alternatif bir çözüm ürettim.

Öncelikle cmd.h açın

Aşağıdaki kodu aratın:
C++:
extern void SendNoticeMap(const char* c_pszBuf, int nMapIndex, bool bBigFont);

Üstüne:
C++:
extern const char * userDC(const char * userName);    // 전 서버에 공지
ekleyin.

Daha sonra

cmd_gm.cpp açın

Aşağıdaki kodu aratın:
C++:
void SendLog(const char * c_pszBuf)
{
    const DESC_MANAGER::DESC_SET & c_ref_set = DESC_MANAGER::instance().GetClientSet();
    std::for_each(c_ref_set.begin(), c_ref_set.end(), log_packet_func(c_pszBuf));
}
Altına ekleyin:
C++:
const char * userDC(const char * userName)
{

    LPDESC d = DESC_MANAGER::instance().FindByCharacterName(userName);
    LPCHARACTER    tch = d ? d->GetCharacter() : NULL;

    if (!tch)
    {
        return "Bu isimde kullanici yok";
    }else{
        DESC_MANAGER::instance().DestroyDesc(d);
        return "Oyuncu Atildi";
    }


}

Ve son olarak input.cpp açın
Aşağıdaki kodu aratın:
C++:
else if (!stBuf.compare(0, 3, "DC "))

Kodu bu şekilde değiştirin:
C++:
else if (!stBuf.compare(0, 3, "DC "))
                {
                
                
                    std::string msg = stBuf.substr(3, LOGIN_MAX_LEN);

                    dev_log(LOG_DEB0, "DC : '%s'", msg.c_str());


                    stResult = userDC(msg.c_str());
                
                    /*TPacketGGDisconnect pgg;

                    pgg.bHeader = HEADER_GG_DISCONNECT;
                    strlcpy(pgg.szLogin, msg.c_str(), sizeof(pgg.szLogin));

                    P2P_MANAGER::instance().Send(&pgg, sizeof(TPacketGGDisconnect));

                    // delete login key
                    {
                        TPacketDC p;
                        strlcpy(p.login, msg.c_str(), sizeof(p.login));
                        db_clientdesc->DBPacket(HEADER_GD_DC, 0, &p, sizeof(p));
                    }*/
                
                }


 
Son düzenleme:

En Çok Reaksiyon Alan Mesajlar

Konu için teşekkürler devlogu değiştirirsen daha iyi olur ?
 

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

Geri
Üst