Sevdamsın 1
Sevdamsın
mavzermete 1
mavzermete
xranzei 1
xranzei
Best Studio 1
Best Studio
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle

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

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Merhaba arkadaşlar

https://forum.turkmmo.com/konu/3731545-metin2-socket-baglantisi-ile-oyun-icine-komut-gonderme-p2p/
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

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

Geri
Üst