All pastes #911792 Raw Edit

Untitled

public text v1 · immutable
·published 2008-02-20 22:39 UTC
rendered paste body
void 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;
		}
	}
}