#pragma once #define WISE_CLIENT_VERSION "ver2.0" #define WISE_CLIENT_BUILD_VERSION "0010" #include "LogicFlowDef.h" //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // enum eCONNECT_SESSIONS { AGENT_SESSION, WORLD_SESSION, LOGIN_FRONT_SESSION, MAX_SESSION, }; //----------------------------------------------------------------------------| typedef PVOID PASSING_ARG; //----------------------------------------------------------------------------| #define DECL_SIG_WISEMSG_T static const eSIG_TYPE #define DECL_SIG_WISEMSG_VT(val) ((eSIG_TYPE)(SIGMSG_NORMAL+(val))) #define DECL_SIG_SUB_T static const eWISESUBTYPE #define DECL_SIG_SUB_VT(val) ((eWISESUBTYPE)(WISESUBTYPE_EMPTY+(val))) #define DECL_SIG_DATA_T static const DWORD #define DECL_SIG_DATA_VT(val) (DWORD)(val) #define DECL_SIG_DATA_SIZE_VT(val) (DWORD)(sizeof(val)) #define DEF_SIGBUFFER_SIZE (2000) //----------------------------------------------------------------------------| // struct eSIG_WISEMSG { DECL_SIG_WISEMSG_T EMPTY = DECL_SIG_WISEMSG_VT(100); DECL_SIG_WISEMSG_T NOTIFY_SIGNAL = DECL_SIG_WISEMSG_VT(102); DECL_SIG_WISEMSG_T NETMSG_SIGNAL = DECL_SIG_WISEMSG_VT(103); DECL_SIG_WISEMSG_T NETMSG_SIGNAL_EX = DECL_SIG_WISEMSG_VT(104); DECL_SIG_WISEMSG_T LF_BASE_CMD = DECL_SIG_WISEMSG_VT(120); DECL_SIG_WISEMSG_T LF_MAIN_CMD = DECL_SIG_WISEMSG_VT(121); DECL_SIG_WISEMSG_T LF_SUB_CMD = DECL_SIG_WISEMSG_VT(122); DECL_SIG_WISEMSG_T GAMEOBJ_CONTROL = DECL_SIG_WISEMSG_VT(130); }; //----------------------------------------------------------------------------| // enum eWISESUBTYPE { WISESUBTYPE_EMPTY = 0x100, }; class WiseUser; class ServerSession; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // // WiseClientV2¿¡¼­ »ç¿ëÇÏ´Â ±âº» Signal Type struct sSIG_WISEBASE : sSIG_MSG { sSIG_WISEBASE(eSIG_TYPE eSIGTYPE) : _SUBTYPE(WISESUBTYPE_EMPTY) { _TYPE = eSIGTYPE; } inline eSIG_TYPE SIGTYPE() { return _TYPE; } inline eWISESUBTYPE& SUBTYPE() { return _SUBTYPE; } // eWISESUBTYPE _SUBTYPE; }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // // WiseClientÀÇ ³»ºÎ ¸Þ½ÃÁö ±³È¯ ¼ö´ÜÀº À̰ÍÀ» »ç¿ëÇÑ´Ù. // Å뺸ÇÏ´Â ½Ã±×³ÎÀ̸ç, ¼¼¼ÇÀÇ ²÷±â°í ¿¬°áµÇ´Â ½ÅÈ£³ª Network MsgÀÇ ¼Û¼ö½Å, // °´Ã¼ ¼Ò¸êµîÀ» Å뺸Çϴµ¥ »ç¿ëÇÑ´Ù. struct sSIG_NOTIFY : sSIG_WISEBASE { struct { DECL_SIG_SUB_T NTF_NO_TYPE = WISESUBTYPE_EMPTY; DECL_SIG_SUB_T NTF_SESSION_ON_CONNECTED_LOGINFRONT = DECL_SIG_SUB_VT(110); DECL_SIG_SUB_T NTF_SESSION_ON_CONNECTED_AGENTSERVER = DECL_SIG_SUB_VT(111); DECL_SIG_SUB_T NTF_SESSION_ON_CONNECTED_WORLDSERVER = DECL_SIG_SUB_VT(112); DECL_SIG_SUB_T NTF_SESSION_ON_DISCONNECTED_LOGINFRONT = DECL_SIG_SUB_VT(113); DECL_SIG_SUB_T NTF_SESSION_ON_DISCONNECTED_AGENTSERVER = DECL_SIG_SUB_VT(114); DECL_SIG_SUB_T NTF_SESSION_ON_DISCONNECTED_WORLDSERVER = DECL_SIG_SUB_VT(115); DECL_SIG_SUB_T SENDMSG = DECL_SIG_SUB_VT(120); DECL_SIG_SUB_T RECVMSG = DECL_SIG_SUB_VT(121); DECL_SIG_SUB_T NTF_USER_RELEASED = DECL_SIG_SUB_VT(200); }; sSIG_NOTIFY() : sSIG_WISEBASE(eSIG_WISEMSG::NOTIFY_SIGNAL) {} inline WiseUser*& USER() { return m_pUser; } // WiseUser* m_pUser; }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // // ¿¬¼ÓµÈ µ¥ÀÌÅÍ ½ºÆ®¸² 󸮿ë, ±×³É º¯¼ö Ãß°¡µµ Çã¿ëµÉ °ÍÀÌ´Ù. struct sSIG_NETMSG : sSIG_NOTIFY { sSIG_NETMSG() : sSIG_NOTIFY() { _TYPE = eSIG_WISEMSG::NETMSG_SIGNAL; } inline ServerSession*& SESSION_PTR() { return m_pSESSION; } inline BYTE*& MSG_HDR() { return m_pMSG_HDR; } inline WORD& MSG_LEN() { return m_wMSG_LEN; } template inline _TY& MsgTypeOf() { return *(_TY*)m_pMSG_HDR; } ServerSession* m_pSESSION; BYTE* m_pMSG_HDR; WORD m_wMSG_LEN; }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // // ¿¬¼ÓµÈ µ¥ÀÌÅÍ ½ºÆ®¸² 󸮿ë, ±×³É º¯¼ö Ãß°¡µµ Çã¿ëµÉ °ÍÀÌ´Ù. enum eWISE_OBJECT_INDEX; struct sSIG_OBJCTRL : sSIG_WISEBASE { sSIG_OBJCTRL() : sSIG_WISEBASE(eSIG_WISEMSG::GAMEOBJ_CONTROL) { ; } struct { //DECL_SIG_SUB_T OBJ_NONE = WISESUBTYPE_EMPTY; //DECL_SIG_SUB_T OBJ_USER = DECL_SIG_SUB_VT(110); //DECL_SIG_SUB_T OBJ_PLAYER = DECL_SIG_SUB_VT(111); //DECL_SIG_SUB_T OBJ_MONSTER = DECL_SIG_SUB_VT(112); DECL_SIG_SUB_T ST_NONE = WISESUBTYPE_EMPTY; DECL_SIG_SUB_T ST_RENDERINFO = DECL_SIG_SUB_VT(199); DECL_SIG_SUB_T ST_ENTER = DECL_SIG_SUB_VT(200); DECL_SIG_SUB_T ST_LEAVE = DECL_SIG_SUB_VT(201); DECL_SIG_SUB_T ST_MOVE = DECL_SIG_SUB_VT(202); DECL_SIG_SUB_T ST_ATTACK = DECL_SIG_SUB_VT(203); DECL_SIG_SUB_T ST_STATUS = DECL_SIG_SUB_VT(204); }; inline eWISE_OBJECT_INDEX& OBJTYPE() { return _OBJTYPE; } inline DWORD& OBJECT_KEY() { return m_dwObjectKey; } inline BYTE*& MSG_HDR() { return m_pMSG_HDR; } inline WORD& MSG_LEN() { return m_wMSG_LEN; } template inline _TY& MsgTypeOf() { return *(_TY*)m_pMSG_HDR; } eWISE_OBJECT_INDEX _OBJTYPE; DWORD m_dwObjectKey; BYTE* m_pMSG_HDR; WORD m_wMSG_LEN; }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // // º°µµÀÇ ¹öÆÛ Á¤º¸¸¦ »ç¿ëÇÏ´Â Network Msg¸¦ À§ÇÑ °ÍÀÌÁö¸¸, // ¾ÆÁ÷ »ç¿ë¹æ¹ýÀÌ È®Á¤µÇÁö ¾Ê¾Ò´Ù. struct sSIG_NETMSG_WITH_BUFFER : sSIG_NETMSG { sSIG_NETMSG_WITH_BUFFER() : sSIG_NETMSG() { _TYPE = eSIG_WISEMSG::NETMSG_SIGNAL_EX; } template inline _TY& TypeOf() { return *(_TY*)STREAM_HDR; } template inline _TY& InstanceOf() { _TY* pTYPE = new (STREAM_HDR) _TY; return *pTYPE; } BYTE STREAM_HDR[DEF_SIGBUFFER_SIZE]; }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // // ¾ÆÁ÷ »ç¿ë¹æ¹ýÀÌ È®Á¤µÇÁö ¾Ê¾Ò´Ù. µ¥À¯±î, sSIG_STEP¿¡ Æ÷ÇÔ½ÃÄ×´Ù. struct sSIGDATA_JUMPSTEP_WITH_ARG { LF_DEFINE STEP; WORD EXTEND_SIZE; sSIG_MSG SIGNAL; template inline _TY& TypeOf() { return *(_TY*)&SIGNAL; } BYTE STREAM_HDR[DEF_SIGBUFFER_SIZE]; }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // // Active Logic Flow¿¡¼­ ¼ö½ÅÇØ¼­ »ç¿ëÇÏ´Â ½Ã±×³Î, STEP ÄÁÆ®·Ñ¿¡ »ç¿ëÇÏ´Â // sSIG_STEP°ú µ¿ÀÏÇÏ´Ù. struct sSIG_LF_MAIN : sSIG_WISEBASE { ////////////////////////////////////////////////////////////////////////// // (TYPE) struct { DECL_SIG_SUB_T NO_TYPE = DECL_SIG_SUB_VT(100); DECL_SIG_SUB_T UPDATE = DECL_SIG_SUB_VT(101); DECL_SIG_SUB_T ACTIVATE_NEXT_STEP = DECL_SIG_SUB_VT(111); DECL_SIG_SUB_T ACTIVATE_JUMP_STEP = DECL_SIG_SUB_VT(112); DECL_SIG_SUB_T ACTIVATE_NEXT_STEP_WITH_ARG = DECL_SIG_SUB_VT(113); DECL_SIG_SUB_T ACTIVATE_JUMP_STEP_WITH_ARG = DECL_SIG_SUB_VT(114); DECL_SIG_SUB_T CLOSURE_STEP = DECL_SIG_SUB_VT(119); }; ////////////////////////////////////////////////////////////////////////// // (TYPE FORMAT) // ACTIVATE_NEXT_STEP (NULL) // ACTIVATE_JUMP_STEP (LF_DEFINE) // ACTIVATE_NEXT_STEP_WITH_ARG (not defined) // ACTIVATE_JUMP_STEP_WITH_ARG (not defined) struct { DECL_SIG_DATA_T ACTIVATE_JUMP_STEP_DATA = DECL_SIG_DATA_SIZE_VT(LF_DEFINE); }; sSIG_LF_MAIN() : sSIG_WISEBASE(eSIG_WISEMSG::LF_MAIN_CMD) { ; } template inline _TY& TypeOf() { return *(_TY*)STREAM_HDR; } template inline _TY& InstanceOf() { _TY* pTYPE = new (STREAM_HDR) _TY; return *pTYPE; } BYTE STREAM_HDR[DEF_SIGBUFFER_SIZE]; }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // // sSIG_LF_MAIN °ú µ¿ÀÏ struct sSIG_STEP : sSIG_LF_MAIN { sSIG_STEP() : sSIG_LF_MAIN() { _TYPE = eSIG_WISEMSG::LF_MAIN_CMD; } }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // // sSIG_LF_MAIN °ú À¯»çÇÑ ¼º°ÝÀ» °¡Áö´Â ½Ã±×³ÎÀÌÁö¸¸, »ç¿ëÇÏÁö ¾Ê´Â´Ù. struct sSIG_LF_BASE : sSIG_LF_MAIN { sSIG_LF_BASE() : sSIG_LF_MAIN() { _TYPE = eSIG_WISEMSG::LF_BASE_CMD; } }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // // sSIG_LF_MAIN °ú À¯»çÇÑ ¼º°ÝÀ» °¡Áö´Â ½Ã±×³ÎÀÌÁö¸¸, »ç¿ëÇÏÁö ¾Ê´Â´Ù. struct sSIG_LF_SUB : sSIG_WISEBASE { struct { DECL_SIG_SUB_T NO_TYPE = DECL_SIG_SUB_VT(100); //DECL_SIG_SUB_T BEGIN_NUMBER = DECL_SIG_SUB_VT(200); }; sSIG_LF_SUB() : sSIG_WISEBASE(eSIG_WISEMSG::LF_SUB_CMD) { ; } template inline _TY& TypeOf() { return *(_TY*)STREAM_HDR; } template inline _TY& InstanceOf() { _TY* pTYPE = new (STREAM_HDR) _TY; return *pTYPE; } BYTE STREAM_HDR[DEF_SIGBUFFER_SIZE]; }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // - // sSIG_STEP_ARG¸¦ ³»Æ÷Çϱâ À§ÇÑ ¹öÆÛ °ø°£ struct sSIG_STEP_ARG_BUFBLK { struct { LF_GROUP_DEFINE GROUP; // Active Logic Flow Á¾·ù, (ACTIVATE_NEXT_STEP) LF_DEFINE STEP; // À̵¿ÇÑ ´Ü°è (ACTIVATE_JUMP_STEP) WORD ADDIN_S; // Ãß°¡ Á¤º¸ ¿©ºÎ (ARGUMENT) ¾ø´Â °æ¿ì 0 } HDR; BYTE STREAM[DEF_SIGBUFFER_SIZE]; }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦´ // // sSIG_STEP¿¡¼­ Ãß°¡ ÀÎÀÚ·Î »ç¿ëÇÏ´Â °ÍÀ¸·Î, ÆÐŶ ¼ö½ÅµîÀ» ÇßÀ» °æ¿ì // Active Logic Flow¿¡ ÀÌ »óȲÀ» ¾Ë¸®°Å³ª Ãß°¡ 󸮰¡ °¡´ÉÇϵµ·Ï // ÇÊ¿äÇÑ Á¤º¸µéÀ» ´ã°Ô µÈ´Ù. struct sSIG_STEP_ARG { enum eADDIN_S { EMPTY_ARG = 0, }; LF_GROUP_DEFINE GROUP; // Active Logic Flow Á¾·ù, (ACTIVATE_NEXT_STEP) LF_DEFINE STEP; // À̵¿ÇÑ ´Ü°è (ACTIVATE_JUMP_STEP) WORD ADDIN_S; // Ãß°¡ Á¤º¸ ¿©ºÎ (ARGUMENT) ¾ø´Â °æ¿ì 0 BYTE ARG[1]; // ADDIN_B == TRUE½Ã ÀԷµǾî¾ß ÇÒ ARGÀÇ »ðÀÔÀ§Ä¡ sSIG_STEP_ARG() {} ~sSIG_STEP_ARG() {} void SetInfo( LF_GROUP_DEFINE IN setGROUP, LF_DEFINE IN setSTEP, WORD IN setARG_SIZE = 0, BYTE* IN setARG_BLK = NULL ) { GROUP = setGROUP; STEP = setSTEP; if(setARG_SIZE && !(setARG_SIZE > DEF_SIGBUFFER_SIZE) && setARG_BLK) { ADDIN_S = setARG_SIZE; CopyMemory(ARG, setARG_BLK, ADDIN_S); } ADDIN_S = 0; *(DWORD*)ARG = 0; } template inline _TY& TypeOfArg() { return *(_TY*)ARG; } BOOL CopyArgFrom(sSIG_STEP_ARG* IN pARG) { WORD& rADDIN_S = pARG->ADDIN_S; if(pARG && !(rADDIN_S > DEF_SIGBUFFER_SIZE)) { if(rADDIN_S) { CopyMemory(ARG, pARG->ARG, rADDIN_S); ADDIN_S = rADDIN_S; return TRUE; } *(DWORD*)ARG = 0; ADDIN_S = 0; } return FALSE; } BOOL CopyArgFrom(BYTE* pARGBLK, WORD wSize) { WORD rADDIN_S = wSize; if(pARGBLK && !(rADDIN_S > DEF_SIGBUFFER_SIZE)) { if(rADDIN_S) { CopyMemory(ARG, pARGBLK, rADDIN_S); ADDIN_S = rADDIN_S; return TRUE; } *(DWORD*)ARG = 0; ADDIN_S = 0; } return FALSE; } }; ////////////////////////////////////////////////////////////////////////// // #include "WiseMsgBuffer.h" // #include "WiseAutoPlayAction.h"