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:
Üstüne:
ekleyin.
Daha sonra
cmd_gm.cpp açın
Aşağıdaki kodu aratın:
Altına ekleyin:
Ve son olarak input.cpp açın
Aşağıdaki kodu aratın:
Kodu bu şekilde değiştirin:
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); // 전 서버에 공지
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));
}
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
Teşekkurler adamım ama Gökhanla beraber araştırıyorduk bilgileri paylaşıyorduk sağ olsun Paylaşım için teşekkürler
İlaç oldu bu bana ilaçç)
Konu için teşekkürler devlogu değiştirirsen daha iyi olur ?
Yorumlarınız için teşekkür ederim...
Teşekkurler adamım ama Gökhanla beraber araştırıyorduk bilgileri paylaşıyorduk sağ olsun Paylaşım için teşekkürler

İlaç oldu bu bana ilaçç
)Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 0
- Görüntüleme
- 288
- Cevaplar
- 4
- Görüntüleme
- 274
- Cevaplar
- 3
- Görüntüleme
- 401
- Cevaplar
- 14
- Görüntüleme
- 638
