BOOL CWndGuideTextMgr::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult ) { GUIDE_STRUCT guide; switch( nID ) { case WIDC_NEXT: { /* if( m_VecGuideText.size() ) { m_nCurrentVector++; if( m_nCurrentVector > m_VecGuideText.size()-1 ) m_nCurrentVector = m_VecGuideText.size()-1; guide = m_VecGuideText[m_nCurrentVector]; _SetGuideText(guide); CWndWorld* pWndWorld = (CWndWorld*)GetWndBase( APP_WORLD ); }*/ CWndGuideSystem* pWndGuide = (CWndGuideSystem*)GetWndBase( APP_GUIDE ); pWndGuide->PassToNext(); } break; default: { m_bVisible = FALSE; CWndWorld* pWndWorld = (CWndWorld*)GetWndBase( APP_WORLD ); } break; } return CWndNeuz::OnChildNotify( message, nID, pLResult ); }
//================================================================================ void CWndInfoPang::OnInitialUpdate() { CWndGuideSystem* pWndGuide = (CWndGuideSystem*)GetWndBase( APP_GUIDE ); if(pWndGuide->m_dwGuideLevel == 0) { pWndGuide->m_bVisible = true; pWndGuide->ChangeModel( g_pPlayer->GetJob() ); pWndGuide->SetAni( g_pPlayer->GetJob(), 0 ); } }
// 처음 이 함수를 부르면 윈도가 열린다. BOOL CWndBank::Initialize( CWndBase* pWndParent, DWORD /*dwWndId*/ ) { // Daisy에서 설정한 리소스로 윈도를 연다. if( g_pPlayer == NULL ) return FALSE; #if __VER >= 12 // __MOD_TUTORIAL CWndGuideSystem* pWndGuide = (CWndGuideSystem*)GetWndBase( APP_GUIDE ); if(pWndGuide && pWndGuide->IsVisible()) { if(pWndGuide->m_CurrentGuide.m_nVicCondition == OPEN_WINDOW && pWndGuide->m_CurrentGuide.m_nInput == APP_COMMON_BANK) pWndGuide->m_Condition.nOpenedWindowID = 1; } #endif return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), APP_COMMON_BANK, 0, CPoint( 0, 0 ), pWndParent ); }
BOOL CWndGuideSelection::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult ) { switch( nID ) { case WIDC_RADIO1: { *g_Option.m_pGuide = 0; } break; case WIDC_RADIO2: { *g_Option.m_pGuide = 1; } break; case WIDC_RADIO3: { *g_Option.m_pGuide = 2; } break; case WIDC_BUTTON1: { CWndGuideSystem* pWndGuide = (CWndGuideSystem*)GetWndBase( APP_GUIDE ); if( pWndGuide && pWndGuide->m_bAniState == CWndGuideSystem::ANI_IDLE && pWndGuide->m_bIsLoad ) { pWndGuide->m_dwGuideLevel = *g_Option.m_pGuide; #if __VER >= 12 // __MOD_TUTORIAL if( pWndGuide->m_dwGuideLevel == 0 ) pWndGuide->GuideStart(); else { if(g_pPlayer) pWndGuide->SetAni( g_pPlayer->GetJob(), CWndGuideSystem::ANI_BYTE ); } #else if( pWndGuide->m_dwGuideLevel == 0 ) pWndGuide->GuideStart(TRUE); else { pWndGuide->GuideStart(FALSE); if(g_pPlayer) pWndGuide->SetAni( g_pPlayer->GetJob(), CWndGuideSystem::ANI_BYTE ); } #endif Destroy(); } } break; } return CWndNeuz::OnChildNotify( message, nID, pLResult ); }
BOOL CWndOption::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult ) { CWndButton* pWndAlpha = (CWndButton*)GetDlgItem( WIDC_CHECK1 ); CWndButton* pWndHelp = (CWndButton*)GetDlgItem( WIDC_CHECK2 ); CWndButton* pWndRoll = (CWndButton*)GetDlgItem( WIDC_CHECK3 ); CWndButton* pWndCamearaLock = (CWndButton*)GetDlgItem( WIDC_CHECK4 ); #if __VER >= 11 // __ADD_ZOOMOPT CWndButton* pWndZoomLimit = (CWndButton*)GetDlgItem( WIDC_CHECK5 ); #endif switch( nID ) { case WIDC_CHECK1: // À©µµ ¹ÝÅõ¸í ¿É¼Ç if( pWndAlpha->GetCheck() ) CWndBase::m_nAlpha = g_Option.m_nWindowAlpha = 128; else CWndBase::m_nAlpha = g_Option.m_nWindowAlpha = 255; break; case WIDC_CHECK2: // Ãʺ¸ÀÚ µµ¿ò¸» ¿É¼Ç if( pWndHelp->GetCheck() ) g_Option.m_nInstantHelp = TRUE; else g_Option.m_nInstantHelp = FALSE; break; case WIDC_CHECK3: // ºñÇà½Ã ·Ñ¸µ È¿°ú. if( pWndRoll->GetCheck() ) g_Option.m_bRollEffect = TRUE; else g_Option.m_bRollEffect = FALSE; break; case WIDC_CHECK4: { if( pWndCamearaLock->GetCheck() ) g_Option.m_bCameraLock = TRUE; else g_Option.m_bCameraLock = FALSE; } break; #if __VER >= 11 // __ADD_ZOOMOPT case WIDC_CHECK5: { if( pWndZoomLimit->GetCheck() ) g_Option.m_bZoomLimit = FALSE; else g_Option.m_bZoomLimit = TRUE; } break; #endif case WIDC_RADIO1: g_Option.m_nSlangWord = 0; break; case WIDC_RADIO2: g_Option.m_nSlangWord = 1; break; case WIDC_RADIO3: g_Option.m_nChatCommand = 0; break; case WIDC_RADIO4: g_Option.m_nChatCommand = 1; break; case WIDC_RADIO5: g_Option.m_nChatCommand = 2; break; case WIDC_RADIO6: g_Option.m_nChatCommand = 3; break; case WIDC_RADIO7: // ÈÙ·Î Ä«¸Þ¶ó / ¿ìŬ¸¯ ½ºÅ³ÀÇ °íÀü¹æ½Ä g_Option.m_nInterface = 0; break; case WIDC_RADIO8: // ¿ìŬ¸¯ Ä«¸Þ¶ó / ÁÂŬ¸¯+X ½ºÅ³ÀÇ ½Å¹æ½Ä. g_Option.m_nInterface = 1; break; #ifdef __Y_INTERFACE_VER3 case WIDC_RADIO12: g_Option.m_nInterface = 2; break; #endif //__Y_INTERFACE_VER3 case WIDC_RADIO9: *g_Option.m_pGuide = 0; break; case WIDC_RADIO10: *g_Option.m_pGuide = 1; break; case WIDC_RADIO11: *g_Option.m_pGuide = 2; break; case 10000: { CWndGuideSystem* pWndGuide = (CWndGuideSystem*)GetWndBase( APP_GUIDE ); if( pWndGuide ) { pWndGuide->m_dwGuideLevel = *(g_Option.m_pGuide); if( pWndGuide->m_dwGuideLevel == 0 ) { if( g_pPlayer ) { pWndGuide->m_bVisible = TRUE; pWndGuide->ChangeModel( g_pPlayer->GetJob() ); pWndGuide->SetAni( g_pPlayer->GetJob(), CWndGuideSystem::ANI_IDLE ); } } else { if(g_pPlayer) { pWndGuide->SetAni( g_pPlayer->GetJob(), CWndGuideSystem::ANI_BYTE ); } } } } break; } return CWndNeuz::OnChildNotify( message, nID, pLResult ); }
BOOL CWndTotalOption::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult ) { switch( nID ) { #ifdef __OPTION_EX case WIDC_BUT_OK: { /*m_OptTabGame*/ if( m_OptTabGame.pWndButton1[0]->GetCheck()) { g_Option.m_bTrade = 1; }else if( m_OptTabGame.pWndButton1[1]->GetCheck()) { g_Option.m_bTrade = 0; } if( m_OptTabGame.pWndButton2[0]->GetCheck()) { g_Option.m_bSay = 1; }else if( m_OptTabGame.pWndButton2[1]->GetCheck()) { g_Option.m_bSay = 0; } if( m_OptTabGame.pWndButton3[0]->GetCheck()) { g_Option.m_bParty = 1; }else if( m_OptTabGame.pWndButton3[1]->GetCheck()) { g_Option.m_bParty = 0; } if( m_OptTabGame.pWndButton4[0]->GetCheck()) { g_Option.m_bMessengerJoin = 1; }else if( m_OptTabGame.pWndButton4[1]->GetCheck()) { g_Option.m_bMessengerJoin = 0; } if( m_OptTabGame.pWndButton5[0]->GetCheck()) { g_Option.m_bMessenger = 1; }else if( m_OptTabGame.pWndButton5[1]->GetCheck()) { g_Option.m_bMessenger = 0; } if( m_OptTabGame.pWndButton6[0]->GetCheck()) { g_DPlay.SendChangePKPVPMode( FREEPK_MODE, 0 ); }else if( m_OptTabGame.pWndButton6[1]->GetCheck()) { g_DPlay.SendChangePKPVPMode( FREEPK_MODE, 1 ); } if( m_OptTabGame.pWndButton7[0]->GetCheck()) { g_DPlay.SendChangePKPVPMode( PVPCONFIRM_MODE, 3 ); }else if( m_OptTabGame.pWndButton7[1]->GetCheck()) { g_DPlay.SendChangePKPVPMode( PVPCONFIRM_MODE, 2 ); } if( m_OptTabGame.pWndButton8[0]->GetCheck()) { g_DPlay.SendQueryEquipSetting(TRUE); }else if( m_OptTabGame.pWndButton8[1]->IsPush()) { g_DPlay.SendQueryEquipSetting(FALSE); } if( m_OptTabGame.pWndButton9[0]->GetCheck()) { g_Option.m_bAutoAttack = 1; }else if( m_OptTabGame.pWndButton9[1]->GetCheck()) { g_Option.m_bAutoAttack = 0; } if( m_OptTabGame.pWndHelp->GetCheck()) g_Option.m_nInstantHelp = TRUE; else g_Option.m_nInstantHelp = FALSE; if( m_OptTabGame.pWndCheck->GetCheck()) { *g_Option.m_pGuide = 0; } else { CWndGuideSystem* pWndGuide = NULL; pWndGuide = (CWndGuideSystem*)GetWndBase( APP_GUIDE ); pWndGuide->m_wndGuideText->SetVisible(FALSE); *g_Option.m_pGuide = 2; } if( m_OptTabGame.pWndAlpha->GetCheck()) CWndBase::m_nAlpha = g_Option.m_nWindowAlpha = 128; else CWndBase::m_nAlpha = g_Option.m_nWindowAlpha = 255; if( m_OptTabGame.pWndCheckBattleBGM->GetCheck()) { g_Option.m_bBattleBGM = ( m_OptTabGame.pWndCheckBattleBGM->GetCheck() == TRUE ) ? TRUE: FALSE; } #ifdef __GAME_GRADE_SYSTEM if( m_OptTabGame.pWndCheckGameGrade->GetCheck()) { BOOL bGameGradeChecked = m_OptTabGame.pWndCheckGameGrade->GetCheck(); g_Option.m_bGameGradeRendering = ( bGameGradeChecked == TRUE ) ? TRUE: FALSE; if( bGameGradeChecked == TRUE ) { g_Neuz.m_dwTimeGameGradeMarkRendering = g_tmCurrent + SEC( CNeuzApp::GAME_GRADE_MARK_RENDERING_INTERVAL_SECOND ); } } #endif // __GAME_GRADE_SYSTEM Destroy();//Fecha depois de salvar. } break; case WIDC_BUT_CANCEL: { Destroy(); } break; case WIDC_BUT_RESET: { CWndButton *pWndReset = (CWndButton*)GetDlgItem( WIDC_BUT_RESET ); if(pWndReset->IsPush()) { g_Option.Defalt( "neuzDefault.ini" );//carrega o neuzdefault.ini e depois que soutar o botão ele para. m_OptTabGame.pWndButton1[0]->SetCheck(TRUE); m_OptTabGame.pWndButton2[0]->SetCheck(TRUE); m_OptTabGame.pWndButton3[0]->SetCheck(TRUE); m_OptTabGame.pWndButton4[0]->SetCheck(TRUE); m_OptTabGame.pWndButton5[0]->SetCheck(TRUE); m_OptTabGame.pWndButton9[0]->SetCheck(TRUE); // m_OptTabGame.pWndCheckGameGrade->SetCheck(TRUE); m_OptTabGame.pWndCheckBattleBGM->SetCheck(TRUE); m_OptTabGame.pWndHelp->SetCheck(TRUE); m_OptTabGame.pWndButton1[1]->SetCheck(FALSE); m_OptTabGame.pWndButton2[1]->SetCheck(FALSE); m_OptTabGame.pWndButton3[1]->SetCheck(FALSE); m_OptTabGame.pWndButton4[1]->SetCheck(FALSE); m_OptTabGame.pWndButton5[1]->SetCheck(FALSE); m_OptTabGame.pWndButton9[1]->SetCheck(FALSE); m_OptTabGame.pWndCheck->SetCheck(FALSE); m_OptTabGame.pWndAlpha->SetCheck(FALSE); } } break; #endif//__OPTION_EX case 10000: { CWndGuideSystem* pWndGuide = (CWndGuideSystem*)GetWndBase( APP_GUIDE ); if( pWndGuide ) { pWndGuide->m_dwGuideLevel = *(g_Option.m_pGuide); if( pWndGuide->m_dwGuideLevel == 0 ) { if( g_pPlayer ) { if(pWndGuide->m_bVisible != false) { pWndGuide->m_bVisible = true; pWndGuide->ChangeModel( g_pPlayer->GetJob() ); pWndGuide->SetAni( g_pPlayer->GetJob(), CWndGuideSystem::ANI_IDLE ); } } } else { if( g_pPlayer ) { pWndGuide->SetAni( g_pPlayer->GetJob(), CWndGuideSystem::ANI_BYTE ); } } } } break; } return CWndNeuz::OnChildNotify( message, nID, pLResult ); }
// // 오브젝트를 움직이는데 필요한 메시지를 발생 // int CWndWorld::ControlGround( DWORD dwMessage, CPoint point ) { bool fCastCancel = false; int nMsg = 0; BOOL bTempKey, bSit; // ,bCombatKey, bFlyKey BOOL bUp, bDown, bLeft, bRight, bSpace, bBoard, bLForward = FALSE, bRForward = FALSE; BOOL bWalk; static BOOL s_bWalk2 = 0; CMover* pMover = CMover::GetActiveMover(); CWndChat* pWndChat = (CWndChat*) g_WndMng.GetApplet( APP_COMMUNICATION_CHAT ); BOOL bWhisper = g_bKeyTable['R']; if( pWndChat && bWhisper ) { if( 0 < strlen( g_Neuz.m_szWhisperName ) ) { CString strWhisper; strWhisper.Format( "/whisper %s ", g_Neuz.m_szWhisperName ); pWndChat->SetFocus(); CWndEditChat* pWndEdit = &pWndChat->m_wndEdit; pWndEdit->SetString( strWhisper ); pWndEdit->SetFocus(); g_bKeyTable['R'] = FALSE; } } // 전진/후진/스톱 CWndBase* pWndBaseFocus = (CWndBase*) g_WndMng.GetFocusWnd(); if( g_Neuz.m_bActiveNeuz == FALSE || ( pWndChat && pWndBaseFocus && pWndBaseFocus == pWndChat ) ) { g_bKeyTable[g_Neuz.Key.chUp] = FALSE;// | m_bRButtonDown; g_bKeyTable[g_Neuz.Key.chLeft] = FALSE; g_bKeyTable['S'] = FALSE; g_bKeyTable['D'] = FALSE; g_bKeyTable['Q'] = FALSE; g_bKeyTable['E'] = FALSE; } bUp = g_bKeyTable[g_Neuz.Key.chUp]; // | m_bRButtonDown; bDown = g_bKeyTable['S']; #ifdef __BS_ADJUST_SYNC //gmpbigsun : 키보드 조작중에는 마우스이동 불가 if( bUp || bDown ) m_bLButtonDown = FALSE; #endif if( bDown ) { g_WndMng.m_bAutoRun = FALSE; } if( bUp ) { m_timerAutoRunPush.Reset(); if( m_nDubleUp == 2 && m_timerAutoRun.TimeOut() == FALSE ) { m_nDubleUp = 3; g_WndMng.m_bAutoRun = TRUE; m_timerAutoRun.Reset(); m_timerAutoRunBlock.Reset(); } else { m_nDubleUp = 1; m_timerAutoRun.Reset(); } if( m_timerAutoRunBlock.TimeOut() ) g_WndMng.m_bAutoRun = FALSE; } else { if( m_timerAutoRunPush.TimeOut() == FALSE ) { if( m_nDubleUp == 1 ) m_nDubleUp = 2; } else { m_nDubleUp = 0; } } if( g_WndMng.m_bAutoRun ) bUp = TRUE; // 좌/우 회전 bLeft = g_bKeyTable[g_Neuz.Key.chLeft]; bRight = g_bKeyTable['D']; bSpace = g_bKeyTable[ VK_SPACE ]; // bCombatKey = g_bKeyTable['C']; // g_bKeyTable['C'] = 0; bBoard = g_bKeyTable['B']; bSit = g_bKeyTable['V']; g_bKeyTable['V'] = 0; /* if( g_Option.m_nInterface == 2 ) { bLForward = g_bKeyTable['Q']; bRForward = g_bKeyTable['E']; if( m_bLButtonDown ) { if( bLeft ) { bLeft = FALSE; bLForward = TRUE; } if( bRight ) { bRight = FALSE; bRForward = TRUE; } } } */ CWorld* pWorld = g_WorldMng.Get(); CRect rect = GetClientRect(); D3DXVECTOR3 vRayEnd; CObj* pFocusObj = pWorld->GetObjFocus(); CActionMover *pAct = pMover->m_pActMover; pAct->m_dwCtrlMsg = 0; if( m_bLButtonDown ) pAct->m_dwCtrlMsg |= CTRLMSG_LDOWN; #if __VER >= 12 // __ITEMCREATEMON_S0602 D3DXVECTOR3 vec3Tri[3]; pWorld->ClientPointToVector( vec3Tri, rect, point, &pWorld->m_matProj, &g_Neuz.m_camera.m_matView, &vRayEnd, TRUE ); g_Neuz.m_vCursorPos = vRayEnd; if( g_Neuz.m_pCreateMonItem ) { if( bUp || bDown || bLeft || bRight || bSpace || m_bLButtonDown ) { BOOL bSendCM = TRUE; if( m_bLButtonDown ) { D3DXVECTOR3 vDist2 = g_pPlayer->GetPos() - g_Neuz.m_vCursorPos; float fDist = D3DXVec3Length( &vDist2 ); // 두좌표간의 거리 if( 15.f < fDist ) { g_WndMng.PutString( prj.GetText( TID_GAME_CREATEMON_F_15 ), NULL, prj.GetTextColor( TID_GAME_CREATEMON_F_15 ) ); bSendCM = FALSE; } if( bSendCM ) { int nAttr = g_pPlayer->GetWorld()->GetHeightAttribute( g_Neuz.m_vCursorPos.x, g_Neuz.m_vCursorPos.z ); // 이동할 위치의 속성 읽음. if( nAttr == HATTR_NOWALK || nAttr == HATTR_NOMOVE || g_pPlayer->IsRegionAttr( RA_SAFETY ) || g_pPlayer->GetWorld()->GetID() == WI_WORLD_GUILDWAR ) // 못 움직이는 곳이거나 안전지역이면 Pass { g_WndMng.PutString( prj.GetText( TID_GAME_CREATEMON_F_AREA ), NULL, prj.GetTextColor( TID_GAME_CREATEMON_F_AREA ) ); bSendCM = FALSE; } else if( g_pPlayer->GetWorld()->GetID() != WI_WORLD_MADRIGAL ) { g_WndMng.PutString( prj.GetText( TID_GAME_CREATEMON_F_AREA ), NULL, prj.GetTextColor( TID_GAME_CREATEMON_F_AREA ) ); bSendCM = FALSE; } if( bSendCM ) { g_DPlay.SendCreateMonster( MAKELONG( ITYPE_ITEM, g_Neuz.m_pCreateMonItem->m_dwObjId ), g_Neuz.m_vCursorPos ); } } m_bLButtonDown = FALSE; } if( bSendCM ) g_Neuz.m_pCreateMonItem = NULL; } } #endif // __ITEMCREATEMON_S0602 //TODO:ata3k님 꼭 고쳐주세요. 왜 그런지 아무도 몰라! // 이동금지 상태가 아닐때만 클릭으로 이동할수 있다. #ifdef __Y_INTERFACE_VER3 bool *bpButton; if( g_Option.m_nInterface == 2 ) bpButton = &m_bLButtonUp; else bpButton = &m_bLButtonDown; if( *bpButton ) #else //__Y_INTERFACE_VER3 if( m_bLButtonDown ) #endif //__Y_INTERFACE_VER3 { #ifdef __Y_INTERFACE_VER3 if( g_Option.m_nInterface == 2 ) { *bpButton = FALSE; if( m_timerLButtonDown.GetLeftTime() > 200 ) return nMsg; } #endif //__Y_INTERFACE_VER3 D3DXVECTOR3 vec3Tri[3]; if( pWorld->ClientPointToVector( vec3Tri, rect, point, &pWorld->m_matProj, &g_Neuz.m_camera.m_matView, &vRayEnd, TRUE ) ) { // 이동 포인트를 얻어 목표 세팅 if( m_bFreeMove ) { // if( m_bLButtonDown ) // 이동금지 상태가 아닐때만 클릭으로 이동할수 있다. { { if( m_pWndGuideSystem && m_pWndGuideSystem->IsVisible()) #if __VER >= 12 // __MOD_TUTORIAL m_pWndGuideSystem->m_Condition.bIsClickOnLand = true; #else m_pWndGuideSystem->SendGuideMessage(GUIDE_EVENT_MOVE); #endif #ifdef __IAOBJ0622 if( GetLastPickObj() && GetLastPickObj()->GetType() == OT_SHIP ) pMover->SetDestPos( (CShip *)GetLastPickObj(), vRayEnd ); else pMover->SetDestPos( vRayEnd ); #else pMover->SetDestPos( vRayEnd ); #endif pMover->m_nCorr = -1; #ifndef __J0823 m_bFreeMove = FALSE; g_DPlay.SendSnapshot( TRUE ); fCastCancel = true; if( g_pMoveMark && g_pMoveMark->m_pSfxObj ) g_pMoveMark->m_pSfxObj->m_nCurFrame = 180; CSfx *pObj = CreateSfx(g_Neuz.m_pd3dDevice,XI_GEN_MOVEMARK01,vRayEnd); D3DXVECTOR3 vVector1 = vec3Tri[2] - vec3Tri[0]; D3DXVECTOR3 vVector2 = vec3Tri[1] - vec3Tri[0]; D3DXVECTOR3 vNormal; D3DXVec3Cross( &vNormal, &vVector1, &vVector2); D3DXVec3Normalize( &vNormal, &vNormal ); D3DXVECTOR3 v3Up = D3DXVECTOR3( 0.0f, -1.0f, 0.0f ); D3DXVECTOR3 v3Cross; FLOAT fDot; FLOAT fTheta; D3DXVec3Cross( &v3Cross, &v3Up, &vNormal ); fDot = D3DXVec3Dot( &v3Up, &vNormal ); fTheta = acos( fDot ); D3DXQUATERNION qDirMap; D3DXQuaternionRotationAxis( &qDirMap, &v3Cross, fTheta ); D3DXVECTOR3 vYPW; QuaternionRotationToYPW( qDirMap, vYPW ); pObj->m_pSfxObj->m_vRotate.x = D3DXToDegree(vYPW.x); pObj->m_pSfxObj->m_vRotate.y = D3DXToDegree(vYPW.y); pObj->m_pSfxObj->m_vRotate.z = D3DXToDegree(vYPW.z); #endif // __J0823 m_objidTracking = NULL_ID; } } } } } //if( !pMover->IsEmptyDestPos() || !pMover->IsEmptyDestObj() ) // return nMsg; #ifdef __Y_INTERFACE_VER3 if( bUp || bDown || bLeft || bRight || bSpace || bLForward || bRForward ) // 이동 키조작이 들어가면 자동공격 멈춤. #else //__Y_INTERFACE_VER3 if( bUp || bDown || bLeft || bRight || bSpace ) // 이동 키조작이 들어가면 자동공격 멈춤. #endif //__Y_INTERFACE_VER3 { if( bUp || bDown ) #if __VER >= 12 // __MOD_TUTORIAL { CWndGuideSystem* pWndGuide = NULL; pWndGuide = (CWndGuideSystem*)GetWndBase( APP_GUIDE ); if(pWndGuide && pWndGuide->IsVisible()) pWndGuide->m_Condition.bIsKeyMove = true; } #else m_pWndGuideSystem->SendGuideMessage(GUIDE_EVENT_KEY_MOVE); #endif m_bAutoAttack = FALSE; g_pPlayer->ClearCmd(); if( !bSpace ) m_objidTracking = NULL_ID; } if( m_objidTracking != NULL_ID ) { CMover* pObjTracking = prj.GetMover( m_objidTracking ); if( pObjTracking ) { D3DXVECTOR3 vDis = pMover->GetPos() - pObjTracking->GetPos(); if( D3DXVec3LengthSq( &vDis ) > 16 ) pMover->SetDestObj( m_objidTracking ); } else m_objidTracking = NULL_ID; } bool fMoved = false; bool fBehavior = false; if( bUp ) { if( pMover->SendActMsg( OBJMSG_FORWARD ) == 1 ) { fMoved = true; fCastCancel = true; } } else if( bDown ) { if( pMover->SendActMsg( OBJMSG_BACKWARD ) == 1 ) { fMoved = true; fCastCancel = true; } } #ifdef __Y_INTERFACE_VER3 else if( bLForward ) { if( pMover->SendActMsg( OBJMSG_LFORWARD ) == 1 ) { fMoved = true; fCastCancel = true; } } else if( bRForward ) { if( pMover->SendActMsg( OBJMSG_RFORWARD ) == 1 ) { fMoved = true; fCastCancel = true; } } #endif //__Y_INTERFACE_VER3 else // if( (bUp == FALSE && s_bUped == TRUE) || (bDown == FALSE && s_bDowned == TRUE) ) // 키를 뗀 순간에만 처리해보자.. if( bUp == FALSE || bDown == FALSE ) { if( pMover->IsEmptyDest() ) { if( pMover->m_pActMover->IsActJump() == FALSE && (pMover->m_pActMover->IsStateFlag( OBJSTAF_SIT ) ) == 0 ) // 앉아있을땐 실행하면 안된다. { if( pMover->SendActMsg( OBJMSG_STAND ) == 1 ) { fMoved = true; // TRACE( "PlayerMoved, " ); } } } } // s_bUped = bUp; // s_bDowned = bDown; if( bLeft ) { if( pMover->SendActMsg( OBJMSG_LTURN ) == 1 ) { fMoved = true; } } else if( bRight ) { if( pMover->SendActMsg( OBJMSG_RTURN ) == 1 ) { fMoved = true; } } else { if( pMover->SendActMsg( OBJMSG_STOP_TURN ) == 1 ) { fMoved = true; // fBehavior = true; } } // jump if( bSpace ) { #if __VER < 12 // __MOD_TUTORIAL if( m_pWndGuideSystem ) m_pWndGuideSystem->SendGuideMessage(GUIDE_EVENT_KEY_JUMP); #endif if( pMover->SendActMsg( OBJMSG_JUMP ) == 1 ) { fBehavior = true; fCastCancel = true; } } if( m_bLButtonDown == TRUE && m_bRButtonDown == TRUE ) { if( m_timerLButtonDown.GetLeftTime() < 500 && m_timerRButtonDown.GetLeftTime() < 500 ) { if( g_pPlayer->SendActMsg( OBJMSG_JUMP ) == 1 ) { fBehavior = true; fCastCancel = true; } } } #ifdef __Y_INTERFACE_VER3 if( g_Option.m_nInterface == 2 ) { if( g_bKeyTable[VK_DIVIDE] || g_bKeyTable[191] ) { bWalk = TRUE; } else { bWalk = FALSE; } } else { bWalk = g_bKeyTable[g_Neuz.Key.chWalk]; } #else //__Y_INTERFACE_VER3 bWalk = g_bKeyTable[g_Neuz.Key.chWalk]; #endif //__Y_INTERFACE_VER3 if( bWalk && !s_bWalk2 ) // 걷기 모드 토글. { if( pMover->m_pActMover->IsStateFlag( OBJSTAF_WALK ) ) { if( pMover->SendActMsg( OBJMSG_MODE_RUN ) == 1 ) { g_WndMng.PutString( prj.GetText( TID_GAME_RUN ), NULL, prj.GetTextColor( TID_GAME_RUN ) , CHATSTY_SYSTEM_CLIENT ); fBehavior = true; } } else { #if __VER < 12 // __MOD_TUTORIAL if(m_pWndGuideSystem) m_pWndGuideSystem->SendGuideMessage(GUIDE_EVENT_KEY_RUN); #endif if( pMover->SendActMsg( OBJMSG_MODE_WALK ) == 1 ) { g_WndMng.PutString( prj.GetText( TID_GAME_WALK ), NULL, prj.GetTextColor( TID_GAME_WALK ) , CHATSTY_SYSTEM_CLIENT ); fBehavior = true; } } } s_bWalk2 = bWalk; if( fMoved || fBehavior ) { g_pPlayer->ClearDest(); #ifdef __J0823 g_DPlay.ClearPlayerDestPos(); #endif // __J0823 } if( fMoved ) g_DPlay.SendPlayerMoved(); if( fBehavior ) g_DPlay.SendPlayerBehavior(); if( g_pPlayer->IsStateMode( STATE_BASEMOTION_MODE ) && fCastCancel ) // 캐스트 취소 { g_DPlay.SendStateModeCancel( STATE_BASEMOTION_MODE, STATEMODE_BASEMOTION_CANCEL ); } // 운영자가 쓰는 키. 서버로부터 좌표받아오기. if( bTempKey = g_bKeyTable[ '8' ] ) { if( !m_bTemp3ed ) { pMover->SendActMsg( OBJMSG_TEMP2 ); // __bTestLOD ^= 1; } } m_bTemp3ed = bTempKey; //----------- 스킬사용. /* static BOOL s_bShift2, s_bKeyC2; BOOL bShift, bKeyC; if( g_Option.m_nInterface == 1 ) // 신버전 인터페이스 방식은 X 가 스킬사용이다. { bShift = g_bKeyTable[ VK_SHIFT ]; bKeyC = g_bKeyTable[ 'C' ]; if( bKeyC ) { int a = 0; } if( (bShift && !s_bShift2) || (bKeyC && !s_bKeyC2) ) { CObj* pTargetObj = CObj::m_pObjHighlight; // 커서를 대고 있던 오브젝트가 하이라이트 오브젝이다. if( pTargetObj ) // 커서를 대고 있던 오브젝트가 있으면 { pWorld->SetObjFocus( pTargetObj ); // 그놈을 셀렉트 하는 동시에. CMover* pMover = (CMover*)pTargetObj; if( pMover->GetType() == OT_MOVER ) m_dwNextSkill = NEXTSKILL_ACTIONSLOT; // 스킬 사용 예약. } else m_dwNextSkill = NEXTSKILL_ACTIONSLOT; // 스킬 사용 예약. } s_bShift2 = bShift; s_bKeyC2 = bKeyC; } */ //------------ 비공정 타기 if( bBoard ) { if( !s_bBoarded ) // 플레이어가 비공정에 올라타있는 상태에서. 탑승키를 누르면. { if( g_pShip == NULL ) { if( g_pPlayer->GetIAObjLink() && g_pPlayer->GetIAObjLink()->GetType() == OT_SHIP && g_pPlayer->GetIAObjLink()->GetIndex() == 3 ) { CShip *pShip = (CShip *)g_pPlayer->GetIAObjLink(); if( pShip->GetMover() == NULL ) // 쥔장이 없는 배일때. { pShip->SetMover( g_pPlayer ); // 쥔장을 g_pPlayer로 설정. g_pShip = pShip; } } } else // 이미 배를 조종하고 있을때 { g_pShip->SetMover( NULL ); g_pShip = NULL; } } } s_bBoarded = bBoard; #ifdef _DEBUG // 디버깅용 키 if( bTempKey = g_bKeyTable[ VK_F2 ] ) { if( !s_bTempKeyed ) { // pMover->SendActMsg( OBJMSG_TEMP ); // g_Option.m_nObjectDetail ++; // if( g_Option.m_nObjectDetail > 2 ) g_Option.m_nObjectDetail = 0; } } s_bTempKeyed = bTempKey; if( bTempKey = g_bKeyTable[ 'F' ] ) { if( !m_bTemp2ed ) { pMover->SendActMsg( OBJMSG_TEMP3 ); } } m_bTemp2ed = bTempKey; #endif return nMsg; }
void CWndGuideTextMgr::_SetGuideText(GUIDE_STRUCT guide) #endif { CWndText* pWndText; CWndButton* pWndButton; pWndText = (CWndText*)GetDlgItem( WIDC_TEXT1 ); pWndText->SetWndRect( m_Rect[0] ); pWndButton= (CWndButton*)GetDlgItem( WIDC_BACK ); pWndButton->SetWndRect( m_Rect[1] ); pWndButton= (CWndButton*)GetDlgItem( WIDC_NEXT ); pWndButton->SetWndRect( m_Rect[2] ); SetWndRect( m_Rect[3] ); #if __VER >= 12 // __MOD_TUTORIAL if(bIsNext) pWndButton->SetVisible(TRUE); else pWndButton->SetVisible(FALSE); #endif m_bVisible = TRUE; m_strHelpKey = guide.m_str; pWndText = (CWndText*)GetDlgItem( WIDC_TEXT1 ); #if __VER >= 12 // __MOD_TUTORIAL pWndText->SetString(""); pWndText->m_string.AddParsingString(LPCTSTR(guide.m_str)); pWndText->ResetString(); #else pWndText->SetString( (guide.m_nkey == CWndGuideSystem::KEY) ? prj.GetHelp( m_strHelpKey ) : guide.m_str ); #endif CRect rect = pWndText->GetWndRect(); pWndText->m_string.Align( m_pFont ); int nLine = pWndText->m_string.GetLineCount(); if( nLine < 10 ) { if( nLine < 8 ) nLine = 8; CRect clientrect = GetWndRect(); int ngap = rect.Height() - (nLine * 22); clientrect.top += ngap; SetWndRect(clientrect); rect.bottom -= ngap; pWndText->SetWndRect( rect ); CRect ptRect; #ifndef __MOD_TOTURIAL pWndButton= (CWndButton*)GetDlgItem( WIDC_BACK ); ptRect = pWndButton->GetWndRect(); ptRect.OffsetRect( 0, -ngap ); pWndButton->SetWndRect(ptRect); #endif pWndButton= (CWndButton*)GetDlgItem( WIDC_NEXT ); ptRect = pWndButton->GetWndRect(); ptRect.OffsetRect( 0, -ngap ); pWndButton->SetWndRect(ptRect); pWndText->m_wndScrollBar.m_bVisible = FALSE; } else { /* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT1 ); pWndText->SetWndRect( m_Rect[0] ); pWndButton= (CWndButton*)GetDlgItem( WIDC_BACK ); pWndButton->SetWndRect( m_Rect[1] ); pWndButton= (CWndButton*)GetDlgItem( WIDC_NEXT ); pWndButton->SetWndRect( m_Rect[2] ); SetWndRect( m_Rect[3] ); */ pWndText->m_wndScrollBar.m_bVisible = TRUE; pWndText->SetWndRect( rect ); } CWndGuideSystem* pWndGuide = (CWndGuideSystem*)GetWndBase( APP_GUIDE ); CRect rectGuide = pWndGuide->GetWindowRect( TRUE ); CPoint ptGuide = rectGuide.TopLeft(); CPoint ptMove; pWndGuide->m_bVisible = TRUE; CRect windowrect = GetWindowRect( TRUE ); if( ptGuide.x > windowrect.Width() ) ptMove = ptGuide - CPoint( windowrect.Width(), 0 ); else ptMove = ptGuide + CPoint( rectGuide.Width(), 0 ); ptMove.y = rectGuide.bottom; ptMove.y -= windowrect.Height(); if( ptMove.y < 0 ) ptMove.y = rectGuide.top; Move( ptMove ); }