#include "stdafx.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "SendCharEtc.h" bool GameClientSendPacket::SendCharBindPosition(CCharacter& character, unsigned long dwNPCID, unsigned char cCmd, Position Pos, char cZone, unsigned short usError) { CGameClientDispatch* lpDispatch = 0; if(0 != (lpDispatch = character.GetDispatcher())) { CSendStream& SendStream = lpDispatch->GetSendStream(); char* lpBuffer = SendStream.GetBuffer(sizeof(PktBP)); if (NULL != lpBuffer) { PktBP* lpPktBPAck = reinterpret_cast(lpBuffer); lpPktBPAck->m_dwNPCID = dwNPCID; lpPktBPAck->m_cCmd = cCmd; lpPktBPAck->m_Pos.fPointX = Pos.m_fPointX; lpPktBPAck->m_Pos.fPointY = Pos.m_fPointY; lpPktBPAck->m_Pos.fPointZ = Pos.m_fPointZ; lpPktBPAck->m_cZone = cZone; if(SendStream.WrapCrypt(sizeof(PktBP), CmdCharBindPosition, 0, usError)) { CCell* lpCell = character.GetCellPos().m_lpCell; if(0 == usError && 0 != lpCell && PktBP::BP_RECALL == cCmd) { // ¸®ÄÝÀÎ °æ¿ì ÁÖº¯¿¡ ÀÌÆåÆ® »Ñ¸². unsigned long dwCID = character.GetCID(); const Position& currentPos = character.GetCurrentPos(); // edith 2009.03.07 ¸®ÄÝ ³ôÀÌ Á¶Àý CastObject castObject; castObject.m_wTypeID = 0; castObject.m_cObjectType = 200; castObject.m_cObjectLevel = 0; castObject.m_DstPos.fPointX = currentPos.m_fPointX; castObject.m_DstPos.fPointY = currentPos.m_fPointY+0.3f; castObject.m_DstPos.fPointZ = currentPos.m_fPointZ; lpCell->SendCastObjectInfo(dwCID, dwCID, castObject); } return true; } } } return false; } bool GameClientSendPacket::SendCharHPRegen(CSendStream& SendStream, unsigned long dwCID, unsigned short nNowHP, unsigned short nNowMP) { char* lpBuffer = SendStream.GetBuffer(sizeof(PktHP)); if (NULL == lpBuffer) { return false; } PktHP* lpPktHP = reinterpret_cast(lpBuffer); lpPktHP->m_dwCharID = dwCID; lpPktHP->m_sHP = nNowHP; lpPktHP->m_sMP = nNowMP; return SendStream.WrapCrypt(sizeof(PktHP), CmdCharHPRegen, 0, 0); } bool GameClientSendPacket::SendCharQuickSlotMove(CSendStream& SendStream, TakeType& takeType, unsigned short wSkillID, unsigned short usError) { char* lpBuffer = SendStream.GetBuffer(sizeof(PktQSM)); if (NULL == lpBuffer) { return false; } PktQSM* lpPktQSM = reinterpret_cast(lpBuffer); lpPktQSM->m_TakeType = takeType; lpPktQSM->m_usSkillID = wSkillID; return SendStream.WrapCrypt(sizeof(PktQSM), CmdCharQuickSlotMove, 0, usError); } bool GameClientSendPacket::SendCharControlOption(CSendStream& SendStream, unsigned long dwCharID, RejectOption& Reject) { char* lpBuffer = SendStream.GetBuffer(sizeof(PktCOp)); if (NULL == lpBuffer) { return false; } PktCOp* lpPktCOp = reinterpret_cast(lpBuffer); lpPktCOp->m_dwCharID = dwCharID; lpPktCOp->m_RejectOption = Reject; return SendStream.WrapCrypt(sizeof(PktCOp), CmdCharControlOption, 0, 0); } bool GameClientSendPacket::SendCharFameInfo(CSendStream& SendStream, CCharacter* lpRequestCharacter, const char* szWinCharName, const char* szLoseCharName, unsigned char cOtherNation, unsigned char cOtherClass, unsigned char cCmd, unsigned short usError) { char* lpBuffer = SendStream.GetBuffer(sizeof(PktFIAck)); if (NULL == lpBuffer) { return false; } PktFIAck* lpPktFIAck = reinterpret_cast(lpBuffer); lpPktFIAck->m_dwCharID = lpRequestCharacter->GetCID(); lpPktFIAck->m_cOtherNation = cOtherNation; lpPktFIAck->m_cOtherClass = cOtherClass; lpPktFIAck->m_dwFame = lpRequestCharacter->GetFame(); lpPktFIAck->m_dwMileage = lpRequestCharacter->GetMileage(); lpPktFIAck->m_cRankingByRace = CRankingMgr::GetInstance().GetRank(lpRequestCharacter->GetCharacterName(), 0); lpPktFIAck->m_cRankingByClass = CRankingMgr::GetInstance().GetRank(lpRequestCharacter->GetCharacterName(), static_cast(lpRequestCharacter->GetClass())); lpPktFIAck->m_cCmd = cCmd; strncpy(lpPktFIAck->m_szWinCharName, szWinCharName, PktFIAck::MAX_NAME_LEN); strncpy(lpPktFIAck->m_szLoseCharName, szLoseCharName, PktFIAck::MAX_NAME_LEN); return SendStream.WrapCrypt(sizeof(PktFIAck), CmdCharFameInfo, 0, usError); } bool GameClientSendPacket::SendCharAuthorizePanel(CSendStream& SendStream, CCharacter* lpCaster, unsigned char cCmd) { char* lpBuffer = SendStream.GetBuffer(sizeof(PktAPAck)); if (NULL == lpBuffer) { return false; } PktAPAck* lpPktAPAck = reinterpret_cast(lpBuffer); lpPktAPAck->m_dwCasterID = lpCaster->GetCID(); strncpy(lpPktAPAck->m_szCasterName, lpCaster->GetCharacterName(), CHAR_INFOST::MAX_NAME_LEN); lpPktAPAck->m_cCmd = cCmd; return SendStream.WrapCrypt(sizeof(PktAPAck), CmdCharAuthorizePanel, 0, 0); } bool GameClientSendPacket::SendConfigInfoDB(CSendStream& SendStream, CCharacter* lpCharacter) { const int MAX_BUFFER = sizeof(PktConfigInfo) + PktConfigInfo::MAX_BUFFER_SIZE; char szBuffer[MAX_BUFFER]; PktConfigInfo* lpPktConfigInfo = reinterpret_cast(szBuffer); unsigned short wSize = 0; lpPktConfigInfo->m_dwUserID = lpCharacter->GetUID(); lpPktConfigInfo->m_dwCharID = lpCharacter->GetCID(); // ¹ÝÀü/ÀüÅõ ¸ðµå (¹ÝÀü ¸ðµå´Â ¾ø¾îÁ³Áö¸¸ DB ¼öÁ¤ÀÌ ºÒÆíÇϹǷΠ°ø°£Àº À¯Áö (2005-05-31 by ·Îµò) PeaceModeInfo* lpPeaceModeInfo = reinterpret_cast(szBuffer + sizeof(PktConfigInfo)); // *lpPeaceModeInfo = lpCharacter->GetPeaceMode(); wSize += sizeof(PeaceModeInfo); // °ÅºÎ ¿É¼Ç RejectOption* lpRejectOption = reinterpret_cast(szBuffer + sizeof(PktConfigInfo) + wSize); *lpRejectOption = lpCharacter->GetRejectOption(); wSize += sizeof(RejectOption); lpPktConfigInfo->m_wSize = wSize; return SendStream.WrapCompress(szBuffer, static_cast(sizeof(PktConfigInfo) + lpPktConfigInfo->m_wSize), CmdConfigInfoDB, 0, 0); } bool GameClientSendPacket::SendCharEliteBonus(CSendStream& SendStream, char cEliteBonus) { char* lpBuffer = SendStream.GetBuffer(sizeof(PktEB)); if (NULL == lpBuffer) { return false; } PktEB* lpPktEB = reinterpret_cast(lpBuffer); lpPktEB->m_cEliteBonus = cEliteBonus; return SendStream.WrapCrypt(sizeof(PktEB), CmdEliteBonus, 0, 0); } bool GameClientSendPacket::SendCharAdmin(CSendStream& SendStream, PktAdmin* pPktAdmin, unsigned short wError) { char* lpBuffer = SendStream.GetBuffer(sizeof(PktAdmin)); if (NULL == lpBuffer) { return false; } PktAdmin* lpPktAdmin = reinterpret_cast(lpBuffer); memcpy(lpPktAdmin, pPktAdmin, sizeof(PktAdmin)); return SendStream.WrapCrypt(sizeof(PktAdmin), CmdCharAdminCmd, 0, wError); } // ij¸¯ÅÍ Æ¯¼ö À̺¥Æ® °ü·Ã bool GameClientSendPacket::SendExtraEvent(CSendStream& SendStream, unsigned long dwUserID, unsigned long dwCharID, unsigned long dwEventID, unsigned long dwValue1, unsigned long dwValue2, unsigned short usError) { // edith 2009.09.05 ½Å±Ô À̺¥Æ® Á¦ÀۺκРchar* lpBuffer = SendStream.GetBuffer(sizeof(PktExtraEvent)); if (NULL == lpBuffer) { return false; } PktExtraEvent* lpPktEE = reinterpret_cast(lpBuffer); lpPktEE->m_dwUserID = dwUserID; lpPktEE->m_dwCharID = dwCharID; lpPktEE->m_dwEventID = dwEventID; lpPktEE->m_dwValue1 = dwValue1; lpPktEE->m_dwValue2 = dwValue2; return SendStream.WrapCrypt(sizeof(PktExtraEvent), CmdExtraEvent, 0, usError); }