Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
240 lines
8.5 KiB
C++
240 lines
8.5 KiB
C++
// Network.h: interface for the CNetwork class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#if !defined(AFX_NETWORK_H__5F5E9AA4_BFC5_40A0_8FCB_58D2BF51EEB0__INCLUDED_)
|
|
#define AFX_NETWORK_H__5F5E9AA4_BFC5_40A0_8FCB_58D2BF51EEB0__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
#include "Network\ClientSocket\ClientSocket.h"
|
|
#include "ItemInstance.h"
|
|
#include <vector.h>
|
|
#include <list>
|
|
|
|
enum NetworkState
|
|
{
|
|
NS_NOWAITING = 0,
|
|
NS_CONNECTGAMESERVER,
|
|
NS_SERVERMOVE,
|
|
NS_CHARLOGIN,
|
|
NS_CHARSELECT,
|
|
NS_USERLOGIN,
|
|
NS_UPDATEADDRESS,
|
|
NS_CREATECHAR,
|
|
NS_DELETECHAR,
|
|
NS_TAKEITEM,
|
|
NS_TRADEITEM,
|
|
NS_RESPAWN,
|
|
NS_UPGRADECLASS,
|
|
NS_USEITEM,
|
|
NS_SKILLERASE,
|
|
NS_TAKEGOLD,
|
|
NS_CASTOBJECT,
|
|
NS_CONNECTAUTHSERVER,
|
|
NS_SKILLUNLOCK,
|
|
NS_ZONEMOVE,
|
|
NS_RESPAWNSELECT,
|
|
NS_STALLREGISTERITEM,
|
|
};
|
|
|
|
enum NetworkError
|
|
{
|
|
NE_NOERROR = 0,
|
|
NE_VERSION,
|
|
NE_USERID,
|
|
NE_USERPW,
|
|
NE_LOGINSERVER, //커넥팅 에러
|
|
NE_AGENTSERVER,
|
|
NE_LOGINCHRINFO,
|
|
NE_SELECTCHR,
|
|
NE_CHRCREATE,
|
|
NE_CHRDELETE,
|
|
NE_CHRMOVE,
|
|
NE_CHRSELECT,
|
|
NE_CHRSHAPE,
|
|
NE_CHRATT,
|
|
NE_LOGOUT,
|
|
NE_CHAT,
|
|
NE_DEAD,
|
|
NE_RESP,
|
|
NE_LEVELUP,
|
|
NE_TRADE,
|
|
NE_MOTION,
|
|
|
|
NE_TAKEOUT,
|
|
NE_TAKEIN,
|
|
NE_ALREADY, //이미 접속되어있음,
|
|
NE_DBCONNECTION,
|
|
NE_UNIDENTYUSER,
|
|
NE_USERDATA,
|
|
NE_LOCATION,
|
|
NE_DBFAIL
|
|
};
|
|
|
|
using namespace std;
|
|
|
|
const unsigned int BUFFERSIZE = 10000;
|
|
|
|
class CNetwork
|
|
{
|
|
private:
|
|
char m_aryBuffer[BUFFERSIZE];
|
|
char m_cNetworkPacketCommand;
|
|
|
|
BOOL ParseUserLogin(char *aryBuffer);
|
|
BOOL ParseCharSelect(char *aryBuffer);
|
|
BOOL ParseCharLogin(char *aryBuffer);
|
|
BOOL ParseCharCreate(char *aryBuffer);
|
|
BOOL ParseCharDelete(char *aryBuffer);
|
|
BOOL ParseCharUpdateAddress(char *aryBuffer);
|
|
BOOL ParseCharMove(char *aryBuffer);
|
|
BOOL ParseCharCellLogin(char *aryBuffer);
|
|
BOOL ParseCharCellLogout(char *aryBuffer);
|
|
BOOL ParseCharAddressInfo(char *aryBuffer);
|
|
BOOL ParseCharChat(char *aryBuffer);
|
|
BOOL ParseMonMove(char *aryBuffer);
|
|
BOOL ParseCharAttack(char *aryBuffer);
|
|
BOOL ParseCharRespawn(char *aryBuffer);
|
|
BOOL ParseCharAttackInfo(char *aryBuffer);
|
|
BOOL ParseGameCellInfo(char *aryBuffer);
|
|
BOOL ParseCharPullDown(char *aryBuffer);
|
|
BOOL ParseCharPullDownInfo(char *aryBuffer); // 나를 포함해서 간다.
|
|
BOOL ParseCharPickUp(char *aryBuffer);
|
|
BOOL ParseCharPickUpInfo(char *aryBuffer); // 나를 포함해서 간다.
|
|
BOOL ParseCharAttacked(char *aryBuffer);
|
|
BOOL ParseCharTakeItem(char *aryBuffer);
|
|
BOOL ParseCharSwapItem(char *aryBuffer);
|
|
BOOL ParseCharTradeItem(char *aryBuffer);
|
|
BOOL ParseCharShapeInfo(char *aryBuffer);
|
|
BOOL ParseCharPartyCmd(char *aryBuffer);
|
|
BOOL ParseCharPartyInfo(char *aryBuffer);
|
|
BOOL ParseCharUseItem(char *aryBuffer);
|
|
BOOL ParseCharSkillLock(char *aryBuffer);
|
|
BOOL ParseCharSkillErase(char *aryBuffer);
|
|
BOOL ParseCharSkillCreate(char *aryBuffer);
|
|
BOOL ParseCharRepairItem(char *aryBuffer);
|
|
BOOL ParseCharInstallSocket(char *aryBuffer);
|
|
BOOL ParseCharSplitItem(char *aryBuffer);
|
|
BOOL ParseCharUpgradeItem(char *aryBuffer);
|
|
BOOL ParseCharAward(char *aryBuffer);
|
|
BOOL ParseCharLevelUp(char *aryBuffer);
|
|
BOOL ParseCharLevelUpInfo(char *aryBuffer);
|
|
BOOL ParseCharIncreasePoint(char *aryBuffer);
|
|
BOOL ParseCharHPRegen(char *aryBuffer);
|
|
BOOL ParseCharBindPos(char *aryBuffer);
|
|
BOOL ParseCharQuickSlotMove(char *aryBuffer);
|
|
BOOL ParseCharPartyMemInfo(char *aryBuffer);
|
|
BOOL ParseCharClassUpgrade(char *aryBuffer);
|
|
BOOL ParseCellBroadCasting(char *aryBuffer);
|
|
BOOL ParseCharCastObjectInfo(char *aryBuffer);
|
|
BOOL ParseCharPartyCmdInfo(char *aryBuffer);
|
|
BOOL ParseCharRequireInfo(char *aryBuffer);
|
|
BOOL ParseCharWhisper(char *aryBuffer);
|
|
BOOL ParseCharExchangeCmd(char *aryBuffer);
|
|
BOOL ParseCharExchangeItem(char *aryBuffer);
|
|
BOOL ParseCharTakeGold(char *aryBuffer);
|
|
BOOL ParseCharDuelCmd(char *aryBuffer);
|
|
BOOL ParseCharFameInfo(char *aryBuffer);
|
|
BOOL ParseCharPartyFind(char *aryBuffer);
|
|
BOOL ParseCharSpellInfo(char *aryBuffer);
|
|
BOOL ParseControlOption(char *aryBuffer);
|
|
BOOL ParseCharSkillUnLock(char *aryBuffer);
|
|
BOOL ParseServerZone(char *aryBuffer);
|
|
BOOL ParseCharMoveZone(char *aryBuffer);
|
|
BOOL ParseDepositUpdate(char *aryBuffer);
|
|
BOOL ParseDeposit(char *aryBuffer);
|
|
BOOL ParseCharStallOpen(char *aryBuffer);
|
|
BOOL ParseCharStallEnter(char *aryBuffer);
|
|
BOOL ParseCharStallRegisterItem(char *aryBuffer);
|
|
BOOL ParseCharStallItemInfo(char *aryBuffer);
|
|
BOOL ParseCharTeamBattleInfo(char *aryBuffer);
|
|
BOOL ParseCharEliteBonus(char *aryBuffer);
|
|
BOOL ParseCharStartQuest(char *aryBuffer);
|
|
BOOL ParseCharOperateTrigger(char *aryBuffer);
|
|
BOOL ParseCharDisappearItme(char *aryBuffer);
|
|
BOOL ParseCharFriendDB(char *aryBuffer);
|
|
BOOL ParseCharFriendAck(char *aryBuffer);
|
|
BOOL ParseCharFriendRegistered(char *aryBuffer);
|
|
BOOL ParseCharQuestInfo(char *aryBuffer);
|
|
BOOL ParseCharEndQuest(char *aryBuffer);
|
|
BOOL ParseCharPeaceMode(char *aryBuffer);
|
|
BOOL ParseCharAuthorizePanel(char *aryBuffer);
|
|
|
|
void ProcessError(void);
|
|
|
|
public:
|
|
void SetChant(CItemInstance *lpChantSkill);
|
|
static ClientSocket *m_pSocket;
|
|
BOOL m_bLoginSuccess;
|
|
BOOL m_bUpdateAddressPacket;
|
|
BOOL m_bCompleteDeposit;
|
|
BOOL m_bCharLoginSuccess;
|
|
|
|
static NetworkState m_nsNetworkStateforCastObject;
|
|
static NetworkState m_nsNetworkState;
|
|
static unsigned long m_dwNetworkError;
|
|
|
|
static long m_lShoutCounter;
|
|
static long m_lFameInfoCounter;
|
|
static long m_lPartyFindCounter;
|
|
static long m_lPartyCmdCounter;
|
|
static long m_lSetSkillCounter;
|
|
|
|
long m_lUDPPacketTotalByte, m_lUDPPAcketPerSecond, m_lUDPPacketOldByte;
|
|
long m_lTCPPacketTotalByte, m_lTCPPAcketPerSecond, m_lTCPPacketOldByte;
|
|
|
|
list<unsigned long> m_lstSendShape;
|
|
list<unsigned long> m_lstRecvShape;
|
|
|
|
CNetwork();
|
|
~CNetwork();
|
|
|
|
BOOL Create(HWND hWnd);
|
|
|
|
BOOL ConnectToGameServer(char *strServerIP);
|
|
BOOL ConnectToAuthServer(char *strServerIP);
|
|
BOOL Login(void);
|
|
BOOL CharSelect(unsigned long dwChrID);
|
|
|
|
void PacketProcess(LPARAM lParam, BOOL bUDP);
|
|
void PacketProcess(BOOL bUDP);
|
|
|
|
static void SetState(NetworkState nsState) { m_nsNetworkState = nsState; }
|
|
static NetworkState GetState(void) { return m_nsNetworkState; }
|
|
static void SetError(unsigned long dwError) { m_dwNetworkError = dwError; }
|
|
static unsigned long GetError(void) { return m_dwNetworkError; }
|
|
|
|
static bool IsExistToList(unsigned short List_In, unsigned long CharID_In);
|
|
static bool CharAddressRequireInfo(unsigned long SenderID_In, unsigned long CharID_In);
|
|
static BOOL SendDeleteChar(unsigned long dwSlot, unsigned long dwUID);
|
|
static BOOL SendCreateChar(unsigned long dwSlot, CHAR_CREATE &pCreateChar);
|
|
static BOOL SendChatMessage(const char *strName, const char *strMessage, unsigned long dwCommand);
|
|
static BOOL SendMovingPacket(unsigned long dwUpperAni, unsigned long dwLowerAni, float fDir, vector3 &vecMove);
|
|
static BOOL SendMoveUpdatePacket(float fDir, vector3 &vecPosition);
|
|
static BOOL SendCharAttack(vector3 &vecPos, float fDir, unsigned short wType, unsigned char cSkillLock, unsigned char cSkillLevel, unsigned char cAtCount, unsigned short wDefenserNum, unsigned long dwDefenser[10]);
|
|
static BOOL SendCharRespawn(unsigned long dwChrID);
|
|
static BOOL SendFieldObjectPickUp(unsigned long dwFieldID, Item::ItemPos &pItemIndex);
|
|
static BOOL SendTakeItem(CItemInstance *lpTakeItem, Item::ItemPos *lpTakeIndex, unsigned char cNum);
|
|
static BOOL SendSplitItem(CItemInstance *lpTakeItem, Item::ItemPos *lpTakeIndex, unsigned char cNum);
|
|
static BOOL SendSwapItem(CItemInstance *lpSrcItem, Item::ItemPos *lpSrcIndex, CItemInstance *lpDstItem);
|
|
static BOOL SendFieldObjectPullDown(unsigned long dwNum, Item::ItemPos &pItemIndex);
|
|
static BOOL SendTradeItem(unsigned long dwNPCID, unsigned short wTypeID, unsigned long dwNum, Item::ItemPos &pSrcPos, Item::ItemPos &pDstPos);
|
|
static BOOL SendCharShape(unsigned long dwChrID = 0xFFFFFFFF);
|
|
static BOOL SendQuickSlotMove(CItemInstance *lpTakeItem, unsigned char cPos, unsigned char cIndex, unsigned char cNum = 1);
|
|
static BOOL SendCharSwitchHand(void);
|
|
static BOOL SendMyInfoforParty(void);
|
|
static BOOL SendFameInfo(unsigned short wCmd);
|
|
static long SendPartyFind(void);
|
|
static long SendPartyCmd(unsigned long dwReferenceID, unsigned short wCmd);
|
|
static void SendChant(CItemInstance *lpChantSkill);
|
|
static BOOL SendExchangeCmd(unsigned long dwSendID, unsigned short wCmd);
|
|
static void SendClientLog(unsigned short wCmd, char *strString, char *strString2 = NULL);
|
|
static BOOL SendStallEnter(unsigned long dwStallChrID);
|
|
static BOOL SendStallLeave(void);
|
|
};
|
|
|
|
#endif // !defined(AFX_NETWORK_H__5F5E9AA4_BFC5_40A0_8FCB_58D2BF51EEB0__INCLUDED_)
|