#include "stdafx.h" #include #include #include // #include // #include #include #include // // #define COMMON_REF_BLOCK \ WiseUser* pUser = pDelegator->GetWiseUser(); \ WiseCharacter* pCHAR = pUser->GetSelectedCharacter(); \ UserSessionMgr& rMGR = pUser->GetSessionMgr(); \ ZoneControl& rZONE = pUser->ZoneController(); \ SEND_MESSAGE_BLOCK& rSENDMSG = pUser->SEND_MSG() LF_ACTIVE_HANDLER_IMPL(S_001010_DECIDE_SELECT_CHARACTER_LF) { WiseUser* pUser = pDelegator->GetWiseUser(); UserSessionMgr& rMGR = pUser->GetSessionMgr(); SEND_MESSAGE_BLOCK& rSENDMSG = pUser->SEND_MSG(); pUser->SelectCharacter(HARDCODING_SELECT_CHAR); WiseCharacter* pCHAR = pUser->GetSelectedCharacter(); // NULLÀ̸é ij¸¯ÅÍ »ý¼ºÀ¸·Î ÇØ°áÇÏÀÚ. if(!pCHAR) { DEBUGGING_CODE_L3("Empty Character"); return LFRET_FAIL; } return LFRET_SUCCESS_DEFAULT; } LF_ACTIVE_HANDLER_IMPL(S_001020_DECIDE_ACTION_PLAY_LF) { DEBUGGING_CODE_L3(""); return LFRET_SUCCESS_DEFAULT; } LF_ACTIVE_HANDLER_IMPL(S_001030_CHECK_CURRENT_ZONE_LF) { //DEBUGGING_CODE_L3(""); LF_RESULT lfRET = SHARED_LF::ZONE::CHECK_CURRENT_ZONE_n_JUMP_ROUTINE(pDelegator, NULL, arguments); return lfRET; } LF_ACTIVE_HANDLER_IMPL(S_001040_SEND_ENTERVILLAGE_REQ_LF) { DEBUGGING_CODE_L3(""); WiseUser* pUser = pDelegator->GetWiseUser(); UserSessionMgr& rMGR = pUser->GetSessionMgr(); SEND_MESSAGE_BLOCK& rSENDMSG = pUser->SEND_MSG(); ZoneControl& rZONE = pUser->ZoneController(); AccountInfo& rACCOUNT = pUser->AccountController(); sACCOUNT rACCOUNT_INFO; rACCOUNT.GetAccountInfo(rACCOUNT_INFO); pUser->SelectCharacter(rACCOUNT_INFO.SELECT_CHAR); WiseCharacter* pCHAR = pUser->GetSelectedCharacter(); CLIENT_CHARACTER_PART& rCHARPART = pCHAR->CHAR_INFO(); MSG_CG_CONNECTION_ENTERVILLAGEREQ_SYN& rMsgSYN = rSENDMSG.InstanceOf(); rMsgSYN.m_bySelectedCharIndex = pCHAR->IDXofSLOT(); rMGR.SendPacket(AGENT_SESSION, &rMsgSYN, sizeof(rMsgSYN)); sZONE_MOVINFO_ARG rARG; rZONE.ZoneMoveCmd(ZoneControl::CMD_ZONE_GET_CUR_INFO, &rARG); // MapInfoParser* pPARSER = MapInfoParser::Instance(); MAPCODE mcCODE = (MAPCODE)rCHARPART.m_iRegion; const sMAPINFO* pMAPINFO = pPARSER->FindMapInfo((MAPCODE)mcCODE); eZONETYPE ztTYPE = (eZONETYPE)pMAPINFO->byMKind; // rARG.ZONETYPE_NEXT = ztTYPE; rARG.FIELDCODE_NEXT = (FIELDCODE)mcCODE; rZONE.ZoneMoveCmd(ZoneControl::CMD_ZONE_MOV_START, &rARG); return LFRET_SUCCESS_DEFAULT; } LF_ACTIVE_HANDLER_IMPL(S_001050_WAIT_ENTERVILLAGE_REQ_ACK_LF) { DEBUGGING_CODE_L3(""); return LFRET_PENDING_UNTIL_PASSIVE; } LF_ACTIVE_HANDLER_IMPL(S_001100_CHECK_CURRENT_ZONE_LF) { DEBUGGING_CODE_L3(""); // 3DEngineÀ» ÅëÇØ ¸Ê Á¤º¸¸¦ ·ÎµùÇÒ Çʿ䰡 ÀÖ³ª? // ÀÏ´Ü ÃÖ¼ÒÇÑ CheckSum°ªÀº ÇÊ¿äÇØÁø´Ù. WiseUser* pUser = pDelegator->GetWiseUser(); UserSessionMgr& rMGR = pUser->GetSessionMgr(); SEND_MESSAGE_BLOCK& rSENDMSG = pUser->SEND_MSG(); WiseCharacter* pCHAR = pUser->GetSelectedCharacter(); //INT iRegion = pCHAR->CHAR_INFO().m_iRegion; return LFRET_SUCCESS_DEFAULT; } LF_ACTIVE_HANDLER_IMPL(S_001110_SEND_CG_SYNC_PLAYER_ENTER_SYN_LF) { DEBUGGING_CODE_L3(""); WiseUser* pUser = pDelegator->GetWiseUser(); UserSessionMgr& rMGR = pUser->GetSessionMgr(); SEND_MESSAGE_BLOCK& rSENDMSG = pUser->SEND_MSG(); ZoneControl& rZONE = pUser->ZoneController(); WiseCharacter* pCHAR = pUser->GetSelectedCharacter(); sZONE_MOVINFO_ARG rARG; rZONE.ZoneMoveCmd(ZoneControl::CMD_ZONE_GET_CUR_INFO, &rARG); FIELDCODE fcNEXTCODE = rARG.FIELDCODE_NEXT; DWORD dwCheckSum = ZoneManager::GetMapCheckSum(fcNEXTCODE); MSG_CG_SYNC_PLAYER_ENTER_SYN& rMsgSYN = rSENDMSG.InstanceOf(); rMsgSYN.m_dwCheckSum = dwCheckSum; rMGR.SendPacket(AGENT_SESSION, &rMsgSYN, sizeof(rMsgSYN)); return LFRET_SUCCESS_DEFAULT; } LF_ACTIVE_HANDLER_IMPL(S_001120_WAIT_CG_SYNC_PLAYER_ENTER_ACK_LF) { DEBUGGING_CODE_L3(""); //WiseUser* pUser = pDelegator->GetWiseUser(); //UserSessionMgr& rMGR = pUser->GetSessionMgr(); //SEND_MESSAGE_BLOCK& rSENDMSG = pUser->SEND_MSG(); //ZoneControl& rZONE = pUser->ZoneController(); //WiseCharacter* pCHAR = pUser->GetSelectedCharacter(); //rZONE.ZoneMoveCmd(ZoneControl::CMD_ZONE_MOV_END, NULL); return LFRET_PENDING_UNTIL_PASSIVE; } LF_ACTIVE_HANDLER_IMPL(S_001130_EOL_FLOW_CONTROL_LF) { DEBUGGING_CODE_L3(""); WiseUser* pUser = pDelegator->GetWiseUser(); WiseCharacter* pCHAR = pUser->GetSelectedCharacter(); UserSessionMgr& rMGR = pUser->GetSessionMgr(); ZoneControl& rZONE = pUser->ZoneController(); SEND_MESSAGE_BLOCK& rSENDMSG = pUser->SEND_MSG(); ////////////////////////////////////////////////////////////////////////// // PLAYER_ENTER_ACKÀÌÈÄ ¿©±â¿¡ µµÂø½Ã ÇöÀç À§Ä¡¿¡¼­ Á¤ÇØÁø ¿ªÇÒÀ» ¼öÇàÇÒ ¼ö // ÀÖµµ·Ï ó¸®ÇÏÀÚ. ÀÏÁ¾ÀÇ ·ÎÁ÷ Á¡ÇÁ¸¦ ¼öÇàÇØ¾ß ÇÑ´Ù. rZONE.ZoneMoveCmd(ZoneControl::CMD_ZONE_MOV_END, NULL); //// ---TEST--- //// À̵¿ °ü·Ã Å×½ºÆ® ¸ñÀû //sSIG_STEP& rSIGNAL = sSIGNAL_BUFFER::InstanceOf(); //rSIGNAL.SUBTYPE() = sSIG_STEP::ACTIVATE_JUMP_STEP; //sSIG_STEP_ARG& rSIG_ARG = rSIGNAL.InstanceOf(); //rSIG_ARG.SetInfo(LFG_ZONE, S_001830_KBMOVING_LF); //pDelegator->OnMsg(&rSIGNAL); //return LFRET_SUCCESS_JUMP; //// ---TEST--- // ÇöÀç À§Ä¡ ÆÄ¾ÇÇØ¼­ ÇØ´ç ·çƾÀ¸·Î Á¡ÇÁÇÑ´Ù. LF_RESULT lfRET = SHARED_LF::ZONE::CHECK_CURRENT_ZONE_n_JUMP_ROUTINE(pDelegator, NULL, arguments); if(LFRET_SUCCESS_LOOP == lfRET) { sSIG_STEP& rSIGNAL = sSIGNAL_BUFFER::InstanceOf(); rSIGNAL.SUBTYPE() = sSIG_STEP::ACTIVATE_JUMP_STEP; sSIG_STEP_ARG& rSIG_ARG = rSIGNAL.InstanceOf(); rSIG_ARG.SetInfo(LFG_ZONE, S_001030_CHECK_CURRENT_ZONE_LF); pDelegator->OnMsg(&rSIGNAL); lfRET = LFRET_SUCCESS_JUMP; } return lfRET; } LF_ACTIVE_HANDLER_IMPL(S_001500_START_MARK_VILLAGE_LF) { //DEBUGGING_CODE_L3(""); // ¸¶À»¿¡ ÀÖ´Â »óÅ´Ù. Ưº°ÇÑ ¸í·ÉÀÌ ¾øÀ¸¸é ¸¶À» °ü·Ã 󸮸¦ ¼öÇàÇϸ鼭, // ·çÇÁ¸¦ µ¹µµ·Ï Áö¿øÇÑ´Ù. // Control Flow // S_001500_START_MARK_VILLAGE_LF -> ~ -> S_001590_CLOSURE_MARK_VILLAGE_LF // -> S_001030_CHECK_CURRENT_ZONE_LF (*****) COMMON_REF_BLOCK; LF_RESULT lfRET = SHARED_LF::ZONE::IN_VILLAGE_NEXT_ACTION_PROECESS(pDelegator); return lfRET; } LF_ACTIVE_HANDLER_IMPL(S_001590_CLOSURE_MARK_VILLAGE_LF) { //DEBUGGING_CODE_L3(""); WiseUser* pUser = pDelegator->GetWiseUser(); WiseCharacter* pCHAR = pUser->GetSelectedCharacter(); UserSessionMgr& rMGR = pUser->GetSessionMgr(); ZoneControl& rZONE = pUser->ZoneController(); SEND_MESSAGE_BLOCK& rSENDMSG = pUser->SEND_MSG(); sSIG_STEP& rSIGNAL = sSIGNAL_BUFFER::InstanceOf(); rSIGNAL.SUBTYPE() = sSIG_STEP::ACTIVATE_JUMP_STEP; sSIG_STEP_ARG& rSIG_ARG = rSIGNAL.InstanceOf(); rSIG_ARG.SetInfo(LFG_ZONE, S_001030_CHECK_CURRENT_ZONE_LF); pDelegator->OnMsg(&rSIGNAL); return LFRET_SUCCESS_JUMP; } LF_ACTIVE_HANDLER_IMPL(S_001600_START_MARK_HUNTING_FIELD_LF) { DEBUGGING_CODE_L3(""); return LFRET_SUCCESS_DEFAULT; } LF_ACTIVE_HANDLER_IMPL(S_001690_CLOSURE_MARK_HUNTING_FIELD_LF) { DEBUGGING_CODE_L3(""); return LFRET_SUCCESS_DEFAULT; } LF_ACTIVE_HANDLER_IMPL(S_001700_START_MARK_TUTORIAL_FIELD_LF) { DEBUGGING_CODE_L3(""); // (THINKING) // 1) TUTORIAL·Î µé¾î°¡·Á°í ÇÑ´Ù¸é, ÆÐŶÀ» ¹ÞÀº ÀÌÈÄ À̰÷À¸·Î Á¡ÇÁÇϵµ·Ï À¯µµ // 2) CG_MISSION_TUTORIAL_WINDOW_RET_ACCEPT_SYN À» ÀÌ¿ëÇØ¼­ ACKÀ» ¹Þµµ·Ï ¿äûÇÑ´Ù. // 3) ´ÙÀ½¿¡´Â PORTAL_FIELD_MOVE_SYN... // 4) PORTAL_FIELD_MOVE_ACK // 5) PLAYER_ENTER_SYN // 6) PLAYER_ENTER_ACK return LFRET_SUCCESS_DEFAULT; } /* LF_ACTIVE_HANDLER_IMPL(S_001710_SEND_CG_MISSION_TUTORIAL_WINDOW_RET_ACCEPT_SYN) { COMMON_REF_BLOCK; MSG_CG_MISSION_TUTORIAL_WINDOW_RET_ACCEPT_SYN& rMsgSYN = rSENDMSG.InstanceOf(); rMGR.SendPacket(AGENT_SESSION, &rMsgSYN, sizeof(rMsgSYN)); return LFRET_SUCCESS_DEFAULT; } LF_ACTIVE_HANDLER_IMPL(S_001720_WAIT_CG_MISSION_TUTORIAL_WINDOW_RET_ACCEPT_ACK) { DEBUGGING_CODE_L3(""); return LFRET_PENDING_UNTIL_PASSIVE; } */ LF_ACTIVE_HANDLER_IMPL(S_001730_SEND_CG_ZONE_PORTAL_FIELD_MOVE_SYN) { COMMON_REF_BLOCK; sZONE_MOVINFO_ARG rARG; rZONE.ZoneMoveCmd(ZoneControl::CMD_ZONE_GET_CUR_INFO, &rARG); CHAR* rOutput; CHAR pszNumber[10]; Converter::String::ToString(rARG.FIELDCODE_CUR, pszNumber, sizeof(pszNumber)); ScriptLogic* pSLOGIC = Manipulater::GetScriptLogicInterface()->SCRIPTLOGIC; pSLOGIC->GetData("[TUTORIAL]", pszNumber, rOutput); WORD wPortalIdx = Converter::String::ToWORD(rOutput); MSG_CG_ZONE_PORTAL_FIELD_MOVE_SYN& rMsgSYN = rSENDMSG.InstanceOf(); rMsgSYN.m_wIndex = wPortalIdx; rMGR.SendPacket(AGENT_SESSION, &rMsgSYN, sizeof(rMsgSYN)); // pSLOGIC->GetData("[TUTORIAL]", "MAP_CODE", rOutput); WORD wTutorialFieldCode = Converter::String::ToWORD(rOutput); MapInfoParser* pPARSER = MapInfoParser::Instance(); MAPCODE mcCODE = (MAPCODE)wTutorialFieldCode; const sMAPINFO* pMAPINFO = pPARSER->FindMapInfo((MAPCODE)mcCODE); eZONETYPE ztTYPE = (eZONETYPE)pMAPINFO->byMKind; // rARG.ZONETYPE_NEXT = ztTYPE; rARG.FIELDCODE_NEXT = (FIELDCODE)mcCODE; rZONE.ZoneMoveCmd(ZoneControl::CMD_ZONE_MOV_START, &rARG); return LFRET_SUCCESS_DEFAULT; } LF_ACTIVE_HANDLER_IMPL(S_001740_WAIT_CG_ZONE_PORTAL_FIELD_MOVE_ACK) { return LFRET_PENDING_UNTIL_PASSIVE; }//S_001100_CHECK_CURRENT_ZONE_LF LF_ACTIVE_HANDLER_IMPL(S_001750_JUMP_PLAYER_ENTER) { COMMON_REF_BLOCK; sSIG_STEP& rSIGNAL = sSIGNAL_BUFFER::InstanceOf(); rSIGNAL.SUBTYPE() = sSIG_STEP::ACTIVATE_JUMP_STEP; sSIG_STEP_ARG& rSIG_ARG = rSIGNAL.InstanceOf(); rSIG_ARG.SetInfo(LFG_ZONE, S_001100_CHECK_CURRENT_ZONE_LF); pDelegator->OnMsg(&rSIGNAL); return LFRET_SUCCESS_JUMP; } // Æ©Å丮¾ó Çʵ忡¼­ À¯Áö»óÅ LF_ACTIVE_HANDLER_IMPL(S_001760_EOL_FLOW_CONTROL_LF) { COMMON_REF_BLOCK; sZONE_MOVINFO_ARG rARG; rZONE.ZoneMoveCmd(ZoneControl::CMD_ZONE_GET_CUR_INFO, &rARG); sSIG_STEP& rSIGNAL = sSIGNAL_BUFFER::InstanceOf(); rSIGNAL.SUBTYPE() = sSIG_STEP::ACTIVATE_JUMP_STEP; sSIG_STEP_ARG& rSIG_ARG = rSIGNAL.InstanceOf(); rSIG_ARG.SetInfo(LFG_ZONE, S_001030_CHECK_CURRENT_ZONE_LF); pDelegator->OnMsg(&rSIGNAL); return LFRET_SUCCESS_JUMP; } LF_ACTIVE_HANDLER_IMPL(S_001790_CLOSURE_MARK_TUTORIAL_FIELD_LF) { DEBUGGING_CODE_L3(""); return LFRET_SUCCESS_DEFAULT; } LF_ACTIVE_HANDLER_IMPL(S_002950_CLOSURE_EXCEPTION_LF) { //DEBUGGING_CODE_L3(""); return LFRET_SUCCESS_LOOP; } LF_ACTIVE_HANDLER_IMPL(S_002999_CLOSURE_MARK_LF) { DEBUGGING_CODE_L3(""); return LFRET_SUCCESS_DEFAULT; }