Merhaba, Genel olarak çoğu source dosyalarında bulunan bazı paket sorunları yaşatan hataları düzeltmeyi göstericem.
Öncelikle sorundan bahsetmek gerekirse, client ve server da ki paketlerin bazılarını gönderirken ya da alırken boyutları farklı olduğundan dolayı bu paketler(HEADER_GC_MALL_SET, HEADER_GC_SAFEBOX_SET, GUILD_SUBHEADER_GC_GUILD_INVITE) işlendikten sonra oyunda paket kayması yaşanıp daha sonra hatalı veriler işlenmekte ve bir süre sonra oyun kapanmakta ya da sorun çıkmakta.
Çözüm için:
ClientSource/UserInterface/PythonNetworkStreamPhaseGameItem.cpp dosyasını açın.
Aşağıdaki fonksiyonu bulun.
ve bu şekilde değiştirin.
Aynı değişikliği RecvMallItemSetPacket fonksiyonu içinde yapın.
ClientSource/UserInterface/PythonNetworkStreamPhaseGame.cpp dosyasını açın.
Aratın:
Değiştirin:
Öncelikle sorundan bahsetmek gerekirse, client ve server da ki paketlerin bazılarını gönderirken ya da alırken boyutları farklı olduğundan dolayı bu paketler(HEADER_GC_MALL_SET, HEADER_GC_SAFEBOX_SET, GUILD_SUBHEADER_GC_GUILD_INVITE) işlendikten sonra oyunda paket kayması yaşanıp daha sonra hatalı veriler işlenmekte ve bir süre sonra oyun kapanmakta ya da sorun çıkmakta.
Çözüm için:
ClientSource/UserInterface/PythonNetworkStreamPhaseGameItem.cpp dosyasını açın.
Aşağıdaki fonksiyonu bulun.
Kod:
bool CPythonNetworkStream::RecvSafeBoxSetPacket()
{
TPacketGCItemSet2 kItemSet;
if (!Recv(sizeof(kItemSet), &kItemSet))
return false;
TItemData kItemData;
kItemData.vnum = kItemSet.vnum;
kItemData.count = kItemSet.count;
kItemData.flags = kItemSet.flags;
kItemData.anti_flags = kItemSet.anti_flags;
for (int32_t isocket=0; isocket<ITEM_SOCKET_SLOT_MAX_NUM; ++isocket)
kItemData.alSockets[isocket] = kItemSet.alSockets[isocket];
for (int32_t iattr=0; iattr<ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++iattr)
kItemData.aAttr[iattr] = kItemSet.aAttr[iattr];
CPythonSafeBox::Instance().SetItemData(kItemSet.Cell.cell, kItemData);
__RefreshSafeboxWindow();
return true;
}
ve bu şekilde değiştirin.
Kod:
bool CPythonNetworkStream::RecvSafeBoxSetPacket()
{
TPacketGCItemSet kItemSet;
if (!Recv(sizeof(kItemSet), &kItemSet))
return false;
TItemData kItemData;
kItemData.vnum = kItemSet.vnum;
kItemData.count = kItemSet.count;
for (int32_t isocket=0; isocket<ITEM_SOCKET_SLOT_MAX_NUM; ++isocket)
kItemData.alSockets[isocket] = kItemSet.alSockets[isocket];
for (int32_t iattr=0; iattr<ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++iattr)
kItemData.aAttr[iattr] = kItemSet.aAttr[iattr];
CPythonSafeBox::Instance().SetItemData(kItemSet.Cell.cell, kItemData);
__RefreshSafeboxWindow();
return true;
}
Aynı değişikliği RecvMallItemSetPacket fonksiyonu içinde yapın.
Kod:
bool CPythonNetworkStream::RecvMallItemSetPacket()
{
TPacketGCItemSet kItemSet;
if (!Recv(sizeof(kItemSet), &kItemSet))
return false;
TItemData kItemData;
kItemData.vnum = kItemSet.vnum;
kItemData.count = kItemSet.count;
for (int32_t isocket=0; isocket<ITEM_SOCKET_SLOT_MAX_NUM; ++isocket)
kItemData.alSockets[isocket] = kItemSet.alSockets[isocket];
for (int32_t iattr=0; iattr<ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++iattr)
kItemData.aAttr[iattr] = kItemSet.aAttr[iattr];
CPythonSafeBox::Instance().SetMallItemData(kItemSet.Cell.cell, kItemData);
__RefreshMallWindow();
return true;
}
ClientSource/UserInterface/PythonNetworkStreamPhaseGame.cpp dosyasını açın.
Aratın:
Kod:
case GUILD_SUBHEADER_GC_GUILD_INVITE:
{
uint32_t dwGuildID;
if (!Recv(sizeof(dwGuildID), &dwGuildID))
return false;
char szGuildName[GUILD_NAME_MAX_LEN+1];
if (!Recv(GUILD_NAME_MAX_LEN, &szGuildName))
return false;
Değiştirin:
Kod:
case GUILD_SUBHEADER_GC_GUILD_INVITE:
{
uint32_t dwGuildID;
if (!Recv(sizeof(dwGuildID), &dwGuildID))
return false;
char szGuildName[GUILD_NAME_MAX_LEN+1];
if (!Recv(GUILD_NAME_MAX_LEN + 1, &szGuildName))
return false;
Merhaba, Genel olarak çoğu source dosyalarında bulunan bazı paket sorunları yaşatan hataları düzeltmeyi göstericem.
Öncelikle sorundan bahsetmek gerekirse, client ve server da ki paketlerin bazılarını gönderirken ya da alırken boyutları farklı olduğundan dolayı bu paketler(HEADER_GC_MALL_SET, HEADER_GC_SAFEBOX_SET, GUILD_SUBHEADER_GC_GUILD_INVITE) işlendikten sonra oyunda paket kayması yaşanıp daha sonra hatalı veriler işlenmekte ve bir süre sonra oyun kapanmakta ya da sorun çıkmakta.
![]()
![]()
![]()
![]()
Çözüm için:
ClientSource/UserInterface/PythonNetworkStreamPhaseGameItem.cpp dosyasını açın.
Aşağıdaki fonksiyonu bulun.
Kod:bool CPythonNetworkStream::RecvSafeBoxSetPacket() { TPacketGCItemSet2 kItemSet; if (!Recv(sizeof(kItemSet), &kItemSet)) return false; TItemData kItemData; kItemData.vnum = kItemSet.vnum; kItemData.count = kItemSet.count; kItemData.flags = kItemSet.flags; kItemData.anti_flags = kItemSet.anti_flags; for (int32_t isocket=0; isocket<ITEM_SOCKET_SLOT_MAX_NUM; ++isocket) kItemData.alSockets[isocket] = kItemSet.alSockets[isocket]; for (int32_t iattr=0; iattr<ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++iattr) kItemData.aAttr[iattr] = kItemSet.aAttr[iattr]; CPythonSafeBox::Instance().SetItemData(kItemSet.Cell.cell, kItemData); __RefreshSafeboxWindow(); return true; }
ve bu şekilde değiştirin.
Kod:bool CPythonNetworkStream::RecvSafeBoxSetPacket() { TPacketGCItemSet kItemSet; if (!Recv(sizeof(kItemSet), &kItemSet)) return false; TItemData kItemData; kItemData.vnum = kItemSet.vnum; kItemData.count = kItemSet.count; for (int32_t isocket=0; isocket<ITEM_SOCKET_SLOT_MAX_NUM; ++isocket) kItemData.alSockets[isocket] = kItemSet.alSockets[isocket]; for (int32_t iattr=0; iattr<ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++iattr) kItemData.aAttr[iattr] = kItemSet.aAttr[iattr]; CPythonSafeBox::Instance().SetItemData(kItemSet.Cell.cell, kItemData); __RefreshSafeboxWindow(); return true; }
Aynı değişikliği RecvMallItemSetPacket fonksiyonu içinde yapın.
Kod:bool CPythonNetworkStream::RecvMallItemSetPacket() { TPacketGCItemSet kItemSet; if (!Recv(sizeof(kItemSet), &kItemSet)) return false; TItemData kItemData; kItemData.vnum = kItemSet.vnum; kItemData.count = kItemSet.count; for (int32_t isocket=0; isocket<ITEM_SOCKET_SLOT_MAX_NUM; ++isocket) kItemData.alSockets[isocket] = kItemSet.alSockets[isocket]; for (int32_t iattr=0; iattr<ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++iattr) kItemData.aAttr[iattr] = kItemSet.aAttr[iattr]; CPythonSafeBox::Instance().SetMallItemData(kItemSet.Cell.cell, kItemData); __RefreshMallWindow(); return true; }
ClientSource/UserInterface/PythonNetworkStreamPhaseGame.cpp dosyasını açın.
Aratın:
Kod:case GUILD_SUBHEADER_GC_GUILD_INVITE: { uint32_t dwGuildID; if (!Recv(sizeof(dwGuildID), &dwGuildID)) return false; char szGuildName[GUILD_NAME_MAX_LEN+1]; if (!Recv(GUILD_NAME_MAX_LEN, &szGuildName)) return false;
Değiştirin:
Kod:case GUILD_SUBHEADER_GC_GUILD_INVITE: { uint32_t dwGuildID; if (!Recv(sizeof(dwGuildID), &dwGuildID)) return false; char szGuildName[GUILD_NAME_MAX_LEN+1]; if (!Recv(GUILD_NAME_MAX_LEN + 1, &szGuildName)) return false;
Yine bir Koray klasiği
Paylaşım için teşekkürler.Merhaba, Genel olarak çoğu source dosyalarında bulunan bazı paket sorunları yaşatan hataları düzeltmeyi göstericem.
Öncelikle sorundan bahsetmek gerekirse, client ve server da ki paketlerin bazılarını gönderirken ya da alırken boyutları farklı olduğundan dolayı bu paketler(HEADER_GC_MALL_SET, HEADER_GC_SAFEBOX_SET, GUILD_SUBHEADER_GC_GUILD_INVITE) işlendikten sonra oyunda paket kayması yaşanıp daha sonra hatalı veriler işlenmekte ve bir süre sonra oyun kapanmakta ya da sorun çıkmakta.
![]()
![]()
![]()
![]()
Çözüm için:
ClientSource/UserInterface/PythonNetworkStreamPhaseGameItem.cpp dosyasını açın.
Aşağıdaki fonksiyonu bulun.
Kod:bool CPythonNetworkStream::RecvSafeBoxSetPacket() { TPacketGCItemSet2 kItemSet; if (!Recv(sizeof(kItemSet), &kItemSet)) return false; TItemData kItemData; kItemData.vnum = kItemSet.vnum; kItemData.count = kItemSet.count; kItemData.flags = kItemSet.flags; kItemData.anti_flags = kItemSet.anti_flags; for (int32_t isocket=0; isocket<ITEM_SOCKET_SLOT_MAX_NUM; ++isocket) kItemData.alSockets[isocket] = kItemSet.alSockets[isocket]; for (int32_t iattr=0; iattr<ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++iattr) kItemData.aAttr[iattr] = kItemSet.aAttr[iattr]; CPythonSafeBox::Instance().SetItemData(kItemSet.Cell.cell, kItemData); __RefreshSafeboxWindow(); return true; }
ve bu şekilde değiştirin.
Kod:bool CPythonNetworkStream::RecvSafeBoxSetPacket() { TPacketGCItemSet kItemSet; if (!Recv(sizeof(kItemSet), &kItemSet)) return false; TItemData kItemData; kItemData.vnum = kItemSet.vnum; kItemData.count = kItemSet.count; for (int32_t isocket=0; isocket<ITEM_SOCKET_SLOT_MAX_NUM; ++isocket) kItemData.alSockets[isocket] = kItemSet.alSockets[isocket]; for (int32_t iattr=0; iattr<ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++iattr) kItemData.aAttr[iattr] = kItemSet.aAttr[iattr]; CPythonSafeBox::Instance().SetItemData(kItemSet.Cell.cell, kItemData); __RefreshSafeboxWindow(); return true; }
Aynı değişikliği RecvMallItemSetPacket fonksiyonu içinde yapın.
Kod:bool CPythonNetworkStream::RecvMallItemSetPacket() { TPacketGCItemSet kItemSet; if (!Recv(sizeof(kItemSet), &kItemSet)) return false; TItemData kItemData; kItemData.vnum = kItemSet.vnum; kItemData.count = kItemSet.count; for (int32_t isocket=0; isocket<ITEM_SOCKET_SLOT_MAX_NUM; ++isocket) kItemData.alSockets[isocket] = kItemSet.alSockets[isocket]; for (int32_t iattr=0; iattr<ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++iattr) kItemData.aAttr[iattr] = kItemSet.aAttr[iattr]; CPythonSafeBox::Instance().SetMallItemData(kItemSet.Cell.cell, kItemData); __RefreshMallWindow(); return true; }
ClientSource/UserInterface/PythonNetworkStreamPhaseGame.cpp dosyasını açın.
Aratın:
Kod:case GUILD_SUBHEADER_GC_GUILD_INVITE: { uint32_t dwGuildID; if (!Recv(sizeof(dwGuildID), &dwGuildID)) return false; char szGuildName[GUILD_NAME_MAX_LEN+1]; if (!Recv(GUILD_NAME_MAX_LEN, &szGuildName)) return false;
Değiştirin:
Kod:case GUILD_SUBHEADER_GC_GUILD_INVITE: { uint32_t dwGuildID; if (!Recv(sizeof(dwGuildID), &dwGuildID)) return false; char szGuildName[GUILD_NAME_MAX_LEN+1]; if (!Recv(GUILD_NAME_MAX_LEN + 1, &szGuildName)) return false;
Paylaşım için teşekkürler.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 0
- Görüntüleme
- 637

