// AkhanGUI.cpp: implementation of the CAkhanGUI class. // ////////////////////////////////////////////////////////////////////// //#include #include "ClientMain.h" #include "FrameTimer.h" #include "AkhanGUI.h" #include "Z3DRenderable.h" #include "GUITextEdit.h" #include "WinInput.h" #include "GUIMessageBoxManager.h" #include #include "resource.h" #include "Creature\NPC\NPCList.h" #include "Item\ItemMgr.h" #include "Skill\SkillMgr.h" #include "SkillSystem.h" #include "AkhanChrSelect1.h" #include "AkhanChrSelect2.h" #include "AkhanChrCreate.h" #include "HumanMiniStates.h" #include "HumanChatWindow.h" #include "HumanShortcut.h" #include "HumanStatus.h" #include "HumanSkill.h" #include "AkhanInven.h" #include "HumanSociety.h" #include "CommonOption.h" #include "AkhanTrade.h" #include "HumanMinimap.h" #include "HumanQuick.h" #include "HumanSimpleWindow.h" #include "HumanSimpleParty.h" #include "HumanUpgrade.h" #include "AkhanJobChange.h" #include "HumanSimpleChat.h" #include "HumanExchange.h" #include "HumanChannel.h" #include "AkhanRespawn.h" #include "HumanVault.h" #include "HumanStreetStall.h" #include "HumanQuestDesc.h" #include "HumanQuest.h" #include "RenderOption.h" #include #include #include ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CAkhanGUI::CAkhanGUI() { m_nPreSelectItem=0xffffffff; m_dwNormalTargetChrID = 0xFFFFFFFF; m_dwSpecialTargetChrID = 0xFFFFFFFF; m_pCastingEffect = NULL; } CAkhanGUI::~CAkhanGUI() { } BOOL CAkhanGUI::InitChrSelect(void) { char strPath[MAX_PATH]; g_ClientMain.m_lpSceneManager->m_ViewerMode = 2; sprintf(strPath, "%s\\Cslct_a.z3s", g_ClientMain.m_strClientPath); g_ClientMain.m_lpSceneManager->LoadMap(strPath); // g_ClientMain.ResetTerrain(); g_ClientMain.m_lpSceneManager->GetCamera()->SetTotalAniTime(3000.0f); g_ClientMain.m_lpSceneManager->GetCamera()->Unload(); CViewCamera::CameraNode AddNode; AddNode.m_qAngle.Identity(); AddNode.m_qAngle.x = 0.181763f; AddNode.m_qAngle.y = -0.478874f; AddNode.m_qAngle.z = 0.102069f; AddNode.m_qAngle.w = 0.852774f; AddNode.m_vecPos = vector3(29157.087891f, 1444.268433f, 6999.378418f); /* AddNode.m_qAngle.Pitch(FLOAT_DEG(32.0f)); AddNode.m_qAngle.Yaw(FLOAT_DEG(330.0f)); AddNode.m_qAngle.Roll(FLOAT_DEG(0.0f)); AddNode.m_vecPos = vector3(33537.99f, 1455.87f, 4032.49f);*/ AddNode.m_Time = 0; g_ClientMain.m_lpSceneManager->GetCamera()->m_CameraAnimateList.Add(AddNode); AddNode.m_Time = 100; g_ClientMain.m_lpSceneManager->GetCamera()->m_CameraAnimateList.Add(AddNode); g_ClientMain.m_lpSceneManager->SetWeatherTime(2.0f); char strShape[15][256], Sex[MAX_PATH], Hair[MAX_PATH], Face[MAX_PATH]; /* g_ClientMain.m_vecCharSelectPos[0] = vector3(25591.17f, 1144.35f, 4822.25f); g_ClientMain.m_vecCharSelectPos[1] = vector3(25980.13f, 1199.68f, 4967.17f); g_ClientMain.m_vecCharSelectPos[2] = vector3(25922.16f, 890.97f, 4930.77f); */ g_ClientMain.m_vecCharSelectPos[0] = vector3(28540.56f, 1032.78f - 42.0f, 7050.20f); g_ClientMain.m_vecCharSelectPos[1] = vector3(28736.34f, 922.89f - 42.0f, 7409.39f); g_ClientMain.m_vecCharSelectPos[2] = vector3(28831.70f, 1325.58f - 42.0f, 7406.12f); for(int i = 0; i < 3; i++) { if(g_ClientMain.m_scLoginChar[i].UID) { if(g_ClientMain.m_scLoginChar[i].Sex == 1) strcpy(Sex, "PC_Akhan_A.GCMDS"); else strcpy(Sex, "PC_Akhan_B.GCMDS"); sprintf(Hair, "HAIR%02d", g_ClientMain.m_scLoginChar[i].Hair); sprintf(Face, "FACE%02d", g_ClientMain.m_scLoginChar[i].Face); char *strTemp; for(int j = 0; j < 15; j++) { strTemp = (char *)g_ItemMgr.GetEquipName(g_ClientMain.m_scLoginChar[i].Equip[j]); if(strTemp) strcpy(strShape[j], strTemp); else strcpy(strShape[j], ""); } g_CharacterData.AddCharacter(g_ClientMain.m_scLoginChar[i].UID, g_ClientMain.m_scLoginChar[i].Nationality, g_ClientMain.m_scLoginChar[i].Name, Sex, Face, Hair, g_ClientMain.m_vecCharSelectPos[i], 0.0f, strShape); // g_CharacterData.m_lstCharData[i].SetAlphaLevel(1.0f); CCreature *lpCreature = g_CharacterData.GetCreature(g_ClientMain.m_scLoginChar[i].UID); if(lpCreature) { lpCreature->m_cNation = g_ClientMain.m_scLoginChar[i].Nationality; lpCreature->SetShape(strShape); lpCreature->InitWeapon(0); } } else { for(int j = 0; j < 15; j++) { strcpy(strShape[j], ""); } g_CharacterData.AddCharacter(0xC0000000 + i, NATION_AKHAN, "", "PC_Akhan_A.GCMDS", "FACE01", "HAIR01", g_ClientMain.m_vecCharSelectPos[i], 0.0f, strShape); // g_CharacterData.m_lstCharData[i].SetAlphaLevel(0.0f); CCreature *lpCreature = g_CharacterData.GetCreature(0xC0000000 + i); if(lpCreature) { lpCreature->m_cNation = g_ClientMain.m_scLoginChar[i].Nationality; lpCreature->SetShape(strShape); lpCreature->InitWeapon(0); } } } g_ClientMain.m_lpCommonInterface->InitLoading(); g_ClientMain.m_dwClientMode = CLIENT_CHARACTERSELECTLOADING; g_ClientMain.m_dwClientState = CHRSELECT_INITSELECT; g_ClientMain.m_dwSelectChr = 0xFFFFFFFF; CTexture::SetPath(INTERFACETEXTUREPATH); CTexture *lpTexture; // 0 lpTexture = new CTexture; lpTexture->Load("cslct01.dds"); m_lstTexture.push_back(lpTexture); // 1 lpTexture = new CTexture; lpTexture->Load("cslct02.dds"); m_lstTexture.push_back(lpTexture); // 2 lpTexture = new CTexture; lpTexture->Load("cslct03.dds"); m_lstTexture.push_back(lpTexture); // 3 lpTexture = new CTexture; lpTexture->Load("ccr01_a.dds"); m_lstTexture.push_back(lpTexture); // 4 lpTexture = new CTexture; lpTexture->Load("ccr02.dds"); m_lstTexture.push_back(lpTexture); // 5 lpTexture = new CTexture; lpTexture->Load("ccr03.dds"); m_lstTexture.push_back(lpTexture); // 6 lpTexture = new CTexture; lpTexture->Load("ccr04_a.dds"); m_lstTexture.push_back(lpTexture); // 7 lpTexture = new CTexture; lpTexture->Load("ccr05.dds"); m_lstTexture.push_back(lpTexture); // 8 lpTexture = new CTexture; lpTexture->Load("ccr06_a.dds"); m_lstTexture.push_back(lpTexture); // 9 lpTexture = new CTexture; lpTexture->Load("ccr07_a.dds"); m_lstTexture.push_back(lpTexture); CGUIWindow *lpWindow; lpWindow = new CAkhanChrSelect1; lpWindow->Init(0, 0); m_lstWindow.push_back(lpWindow); lpWindow = new CAkhanChrSelect2; lpWindow->Init(0, 0); m_lstWindow.push_back(lpWindow); lpWindow = new CAkhanChrCreate; lpWindow->Init(22, 37); m_lstWindow.push_back(lpWindow); // m_dwEnterGameStep = 0; try { CSoundManager &sm = CSoundManager::GetInstance(); char Temp[MAX_PATH]; sprintf(Temp, "%s\\Chr.ogg", g_ClientMain.m_strClientPath); g_ClientMain.m_lpBackGroundMusic = &sm.GetBuffer(Temp, false, true); g_ClientMain.m_lpBackGroundMusic->Play(true); } catch(exception & e) { e = 0; g_ClientMain.m_lpBackGroundMusic = NULL; }/**/ return TRUE; } void CAkhanGUI::UpdateChrSelect(void) { g_ClientMain.m_lpSceneManager->UpdateScene(CFrameTimer::GetUpdateTimer(g_ClientMain.m_nSceneManagerTimerID)); g_ClientMain.m_lpSceneManager->GetCamera()->PlayAnimate(); for(int cChr = 0; cChr < 3; cChr++) { if(g_CharacterData.m_lstCharData[cChr]->m_lpChrModel->IsActionFinished(0)) g_CharacterData.m_lstCharData[cChr]->m_lpChrModel->SetMotion("WAIT"); } BOOL bClick = FALSE, bEdge = FALSE; switch(g_ClientMain.m_dwClientState) { case CHRSELECT_INITSELECT: m_lstWindow[0]->InitValue(); g_ClientMain.m_dwClientState = CHRSELECT_SELECT; break; case CHRSELECT_SELECT: m_lstWindow[0]->Update(bClick, bEdge); break; case CHRSELECT_INITSTART: m_lstWindow[1]->InitValue(); g_ClientMain.m_dwClientState = CHRSELECT_START; break; case CHRSELECT_START: m_lstWindow[1]->Update(bClick, bEdge); break; case CHRSELECT_INITCREATE: m_lstWindow[2]->InitValue(); g_ClientMain.m_dwClientState = CHRSELECT_CREATE; break; case CHRSELECT_CREATE: m_lstWindow[2]->Update(bClick, bEdge); break; } } void CAkhanGUI::RenderChrSelect(LPDIRECT3DDEVICE8 lpD3DDevice) { lpD3DDevice->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_LINEAR); lpD3DDevice->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR); lpD3DDevice->SetTextureStageState(0, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP); lpD3DDevice->SetTextureStageState(0, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP); lpD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); lpD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW); lpD3DDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); lpD3DDevice->SetRenderState(D3DRS_FOGENABLE, TRUE); lpD3DDevice->SetRenderState(D3DRS_LIGHTING, TRUE); g_ClientMain.m_lpSceneManager->Render(); lpD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); lpD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE); lpD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); lpD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE); lpD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_TEXTURE); lpD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); lpD3DDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_DISABLE); lpD3DDevice->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_DISABLE); lpD3DDevice->SetTextureStageState(0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP); lpD3DDevice->SetTextureStageState(0, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP); lpD3DDevice->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_POINT); lpD3DDevice->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_POINT); lpD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); lpD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); lpD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); lpD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); lpD3DDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS); lpD3DDevice->SetRenderState(D3DRS_FOGENABLE, FALSE); lpD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE); switch(g_ClientMain.m_dwClientState) { case CHRSELECT_SELECT: m_lstWindow[0]->Render(lpD3DDevice); // g_ClientMain.m_lpCommonInterface->RenderLoading(lpD3DDevice); break; case CHRSELECT_START: m_lstWindow[1]->Render(lpD3DDevice); break; case CHRSELECT_CREATE: m_lstWindow[2]->Render(lpD3DDevice); break; } } BOOL CAkhanGUI::InitGame(void) { DestroyAllObject(); g_CharacterData.DeleteAllCharacter(); InitZone(g_ClientMain.m_dwPresentZone); //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// if(!strcmp(g_ClientMain.m_csStatus.m_Info.Name, "")) { g_ClientMain.m_vecStartPosition = vector3(268742.6270f, 2519.8332f, 53045.1599f); strcpy(g_ClientMain.m_csStatus.m_Info.Name, "Belldandy"); g_ClientMain.m_csStatus.m_Info.Class = 1; g_ClientMain.m_csStatus.m_Info.Sex = 1; g_ClientMain.m_csStatus.m_Info.Hair = 2; g_ClientMain.m_csStatus.m_Info.Face = 1; g_ClientMain.m_csStatus.m_Info.Level = 1; g_ClientMain.m_csStatus.m_Info.Nationality = 1; g_ClientMain.m_csStatus.m_Info.STR = 25; g_ClientMain.m_csStatus.m_Info.DEX = 20; g_ClientMain.m_csStatus.m_Info.CON = 20; g_ClientMain.m_csStatus.m_Info.INT = 20; g_ClientMain.m_csStatus.m_Info.WIS = 20; g_ClientMain.m_csStatus.m_Info.Exp = 0; g_ClientMain.m_csStatus.m_llExpMax = 1100; g_ClientMain.m_csStatus.m_Info.IP = 1; g_ClientMain.m_csStatus.m_Info.HP = 100; g_ClientMain.m_csStatus.m_Info.MP = 100; g_ClientMain.m_csStatus.m_Info.Merits = 0; g_ClientMain.m_csStatus.m_Info.Fame = 0; g_ClientMain.m_csStatus.m_Skill.wSlotNum = 10; g_ClientMain.m_csStatus.m_Skill.wSkillNum = 100; for(int i = 0; i < 20; i++) { g_ClientMain.m_csStatus.m_lstSkillSlot[i] = NULL; } g_ClientMain.m_csStatus.m_PartyInfo.m_cMemberNum = 2; g_ClientMain.m_csStatus.m_PartyInfo.m_dwLeaderID = g_ClientMain.m_dwMyChrID; g_ClientMain.m_csStatus.m_PartyInfo.MemberCID[0] = g_ClientMain.m_dwMyChrID; strcpy(g_ClientMain.m_csStatus.m_PartyInfo.Name[0], g_ClientMain.m_csStatus.m_Info.Name); g_ClientMain.m_csStatus.m_PartyInfo.MemberCID[1] = 100; strcpy(g_ClientMain.m_csStatus.m_PartyInfo.Name[1], "¹Ùº¸º¸³ë"); g_ClientMain.m_csStatus.m_Skill.SSlot[0].SKILLINFO.wSkill = 0x8102; g_ClientMain.m_csStatus.m_Skill.SSlot[0].SKILLINFO.cLockCount = 3; g_ClientMain.m_csStatus.m_Skill.SSlot[0].SKILLINFO.cSkillLevel = 1; g_ClientMain.m_csStatus.m_lstSkillSlot[0] = new CItemInstance; g_ClientMain.m_csStatus.m_lstSkillSlot[0]->SetSkillInfo(g_ClientMain.m_csStatus.m_Skill.SSlot[0].SKILLINFO.wSkill, g_ClientMain.m_csStatus.m_Skill.SSlot[0].SKILLINFO.cLockCount, g_ClientMain.m_csStatus.m_Skill.SSlot[0].SKILLINFO.cSkillLevel, ClientSocket::ItemPos_SSlot, 0, 0); g_ClientMain.m_csStatus.m_Skill.SSlot[1].SKILLINFO.wSkill = 0x8202; g_ClientMain.m_csStatus.m_Skill.SSlot[1].SKILLINFO.cLockCount = 1; g_ClientMain.m_csStatus.m_Skill.SSlot[1].SKILLINFO.cSkillLevel = 6; g_ClientMain.m_csStatus.m_Skill.SSlot[2].SKILLINFO.wSkill = 0x8103; g_ClientMain.m_csStatus.m_Skill.SSlot[2].SKILLINFO.cLockCount = 1; g_ClientMain.m_csStatus.m_Skill.SSlot[2].SKILLINFO.cSkillLevel = 2; g_ClientMain.m_csStatus.m_Skill.SSlot[3].SKILLINFO.wSkill = 0x8104; g_ClientMain.m_csStatus.m_Skill.SSlot[3].SKILLINFO.cLockCount = 0; g_ClientMain.m_csStatus.m_Skill.SSlot[3].SKILLINFO.cSkillLevel = 3; g_ClientMain.m_csStatus.m_Skill.SSlot[4].SKILLINFO.wSkill = 0x8105; g_ClientMain.m_csStatus.m_Skill.SSlot[4].SKILLINFO.cLockCount = 1; g_ClientMain.m_csStatus.m_Skill.SSlot[4].SKILLINFO.cSkillLevel = 5; g_ClientMain.m_csStatus.m_Skill.SSlot[5].SKILLINFO.wSkill = 0x8302; g_ClientMain.m_csStatus.m_Skill.SSlot[5].SKILLINFO.cLockCount = 0; g_ClientMain.m_csStatus.m_Skill.SSlot[5].SKILLINFO.cSkillLevel = 1; g_ClientMain.m_csStatus.m_Skill.SSlot[6].SKILLINFO.wSkill = 0x8403; g_ClientMain.m_csStatus.m_Skill.SSlot[6].SKILLINFO.cLockCount = 0; g_ClientMain.m_csStatus.m_Skill.SSlot[6].SKILLINFO.cSkillLevel = 5; g_ClientMain.m_csStatus.m_Skill.SSlot[7].SKILLINFO.wSkill = 0x8404; g_ClientMain.m_csStatus.m_Skill.SSlot[7].SKILLINFO.cLockCount = 0; g_ClientMain.m_csStatus.m_Skill.SSlot[7].SKILLINFO.cSkillLevel = 2; g_ClientMain.m_csStatus.m_Skill.SSlot[8].SKILLINFO.wSkill = 0x8406; g_ClientMain.m_csStatus.m_Skill.SSlot[8].SKILLINFO.cLockCount = 2; g_ClientMain.m_csStatus.m_Skill.SSlot[8].SKILLINFO.cSkillLevel = 6; g_ClientMain.m_csStatus.m_Skill.SSlot[9].SKILLINFO.wSkill = 0x8504; g_ClientMain.m_csStatus.m_Skill.SSlot[9].SKILLINFO.cLockCount = 1; g_ClientMain.m_csStatus.m_Skill.SSlot[9].SKILLINFO.cSkillLevel = 6; /* CItemInstance *lpItem; lpItem = new CItemInstance; lpItem->m_dwItemUID = 0; lpItem->m_wPutX = 200; lpItem->m_wPutY = 200; lpItem->m_lpItem = g_ItemMgr.GetProtoType(1607); lpItem->m_lpItem->m_lpItemBase->m_ItemInfo.m_nItemIndex.EvenPos.m_PosX = 0; lpItem->m_lpItem->m_lpItemBase->m_ItemInfo.m_nItemIndex.EvenPos.m_PosY = 0; lpItem->m_lpItem->m_lpItemBase->m_ItemInfo.m_nItemIndex.EvenPos.m_Tab = 0; lpItem->m_lpSprite = new CSprite; lpItem->m_lpSprite->Create(0, 0, lpItem->m_lpItem->m_lpProtoTypeInfo->m_nSpriteMinX, lpItem->m_lpItem->m_lpProtoTypeInfo->m_nSpriteMinY, lpItem->m_lpItem->m_lpProtoTypeInfo->m_nSpriteMaxX, lpItem->m_lpItem->m_lpProtoTypeInfo->m_nSpriteMaxY, NULL); g_ClientMain.m_csStatus.m_lstInventory.push_back(lpItem); g_ClientMain.m_csStatus.CheckInvenField(1, lpItem); g_ClientMain.m_csStatus.m_cWeaponPos = 0;*/ g_ClientMain.m_csStatus.m_cWeaponPos = 0; g_ClientMain.m_csStatus.StatusUpdate(); }/**/ //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// g_ClientMain.m_csStatus.m_cWeaponPos = 0; if(g_ClientMain.m_vecStartPosition.y<10.0f) { g_ClientMain.m_vecStartPosition.y=CSceneManager::m_HeightField.GetHeight(g_ClientMain.m_vecStartPosition); } g_ClientMain.m_lpSceneManager->GetCamera()->LookAt(vector3(0.0f, 150.0f, -300.0f) + g_ClientMain.m_vecStartPosition, vector3(0.0f, 150.0f, 0.0f) + g_ClientMain.m_vecStartPosition, vector3(0.0f, 1.0f, 0.0f)); g_ClientMain.m_lpSceneManager->GetCamera()->m_vecCameraPosition = vector3(0.0f, 150.0f, -300.0f); g_ClientMain.m_lpSceneManager->GetCamera()->m_vecCameraPosition.Normalize(); g_CharacterData.m_Camera.m_fCameraRotY += (-50 / 300.0f); char strSex[MAX_PATH], strFace[MAX_PATH], strHair[MAX_PATH]; char *strTemp, strShape[15][256]; for(int j = 0; j < 15; j++) { if(g_ClientMain.m_csStatus.m_lstEquipment[j]) { strTemp = (char *)g_ItemMgr.GetEquipName(g_ClientMain.m_csStatus.m_lstEquipment[j]->GetProtoTypeID()); } else { strTemp = NULL; } if(strTemp) strcpy(strShape[j], strTemp); else strcpy(strShape[j], ""); } if(g_ClientMain.m_csStatus.m_Info.Sex == 1) strcpy(strSex, "PC_Akhan_A.GCMDS"); else strcpy(strSex, "PC_Akhan_B.GCMDS"); sprintf(strFace, "FACE%02d", g_ClientMain.m_csStatus.m_Info.Face); sprintf(strHair, "HAIR%02d", g_ClientMain.m_csStatus.m_Info.Hair); g_CharacterData.AddCharacter(g_ClientMain.m_dwMyChrID, g_ClientMain.m_csStatus.m_Info.Nationality, g_ClientMain.m_csStatus.m_Info.Name, strSex, strFace, strHair, g_ClientMain.m_vecStartPosition, 0.0f, strShape); g_CharacterData.m_nFocusCharacter = g_CharacterData.m_lstCharData.num - 1; g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_bPeaceMode = g_ClientMain.m_bPeaceMode; g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_bUsed = TRUE; g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_dwPartyID = g_ClientMain.m_csStatus.m_Info.Party; g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_wClass = g_ClientMain.m_csStatus.m_Info.Class; g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_cLevel = g_ClientMain.m_csStatus.m_Info.Level; g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_cNation = g_ClientMain.m_csStatus.m_Info.Nationality; g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_cSex = g_ClientMain.m_csStatus.m_Info.Sex; g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->SetShape(strShape); g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->InitWeapon(0); if(g_ClientMain.m_csStatus.m_Info.HP <= 0) { g_ClientMain.m_csStatus.m_Info.HP = 0; g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_sCurrHP = 0; g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->Dead(); g_ClientMain.m_csStatus.ChantDisable(); g_ClientMain.SetAutoRun(FALSE); } g_ClientMain.m_lpCommonInterface->InitLoading(); g_ClientMain.m_dwClientMode = CLIENT_GAMELOADING; g_TextEdit.InitMessage(); g_ClientMain.SetFocus(); g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_TextEdit.SetEditLength(100); g_ClientMain.SetTipBroadTimer(g_ClientMain.m_lTipBroadCounterSeed); CTexture::SetPath(INTERFACETEXTUREPATH); // 0 CTexture *lpTexture; lpTexture = new CTexture; lpTexture->Load("main_ministat.dds"); m_lstTexture.push_back(lpTexture); // 1 lpTexture = new CTexture; lpTexture->Load("main_chatwin.dds"); m_lstTexture.push_back(lpTexture); // 2 lpTexture = new CTexture; lpTexture->Load("main_chatbutton.dds"); m_lstTexture.push_back(lpTexture); // 3 lpTexture = new CTexture; lpTexture->Load("main_shortcut.dds"); m_lstTexture.push_back(lpTexture); // 4 lpTexture = new CTexture; lpTexture->Load("main_status01.dds"); m_lstTexture.push_back(lpTexture); // 5 lpTexture = new CTexture; lpTexture->Load("main_status02.dds"); m_lstTexture.push_back(lpTexture); // 6 lpTexture = new CTexture; lpTexture->Load("main_skill01.dds"); m_lstTexture.push_back(lpTexture); // 7 lpTexture = new CTexture; lpTexture->Load("main_skill02.dds"); m_lstTexture.push_back(lpTexture); // 8 lpTexture = new CTexture; lpTexture->Load("main_skill03.dds"); m_lstTexture.push_back(lpTexture); // 9 lpTexture = new CTexture; lpTexture->Load("main_inven01_a.dds"); m_lstTexture.push_back(lpTexture); // 10 lpTexture = new CTexture; lpTexture->Load("main_inven02_a.dds"); m_lstTexture.push_back(lpTexture); // 11 lpTexture = new CTexture; lpTexture->Load("main_inven03.dds"); m_lstTexture.push_back(lpTexture); // 12 lpTexture = new CTexture; lpTexture->Load("main_inven04.dds"); m_lstTexture.push_back(lpTexture); // 13 lpTexture = new CTexture; lpTexture->Load("social_w_a.dds"); m_lstTexture.push_back(lpTexture); // 14 lpTexture = new CTexture; lpTexture->Load("social_w_b.dds"); m_lstTexture.push_back(lpTexture); // 15 lpTexture = new CTexture; lpTexture->Load("social_ps_a.dds"); m_lstTexture.push_back(lpTexture); // 16 lpTexture = new CTexture; lpTexture->Load("social_ps_b.dds"); m_lstTexture.push_back(lpTexture); // 17 lpTexture = new CTexture; lpTexture->Load("social_w_pannel.dds"); m_lstTexture.push_back(lpTexture); // 18 lpTexture = new CTexture; lpTexture->Load("social_w_tab.dds"); m_lstTexture.push_back(lpTexture); // 19 lpTexture = new CTexture; lpTexture->Load("option_back.dds"); m_lstTexture.push_back(lpTexture); // 20 lpTexture = new CTexture; lpTexture->Load("option_button.dds"); m_lstTexture.push_back(lpTexture); // 21 lpTexture = new CTexture; lpTexture->Load("option_in.dds"); m_lstTexture.push_back(lpTexture); // 22 lpTexture = new CTexture; lpTexture->Load("namebox.dds"); m_lstTexture.push_back(lpTexture); // 23 lpTexture = new CTexture; lpTexture->Load("market01.dds"); m_lstTexture.push_back(lpTexture); // 24 lpTexture = new CTexture; lpTexture->Load("market02.dds"); m_lstTexture.push_back(lpTexture); // 25 lpTexture = new CTexture; lpTexture->Load("market03_a.dds"); m_lstTexture.push_back(lpTexture); // 26 lpTexture = new CTexture; lpTexture->Load("mmap01.dds"); m_lstTexture.push_back(lpTexture); // 27 lpTexture = new CTexture; lpTexture->Load("mmap02.dds"); m_lstTexture.push_back(lpTexture); // 28 lpTexture = new CTexture; lpTexture->Load("mmap03.dds"); m_lstTexture.push_back(lpTexture); // 29 lpTexture = new CTexture; lpTexture->Load("bsmith01.dds"); m_lstTexture.push_back(lpTexture); // 30 lpTexture = new CTexture; lpTexture->Load("bsmith02.dds"); m_lstTexture.push_back(lpTexture); // 31 lpTexture = new CTexture; lpTexture->Load("market04_a.dds"); m_lstTexture.push_back(lpTexture); // 32 lpTexture = new CTexture; lpTexture->Load("market05.dds"); m_lstTexture.push_back(lpTexture); // 33 lpTexture = new CTexture; lpTexture->Load("market06_a.dds"); m_lstTexture.push_back(lpTexture); // 34 lpTexture = new CTexture; lpTexture->Load("market07_a.dds"); m_lstTexture.push_back(lpTexture); // 35 lpTexture = new CTexture; lpTexture->Load("mbox01.dds"); m_lstTexture.push_back(lpTexture); // 36 lpTexture = new CTexture; lpTexture->Load("mbox02_a.dds"); m_lstTexture.push_back(lpTexture); // 37 lpTexture = new CTexture; lpTexture->Load("mbox03_a.dds"); m_lstTexture.push_back(lpTexture); // 38 lpTexture = new CTexture; lpTexture->Load("mbox04_a.dds"); m_lstTexture.push_back(lpTexture); // 39 lpTexture = new CTexture; lpTexture->Load("exchange01.dds"); m_lstTexture.push_back(lpTexture); // 40 lpTexture = new CTexture; lpTexture->Load("option_in02.dds"); m_lstTexture.push_back(lpTexture); // 41 lpTexture = new CTexture; lpTexture->Load("channel01.dds"); m_lstTexture.push_back(lpTexture); // 42 lpTexture = new CTexture; lpTexture->Load("channel02.dds"); m_lstTexture.push_back(lpTexture); // 43 lpTexture = new CTexture; lpTexture->Load("bank01.dds"); m_lstTexture.push_back(lpTexture); // 44 lpTexture = new CTexture; lpTexture->Load("market03_1.dds"); m_lstTexture.push_back(lpTexture); // 45 lpTexture = new CTexture; lpTexture->Load("market08.dds"); m_lstTexture.push_back(lpTexture); // 46 lpTexture = new CTexture; lpTexture->Load("bank02.dds"); m_lstTexture.push_back(lpTexture); // 47 lpTexture = new CTexture; lpTexture->Load("bank03.dds"); m_lstTexture.push_back(lpTexture); // 48 lpTexture = new CTexture; lpTexture->Load("stall01.dds"); m_lstTexture.push_back(lpTexture); // 49 lpTexture = new CTexture; lpTexture->Load("stall02.dds"); m_lstTexture.push_back(lpTexture); // 50 lpTexture = new CTexture; lpTexture->Load("Quest_Back01.dds"); m_lstTexture.push_back(lpTexture); // 51 lpTexture = new CTexture; lpTexture->Load("Quest_Back02.dds"); m_lstTexture.push_back(lpTexture); // 52 lpTexture = new CTexture; lpTexture->Load("Quest_ing01.dds"); m_lstTexture.push_back(lpTexture); // 53 lpTexture = new CTexture; lpTexture->Load("Quest_ing02.dds"); m_lstTexture.push_back(lpTexture); // 54 lpTexture = new CTexture; lpTexture->Load("Quest_done01.dds"); m_lstTexture.push_back(lpTexture); // 55 lpTexture = new CTexture; lpTexture->Load("Quest_done02.dds"); m_lstTexture.push_back(lpTexture); // 56 lpTexture = new CTexture; lpTexture->Load("Quest_misc01.dds"); m_lstTexture.push_back(lpTexture); // 0 CGUIWindow *lpWindow; lpWindow = new CHumanMiniStates; lpWindow->Init(0, 480); m_lstWindow.push_back(lpWindow); // 1 lpWindow = new CHumanChatWindow; lpWindow->Init(150, 480); m_lstWindow.push_back(lpWindow); // 2 lpWindow = new CHumanShortcut; lpWindow->Init(659, 480); m_lstWindow.push_back(lpWindow); // 3 lpWindow = new CHumanStatus; lpWindow->Init(578, 0); m_lstWindow.push_back(lpWindow); // 4 lpWindow = new CHumanSkill; lpWindow->Init(578, 0); m_lstWindow.push_back(lpWindow); // 5 lpWindow = new CAkhanInven; lpWindow->Init(578, 0); m_lstWindow.push_back(lpWindow); // 6 lpWindow = new CHumanSociety; lpWindow->Init(578, 0); m_lstWindow.push_back(lpWindow); // 7 lpWindow = new CCommonOption; lpWindow->Init(289, 110); m_lstWindow.push_back(lpWindow); // 8 lpWindow = new CAkhanTrade; lpWindow->Init(356, 0); m_lstWindow.push_back(lpWindow); // 9 lpWindow = new CHumanMinimap; lpWindow->Init(0, 0); m_lstWindow.push_back(lpWindow); // 10 lpWindow = new CHumanQuick; lpWindow->Init(0, 102); m_lstWindow.push_back(lpWindow); // 11 lpWindow = new CHumanSimpleWindow; lpWindow->Init(0, 446); m_lstWindow.push_back(lpWindow); // 12 lpWindow = new CHumanSimpleParty; lpWindow->Init(674, 0); m_lstWindow.push_back(lpWindow); // 13 lpWindow = new CHumanUpgrade; lpWindow->Init(356, 0); m_lstWindow.push_back(lpWindow); // 14 lpWindow = new CAkhanJobChange; lpWindow->Init(233, 92); m_lstWindow.push_back(lpWindow); // 15 lpWindow = new CHumanSimpleChat; lpWindow->Init(40, 501); m_lstWindow.push_back(lpWindow); // 16 lpWindow = new CHumanExchange; lpWindow->Init(134, 0); m_lstWindow.push_back(lpWindow); // 17 lpWindow = new CHumanChannel; lpWindow->Init(218, 134); m_lstWindow.push_back(lpWindow); // 18 lpWindow = new CAkhanRespawn; lpWindow->Init(267, 91); m_lstWindow.push_back(lpWindow); // 19 lpWindow = new CHumanVault; lpWindow->Init(356, 0); m_lstWindow.push_back(lpWindow); // 20 lpWindow = new CHumanStreetStall; lpWindow->Init(356, 0); m_lstWindow.push_back(lpWindow); // 21 lpWindow = new CHumanQuestDesc; lpWindow->Init(233, 92); m_lstWindow.push_back(lpWindow); // 22 lpWindow = new CHumanQuest; lpWindow->Init(578, 0); m_lstWindow.push_back(lpWindow); if(!g_ClientMain.m_bInterfaceAlreadyLoad) { m_lpSkillGaugeFrame = new CSprite; m_lpSkillGaugeFrame->Create(99, 2, 40, 183, 256, 216, m_lstTexture[26]); m_lpSkillGauge[0] = new CSprite; m_lpSkillGauge[0]->Create(102, 4, 40, 216, 246, 224, m_lstTexture[26]); m_lpSkillGauge[1] = new CSprite; m_lpSkillGauge[1]->Create(102, 4, 40, 224, 246, 232, m_lstTexture[26]); m_lpSkillGauge[2] = new CSprite; m_lpSkillGauge[2]->Create(102, 4, 40, 232, 246, 240, m_lstTexture[26]); m_lpSkillGauge[3] = new CSprite; m_lpSkillGauge[3]->Create(102, 4, 40, 240, 246, 248, m_lstTexture[26]); m_lpSkillGauge[4] = new CSprite; m_lpSkillGauge[4]->Create(102, 4, 40, 248, 246, 256, m_lstTexture[26]); m_lpTarget[0] = new CSprite; m_lpTarget[0]->Create(0, 0, 0, 0, 64, 64, m_lstTexture[29]); m_lpTarget[1] = new CSprite; m_lpTarget[1]->Create(0, 0, 64, 0, 128, 64, m_lstTexture[29]); g_ClientMain.m_bInterfaceAlreadyLoad = TRUE; } else { m_lpSkillGaugeFrame->m_lpTexture = m_lstTexture[26]; m_lpSkillGauge[0]->m_lpTexture = m_lstTexture[26]; m_lpSkillGauge[1]->m_lpTexture = m_lstTexture[26]; m_lpSkillGauge[2]->m_lpTexture = m_lstTexture[26]; m_lpSkillGauge[3]->m_lpTexture = m_lstTexture[26]; m_lpSkillGauge[4]->m_lpTexture = m_lstTexture[26]; m_lpTarget[0]->m_lpTexture = m_lstTexture[29]; m_lpTarget[1]->m_lpTexture = m_lstTexture[29]; } g_CharacterData.m_bClientUsed = true; g_ClientMain.m_dwClientState = GAME_PLAYING; g_ClientMain.m_Network.SetState(NS_NOWAITING); g_TextEdit.AddMessage(g_StringTable.m_strString[140], g_ClientMain.m_dwMyChrID, 128); if(g_ClientMain.m_csStatus.GetExistExchangeItem()) // ±³È¯ ¾ÆÀÌÅÛÀÌ ³²¾ÆÀÖÀ¸¸é ³ªÅ¸³½´Ù. { m_lstWindow[5]->ShowWindow(TRUE); m_lstWindow[16]->ShowWindow(TRUE); ((CHumanExchange *)m_lstWindow[16])->ExchangeQuit(); } /* if(g_ClientMain.m_csStatus.m_Info.Level == 1 && g_ClientMain.m_csStatus.m_Info.Exp == 0) { m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->m_bShow = FALSE; m_lstWindow[5]->m_bShow = FALSE; m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[8]->ShowWindow(FALSE); m_lstWindow[13]->ShowWindow(FALSE); m_bShowHelp = TRUE; g_ClientMain.m_lpCommonInterface->InitHelp(); }*/ return TRUE; } void CAkhanGUI::UpdateGame(void) { BOOL bClick = FALSE, bEdge = FALSE; /// Äð´Ù¿î ŸÀÓ Ã¼Å© { list::iterator it; for(it = g_ClientMain.m_csStatus.m_lstInventory.begin(); it != g_ClientMain.m_csStatus.m_lstInventory.end(); it++) { if((*it)->m_lCoolDownTimeCount) { (*it)->UpdateCoolDownTime(); } } int i; vector::iterator itSkill; for(itSkill = g_ClientMain.m_csStatus.m_lstClassSkill.begin(); itSkill != g_ClientMain.m_csStatus.m_lstClassSkill.end(); itSkill++) { if((*itSkill)->m_lCoolDownTimeCount) { (*itSkill)->UpdateCoolDownTime(); } } for(i = 0; i < 20; i++) { if(g_ClientMain.m_csStatus.m_lstSkillSlot[i] && g_ClientMain.m_csStatus.m_lstSkillSlot[i]->m_lCoolDownTimeCount) { g_ClientMain.m_csStatus.m_lstSkillSlot[i]->UpdateCoolDownTime(); } } for(i = 0; i < 10; i++) { if(g_ClientMain.m_csStatus.m_lstQuickSlot[i] && g_ClientMain.m_csStatus.m_lstQuickSlot[i]->m_lCoolDownTimeCount) { if(g_ClientMain.m_csStatus.m_lstQuickSlot[i]->UpdateCoolDownTime()) { if(g_ClientMain.m_dwStartQuickSlot <= i && i < 5 + g_ClientMain.m_dwStartQuickSlot) { // ÀÌÆåÆ® char light[256] = {0}; int pos_num = 0; if(i >=5) pos_num = i-5; else pos_num = i; if((pos_num >=0) && (pos_num<=4)) { sprintf(light,"inter_light%d.esf",pos_num+1); CEffScript *test_script; // _ASSERTE(_CrtCheckMemory()); test_script = new CEffScript; test_script->SetInterfaceSet(true); test_script->GetScriptBinData(light); //3 105°¡ Äü ½½·Ô ½ÃÀÛÀ§Ä¡ test_script->m_InterfacePos[0] = 3 + 23; test_script->m_InterfacePos[1] = 105 + 62 + 16 + (pos_num) * 38; CSceneManager::m_EffectManager.AddInterfaceScript(test_script); } } if(g_ClientMain.m_csStatus.m_lpQuickSelected != NULL) { // Ȱ¼ºÈ­ µÈ ½ºÅ³ if(g_ClientMain.m_csStatus.m_lpQuickSelected == g_ClientMain.m_csStatus.m_lstQuickSlot[i]) { CEffScript *test_script; // _ASSERTE(_CrtCheckMemory()); test_script = new CEffScript; test_script->SetInterfaceSet(true); test_script->GetScriptBinData("inter_light6.esf"); test_script->m_InterfacePos[0] = 3 + 23; test_script->m_InterfacePos[1] = 105 + 16; CSceneManager::m_EffectManager.AddInterfaceScript(test_script); } }/**/ } } } float fUpdate = CFrameTimer::GetUpdateTimer(g_ClientMain.m_nShowInterfaceTimerID); g_ClientMain.m_csStatus.m_lPotionCoolDownTime -= fUpdate * 2.0f; if(g_ClientMain.m_csStatus.m_lPotionCoolDownTime <= 0) { g_ClientMain.m_csStatus.m_lPotionCoolDownTime = 0; } if(g_ClientMain.m_lpPickItem && g_ClientMain.m_lpPickItem->m_lCoolDownTimeCount) { if(g_ClientMain.m_lpPickItem->UpdateCoolDownTime()) { // ÀÌÆåÆ® } } if(!m_bWeaponExchageAble) { m_fWeaponExchageAbleTimeCounter -= CFrameTimer::GetUpdateTimer(g_ClientMain.m_dwPartyInfoTimerID); if(m_fWeaponExchageAbleTimeCounter <= 0.0f) { m_bWeaponExchageAble = TRUE; m_fWeaponExchageAbleTimeCounter = 0.0f; } } } if(g_ClientMain.m_csStatus.m_PartyInfo.m_cMemberNum && CFrameTimer::GetUpdateTimer(g_ClientMain.m_dwPartyInfoTimerID) > 1.0f) { g_ClientMain.m_Network.SendMyInfoforParty(); } g_ClientMain.SetDayTimer(); g_ClientMain.m_lpSceneManager->UpdateScene(CFrameTimer::GetUpdateTimer(g_ClientMain.m_nSceneManagerTimerID)); g_SkillSystem.Update(); if(g_ClientMain.m_bMouseMode) { if(g_DeviceInput.GetIsMiddleMousePress() || g_DeviceInput.KeyHold(VK_SPACE)) { g_ClientMain.m_bShowCursor = FALSE; } else { g_ClientMain.m_bShowCursor = TRUE; } } else { if(g_DeviceInput.KeyHold(VK_SHIFT) || ((m_lstWindow[3]->m_bShow || m_lstWindow[4]->m_bShow || m_lstWindow[5]->m_bShow || m_lstWindow[6]->m_bShow || m_lstWindow[7]->m_bShow || m_lstWindow[14]->m_bShow || m_lstWindow[17]->m_bShow || m_lstWindow[18]->m_bShow || g_MessageBoxManager.GetIsExistModal() || m_bPopupShow) && !g_DeviceInput.GetIsMiddleMousePress())) { bClick = TRUE; g_ClientMain.m_bShowCursor = TRUE; } else { g_ClientMain.m_bShowCursor = FALSE; } } if(g_ClientMain.m_bTargetMouseMode) { g_ClientMain.m_bShowCursor = TRUE; } if(!g_ClientMain.m_bShowCursor) { g_DeviceInput.SetCursorPos(400, 250); } /* if(g_ClientMain.m_bMouseMode) { if(g_DeviceInput.GetIsMiddleMousePress()) { g_DeviceInput.SetCursorPos(400, 300); } } else { if(!g_ClientMain.m_bShowCursor) g_DeviceInput.SetCursorPos(400, 300); }*/ float fCreatureUpdate = CFrameTimer::GetUpdateTimer(g_ClientMain.m_nShowInterfaceTimerID) * 2.0f; if(g_ClientMain.m_Network.GetState() != NS_NOWAITING || g_ClientMain.m_Network.m_nsNetworkStateforCastObject != NS_NOWAITING) // ÆÐŶ ±â´Ù¸±¶§ { g_CharacterData.SetCamera(); g_CharacterData.UpdateSelfCharacter(FALSE); NPCSpawn(); g_CharacterData.Update(fCreatureUpdate); if(g_ClientMain.m_lpPickItem) // ¸¶¿ì½º¿¡ ÁýÇôÀÖ´Â ¾ÆÀÌÅÛ À§Ä¡ º¸Á¤ { POINT *ptMousePos = g_DeviceInput.GetMousePosition(); g_ClientMain.m_lpPickItem->m_wPutX = ptMousePos->x; g_ClientMain.m_lpPickItem->m_wPutY = ptMousePos->y; } return; } if(g_TextEdit.m_deqNoticeMessage.size()) { deque::iterator it; long count = 0; for(it = g_TextEdit.m_deqNoticeMessage.begin(); it != g_TextEdit.m_deqNoticeMessage.end(); it++) { (*it)->fTimer -= fCreatureUpdate; if((*it)->fTimer <= 0.0f) { count++; } } for(int i = 0; i < count; i++) { g_TextEdit.m_deqNoticeMessage.pop_front(); } } ///////////////////////////////////////////////////////////////////////////////////////////////// // ´ÜÃàŰ if ( !GetIsExchange() && ((g_DeviceInput.KeyDown(VK_ESCAPE) && m_lstWindow[20]->m_bShow) || !g_TextEdit.IsFocus()) && (g_DeviceInput.KeyDown(VK_ESCAPE) || (g_ClientMain.m_bMouseMode && g_DeviceInput.KeyDown('W'))) ) { if((m_lstWindow[3]->m_bShow || m_lstWindow[4]->m_bShow || m_lstWindow[5]->m_bShow || m_lstWindow[6]->m_bShow || m_lstWindow[7]->m_bShow || m_lstWindow[14]->m_bShow || m_lstWindow[16]->m_bShow || m_lstWindow[17]->m_bShow || m_lstWindow[19]->m_bShow || m_lstWindow[20]->m_bShow || m_lstWindow[21]->m_bShow || m_bShowHelp || m_bPopupShow || g_MessageBoxManager.GetIsExistModal()) && g_DeviceInput.KeyDown(VK_ESCAPE)) { m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->ShowWindow(FALSE); m_lstWindow[5]->ShowWindow(FALSE); m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[8]->ShowWindow(FALSE); m_lstWindow[13]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[16]->ShowWindow(FALSE); m_lstWindow[17]->ShowWindow(FALSE); m_lstWindow[19]->ShowWindow(FALSE); m_lstWindow[20]->ShowWindow(FALSE); m_lstWindow[21]->ShowWindow(FALSE); m_bPopupShow = FALSE; m_dwPopupSelect = 0xFFFFFFFF; g_MessageBoxManager.DestroyList(); if(m_bShowHelp) { m_bShowHelp = FALSE; g_ClientMain.m_lpCommonInterface->DestroyFullScreen(); } if(!g_ClientMain.m_bMouseMode) { } } else if((g_DeviceInput.KeyDown(VK_ESCAPE) || g_DeviceInput.KeyDown('W'))) { g_ClientMain.m_bMouseMode = !g_ClientMain.m_bMouseMode; CEffScript *test_script; // _ASSERTE(_CrtCheckMemory()); test_script = new CEffScript; if(g_ClientMain.m_bMouseMode) { //g_CharacterData.m_Camera.m_nCameraMode = 0; g_CharacterData.MouseModeChange(); g_ClientMain.m_bShowCursor = TRUE; test_script->GetScriptBinData("inter_interface-type-mouse.esf"); } else { //g_CharacterData.m_Camera.m_nCameraMode = 1; g_CharacterData.MouseModeChange(); g_ClientMain.m_bShowCursor = FALSE; g_TextEdit.AddMessage(g_StringTable.m_strString[141], g_ClientMain.m_dwMyChrID, 128); test_script->GetScriptBinData("inter_interface-type-keyboard.esf"); } test_script->m_InterfacePos[0] += 0.0f; test_script->m_InterfacePos[1] += 310.0f; CSceneManager::m_EffectManager.AddInterfaceScript(test_script); } } /* if(!g_TextEdit.IsFocus() && g_DeviceInput.KeyDown('H')) { g_ClientMain.m_Network.m_nsNetworkState = NS_UPGRADECLASS; g_ClientMain.m_Network.m_pSocket->CharClassUpgrade(g_ClientMain.m_dwMyChrID, 21); }*/ if(!g_TextEdit.IsFocus() && g_DeviceInput.KeyDown(VK_TAB)) { g_ClientMain.m_bSimpleMode = !g_ClientMain.m_bSimpleMode; } if(!g_TextEdit.IsFocus() && g_DeviceInput.KeyDown('M') && strcmp(g_ClientMain.m_strRecentChatChrID, "")) { HIMC hImc; hImc = ImmGetContext(g_ClientMain.m_hWnd); ImmSetCompositionString(hImc, SCS_SETSTR, NULL, 0, NULL, 0); ImmReleaseContext(g_ClientMain.m_hWnd, hImc); strcpy(g_ClientMain.m_strWhisperChrID, g_ClientMain.m_strRecentChatChrID); g_ClientMain.m_bInstanceWhisper = TRUE; g_TextEdit.SetFocus(); } /* if(!g_TextEdit.IsFocus() && g_DeviceInput.KeyDown('6')) { g_ClientMain.m_bTargetMouseMode = !g_ClientMain.m_bTargetMouseMode; }*/ if(!g_TextEdit.IsFocus() && g_DeviceInput.KeyDown('R')) { g_ClientMain.m_bAutoRunMode = TRUE; } if(!GetIsExchange()) { if(!g_TextEdit.IsFocus() && g_DeviceInput.KeyDown('I')) // Àκ¥Å丮 { m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->ShowWindow(FALSE); m_lstWindow[5]->ShowWindow(!m_lstWindow[5]->m_bShow); m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[8]->ShowWindow(FALSE); m_lstWindow[13]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[16]->ShowWindow(FALSE); m_lstWindow[17]->ShowWindow(FALSE); m_lstWindow[19]->ShowWindow(FALSE); m_lstWindow[20]->ShowWindow(FALSE); m_lstWindow[21]->ShowWindow(FALSE); } else if(!g_TextEdit.IsFocus() && g_DeviceInput.KeyDown('U')) // ½ºÅ×ÀÌÅͽº { m_lstWindow[3]->m_bShow = !m_lstWindow[3]->m_bShow; m_lstWindow[4]->ShowWindow(FALSE); m_lstWindow[5]->ShowWindow(FALSE); m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[8]->ShowWindow(FALSE); m_lstWindow[13]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[16]->ShowWindow(FALSE); m_lstWindow[17]->ShowWindow(FALSE); m_lstWindow[19]->ShowWindow(FALSE); m_lstWindow[20]->ShowWindow(FALSE); m_lstWindow[21]->ShowWindow(FALSE); } else if(!g_TextEdit.IsFocus() && g_DeviceInput.KeyDown('K')) { m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->ShowWindow(!m_lstWindow[4]->m_bShow); m_lstWindow[5]->ShowWindow(FALSE); m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[8]->ShowWindow(FALSE); m_lstWindow[13]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[16]->ShowWindow(FALSE); m_lstWindow[17]->ShowWindow(FALSE); m_lstWindow[19]->ShowWindow(FALSE); m_lstWindow[20]->ShowWindow(FALSE); m_lstWindow[21]->ShowWindow(FALSE); } else if(!g_TextEdit.IsFocus() && g_DeviceInput.KeyDown('Y')) { m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->ShowWindow(FALSE); m_lstWindow[5]->ShowWindow(FALSE); m_lstWindow[6]->m_bShow = !m_lstWindow[6]->m_bShow; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[8]->ShowWindow(FALSE); m_lstWindow[13]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[16]->ShowWindow(FALSE); m_lstWindow[17]->ShowWindow(FALSE); m_lstWindow[19]->ShowWindow(FALSE); m_lstWindow[20]->ShowWindow(FALSE); m_lstWindow[21]->ShowWindow(FALSE); } else if(!g_TextEdit.IsFocus() && g_DeviceInput.KeyDown('T')) { m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->ShowWindow(FALSE); m_lstWindow[5]->ShowWindow(FALSE); m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[8]->ShowWindow(FALSE); m_lstWindow[13]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[16]->ShowWindow(FALSE); m_lstWindow[17]->ShowWindow(FALSE); m_lstWindow[19]->ShowWindow(FALSE); m_lstWindow[20]->ShowWindow(FALSE); m_lstWindow[21]->ShowWindow(FALSE); } else if(!g_TextEdit.IsFocus() && g_DeviceInput.KeyDown(VK_F1)) { m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->ShowWindow(FALSE); m_lstWindow[5]->ShowWindow(FALSE); m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[8]->ShowWindow(FALSE); m_lstWindow[13]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[16]->ShowWindow(FALSE); m_lstWindow[17]->ShowWindow(FALSE); m_lstWindow[19]->ShowWindow(FALSE); m_lstWindow[20]->ShowWindow(FALSE); m_lstWindow[21]->ShowWindow(FALSE); m_bShowHelp = TRUE; g_ClientMain.m_lpCommonInterface->InitHelp(); } else if(!g_TextEdit.IsFocus() && g_DeviceInput.KeyDown(VK_F11)) { m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->ShowWindow(FALSE); m_lstWindow[5]->ShowWindow(FALSE); m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = !m_lstWindow[7]->m_bShow; m_lstWindow[8]->ShowWindow(FALSE); m_lstWindow[13]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[16]->ShowWindow(FALSE); m_lstWindow[17]->ShowWindow(FALSE); m_lstWindow[19]->ShowWindow(FALSE); m_lstWindow[20]->ShowWindow(FALSE); m_lstWindow[21]->ShowWindow(FALSE); } } ///////////////////////////////////////////////////////////////////////////////////// if(m_bShowHelp) { // µµ¿ò¸» g_CharacterData.Update(fCreatureUpdate); g_CharacterData.UpdateSelfCharacter(FALSE); NPCSpawn(); if(g_DeviceInput.GetIsLeftMouseUp() || g_DeviceInput.GetIsRightMouseUp()) { m_bShowHelp = FALSE; g_ClientMain.m_lpCommonInterface->DestroyFullScreen(); } return; } // ½ºÅ³ ij½ºÆÃ ó¸® if(g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_bStillCasting) { if(m_pCastingEffect == NULL) { // ij½ºÆÃ ½ÃÀÛ½Ã. // _ASSERTE(_CrtCheckMemory()); m_pCastingEffect = new CEffScript; if(g_ClientMain.m_csStatus.m_lstEquipment[11 + g_ClientMain.m_csStatus.m_cWeaponPos]) { m_pCastingEffect->SetSkillInfo(g_ClientMain.m_csStatus.m_Info.Sex, g_ClientMain.m_csStatus.m_lstEquipment[11 + g_ClientMain.m_csStatus.m_cWeaponPos]->GetItemType()); } else { m_pCastingEffect->SetSkillInfo(g_ClientMain.m_csStatus.m_Info.Sex, 0); } switch(g_ClientMain.m_csStatus.m_lpQuickSelected->GetProtoTypeID()) { case 0x9506: //aimedshot m_pCastingEffect->GetScriptBinData("ready_akanarrow.esf"); m_pCastingEffect->SetCast(true); break; /*case 0x9407: //turnpunch m_pCastingEffect->GetScriptBinData("ready_tpunch.esf"); m_pCastingEffect->SetCast(true); break;*/ /*case 0x9603: //shock break; case 0x9202: //magic missile break; */ default: m_pCastingEffect->GetScriptBinData("casting_acol.esf"); break; } D3DXVECTOR3 effstartpos(g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.x, g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.y, g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.z); float fChrDir = g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_fDirection; fChrDir = -fChrDir; fChrDir -= FLOAT_PHI / 2.0f; vector3 vecChrToward; vecChrToward.x = cosf(fChrDir); vecChrToward.z = sinf(fChrDir); vecChrToward.y = 0.0f; vecChrToward.Normalize(); m_pCastingEffect->SetChrFwd(-vecChrToward.x, -vecChrToward.y, -vecChrToward.z); //¿À¸¥¼Õ À§Ä¡ CZ3DObject *snappoint = NULL; float body_scale = 0.0f; vector3 r_hand(0.0f,0.0f,0.0f); if((g_ClientMain.m_csStatus.m_lpQuickSelected->GetProtoTypeID() == 0x9506)/* || (g_ClientMain.m_csStatus.m_lpQuickSelected->GetProtoTypeID() == 0x9407)*/) { //rhand snappoint = g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_lpChrModel->GetSkeletonPartObject("L_HAND"); body_scale = g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_lpChrModel->GetScale(); if(snappoint != NULL) { vector3 snaptm; snappoint->GetPosition(snaptm); r_hand.x = snaptm.x; r_hand.y = snaptm.y; r_hand.z = snaptm.z; r_hand *= body_scale; } } // m_pCastingEffect->SetStartPos(effstartpos.x + r_hand.x,effstartpos.y + r_hand.y,effstartpos.z + r_hand.z); m_pCastingEffect->SetEndPos(effstartpos.x,effstartpos.y,effstartpos.z); CSceneManager::AddEffectScript(m_pCastingEffect); } else { D3DXVECTOR3 effstartpos(g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.x, g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.y, g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.z); float fChrDir = g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_fDirection; fChrDir = -fChrDir; fChrDir -= FLOAT_PHI / 2.0f; vector3 vecChrToward; vecChrToward.x = cosf(fChrDir); vecChrToward.z = sinf(fChrDir); vecChrToward.y = 0.0f; vecChrToward.Normalize(); m_pCastingEffect->SetChrFwd(-vecChrToward.x, -vecChrToward.y, -vecChrToward.z); //¿À¸¥¼Õ À§Ä¡ CZ3DObject *snappoint = NULL; float body_scale = 0.0f; vector3 r_hand(0.0f,0.0f,0.0f); if((g_ClientMain.m_csStatus.m_lpQuickSelected->GetProtoTypeID() == 0x9506)/* || (g_ClientMain.m_csStatus.m_lpQuickSelected->GetProtoTypeID() == 0x9407)*/) { //rhand snappoint = g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_lpChrModel->GetSkeletonPartObject("L_HAND"); body_scale = g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_lpChrModel->GetScale(); if(snappoint != NULL) { vector3 snaptm; snappoint->GetPosition(snaptm); r_hand.x = snaptm.x; r_hand.y = snaptm.y; r_hand.z = snaptm.z; r_hand *= body_scale; } } // m_pCastingEffect->SetStartPos(effstartpos.x + r_hand.x,effstartpos.y + r_hand.y,effstartpos.z + r_hand.z); m_pCastingEffect->SetEndPos(effstartpos.x,effstartpos.y,effstartpos.z); } unsigned short wSkill = g_ClientMain.m_csStatus.m_lpQuickSelected->GetProtoTypeID(); unsigned short wLock = g_ClientMain.m_csStatus.m_lpQuickSelected->GetMaxDurability(); unsigned short wLevel = g_ClientMain.m_csStatus.m_lpQuickSelected->GetNowDurability(); unsigned long dwLevelTick; const Skill::ProtoType *lpSkillTypeTemp = g_SkillMgr.GetSkillProtoType(wSkill); const Skill::ProtoType *lpSkillType = NULL; if(lpSkillTypeTemp) lpSkillType = &lpSkillTypeTemp[g_CharacterData.m_dwCastingSkillGrade]; if(lpSkillType) { unsigned long level; if(wLock == g_CharacterData.m_dwCastingSkillGrade) level = wLevel; else if(wLock > g_CharacterData.m_dwCastingSkillGrade) level = 6; /////// ij½ºÆÃ ŸÀÓ¿¡ µ¦½º Àû¿ë dwLevelTick = lpSkillType->m_LevelTick * ((500 - ((g_ClientMain.m_csStatus.m_Info.DEX + g_ClientMain.m_csStatus.m_lAddDEX) - 20)) / 500.0f); if(g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->GetChantFlag(27)) g_CharacterData.m_dwCastingSkillTick = timeGetTime() - g_CharacterData.m_dwStartSkillTick; else g_CharacterData.m_dwCastingSkillTick = (timeGetTime() - g_CharacterData.m_dwStartSkillTick) / 2; if(g_CharacterData.m_dwCastingSkillTick < lpSkillType->m_StartTick + dwLevelTick) //±×·¹À̵尡 ³ô¾ÆÁö¸é 0·¹º§¿¡¼­ºÎÅÍ ½ÃÀü g_CharacterData.m_dwCastingSkillTick = dwLevelTick; else g_CharacterData.m_dwCastingSkillTick -= lpSkillType->m_StartTick; if(g_CharacterData.m_dwCastingSkillTick > level * dwLevelTick) { if(g_CharacterData.m_dwCastingSkillGrade < wLock) { g_CharacterData.m_dwCastingSkillGrade++; g_CharacterData.m_dwStartSkillTick = timeGetTime(); g_CharacterData.m_dwCastingSkillTick = 0; // ±×·¹À̵å Áõ°¡½Ã ¸¶´Ù Æ¢°ÜÁÖ´Â effect CEffScript *test_script; // _ASSERTE(_CrtCheckMemory()); test_script = new CEffScript; switch(g_ClientMain.m_csStatus.m_lpQuickSelected->GetProtoTypeID()) { case 0x9506: //aimedshot /*case 0x9407: //turnpunch test_script->GetScriptBinData("Archer_up.esf"); break;*/ /*case 0x9603: //shock break; case 0x9202: //magic missile break; */ default: test_script->GetScriptBinData("casting_acol_up.esf"); break; } D3DXVECTOR3 startpos(g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.x, g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.y, g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.z); test_script->SetStartPos(startpos.x,startpos.y,startpos.z); test_script->SetEndPos(startpos.x,startpos.y,startpos.z); CSceneManager::AddEffectScript(test_script); } else { g_CharacterData.m_dwCastingSkillTick = level * dwLevelTick; } } m_lpSkillGauge[0]->SetRate(0.0f); m_lpSkillGauge[1]->SetRate(0.0f); m_lpSkillGauge[2]->SetRate(0.0f); m_lpSkillGauge[3]->SetRate(0.0f); m_lpSkillGauge[4]->SetRate(0.0f); m_lpSkillGauge[g_CharacterData.m_dwCastingSkillGrade]->SetRate((g_CharacterData.m_dwCastingSkillTick / (float)(dwLevelTick * 6))); } } else { if(m_pCastingEffect) { // ij½ºÆÃ ³¡À϶§ effect ÇØÁ¦ CSceneManager::m_EffectManager.DeleteEndScript(m_pCastingEffect); m_pCastingEffect = NULL; } } if(g_ClientMain.m_bShowCursor) g_CharacterData.SetCamera(0, 0, g_DeviceInput.m_lMMoveZ); else g_CharacterData.SetCamera(g_DeviceInput.m_ptMovePos.x, g_DeviceInput.m_ptMovePos.y, g_DeviceInput.m_lMMoveZ); NPCSpawn(); g_CharacterData.Update(fCreatureUpdate); if(g_MessageBoxManager.m_lstMessageBox.size()) { if(g_MessageBoxManager.GetIsExistModal()) { bEdge = TRUE; bClick = TRUE; } if(g_MessageBoxManager.Update()) return; } if(m_dwPartyCmdResult & MB_YES) { switch(m_dwPartyCmdType) { case ClientSocket::PartyCmd_Invite: g_ClientMain.m_Network.SendPartyCmd(m_dwPartyCmdSenderID, ClientSocket::PartyCmd_Accept); break; } m_dwPartyCmdResult = 0; m_dwPartyCmdType = 0; return; } else if(m_dwPartyCmdResult & MB_NO || m_dwPartyCmdResult & MB_EXIT) { switch(m_dwPartyCmdType) { case ClientSocket::PartyCmd_Invite: g_ClientMain.m_Network.SendPartyCmd(m_dwPartyCmdSenderID, ClientSocket::PartyCmd_Refuse); break; } m_dwPartyCmdResult = 0; m_dwPartyCmdType = 0; return; } if(m_dwExchangeCmdResult & MB_YES) { switch(m_dwExchangeCmdType) { case ClientSocket::ExchangeCmd_Propose: g_ClientMain.m_Network.SendExchangeCmd(m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_Accept); break; } m_dwExchangeCmdResult = 0; m_dwExchangeCmdType = 0; return; } else if(m_dwExchangeCmdResult & MB_NO || m_dwExchangeCmdResult & MB_EXIT) { switch(m_dwExchangeCmdType) { case ClientSocket::ExchangeCmd_Propose: g_ClientMain.m_Network.SendExchangeCmd(m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_Refuse); break; } m_dwExchangeCmdResult = 0; m_dwExchangeCmdType = 0; return; } if(m_dwPartyDuelCmdResult & MB_YES) { switch(m_dwPartyDuelCmdType) { case ClientSocket::DuelCmd_RequestPartyInfo: g_ClientMain.m_Network.m_pSocket->CharDuelCmd(g_ClientMain.m_dwMyChrID, m_dwPartyDuelCmdSenderID, ClientSocket::DuelCmd_PartyPropose); break; case ClientSocket::DuelCmd_PartyPropose: g_ClientMain.m_Network.m_pSocket->CharDuelCmd(g_ClientMain.m_dwMyChrID, m_dwPartyDuelCmdSenderID, ClientSocket::DuelCmd_PartyReady); break; } m_dwPartyDuelCmdResult = 0; m_dwPartyDuelCmdType = 0; return; } else if(m_dwPartyDuelCmdResult & MB_NO || m_dwPartyDuelCmdResult & MB_EXIT) { switch(m_dwPartyDuelCmdType) { case ClientSocket::DuelCmd_PartyPropose: g_ClientMain.m_Network.m_pSocket->CharDuelCmd(g_ClientMain.m_dwMyChrID, m_dwPartyDuelCmdSenderID, ClientSocket::DuelCmd_Refuse); break; } m_dwPartyDuelCmdResult = 0; m_dwPartyDuelCmdType = 0; return; } if(m_dwDuelCmdResult & MB_YES) { switch(m_dwDuelCmdType) { case ClientSocket::DuelCmd_Propose: g_ClientMain.m_Network.m_pSocket->CharDuelCmd(g_ClientMain.m_dwMyChrID, m_dwDuelCmdSenderID, ClientSocket::DuelCmd_Ready); break; case 100: CNetwork::m_pSocket->CharDuelCmd(g_ClientMain.m_dwMyChrID, m_dwDuelCmdSenderID, ClientSocket::DuelCmd_Propose); g_TextEdit.AddMessage(g_StringTable.m_strString[507], g_ClientMain.m_dwMyChrID, 128); break; } m_dwDuelCmdResult = 0; m_dwDuelCmdType = 0; return; } else if(m_dwDuelCmdResult & MB_NO || m_dwDuelCmdResult & MB_EXIT) { switch(m_dwDuelCmdType) { case ClientSocket::DuelCmd_Propose: g_ClientMain.m_Network.m_pSocket->CharDuelCmd(g_ClientMain.m_dwMyChrID, m_dwDuelCmdSenderID, ClientSocket::DuelCmd_Refuse); break; } m_dwDuelCmdResult = 0; m_dwDuelCmdType = 0; return; } if(!bEdge) { if(m_bPopupShow) { bEdge = TRUE; bClick = TRUE; if(UpdatePopup()) return; else if(g_DeviceInput.GetIsLeftMouseDown() || g_DeviceInput.KeyDown('W') || g_DeviceInput.KeyDown('S') || g_DeviceInput.KeyDown('A') || g_DeviceInput.KeyDown('D')) { m_bPopupShow=FALSE; } } if(g_ClientMain.m_bSimpleMode) { if(m_lstWindow[11]->m_bShow) m_lstWindow[11]->Update(bClick, bEdge); // °£·« ¸ðµå â if(m_lstWindow[15]->m_bShow) m_lstWindow[15]->Update(bClick, bEdge); // °£·« äÆÃâ } else { if(m_lstWindow[0]->m_bShow) m_lstWindow[0]->Update(bClick, bEdge); // ¹Ì´Ï ½ºÅÈ if(m_lstWindow[1]->m_bShow) m_lstWindow[1]->Update(bClick, bEdge); // äÆÃâ if(m_lstWindow[2]->m_bShow) m_lstWindow[2]->Update(bClick, bEdge); // ¼ôÄÆ â } if(m_lstWindow[7]->m_bShow) if(!m_lstWindow[7]->Update(bClick, bEdge)) return; // ¿É¼Ç â if(m_lstWindow[3]->m_bShow) m_lstWindow[3]->Update(bClick, bEdge); // ½ºÅ×ÀÌÅͽº â if(m_lstWindow[4]->m_bShow) m_lstWindow[4]->Update(bClick, bEdge); // ½ºÅ³ â if(m_lstWindow[5]->m_bShow) m_lstWindow[5]->Update(bClick, bEdge); // Àκ¥Å丮 â if(m_lstWindow[6]->m_bShow) m_lstWindow[6]->Update(bClick, bEdge); // »çȸ â if(m_lstWindow[8]->m_bShow) m_lstWindow[8]->Update(bClick, bEdge); // »óÁ¡ â if(m_lstWindow[9]->m_bShow) m_lstWindow[9]->Update(bClick, bEdge); // ¹Ì´Ï¸Ê if(m_lstWindow[10]->m_bShow) m_lstWindow[10]->Update(bClick, bEdge); // Äü ½½·Ô if(m_lstWindow[13]->m_bShow) m_lstWindow[13]->Update(bClick, bEdge); // ¾÷±×·¹À̵åâ if(m_lstWindow[14]->m_bShow) m_lstWindow[14]->Update(bClick, bEdge); // ÀüÁ÷â if(m_lstWindow[16]->m_bShow) m_lstWindow[16]->Update(bClick, bEdge); // ±³È¯Ã¢ if(m_lstWindow[17]->m_bShow) m_lstWindow[17]->Update(bClick, bEdge); // ä³Î ¼±ÅÃâ if(m_lstWindow[18]->m_bShow) m_lstWindow[18]->Update(bClick, bEdge); // ¸®½ºÆù â if(m_lstWindow[19]->m_bShow) m_lstWindow[19]->Update(bClick, bEdge); // º¸°üâ°í â if(m_lstWindow[20]->m_bShow) m_lstWindow[20]->Update(bClick, bEdge); // ³ëÁ¡»ó â if(m_lstWindow[21]->m_bShow) m_lstWindow[21]->Update(bClick, bEdge); // Äù½ºÆ® ¼³¸íâ if(!(m_lstWindow[3]->m_bShow || m_lstWindow[4]->m_bShow || m_lstWindow[5]->m_bShow || m_lstWindow[6]->m_bShow)) { m_lstWindow[12]->Update(bClick, bEdge); // ¹Ì´Ï ÆÄƼ } } if(g_ClientMain.m_bTargetMouseMode && !bEdge) { if(g_DeviceInput.GetIsLeftMouseDown()) { // Ÿ°Ù ó¸® POINT *ptMouserPos = g_DeviceInput.GetMousePosition(); CZ3DGeneralChrModel *pSelectChr = NULL; pSelectChr = CSceneManager::PickingCharacter(ptMouserPos->x, ptMouserPos->y); if(pSelectChr) { CCreature *lpCreature = g_CharacterData.GetCreature(pSelectChr); unsigned long dwType = g_CharacterData.GetClientType(lpCreature->m_dwChrID, TRUE); if(dwType == CT_MONSTER) { // ó¸® CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create("¸ó½ºÅͰ¡ ¶¹´Ù."); } else if(dwType == CT_NPC) { // ó¸® CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create("NPC·Î ÇìÃĸð¿©"); } else if(dwType == CT_PC) { // ó¸® CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create("PC·Î ÇìÃĸð¿©"); } } else { vector3 vecClickPos = CSceneManager::PickMousePos(ptMouserPos->x, ptMouserPos->y); // ó¸® char strText[200]; sprintf(strText, "%f, %f, %f", vecClickPos.x, vecClickPos.y, vecClickPos.z); CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(strText); } g_ClientMain.m_bTargetMouseMode = FALSE; } } if(bEdge) { m_dwNormalTargetChrID = 0xFFFFFFFF; if(g_CharacterData.m_bAutoTargetAttack) m_dwRangedWeaponTargetChrID = g_CharacterData.m_dwAutoTargetID; else m_dwRangedWeaponTargetChrID = 0xFFFFFFFF; if(!g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_bStillCasting) m_dwSpecialTargetChrID = 0xFFFFFFFF; } else { if(!g_ClientMain.m_bMouseMode) { // ij¸¯ÅÍ ¼±Åà POINT *ptMousePos = g_DeviceInput.GetMousePosition(); m_dwNormalTargetChrID = g_ClientMain.GetScreenPosChr(*ptMousePos, 0, 1000.0f); if(g_ClientMain.m_csStatus.m_bRangedWeapon) { float fLength = 1800.0f; if(g_ClientMain.m_csStatus.m_Info.Class == 8) fLength += 600.0f; m_dwRangedWeaponTargetChrID = g_ClientMain.GetScreenPosChr(*ptMousePos, Skill::Target::ENEMY, fLength); if(m_dwRangedWeaponTargetChrID != 0xFFFFFFFF) { if(g_CharacterData.GetClientType(m_dwRangedWeaponTargetChrID, TRUE) == CT_MONSTER) { if(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos]) { unsigned long dwType = g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos]->GetItemType(); g_CharacterData.m_bAttackable = FALSE; if(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::SHIELD_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos]) { unsigned long dwArrowType = g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::SHIELD_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos]->GetItemType(); switch(dwType) { case Item::CItemType::BOW: if(dwArrowType == Item::CItemType::ARROW) g_CharacterData.m_bAttackable = TRUE; break; case Item::CItemType::CROSSBOW: if(dwArrowType == Item::CItemType::BOLT) g_CharacterData.m_bAttackable = TRUE; break; } } } } else { g_CharacterData.m_bAttackable = FALSE; m_dwRangedWeaponTargetChrID = 0xFFFFFFFF; } } else g_CharacterData.m_bAttackable = FALSE; } else { m_dwRangedWeaponTargetChrID = 0xFFFFFFFF; g_CharacterData.m_bAttackable = TRUE; } if(g_ClientMain.m_csStatus.m_lpQuickSelected && !g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_bStillCasting) { const Skill::ProtoType *lpSkill = g_SkillMgr.GetSkillProtoType(g_ClientMain.m_csStatus.m_lpQuickSelected->GetProtoTypeID()); if(lpSkill) { lpSkill = &lpSkill[g_ClientMain.m_csStatus.m_lpQuickSelected->GetMaxDurability()]; m_dwSpecialTargetChrID = g_ClientMain.GetScreenPosChr(*ptMousePos, lpSkill->m_eTargetType, lpSkill->m_EffectDistance * 100.0f); } else { m_dwSpecialTargetChrID = 0xFFFFFFFF; } } } else { POINT *ptMousePos = g_DeviceInput.GetMousePosition(); m_dwNormalTargetChrID = g_CharacterData.m_dwNormalTargetID; m_dwSpecialTargetChrID = g_CharacterData.m_dwSpecialTargetID; if(g_ClientMain.m_csStatus.m_bRangedWeapon) { if(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos]) { unsigned long dwType = g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos]->GetItemType(); g_CharacterData.m_bAttackable = FALSE; if(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::SHIELD_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos]) { unsigned long dwArrowType = g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::SHIELD_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos]->GetItemType(); switch(dwType) { case Item::CItemType::BOW: if(dwArrowType == Item::CItemType::ARROW) g_CharacterData.m_bAttackable = TRUE; break; case Item::CItemType::CROSSBOW: if(dwArrowType == Item::CItemType::BOLT) g_CharacterData.m_bAttackable = TRUE; break; } } } } else { g_CharacterData.m_bAttackable = TRUE; } m_dwRangedWeaponTargetChrID = g_CharacterData.m_dwNormalTargetMonsterID; } // NPC ÆÇ³Ú Âï±â m_bClickButton = FALSE; unsigned long dwLength; for(int i = g_CharacterData.m_lstCharData.num - 1; i >= 0; i--) { if( g_CharacterData.m_lstCharData[i]->m_bUsed && !g_CharacterData.m_lstCharData[i]->m_bCharDead) { vector3 vecResult; float fW; vector3 vecPos = g_CharacterData.m_lstCharData[i]->m_vecPos; vecPos.y += 240.0f; BaseGraphicsLayer::TransformVector(vecPos, vecResult, fW); if(vecResult.z < 0.0f) continue; if(vecResult.z > 1.0f) continue; vecPos = g_CharacterData.m_lstCharData[i]->m_vecPos - g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos; if(vecPos.GetLens() < 2000.0f) { switch(g_CharacterData.GetClientType(g_CharacterData.m_lstCharData[i]->m_dwChrID)) { case CT_PC: if(strcmp(g_CharacterData.m_lstCharData[i]->m_strStreetStallName, "")) { dwLength = g_TextEdit.GetStringLength(g_CharacterData.m_lstCharData[i]->m_strStreetStallName); if(g_DeviceInput.InRect(vecResult.x - (dwLength / 2 + 21), vecResult.y - 20, vecResult.x + (dwLength / 2 + 23), vecResult.y + 10)) { m_dwNormalTargetChrID = g_CharacterData.m_lstCharData[i]->m_dwChrID; m_bClickButton = TRUE; } } break; case CT_NPC: { dwLength = g_TextEdit.GetStringLength(g_CharacterData.m_lstCharData[i]->m_strName); if(g_DeviceInput.InRect(vecResult.x - (dwLength / 2 + 21), vecResult.y, vecResult.x + (dwLength / 2 + 23), vecResult.y + 30)) { m_dwNormalTargetChrID = g_CharacterData.m_lstCharData[i]->m_dwChrID; m_bClickButton = TRUE; } } break; } } } } if(!g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_bCharDead) { if(!g_TextEdit.IsFocus() && !g_ClientMain.m_lpPickItem && g_CharacterData.m_lstCharData.num>0) { // ¾ÆÀÌÅÛ Áý±â { POINT *ptMousePos = g_DeviceInput.GetMousePosition(); BOOL bOverMouse = FALSE; unsigned long nSelectItem = g_ClientMain.m_lpSceneManager->MouseOnCheckInstanceObject(ptMousePos->x, ptMousePos->y); if(nSelectItem != 0xFFFFFFFF) { LPFieldInstance lpInstanceItem = g_ClientMain.GetFieldObject(nSelectItem); if(lpInstanceItem) { vector3 vecPos = g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos; vecPos.y = 0.0f; vector3 vecItem = vector3(lpInstanceItem->m_Pos.fPointX, 0.0f, lpInstanceItem->m_Pos.fPointZ); vector3 vecLen = vecPos - vecItem; if(vecLen.GetLens() < 300.0f) { bOverMouse = TRUE; } else { bOverMouse = FALSE; nSelectItem = 0xFFFFFFFF; } } else { bOverMouse = FALSE; nSelectItem = 0xFFFFFFFF; } } static CEffScript *pMousePointEff=NULL; if(pMousePointEff && nSelectItem == 0xFFFFFFFF) { pMousePointEff->SetStartPos(0.0f,0.0f,0.0f); pMousePointEff->SetEndPos(0.0f,0.0f,0.0f); } if(nSelectItem == 0xFFFFFFFF) { if(g_ClientMain.m_lstFieldItem.size()) { list::iterator it; vector3 vecPos = g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos; vecPos.y = 0.0f; vector3 vecItem, vecLen; for(it = g_ClientMain.m_lstFieldItem.begin(); it != g_ClientMain.m_lstFieldItem.end(); it++) { vecItem = vector3((*it)->m_Pos.fPointX, 0.0f, (*it)->m_Pos.fPointZ); vecLen = vecPos - vecItem; if(vecLen.GetLens() < 300.0f) { nSelectItem = (*it)->m_dwInstanceID; break; } } } } if(nSelectItem != 0xFFFFFFFF) { if((g_DeviceInput.GetIsLeftMouseDown() && bOverMouse) || (!g_TextEdit.IsFocus() && g_DeviceInput.KeyDown('E'))) { Item::ItemPos pItemIndex; LPFieldInstance lpInstance = g_ClientMain.GetFieldObject(nSelectItem); if(lpInstance) { vector3 vecItem = vector3(lpInstance->m_Pos.fPointX, 0.0f, lpInstance->m_Pos.fPointZ); vector3 vecSelf = g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos; vecSelf.y = 0.0f; vecSelf -= vecItem; if(vecSelf.GetLens() < 300.0f) { unsigned char cIndexNum; if(!(lpInstance->m_dwTypeID & FieldObject::Gold)) { cIndexNum = g_ClientMain.m_csStatus.GetAbleInven(lpInstance, pItemIndex); } else { cIndexNum = 1; pItemIndex.m_cIndex = 0; pItemIndex.m_cPos = 0; } if(cIndexNum) { g_ClientMain.m_Network.SendFieldObjectPickUp(lpInstance->m_dwOID, pItemIndex); } else { g_TextEdit.AddMessage(g_StringTable.m_strString[142], g_ClientMain.m_dwMyChrID, 129); } return; } } } else { LPFieldInstance lpInstance = g_ClientMain.GetFieldObject(nSelectItem); if(lpInstance)// && m_nPreSelectItem!=nSelectItem) { vector3 vecItem = vector3(lpInstance->m_Pos.fPointX, 0.0f, lpInstance->m_Pos.fPointZ); if(vecItem.y<=50.0f) vecItem.y=CSceneManager::m_HeightField.GetHeight(vecItem); if(pMousePointEff==NULL) { // _ASSERTE(_CrtCheckMemory()); pMousePointEff=new CEffScript; CSceneManager::AddEffectScript(pMousePointEff); pMousePointEff->GetScriptBinData("inter-item.esf"); } pMousePointEff->SetStartPos(vecItem.x, vecItem.y + 30.0f, vecItem.z); pMousePointEff->SetEndPos(vecItem.x, vecItem.y + 30.0f,vecItem.z); } } } m_nPreSelectItem = nSelectItem; } ///// NPC ¼±ÅÃÇϱâ if(m_dwNormalTargetChrID != 0xFFFFFFFF) { if(GetBusy()) { g_CharacterData.m_bCharacterTargetNear = FALSE; g_CharacterData.m_dwNormalTargetID = 0xFFFFFFFF; } else { if(SelectNPC(m_dwNormalTargetChrID, m_bClickButton)) return; } } } if(g_ClientMain.m_lpPickItem && g_DeviceInput.GetIsLeftMouseDown() && (g_ClientMain.m_lpPickItem->GetItemPos() != ClientSocket::ItemPos_Exchange && g_ClientMain.m_lpPickItem->GetItemPos() != ClientSocket::ItemPos_Deposit)) // ¾ÆÀÌÅÛ ¹ö¸®±â { if(g_ClientMain.m_lpPickItem->m_bSkill) { if(g_ClientMain.m_lpPickItem->GetItemPos()== ClientSocket::ItemPos_SSlot) { delete g_ClientMain.m_lpPickItem; g_ClientMain.SetPickItem(NULL); } else if(g_ClientMain.m_lpPickItem->GetItemPos() == ClientSocket::ItemPos_QSlot) { // ÆÐŶÀ» º¸³»¼­ ¾Æ¿¹ ¾ø¾Ö¹ö¸°´Ù. TakeItem g_ClientMain.m_Network.SendQuickSlotMove(g_ClientMain.m_lpPickItem, ClientSocket::ItemPos_None, 0); } } else { if(g_ClientMain.m_lpPickItem->GetItemPos() == ClientSocket::ItemPos_QSlot) { g_ClientMain.m_Network.SendQuickSlotMove(g_ClientMain.m_lpPickItem, ClientSocket::ItemPos_None, 0); } else if(g_ClientMain.m_lpPickItem->GetItemPos() == ClientSocket::ItemPos_Stall) { delete g_ClientMain.m_lpPickItem; g_ClientMain.SetPickItem(NULL); } else { unsigned long dwNum; if(g_ClientMain.m_lpPickItem->GetIsEnableStack()) dwNum = g_ClientMain.m_lpPickItem->GetNowDurability(); else dwNum = 1; g_ClientMain.m_Network.SendFieldObjectPullDown(dwNum, g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); } } return; } } } if(g_ClientMain.m_lpPickItem) // ¸¶¿ì½º¿¡ ÁýÇôÀÖ´Â ¾ÆÀÌÅÛ À§Ä¡ º¸Á¤ { POINT *ptMousePos = g_DeviceInput.GetMousePosition(); g_ClientMain.m_lpPickItem->m_wPutX = ptMousePos->x; g_ClientMain.m_lpPickItem->m_wPutY = ptMousePos->y; } if(bClick || g_TextEdit.IsFocus()) // äÆÃÁßÀΰ¡ °Ë»ç { g_CharacterData.UpdateSelfCharacter(FALSE, bEdge); } else { g_CharacterData.UpdateSelfCharacter(!bClick, bEdge); } if(g_CharacterData.m_lstCharData.num == 0) return; if(g_ClientMain.m_bMouseMode) { m_dwSpecialTargetChrID = g_CharacterData.m_dwSpecialTargetID; } if(!g_CharacterData.m_bAttackResult) { if(g_ClientMain.m_csStatus.m_lstEquipment[11 + g_ClientMain.m_csStatus.m_cWeaponPos]) { unsigned long dwType = g_ClientMain.m_csStatus.m_lstEquipment[11 + g_ClientMain.m_csStatus.m_cWeaponPos]->GetItemType(); switch(dwType) { case Item::CItemType::BOW: g_TextEdit.AddMessage(g_StringTable.m_strString[151], g_ClientMain.m_dwMyChrID, 129); break; case Item::CItemType::CROSSBOW: g_TextEdit.AddMessage(g_StringTable.m_strString[152], g_ClientMain.m_dwMyChrID, 129); break; } }/**/ g_CharacterData.m_bAttackResult = TRUE; } if(g_DeviceInput.GetIsRightMouseUp()) { m_bShowSkillError = FALSE; } // ½ºÅ³ ¹ßµ¿ if((g_CharacterData.m_bSkillExecuted || g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_bStillCasting)) { ProcessSkill(); } if(g_CharacterData.m_nFocusCharacter >= 0) { try { CBGMController & BGMC = CBGMController::GetInstance(); BGMC.Update( g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.x, g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.y, g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos.z); } catch(exception & e) { MessageBox(NULL, e.what(), " ", MB_OK); } } } void CAkhanGUI::RenderGame(LPDIRECT3DDEVICE8 lpD3DDevice) { lpD3DDevice->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_LINEAR); lpD3DDevice->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR); lpD3DDevice->SetTextureStageState(0, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP); lpD3DDevice->SetTextureStageState(0, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP); lpD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); lpD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW); lpD3DDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); lpD3DDevice->SetRenderState(D3DRS_FOGENABLE, TRUE); lpD3DDevice->SetRenderState(D3DRS_LIGHTING, TRUE); if(g_ClientMain.m_dwClientState == GAME_PLAYING) { g_ClientMain.m_lpSceneManager->Render(); g_CharacterData.Render(BaseGraphicsLayer::GetDevice()); lpD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); lpD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE); lpD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); lpD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE); lpD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_TEXTURE); lpD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); lpD3DDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_DISABLE); lpD3DDevice->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_DISABLE); lpD3DDevice->SetTextureStageState(0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP); lpD3DDevice->SetTextureStageState(0, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP); lpD3DDevice->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_POINT); lpD3DDevice->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_POINT); lpD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); lpD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); lpD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); lpD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); lpD3DDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS); lpD3DDevice->SetRenderState(D3DRS_FOGENABLE, FALSE); lpD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE); // char strDamage[10]; // RECT rcDamage; for(int i = g_CharacterData.m_lstCharData.num-1 ; i >= 0 ; i--) { if(g_CharacterData.m_lstCharData[i]->m_fChatTimer) { g_CharacterData.m_lstCharData[i]->m_fChatTimer -= CFrameTimer::GetUpdateTimer(g_ClientMain.m_nShowInterfaceTimerID) * 2.0f; if(g_CharacterData.m_lstCharData[i]->m_fChatTimer <= 0.0f) g_CharacterData.m_lstCharData[i]->m_fChatTimer = 0.0f; } //if(g_CharacterData.m_lstCharData[i]->m_lpChrModel && g_CharacterData.m_lstCharData[i]->m_bUsed && g_CharacterData.m_lstCharData[i]->m_bCharDead==FALSE) if( g_CharacterData.m_lstCharData[i]->m_bUsed) { vector3 vecResult, vecDamageResult, vecTextResult; float fW; vector3 vecPos = g_CharacterData.m_lstCharData[i]->m_vecPos; vecPos.y += 240.0f; BaseGraphicsLayer::TransformVector(vecPos, vecResult, fW); if(vecResult.z < 0.0f) continue; if(vecResult.z > 1.0f) continue; vector3 vecDamagePos = g_CharacterData.m_lstCharData[i]->m_vecPos; vecDamagePos.y += 150.0f; BaseGraphicsLayer::TransformVector(vecDamagePos, vecDamageResult, fW); if(vecDamageResult.z < 0.0f) continue; if(vecDamageResult.z > 1.0f) continue; vector3 vecTextPos = g_CharacterData.m_lstCharData[i]->m_vecPos; vecTextPos.y += 50.0f; BaseGraphicsLayer::TransformVector(vecTextPos, vecTextResult, fW); if(vecTextResult.z < 0.0f) continue; if(vecTextResult.z > 1.0f) continue; vecPos = g_CharacterData.m_lstCharData[i]->m_vecPos - g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_vecPos; if(vecPos.GetLens() < 2400.0f) { switch(g_CharacterData.GetClientType(g_CharacterData.m_lstCharData[i]->m_dwChrID, TRUE)) { case CT_PC: if(!g_CharacterData.m_lstCharData[i]->m_bCharDead && !g_ClientMain.m_bMovieVersion) { if(g_CharacterData.m_lstCharData[i]->m_fChatTimer) { RECT rcRect = { vecResult.x - 150, vecResult.y - 30, vecResult.x + 150, vecResult.y + 30 }; rcRect.left++; rcRect.right++; rcRect.top++; rcRect.bottom++; g_TextEdit.DrawText(g_CharacterData.m_lstCharData[i]->m_strChatMessage, &rcRect, DT_CENTER | DT_WORDBREAK, D3DCOLOR_RGBA(0, 0, 0, 255)); rcRect.left--; rcRect.right--; rcRect.top--; rcRect.bottom--; g_TextEdit.DrawText(g_CharacterData.m_lstCharData[i]->m_strChatMessage, &rcRect, DT_CENTER | DT_WORDBREAK, D3DCOLOR_RGBA(255, 255, 255, 255)); } else { if(i != g_CharacterData.m_nFocusCharacter) { RenderChrName(lpD3DDevice, g_CharacterData.m_lstCharData[i]->m_dwChrID, vecResult.x, vecResult.y); if(strcmp(g_CharacterData.m_lstCharData[i]->m_strStreetStallName, "")) { RenderChrButton(lpD3DDevice, g_CharacterData.m_lstCharData[i]->m_strStreetStallName, vecResult.x, vecResult.y - 20); } } } }/**/ if(g_CharacterData.m_lstCharData[i]->m_lstDamageNumber.num) { float fUpdate = CFrameTimer::GetUpdateTimer(g_ClientMain.m_nShowInterfaceTimerID); stDamage *lpDamage; short wAlpha; for(int d = 0; d < g_CharacterData.m_lstCharData[i]->m_lstDamageNumber.num;) { lpDamage = &g_CharacterData.m_lstCharData[i]->m_lstDamageNumber[d]; wAlpha = (lpDamage->sLifeTime / 1500.0f * 255.0f); if(wAlpha < 0) wAlpha = 0; if(!g_ClientMain.m_bMovieVersion) { switch(lpDamage->wMode) { case ClientSocket::Judge_Front: case ClientSocket::Judge_Side: case ClientSocket::Judge_Back: case ClientSocket::Judge_Poisoned: g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 1, lpDamage->lValue, lpDamage->fScale); break; case ClientSocket::Judge_Heal: g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 3, lpDamage->lValue, lpDamage->fScale); break; case ClientSocket::Judge_ManaHeal: g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 2, lpDamage->lValue, lpDamage->fScale); break; case ClientSocket::Judge_Guard: g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 7, lpDamage->lValue, lpDamage->fScale); break; case ClientSocket::Judge_Critical: if(lpDamage->sLifeTime >= 1200) { g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 6, lpDamage->lValue, (5.0f - (1.0f - ((lpDamage->sLifeTime - 1200.0f) / 300.0f)) * 4.0f) * lpDamage->fScale); // 150, 6, lpDamage->lValue, 3.0f - (1.0f - ((lpDamage->sLifeTime - 500.0f) / 1000.0f)) * 2.0f); } else { g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 6, lpDamage->lValue, lpDamage->fScale); } break; case ClientSocket::Judge_Evade: g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 9, lpDamage->lValue, lpDamage->fScale); break; case ClientSocket::Judge_Resist: g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 10, lpDamage->lValue, lpDamage->fScale); break; }/**/ } if(lpDamage->sLifeTime <= 0) { g_CharacterData.m_lstCharData[i]->m_lstDamageNumber.DelIndex(d); continue; } else { d++; } lpDamage->sLifeTime -= fUpdate * 2.0f; } } break; case CT_NPC: if(!g_CharacterData.m_lstCharData[i]->m_bCharDead && !g_ClientMain.m_bMovieVersion) { RenderChrButton(lpD3DDevice, g_CharacterData.m_lstCharData[i]->m_dwChrID, vecResult.x, vecResult.y); }/**/ break; case CT_MONSTER: if(!g_ClientMain.m_bMovieVersion && !g_CharacterData.m_lstCharData[i]->GetChantFlag(17)) { if(!g_CharacterData.m_lstCharData[i]->m_bCharDead) { RenderChrName(lpD3DDevice, g_CharacterData.m_lstCharData[i]->m_dwChrID, vecResult.x, vecResult.y); } if(g_CharacterData.m_lstCharData[i]->m_wMaxHP != 0) { // ü·Â °ÔÀÌÁö ¹Ù float fHPRate = ((float)g_CharacterData.m_lstCharData[i]->m_sCurrHP / (float)g_CharacterData.m_lstCharData[i]->m_wMaxHP) * 68.0f; RECT rcRect; SetRect(&rcRect, vecResult.x - 34, vecResult.y + 30, vecResult.x + 34, vecResult.y + 34); if(rcRect.left > g_ClientMain.m_BaseGraphicLayer.m_lScreenSx) continue; if(rcRect.left < 0) rcRect.left = 0; if(rcRect.right < 0) continue; if(rcRect.right > g_ClientMain.m_BaseGraphicLayer.m_lScreenSx) rcRect.right = g_ClientMain.m_BaseGraphicLayer.m_lScreenSx; if(rcRect.top > g_ClientMain.m_BaseGraphicLayer.m_lScreenSy) continue; if(rcRect.top < 0) rcRect.top = 0; if(rcRect.bottom < 0) continue; if(rcRect.bottom > g_ClientMain.m_BaseGraphicLayer.m_lScreenSy) rcRect.bottom = g_ClientMain.m_BaseGraphicLayer.m_lScreenSy; g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, rcRect.left, rcRect.top, rcRect.right, rcRect.bottom, 0xFF302D65, 0xFF); SetRect(&rcRect, vecResult.x - 34, vecResult.y + 30, vecResult.x - 34 + fHPRate, vecResult.y + 34); if(rcRect.left > g_ClientMain.m_BaseGraphicLayer.m_lScreenSx) continue; if(rcRect.left < 0) rcRect.left = 0; if(rcRect.right < 0) continue; if(rcRect.right > g_ClientMain.m_BaseGraphicLayer.m_lScreenSx) rcRect.right = g_ClientMain.m_BaseGraphicLayer.m_lScreenSx; if(rcRect.top > g_ClientMain.m_BaseGraphicLayer.m_lScreenSy) continue; if(rcRect.top < 0) rcRect.top = 0; if(rcRect.bottom < 0) continue; if(rcRect.bottom > g_ClientMain.m_BaseGraphicLayer.m_lScreenSy) rcRect.bottom = g_ClientMain.m_BaseGraphicLayer.m_lScreenSy; g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, rcRect.left, rcRect.top, rcRect.right, rcRect.bottom, 0xFF2AE955, 0xFF); m_lpHPGauge->m_nPutX = vecResult.x - 41; m_lpHPGauge->m_nPutY = vecResult.y + 29; m_lpHPGauge->Render(lpD3DDevice); }/**/ } if(g_CharacterData.m_lstCharData[i]->m_lstDamageNumber.num) { float fUpdate = CFrameTimer::GetUpdateTimer(g_ClientMain.m_nShowInterfaceTimerID); stDamage *lpDamage; short wAlpha; for(int d = 0; d < g_CharacterData.m_lstCharData[i]->m_lstDamageNumber.num;) { lpDamage = &g_CharacterData.m_lstCharData[i]->m_lstDamageNumber[d]; wAlpha = (lpDamage->sLifeTime / 1500.0f * 255.0f); if(wAlpha < 0) wAlpha = 0; if(!g_ClientMain.m_bMovieVersion) { switch(lpDamage->wMode) { case ClientSocket::Judge_Front: case ClientSocket::Judge_Side: case ClientSocket::Judge_Back: case ClientSocket::Judge_Poisoned: g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 0, lpDamage->lValue, lpDamage->fScale); break; case ClientSocket::Judge_Heal: g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 3, lpDamage->lValue, lpDamage->fScale); break; case ClientSocket::Judge_ManaHeal: g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 2, lpDamage->lValue, lpDamage->fScale); break; case ClientSocket::Judge_Guard: g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 8, lpDamage->lValue, lpDamage->fScale); break; case ClientSocket::Judge_Critical: if(lpDamage->sLifeTime >= 1200.0f) { g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 5, lpDamage->lValue, (5.0f - (1.0f - ((lpDamage->sLifeTime - 1200.0f) / 300.0f)) * 4.0f) * lpDamage->fScale); // 150, 5, lpDamage->lValue, 3.0f - (1.0f - ((lpDamage->sLifeTime - 500.0f) / 1000.0f)) * 2.0f); } else { g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 5, lpDamage->lValue, lpDamage->fScale); } break; case ClientSocket::Judge_Evade: g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 9, lpDamage->lValue, lpDamage->fScale); break; case ClientSocket::Judge_Resist: g_ClientMain.m_lpCommonInterface->RenderNumber(lpD3DDevice, vecDamageResult.x, vecDamageResult.y - (1.0f - lpDamage->sLifeTime / 1500.0f) * 90.0f, (unsigned char)wAlpha * lpDamage->fScale, 10, lpDamage->lValue, lpDamage->fScale); break; }/**/ } if(lpDamage->sLifeTime <= 0) { g_CharacterData.m_lstCharData[i]->m_lstDamageNumber.DelIndex(d); continue; } else { d++; } lpDamage->sLifeTime -= fUpdate * 2.0f; } } break; } } } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ÀÏ¹Ý Å¸°ÙÆÃ Ç¥½Ã if(m_dwNormalTargetChrID != 0xFFFFFFFF) { vector3 *vecChrPos = g_CharacterData.GetFindChrPos(m_dwNormalTargetChrID); if(g_CharacterData.GetClientType(m_dwNormalTargetChrID, TRUE) == CT_MONSTER) { // g_ClientMain.m_pEnemySelectEff->SetStartPos(0.0f, 0.0f, 0.0f); // g_ClientMain.m_pEnemySelectEff->SetEndPos(0.0f, 0.0f, 0.0f); // g_ClientMain.m_pEnemySelectEff->SetStartPos(vecChrPos->x, vecChrPos->y + 30.0f, vecChrPos->z); // g_ClientMain.m_pEnemySelectEff->SetEndPos(vecChrPos->x, vecChrPos->y + 30.0f, vecChrPos->z); g_ClientMain.m_pPlayerSelectEff->SetStartPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pPlayerSelectEff->SetEndPos(0.0f, 0.0f, 0.0f); } else { // g_ClientMain.m_pEnemySelectEff->SetStartPos(0.0f, 0.0f, 0.0f); // g_ClientMain.m_pEnemySelectEff->SetEndPos(0.0f, 0.0f, 0.0f); if(vecChrPos) { g_ClientMain.m_pPlayerSelectEff->SetStartPos(vecChrPos->x, vecChrPos->y + 30.0f, vecChrPos->z); g_ClientMain.m_pPlayerSelectEff->SetEndPos(vecChrPos->x, vecChrPos->y + 30.0f, vecChrPos->z); } else { g_ClientMain.m_pPlayerSelectEff->SetStartPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pPlayerSelectEff->SetEndPos(0.0f, 0.0f, 0.0f); } } } else { // g_ClientMain.m_pEnemySelectEff->SetStartPos(0.0f, 0.0f, 0.0f); // g_ClientMain.m_pEnemySelectEff->SetEndPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pPlayerSelectEff->SetStartPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pPlayerSelectEff->SetEndPos(0.0f, 0.0f, 0.0f); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ½ºÅ³ Ÿ°ÙÆÃ Ç¥½Ã if(m_dwSpecialTargetChrID != 0xFFFFFFFF) { if(g_ClientMain.m_csStatus.m_lpQuickSelected && !g_ClientMain.m_csStatus.m_lpQuickSelected->m_lCoolDownTimeCount) { vector3 *vecChrPos = g_CharacterData.GetFindChrPos(m_dwSpecialTargetChrID); if(vecChrPos) { if(g_CharacterData.GetClientType(m_dwSpecialTargetChrID, TRUE) == CT_MONSTER) { g_ClientMain.m_pEnemySkillSelectEff->SetStartPos(vecChrPos->x, vecChrPos->y, vecChrPos->z); g_ClientMain.m_pEnemySkillSelectEff->SetEndPos(vecChrPos->x, vecChrPos->y, vecChrPos->z); g_ClientMain.m_pPlayerSkillSelectEff->SetStartPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pPlayerSkillSelectEff->SetEndPos(0.0f, 0.0f, 0.0f); } else { g_ClientMain.m_pEnemySkillSelectEff->SetStartPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pEnemySkillSelectEff->SetEndPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pPlayerSkillSelectEff->SetStartPos(vecChrPos->x, vecChrPos->y, vecChrPos->z); g_ClientMain.m_pPlayerSkillSelectEff->SetEndPos(vecChrPos->x, vecChrPos->y, vecChrPos->z); } } else { g_ClientMain.m_pEnemySkillSelectEff->SetStartPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pEnemySkillSelectEff->SetEndPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pPlayerSkillSelectEff->SetStartPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pPlayerSkillSelectEff->SetEndPos(0.0f, 0.0f, 0.0f); } } else { g_ClientMain.m_pEnemySkillSelectEff->SetStartPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pEnemySkillSelectEff->SetEndPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pPlayerSkillSelectEff->SetStartPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pPlayerSkillSelectEff->SetEndPos(0.0f, 0.0f, 0.0f); } } else { g_ClientMain.m_pEnemySkillSelectEff->SetStartPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pEnemySkillSelectEff->SetEndPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pPlayerSkillSelectEff->SetStartPos(0.0f, 0.0f, 0.0f); g_ClientMain.m_pPlayerSkillSelectEff->SetEndPos(0.0f, 0.0f, 0.0f); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if(g_ClientMain.m_bSimpleMode) { if(m_lstWindow[11]->m_bShow && !g_ClientMain.m_bMovieVersion) m_lstWindow[11]->Render(lpD3DDevice); // °£·« ¸ðµå â if(m_lstWindow[15]->m_bShow) m_lstWindow[15]->Render(lpD3DDevice); // °£·« äÆÃâ } else { if(m_lstWindow[0]->m_bShow && !g_ClientMain.m_bMovieVersion) m_lstWindow[0]->Render(lpD3DDevice); // ¹Ì´Ï ½ºÅÈ if(m_lstWindow[1]->m_bShow && !g_ClientMain.m_bMovieVersion) m_lstWindow[1]->Render(lpD3DDevice); // äÆÃâ if(m_lstWindow[2]->m_bShow && !g_ClientMain.m_bMovieVersion) m_lstWindow[2]->Render(lpD3DDevice); // ¼ôÄÆ â }/**/ if(m_lstWindow[3]->m_bShow) m_lstWindow[3]->Render(lpD3DDevice); // ½ºÅ×ÀÌÅͽº â if(m_lstWindow[4]->m_bShow) m_lstWindow[4]->Render(lpD3DDevice); // ½ºÅ³ â if(m_lstWindow[5]->m_bShow) m_lstWindow[5]->Render(lpD3DDevice); // Àκ¥Å丮 â if(m_lstWindow[6]->m_bShow) m_lstWindow[6]->Render(lpD3DDevice); // »çȸ â if(m_lstWindow[8]->m_bShow) m_lstWindow[8]->Render(lpD3DDevice); // »óÁ¡ â if(m_lstWindow[9]->m_bShow && !g_ClientMain.m_bMovieVersion) m_lstWindow[9]->Render(lpD3DDevice); // ¹Ì´Ï¸Ê if(m_lstWindow[10]->m_bShow && !g_ClientMain.m_bMovieVersion) m_lstWindow[10]->Render(lpD3DDevice); // Äü ½½·Ô if(m_lstWindow[13]->m_bShow) m_lstWindow[13]->Render(lpD3DDevice); // ¾÷±×·¹À̵åâ if(m_lstWindow[14]->m_bShow) m_lstWindow[14]->Render(lpD3DDevice); // ÀüÁ÷â if(m_lstWindow[16]->m_bShow) m_lstWindow[16]->Render(lpD3DDevice); // ±³È¯Ã¢ if(m_lstWindow[17]->m_bShow) m_lstWindow[17]->Render(lpD3DDevice); // ä³Î ¼±ÅÃâ if(m_lstWindow[18]->m_bShow) m_lstWindow[18]->Render(lpD3DDevice); // ¸®½ºÆù â if(m_lstWindow[19]->m_bShow) m_lstWindow[19]->Render(lpD3DDevice); // º¸°üâ°í â if(m_lstWindow[20]->m_bShow) m_lstWindow[20]->Render(lpD3DDevice); // ³ëÁ¡»ó â if(m_lstWindow[21]->m_bShow) m_lstWindow[21]->Render(lpD3DDevice); // Äù½ºÆ® ¼³¸íâ if(!(m_lstWindow[3]->m_bShow || m_lstWindow[4]->m_bShow || m_lstWindow[5]->m_bShow || m_lstWindow[6]->m_bShow)) { if(!g_ClientMain.m_bMovieVersion) m_lstWindow[12]->Render(lpD3DDevice); // ¹Ì´ÏÆÄƼ }/**/ if(m_lstWindow[7]->m_bShow) m_lstWindow[7]->Render(lpD3DDevice); // ¿É¼Ç â RenderSkillGauge(lpD3DDevice); // ½ºÅ³ °ÔÀÌÁö if(g_ClientMain.m_lpPickItem && g_MessageBoxManager.m_lstMessageBox.empty()) { g_ClientMain.m_lpPickItem->Render(lpD3DDevice); } if(m_bPopupShow) { RenderPopUp(lpD3DDevice); } g_MessageBoxManager.Render(lpD3DDevice); if(g_TextEdit.m_deqNoticeMessage.size()) { RECT rcRect; unsigned long count = 0; deque::iterator it; for(it = g_TextEdit.m_deqNoticeMessage.begin(); it != g_TextEdit.m_deqNoticeMessage.end(); it++) { SetRect(&rcRect, 120, count * 16, 623, count * 16 + 16); g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, rcRect.left, rcRect.top, rcRect.right, rcRect.bottom, 0x00000000, 200); rcRect.left += 10; rcRect.right -= 10; g_TextEdit.DrawText((*it)->strMessage, &rcRect, DT_VCENTER | DT_LEFT, (*it)->dwColor); rcRect.left++; rcRect.right++; g_TextEdit.DrawText((*it)->strMessage, &rcRect, DT_VCENTER | DT_LEFT, (*it)->dwColor); count++; } } if(!g_ClientMain.m_bMouseMode) { BOOL bTarget = FALSE; if(g_ClientMain.m_csStatus.m_lpQuickSelected) { const Skill::ProtoType *lpSkillType = g_SkillMgr.GetSkillProtoType(g_ClientMain.m_csStatus.m_lpQuickSelected->GetProtoTypeID()); switch(lpSkillType->m_eTargetType) { case Skill::Target::DEAD_ENEMY: case Skill::Target::FRIEND: case Skill::Target::ENEMY: case Skill::Target::DEAD_FRIEND: case Skill::Target::FRIEND_OBJECT: case Skill::Target::ENEMY_OBJECT: case Skill::Target::PARTY: case Skill::Target::FRIEND_EXCEPT_SELF: if(lpSkillType->m_EffectDistance != 0.0f) bTarget = TRUE; break; } } if(bTarget || g_ClientMain.m_csStatus.m_bRangedWeapon) { if(m_dwSpecialTargetChrID != 0xFFFFFFFF) { if(g_CharacterData.GetClientType(m_dwSpecialTargetChrID, TRUE) != CT_MONSTER) RenderCrossHair(lpD3DDevice, 2); else RenderCrossHair(lpD3DDevice, 1); } else if(g_ClientMain.m_csStatus.m_bRangedWeapon && m_dwRangedWeaponTargetChrID != 0xFFFFFFFF) { if(g_CharacterData.GetClientType(m_dwRangedWeaponTargetChrID, TRUE) != CT_MONSTER) RenderCrossHair(lpD3DDevice, 2); else RenderCrossHair(lpD3DDevice, 1); } else { RenderCrossHair(lpD3DDevice, 0); } } } RenderChant(lpD3DDevice); if(m_bShowHelp) { g_ClientMain.m_lpCommonInterface->RenderHelp(lpD3DDevice); } } if(g_ClientMain.m_bSystemConsoleShow) { static FLOAT fLastTime = 0.0f; static DWORD dwFrames = 0L; static char strFrameStats[256]; FLOAT fTime = DXUtil_Timer( TIMER_GETABSOLUTETIME ); ++dwFrames; static float fFPS = 0.0f; // Update the scene stats once per second if( fTime - fLastTime > 1.0f ) { fFPS = dwFrames / (fTime - fLastTime); fLastTime = fTime; dwFrames = 0L; g_ClientMain.m_Network.m_lTCPPAcketPerSecond = g_ClientMain.m_Network.m_lTCPPacketTotalByte - g_ClientMain.m_Network.m_lTCPPacketOldByte; g_ClientMain.m_Network.m_lTCPPacketOldByte = g_ClientMain.m_Network.m_lTCPPacketTotalByte; g_ClientMain.m_Network.m_lUDPPAcketPerSecond = g_ClientMain.m_Network.m_lUDPPacketTotalByte - g_ClientMain.m_Network.m_lUDPPacketOldByte; g_ClientMain.m_Network.m_lUDPPacketOldByte = g_ClientMain.m_Network.m_lUDPPacketTotalByte; } unsigned long dwPCNum = 0; for(int i = 0; i < g_CharacterData.m_lstCharData.num; i++) { if(g_CharacterData.GetClientType(g_CharacterData.m_lstCharData[i]->m_dwChrID) == CT_PC) { dwPCNum++; } } HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); COORD cd = { 0, 0 }; DWORD dwWordLens; char strObjectInfo[256]; cd.Y = 0; sprintf(strObjectInfo, "Tcp/Ip PTB = %d, Tcp/Ip PPS = %d, Tcp/Ip PB = %d ", g_ClientMain.m_Network.m_lTCPPacketTotalByte, g_ClientMain.m_Network.m_lTCPPAcketPerSecond, g_ClientMain.m_Network.m_pSocket->GetUseRecvBuffer()); WriteConsoleOutputCharacter(hStdOut, strObjectInfo, strlen(strObjectInfo), cd, &dwWordLens); cd.Y = 1; sprintf(strObjectInfo, "UDP PTB = %d, UDP PPS = %d, UDP PB = %d, UDP PC = %d ", g_ClientMain.m_Network.m_lUDPPacketTotalByte, g_ClientMain.m_Network.m_lUDPPAcketPerSecond, g_ClientMain.m_Network.m_pSocket->GetUseRecvUDPBuffer(), g_ClientMain.m_Network.m_pSocket->GetListCount(ClientSocket::ListType_Client)); WriteConsoleOutputCharacter(hStdOut, strObjectInfo, strlen(strObjectInfo), cd, &dwWordLens); cd.Y = 2; sprintf(strObjectInfo, "Creature Node = %d, PC Creature Node = %d, FPS = %f ", g_CharacterData.m_lstCharData.num, dwPCNum, fFPS); WriteConsoleOutputCharacter(hStdOut, strObjectInfo, strlen(strObjectInfo), cd, &dwWordLens); for(i = 0; i < 100; i++) { cd.X = 0; cd.Y = 3 + i; strcpy(strObjectInfo, " "); WriteConsoleOutputCharacter(hStdOut, strObjectInfo, strlen(strObjectInfo), cd, &dwWordLens); } unsigned long count = 0; for(i = 0; i < g_CharacterData.m_lstCharData.num; i++) { // if(g_CharacterData.GetClientType(g_CharacterData.m_lstCharData[i]->m_dwChrID) == CT_PC) { cd.X = 0; cd.Y = 3 + count; sprintf(strObjectInfo, "0x%08x, %d", g_CharacterData.m_lstCharData[i]->m_dwChrID, g_CharacterData.m_lstCharData[i]->m_dwSpendTime[4] - g_CharacterData.m_lstCharData[i]->m_dwSpendTime[3]); /* sprintf(strObjectInfo, "0x%08x, %d, %d, %d, %d, %d", g_CharacterData.m_lstCharData[i]->m_dwChrID, g_CharacterData.m_lstCharData[i]->m_dwSpendTime[0] - g_CharacterData.m_lstCharData[i]->m_dwSpendTime[0], m_dwSpendTime[0] - g_CharacterData.m_lstCharData[i]->m_dwSpendTime[0], m_dwSpendTime[1] - g_CharacterData.m_lstCharData[i]->m_dwSpendTime[0], g_CharacterData.m_lstCharData[i]->m_dwSpendTime[1] - g_CharacterData.m_lstCharData[i]->m_dwSpendTime[0], g_CharacterData.m_lstCharData[i]->m_dwSpendTime[2] - g_CharacterData.m_lstCharData[i]->m_dwSpendTime[0]);*/ WriteConsoleOutputCharacter(hStdOut, strObjectInfo, strlen(strObjectInfo), cd, &dwWordLens); count++; } } /* i = 0; list::iterator it; for(it = g_ClientMain.m_Network.m_lstSendShape.begin(); it != g_ClientMain.m_Network.m_lstSendShape.end(); it++) { cd.X = 0; cd.Y = 3 + i; sprintf(strObjectInfo, "Send Node = 0x%08x", (*it)); WriteConsoleOutputCharacter(hStdOut, strObjectInfo, strlen(strObjectInfo), cd, &dwWordLens); i++; } i = 0; for(it = g_ClientMain.m_Network.m_lstRecvShape.begin(); it != g_ClientMain.m_Network.m_lstRecvShape.end(); it++) { cd.X = 30; cd.Y = 3 + i; sprintf(strObjectInfo, "Recv Node = 0x%08x", (*it)); WriteConsoleOutputCharacter(hStdOut, strObjectInfo, strlen(strObjectInfo), cd, &dwWordLens); i++; } i = 0; for(it = m_lstDeleteChr.begin(); it != m_lstDeleteChr.end(); it++) { cd.X = 60; cd.Y = 3 + i; sprintf(strObjectInfo, "Del Node = 0x%08x", (*it)); WriteConsoleOutputCharacter(hStdOut, strObjectInfo, strlen(strObjectInfo), cd, &dwWordLens); i++; }*/ } } void CAkhanGUI::InitTrade(unsigned long dwKindMarket, unsigned long dwNPCID) { m_dwKindMarket = dwKindMarket; switch(m_dwKindMarket) { case POPUP_A_WEAPONMERCHANT: case POPUP_A_ARMOURMERCHANT: case POPUP_A_ETCMERCHANT: case POPUP_A_BEGINNERTRAINER: case POPUP_A_COMBATANTTRAINER: case POPUP_A_OPPICATERTRAINER: case POPUP_A_DARKWEAPONMERCHANT: case POPUP_A_DARKARMOURMERCHANT: case POPUP_A_DARKETCMERCHANT: m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->ShowWindow(FALSE); m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[13]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[16]->ShowWindow(FALSE); m_lstWindow[5]->ShowWindow(TRUE); m_lstWindow[8]->ShowWindow(TRUE); ((CAkhanTrade *)m_lstWindow[8])->InitTrade(dwNPCID); break; case POPUP_A_BLACKSMITH: m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->ShowWindow(FALSE); m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[8]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[16]->ShowWindow(FALSE); m_lstWindow[5]->ShowWindow(TRUE); m_lstWindow[13]->ShowWindow(TRUE); break; } } BOOL CAkhanGUI::GetIsTrade(void) { if(m_lstWindow[8]->m_bShow || m_lstWindow[20]->m_bShow) return TRUE; else return FALSE; } BOOL CAkhanGUI::GetIsExchange(void) { return m_lstWindow[16]->m_bShow; } void CAkhanGUI::InitClassChange(unsigned long dwNPCID) { m_lstWindow[14]->m_bShow = TRUE; m_lstWindow[14]->InitValue(); LPNPCNode lpNode = g_NPCList.GetNPCNode(dwNPCID); if(lpNode) { LPDialogNode lpDialog = lpNode->GetScript(0x8000); if(lpDialog) { ((CAkhanJobChange *)m_lstWindow[14])->SetText(lpDialog->m_strWord); } } } void CAkhanGUI::ProcessExchangeCmd(unsigned long dwSenderID, unsigned short wCmd) { switch(wCmd) { case ClientSocket::ExchangeCmd_Accept: m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->ShowWindow(FALSE); m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[8]->ShowWindow(FALSE); m_lstWindow[13]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[5]->ShowWindow(TRUE); m_lstWindow[16]->ShowWindow(TRUE); break; case ClientSocket::ExchangeCmd_OK: ((CHumanExchange *)m_lstWindow[16])->ExchangeAccept(dwSenderID); break; case ClientSocket::ExchangeCmd_Cancel: ((CHumanExchange *)m_lstWindow[16])->ExchangeCancel(dwSenderID); break; case ClientSocket::ExchangeCmd_Exchange: ((CHumanExchange *)m_lstWindow[16])->ProcessExchange(); g_TextEdit.AddMessage(g_StringTable.m_strString[153], g_ClientMain.m_dwMyChrID, 128); break; case ClientSocket::ExchangeCmd_Quit: ((CHumanExchange *)m_lstWindow[16])->ExchangeQuit(); g_TextEdit.AddMessage(g_StringTable.m_strString[154], g_ClientMain.m_dwMyChrID, 129); break; case ClientSocket::ExchangeCmd_Lock: ((CHumanExchange *)m_lstWindow[16])->ExchangeLock(dwSenderID); break; case ClientSocket::ExchangeCmd_UnLock: ((CHumanExchange *)m_lstWindow[16])->ExchangeUnLock(dwSenderID); break; case 100: if(((CHumanExchange *)m_lstWindow[16])->m_bSingleWindow) { ((CHumanExchange *)m_lstWindow[16])->ShowWindow(FALSE); } break; } } void CAkhanGUI::InitPos(CItemInstance *lpItem) { switch(lpItem->GetItemPos()) { case ClientSocket::ItemPos_Exchange: ((CHumanExchange *)m_lstWindow[16])->InitPos(lpItem); break; } } /*BOOL CAkhanGUI::StartSkill(void) { return TRUE; }*/ BOOL CAkhanGUI::InitPopup(unsigned long dwKindPopup, unsigned long dwUID, unsigned long dwKindPos) { if(g_CharacterData.GetClientType(dwUID, TRUE) == CT_MONSTER) { m_dwKindPopup = 0; m_dwPopupSelectChrID = 0; m_bPopupShow = FALSE; m_dwKindPos = 0; return FALSE; } else { m_dwKindPopup = dwKindPopup; m_dwPopupSelectChrID = dwUID; m_bPopupShow = TRUE; m_dwKindPos = dwKindPos; } switch(m_dwKindPopup) { case POPUP_PC: { CCreature *lpCreature = g_CharacterData.GetCreature(m_dwPopupSelectChrID); if(lpCreature) { if(lpCreature->m_dwPartyID == g_ClientMain.m_csStatus.m_PartyInfo.m_dwPartyID) { if(!lpCreature->m_dwPartyID) { m_dwPopupMenu = 3; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_EXCHANGE; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[14]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_DUEL; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[509]); m_pmPopupMenu[2].m_dwPopupKind = POPUPMENU_PARTYINVATE; strcpy(m_pmPopupMenu[2].m_strPopupStr, g_StringTable.m_strString[0]); if(strcmp(lpCreature->m_strStreetStallName, "")) { m_dwPopupMenu = 4; m_pmPopupMenu[3].m_dwPopupKind = POPUPMENU_STREETSTALL; strcpy(m_pmPopupMenu[3].m_strPopupStr, g_StringTable.m_strString[510]); } } else if(g_ClientMain.m_csStatus.m_PartyInfo.m_dwLeaderID == g_ClientMain.m_dwMyChrID) { // ¸®´õ m_dwKindPopup = POPUP_LEADER; m_dwPopupMenu = 4; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_EXCHANGE; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[14]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_DUEL; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[509]); m_pmPopupMenu[2].m_dwPopupKind = POPUPMENU_LEADER; strcpy(m_pmPopupMenu[2].m_strPopupStr, g_StringTable.m_strString[1]); m_pmPopupMenu[3].m_dwPopupKind = POPUPMENU_VANISH; strcpy(m_pmPopupMenu[3].m_strPopupStr, g_StringTable.m_strString[2]); if(strcmp(lpCreature->m_strStreetStallName, "")) { m_dwPopupMenu = 5; m_pmPopupMenu[4].m_dwPopupKind = POPUPMENU_STREETSTALL; strcpy(m_pmPopupMenu[4].m_strPopupStr, g_StringTable.m_strString[510]); } } else { m_dwKindPopup = POPUP_MEMBER; m_dwPopupMenu = 2; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_EXCHANGE; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[14]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_DUEL; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[509]); if(strcmp(lpCreature->m_strStreetStallName, "")) { m_dwPopupMenu = 3; m_pmPopupMenu[2].m_dwPopupKind = POPUPMENU_STREETSTALL; strcpy(m_pmPopupMenu[2].m_strPopupStr, g_StringTable.m_strString[510]); } } } else if(!lpCreature->m_dwPartyID) { // ÆÄƼ°¡ ¾ø´Ù. m_dwPopupMenu = 3; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_EXCHANGE; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[14]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_DUEL; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[509]); m_pmPopupMenu[2].m_dwPopupKind = POPUPMENU_PARTYINVATE; strcpy(m_pmPopupMenu[2].m_strPopupStr, g_StringTable.m_strString[0]); if(strcmp(lpCreature->m_strStreetStallName, "")) { m_dwPopupMenu = 4; m_pmPopupMenu[3].m_dwPopupKind = POPUPMENU_STREETSTALL; strcpy(m_pmPopupMenu[3].m_strPopupStr, g_StringTable.m_strString[510]); } } else { m_dwKindPopup = POPUP_MEMBER; m_dwPopupMenu = 2; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_EXCHANGE; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[14]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_DUEL; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[509]); if(strcmp(lpCreature->m_strStreetStallName, "")) { m_dwPopupMenu = 3; m_pmPopupMenu[2].m_dwPopupKind = POPUPMENU_STREETSTALL; strcpy(m_pmPopupMenu[2].m_strPopupStr, g_StringTable.m_strString[510]); } if(g_ClientMain.m_csStatus.m_PartyInfo.m_dwLeaderID == g_ClientMain.m_dwMyChrID) { m_dwPopupMenu++; m_pmPopupMenu[m_dwPopupMenu - 1].m_dwPopupKind = POPUPMENU_PARTYDUEL; strcpy(m_pmPopupMenu[m_dwPopupMenu - 1].m_strPopupStr, g_StringTable.m_strString[511]); } } if(!g_ClientMain.m_csStatus.GetIsFriend(lpCreature->m_dwChrID) && g_ClientMain.m_csStatus.m_lstFriendList.size() < 100) { m_pmPopupMenu[m_dwPopupMenu].m_dwPopupKind = POPUPMENU_FRIEND; strcpy(m_pmPopupMenu[m_dwPopupMenu].m_strPopupStr, g_StringTable.m_strString[517]); m_dwPopupMenu++; } if(!g_ClientMain.m_csStatus.GetIsBan(lpCreature->m_dwChrID) && g_ClientMain.m_csStatus.m_lstBanList.size() < 100) { m_pmPopupMenu[m_dwPopupMenu].m_dwPopupKind = POPUPMENU_BAN; strcpy(m_pmPopupMenu[m_dwPopupMenu].m_strPopupStr, g_StringTable.m_strString[518]); m_dwPopupMenu++; } } } break; case POPUP_A_GUARD: m_dwPopupMenu = 2; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_DIALOG; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[5]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_SAVEPOS; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[6]); break; case POPUP_A_NORMAL: m_dwPopupMenu = 2; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_DIALOG; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[5]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_SAVEPOS; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[6]); break; case POPUP_A_NOBIND: m_dwPopupMenu = 1; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_DIALOG; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[5]); break; case POPUP_A_WEAPONMERCHANT: case POPUP_A_ARMOURMERCHANT: case POPUP_A_ETCMERCHANT: case POPUP_A_DARKWEAPONMERCHANT: case POPUP_A_DARKARMOURMERCHANT: case POPUP_A_DARKETCMERCHANT: m_dwPopupMenu = 2; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_DIALOG; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[5]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_TRADE; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[7]); break; case POPUP_A_COUNSELLER: m_dwPopupMenu = 2; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_DIALOG; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[5]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_SAVEPOS; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[6]); break; case POPUP_A_BLACKSMITH: m_dwPopupMenu = 2; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_DIALOG; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[5]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_UPGRADE; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[8]); break; case POPUP_A_BEGINNERTRAINER: m_dwPopupMenu = 3; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_DIALOG; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[5]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_TRADE; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[7]); m_pmPopupMenu[2].m_dwPopupKind = POPUPMENU_UNLOCK; strcpy(m_pmPopupMenu[2].m_strPopupStr, g_StringTable.m_strString[155]); break; case POPUP_A_COMBATANTTRAINER: m_dwPopupMenu = 2; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_DIALOG; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[5]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_TRADE; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[7]); if(g_ClientMain.m_csStatus.m_Info.Level >= 10 && g_ClientMain.m_csStatus.m_Info.Class == 17) { m_dwPopupMenu = 3; m_pmPopupMenu[2].m_dwPopupKind = POPUPMENU_JOBCHANGE; strcpy(m_pmPopupMenu[2].m_strPopupStr, g_StringTable.m_strString[9]); }/**/ break; case POPUP_A_OPPICATERTRAINER: m_dwPopupMenu = 2; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_DIALOG; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[5]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_TRADE; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[7]); if(g_ClientMain.m_csStatus.m_Info.Level >= 10 && g_ClientMain.m_csStatus.m_Info.Class == 18) { m_dwPopupMenu = 3; m_pmPopupMenu[2].m_dwPopupKind = POPUPMENU_JOBCHANGE; strcpy(m_pmPopupMenu[2].m_strPopupStr, g_StringTable.m_strString[9]); }/**/ break; case POPUP_TELEPORTER: case POPUP_A_TELEPORTER: { m_dwPopupMenu = 2; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_DIALOG; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[5]); NPCNode *lpNode = g_NPCList.GetNPCNode(dwUID); if(lpNode) { LPWarpNode lpZone = lpNode->GetWarpNode(0); if(lpZone) { m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_ZONEMOVE; switch(lpZone->m_wZoneNumber) { case 1: strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[156]); break; case 2: strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[157]); break; case 3: strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[158]); break; case 4: strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[512]); break; case 5: strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[513]); break; case 6: strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[514]); break; default: strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[159]); break; } } else { m_dwKindPopup = 0; m_dwPopupSelectChrID = 0; m_bPopupShow = FALSE; m_dwKindPos = 0; } } else { m_dwKindPopup = 0; m_dwPopupSelectChrID = 0; m_bPopupShow = FALSE; m_dwKindPos = 0; } } break; case POPUP_A_CONTAINER: m_dwPopupMenu = 3; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_DIALOG2; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[515]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_DEPOSIT; strcpy(m_pmPopupMenu[1].m_strPopupStr, g_StringTable.m_strString[516]); m_pmPopupMenu[2].m_dwPopupKind = POPUPMENU_DIALOG; strcpy(m_pmPopupMenu[2].m_strPopupStr, g_StringTable.m_strString[5]); break; case POPUP_A_PEACEGUILD: m_dwPopupMenu = 2; m_pmPopupMenu[0].m_dwPopupKind = POPUPMENU_DIALOG; strcpy(m_pmPopupMenu[0].m_strPopupStr, g_StringTable.m_strString[5]); m_pmPopupMenu[1].m_dwPopupKind = POPUPMENU_PEACE; if(g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_bPeaceMode) strcpy(m_pmPopupMenu[1].m_strPopupStr, "¹ÝÀü´Üü Å»Åð"); else strcpy(m_pmPopupMenu[1].m_strPopupStr, "¹ÝÀü´Üü °¡ÀÔ"); break; default: m_dwKindPopup = 0; m_dwPopupSelectChrID = 0; m_bPopupShow = FALSE; m_dwKindPos = 0; return TRUE; break; } m_dwPopupWindowLength = 0; unsigned long lengthtemp; for(unsigned long i = 0; i < m_dwPopupMenu; i++) { lengthtemp = g_TextEdit.GetStringLength(m_pmPopupMenu[i].m_strPopupStr); if(m_dwPopupWindowLength < lengthtemp) m_dwPopupWindowLength = lengthtemp; } switch(m_dwKindPos) { case 0: { vector3 vecResult, vecChrPos; float fW; CCreature *lpCreature = g_CharacterData.GetCreature(m_dwPopupSelectChrID); if(lpCreature) { vecChrPos = lpCreature->m_vecPos; vecChrPos.y += 180.0f; BaseGraphicsLayer::TransformVector(vecChrPos, vecResult, fW); if(vecResult.z > 1.0f) { m_bPopupShow = FALSE; return TRUE; } m_nPopupWindowX = vecResult.x + 50.0f - 0.5; m_nPopupWindowY = vecResult.y - 0.5f; } else { m_dwKindPopup = 0; m_dwPopupSelectChrID = 0; m_bPopupShow = FALSE; m_dwKindPos = 0; return FALSE; } } break; case 1: { POINT *ptMousePos = g_DeviceInput.GetMousePosition(); m_nPopupWindowX = ptMousePos->x; m_nPopupWindowY = ptMousePos->y; } break; } if(m_nPopupWindowX + 32 + m_dwPopupWindowLength > BaseGraphicsLayer::m_lScreenSx) { m_nPopupWindowX -= (m_nPopupWindowX + 32 + m_dwPopupWindowLength) - BaseGraphicsLayer::m_lScreenSx; } if(m_nPopupWindowY + 24 + m_dwPopupMenu * 18 > BaseGraphicsLayer::m_lScreenSy) { m_nPopupWindowY -= (m_nPopupWindowY + 24 + m_dwPopupMenu * 18) - BaseGraphicsLayer::m_lScreenSy; } return TRUE; } void CAkhanGUI::InitSkillUnLock(unsigned long dwNPCID) { m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->ShowWindow(FALSE); m_lstWindow[5]->ShowWindow(FALSE); m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[8]->ShowWindow(FALSE); m_lstWindow[13]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[16]->ShowWindow(FALSE); m_lstWindow[4]->ShowWindow(TRUE); m_lstWindow[4]->InitValue(); ((CHumanSkill *)m_lstWindow[4])->m_bSkillUnLock = TRUE; } void CAkhanGUI::InitChannel(unsigned char cChannelNum, unsigned short *lpChannel) { ((CHumanChannel *)m_lstWindow[17])->ShowWindow(TRUE); ((CHumanChannel *)m_lstWindow[17])->SetChannel(cChannelNum, lpChannel); } void CAkhanGUI::InitRespawn(unsigned char cZoneNum) { ((CAkhanRespawn *)m_lstWindow[18])->ShowWindow(TRUE); ((CAkhanRespawn *)m_lstWindow[18])->SetRespawn(cZoneNum); } BOOL CAkhanGUI::GetIsRespawn(void) { return m_lstWindow[18]->m_bShow; } void CAkhanGUI::DestroyRespawn(void) { m_lstWindow[18]->ShowWindow(FALSE); } BOOL CAkhanGUI::GetEnableChat(void) { if(g_MessageBoxManager.GetIsExistModal() || m_bPopupShow) return FALSE; return TRUE; } void CAkhanGUI::InitDeposit(void) { m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->ShowWindow(FALSE); m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[13]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[16]->ShowWindow(FALSE); m_lstWindow[5]->ShowWindow(TRUE); m_lstWindow[19]->ShowWindow(TRUE); ((CHumanVault *)m_lstWindow[19])->InitVault(); } void CAkhanGUI::ShowWindow(unsigned long dwWindowNum) { if(dwWindowNum == 3) m_lstWindow[3]->m_bShow = !m_lstWindow[3]->m_bShow; else m_lstWindow[3]->m_bShow = FALSE; if(dwWindowNum == 4) m_lstWindow[4]->ShowWindow(!m_lstWindow[4]->m_bShow); else m_lstWindow[4]->ShowWindow(FALSE); if(dwWindowNum == 5) m_lstWindow[5]->ShowWindow(!m_lstWindow[5]->m_bShow); else m_lstWindow[5]->ShowWindow(FALSE); if(dwWindowNum == 6) m_lstWindow[6]->m_bShow = !m_lstWindow[6]->m_bShow; else m_lstWindow[6]->m_bShow = FALSE; if(dwWindowNum == 7) m_lstWindow[7]->m_bShow = !m_lstWindow[7]->m_bShow; else m_lstWindow[7]->m_bShow = FALSE; if(!m_lstWindow[5]->m_bShow) { if(m_lstWindow[8]->m_bShow) m_lstWindow[8]->ShowWindow(FALSE); if(m_lstWindow[13]->m_bShow) m_lstWindow[13]->ShowWindow(FALSE); if(m_lstWindow[16]->m_bShow) m_lstWindow[16]->ShowWindow(FALSE); if(m_lstWindow[19]->m_bShow) m_lstWindow[19]->ShowWindow(FALSE); } m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[17]->ShowWindow(FALSE); } BOOL CAkhanGUI::GetBusy(void) { if(m_lstWindow[7]->m_bShow || m_lstWindow[8]->m_bShow || m_lstWindow[13]->m_bShow || m_lstWindow[14]->m_bShow || m_lstWindow[16]->m_bShow || m_lstWindow[17]->m_bShow || m_lstWindow[18]->m_bShow || m_lstWindow[19]->m_bShow || m_lstWindow[20]->m_bShow || m_lstWindow[21]->m_bShow) { return TRUE; } return FALSE; } BOOL CAkhanGUI::GetIsBlackMarket(void) { if(m_lstWindow[8]) { return ((CAkhanTrade *)m_lstWindow[8])->m_bBalckMarket; } return FALSE; } void CAkhanGUI::InitStreetStall(unsigned long dwChrID, char *lpstrStreetName) { m_lstWindow[3]->m_bShow = FALSE; m_lstWindow[4]->ShowWindow(FALSE); m_lstWindow[6]->m_bShow = FALSE; m_lstWindow[7]->m_bShow = FALSE; m_lstWindow[13]->ShowWindow(FALSE); m_lstWindow[14]->ShowWindow(FALSE); m_lstWindow[16]->ShowWindow(FALSE); m_lstWindow[5]->ShowWindow(TRUE); m_lstWindow[20]->ShowWindow(TRUE); ((CHumanStreetStall *)m_lstWindow[20])->InitStreetStall(dwChrID, lpstrStreetName); } void CAkhanGUI::InitQuest(unsigned long dwChrID, unsigned long dwQuestID) { m_lstWindow[21]->ShowWindow(TRUE); m_lstWindow[21]->InitValue(); LPNPCNode lpNode = g_NPCList.GetNPCNode(dwChrID); if(lpNode) { LPQuestNode lpQuest = lpNode->GetQuestforID(dwQuestID); if(lpQuest) { ((CHumanQuestDesc *)m_lstWindow[21])->SetText(dwChrID, dwQuestID, lpQuest->m_strQuestDesc); } } }