rendered paste bodyvoid SendPacketHook(CSocket *pSocket, const char *format, va_list va)
{
//CLog::Log()->AddAnsi(CLog::SystemConsoleBlue, "[SendPacket] Header: %x format: %s Socket:%x", *(BYTE*)va, format, pSocket);
BYTE *pBuffer = (BYTE*)va;
BYTE Header = *pBuffer;
switch(Header)
{
//UserInfo
case 0x04:
{
pSocket->SendV(format, va);
break;
}
//StatusUpdate
case 0x0E:
{
pSocket->SendV(format, va);
break;
}
//0x53 PledgeShowMemberListAll
case 0x53:
{
pSocket->SendV(format, va);
break;
}
//SendMessage 0x64
case 0x64:
{
int *msgID= (int *)(pBuffer+8);
switch(*msgID)
{
case 46: //Use $s1 - SkillName
{
int *pSkillID = (int *)(pBuffer+32);
if(*pSkillID!=NULL)
{
ChargeSystem(*pSkillID, pSocket->GetUser()->GetDBID());
}
break;
}
case 30: //You have obtained $s1
{
int nItemID = *(int *)(pBuffer+32);
if(((nItemID >= 8600 )&&(nItemID <= 8614)) || (nItemID == 8190)) //User pick up Herb
{
// CLog::Log()->AddAnsi(CLog::SystemConsoleBlue, "[HerbSystem] user[%ls] picked herb[%d]- pInventory:%x", pSocket->GetUser()->GetSharedData()->wszName, nItemID, (DWORD) pSocket->GetUser()->GetInventory());
CItem *pItem = pSocket->GetUser()->GetInventory()->GetFirstItemByID(nItemID);
if(pItem!=NULL)
pSocket->GetUser()->UseItem(pItem);
}
break;
}
case 1020: //The pet gave $s1.
{
int nItemID = *(int *)(pBuffer+32);
if(((nItemID >= 8600 )&&(nItemID <= 8614)) || (nItemID == 8190)) //Pet Pick up Herb
{
CPet *pPet = pSocket->GetUser()->GetPet();
CItem *pItem = pPet->GetInventory()->GetFirstItemByID(nItemID);
if(pItem!=NULL)
{
pPet->DropItem(pItem, 1); //DRop item only pet already got one item
}
}
break;
}
default:
{
break;
}
}
pSocket->SendV(format, va);
break;
}
//0x88 PledgeShowInfoUpdate
case 0x88:
{
pSocket->SendV(format, va);
break;
}
//EtcStatusUpdate 0xF3 Format: cddddd
case 0xF3:
{
int *pCharges= (int *)(pBuffer+8);
UpdateEtcStatus(pCharges, pSocket->GetUser());
pSocket->SendV(format, va);
break;
}
//0xFA FriendList
case 0xFA:
{
pSocket->SendV(format, va);
break;
}
default:
{
pSocket->SendV(format, va);
break;
}
}
}