Habe ja Probleme mit dem Packet Header, kann ihn aus welchem Grund auch immer nicht ändern ohne das ich mich am ende nicht mehr einloggen kann (Nach Charauswahl is schluss)
Nun habe ich aber versucht die crashs z.B einzeln zu fixxen.
"CDPSrvr::OnMoveItemOnPocket+10A"
Wäre ein Error
Also such ich mal in der DpSrvr nach dem Error, dann stoße ich auf:
Code:
void CDPSrvr::OnMoveItemOnPocket( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
{
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) )
{
int nPocket1, nItem, nPocket2;
short nNum;
ar >> nPocket1 >> nItem >> nNum >> nPocket2;
if( nPocket1 == nPocket2 )
return;
// mirchang 091214 - Âø¿ëÁßÀÎ ¾ÆÀÌÅÛÀÎÁö üũ
if( nPocket1 == -1 ) // ¿øº»ÀÌ Àκ¥Å丮ÀÎÁö °Ë»ç!
{
if( pUser->m_Inventory.IsEquip( nItem ) )
return;
}
CItemElem* pItem = pUser->GetItemId2( nPocket1, nItem ); // ¿©±â¼* ÈÞ´ë°¡¹æ ¸¸·á°Ë»ç °°ÀÌÇÔ.
if( IsUsableItem( pItem ) )
{
if( nPocket1 < 0 && pUser->IsUsing( pItem ) )
return;
if( nNum > pItem->m_nItemNum )
return;
CItemElem item;
item = *pItem;
item.m_nItemNum = nNum;
if( pUser->CreateItem2( &item, nPocket2 ) )
{
pUser->RemoveItem2( nItem, nNum, nPocket1 );
// log
LogItemInfo log;
log.Action = "m";
log.SendName = pUser->GetName();
log.RecvName = "OnMoveItemOnPocket";
log.WorldId = pUser->GetWorld()->GetID();
log.Gold = nPocket1;
log.Gold2 = nPocket2;
OnLogItem( log, &item, nNum );
}
}
}
}
Packet ist 07000070FFFFFFF (Inventory Crash)
Wenn ich dann in msghdr.h gehe seh ich
#define PACKETTYPE_MOVE_ITEM_POCKET (DWORD)0x70000007
Wenn ich das ändere, könnte er nicht mehr crashen






