- Mesaj
- 28
- Çözümler
- 1
- Beğeni
- 42
- Puan
- 333
- Ticaret Puanı
- 0
Merhaba arkadaşlar bugün serverimde uzun süredir mevcut olan sorunun peşine düştüm ve tek tek logladım. Sorunun client tarafında olduğunu tespit ettim. Sorun tamamen SendSpecial fonksiyonu ile alakalı olduğunu tespit ettim sorunun sebebi aslında komediymiş.
gördüğünüz üzere kod bu muhtemelen herkesin client sourcesinde bu kod vardır. İkarus bu kod üzerindne servere packetleri gönderiyor fakat gördüğnüüz üzere case HEADER_CG_ATTACK kısmı olayı bozuyor src pos yani itemin yer değiştirirken bulunuduğu konum 2 ise HEADER_CG_ATTACK 2 değerine eşit olduğu için server tarafına bozuk veri gidiyor bu sebeple 3. slottan başka slota taşıma olmuyor. Bunun çözümünü sizlerle paylaşıyorum. Hiç orjinal kod bloğuna bulaşmadan bu şekilde çözüme ulaştım.
ekleyin:
ardından PythonNetworkStreamIkarusShop.cpp dosyasını açın notepad ile CTRL+F yapıp değiştir kısmına gelin: aranan kısma " (!Send( " yazın sonra değiştir kısmına "(!SendIkarus( " yazın tümünü değiştir diyin. Sorun çözülecektir. Ben nolur nolmaz diye orjinal fonksiyona dokunmak istemedim isteyen ayarlayabilir. Benzer bir sorunla karşı karşıyasanız büyük ihitmalle bunla alakalı olabilir! Yani milyonda bir ihtimal benim başıma gelmiş
Orjinal kod:
bool CPythonNetworkStream::SendSpecial(int nLen, void* pvBuf)
{
if (nLen <= 0)
return true;
BYTE bHeader = *(BYTE*)pvBuf;
switch (bHeader)
{
case HEADER_CG_ATTACK:
{
TPacketCGAttack* pkPacketAtk = (TPacketCGAttack*)pvBuf;
pkPacketAtk->bCRCMagicCubeProcPiece = GetProcessCRCMagicCubePiece();
pkPacketAtk->bCRCMagicCubeFilePiece = GetProcessCRCMagicCubePiece();
return CNetworkStream::Send(nLen, (const char*)pvBuf);
}
break;
}
return CNetworkStream::Send(nLen, (const char*)pvBuf);
}
gördüğünüz üzere kod bu muhtemelen herkesin client sourcesinde bu kod vardır. İkarus bu kod üzerindne servere packetleri gönderiyor fakat gördüğnüüz üzere case HEADER_CG_ATTACK kısmı olayı bozuyor src pos yani itemin yer değiştirirken bulunuduğu konum 2 ise HEADER_CG_ATTACK 2 değerine eşit olduğu için server tarafına bozuk veri gidiyor bu sebeple 3. slottan başka slota taşıma olmuyor. Bunun çözümünü sizlerle paylaşıyorum. Hiç orjinal kod bloğuna bulaşmadan bu şekilde çözüme ulaştım.
ekleyin:
PythonNetworkStream.h:
#ifdef ENABLE_IKASHOP_RENEWAL
bool SendIkarusSpecial(int nLen, void* pvBuf);
bool SendIkarus(int nLen, const void* pvBuf) {
return SendIkarusSpecial(nLen, const_cast<void*>(pvBuf));
}
template <typename S>
bool SendIkarus(const S& rPacket) {
return SendIkarusSpecial(sizeof(S), (void*)&rPacket);
}
#endif
PythonNetworkStreamPhaseGame.cpp:
// sendspecial fonksiyonun altına ekleyin
bool CPythonNetworkStream::SendIkarusSpecial(int nLen, void* pvBuf)
{
if (nLen <= 0)
return true;
return CNetworkStream::Send(nLen, (const char*)pvBuf);
}
ardından PythonNetworkStreamIkarusShop.cpp dosyasını açın notepad ile CTRL+F yapıp değiştir kısmına gelin: aranan kısma " (!Send( " yazın sonra değiştir kısmına "(!SendIkarus( " yazın tümünü değiştir diyin. Sorun çözülecektir. Ben nolur nolmaz diye orjinal fonksiyona dokunmak istemedim isteyen ayarlayabilir. Benzer bir sorunla karşı karşıyasanız büyük ihitmalle bunla alakalı olabilir! Yani milyonda bir ihtimal benim başıma gelmiş

Son düzenleme: