// HumanInven.cpp: implementation of the CHumanInven class. // ////////////////////////////////////////////////////////////////////// //#include #include "ClientMain.h" #include "HumanInven.h" #include "WinInput.h" #include "GUITextEdit.h" #include "GUITooltipItem.h" #include "GUIMessageBox.h" #include "GUIMessageBoxManager.h" #include "Item\ItemMgr.h" #include "Item\ItemFactory.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CHumanInven::CHumanInven() { } CHumanInven::~CHumanInven() { } void CHumanInven::InitValue(void) { m_dwBodyInven = 0; m_dwBackInven = 0; m_dwRepairResult = 0; m_lpRepairItem = NULL; m_lpSplitItem = NULL; m_dwSplitResult = 0; m_dwSplitValue = 0; } BOOL CHumanInven::Init(unsigned short x, unsigned short y) { CSprite *lpSprite; lpSprite = new CSprite; lpSprite->Create(x, y, 0, 0, 222, 256, g_ClientMain.m_lpInterface->m_lstTexture[9]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x, y + 256, 0, 0, 222, 224, g_ClientMain.m_lpInterface->m_lstTexture[10]); m_lstSprite.push_back(lpSprite); // ¼ÅÃ÷ lpSprite = new CSprite; lpSprite->Create(x + 69, y + 93, 0, 0, 85, 124, g_ClientMain.m_lpInterface->m_lstTexture[11]); m_lstSprite.push_back(lpSprite); // Æ©´Ð lpSprite = new CSprite; lpSprite->Create(x + 69, y + 93, 85, 0, 170, 124, g_ClientMain.m_lpInterface->m_lstTexture[11]); m_lstSprite.push_back(lpSprite); // °©¿Ê lpSprite = new CSprite; lpSprite->Create(x + 69, y + 93, 0, 124, 85, 249, g_ClientMain.m_lpInterface->m_lstTexture[11]); m_lstSprite.push_back(lpSprite); // 1 lpSprite = new CSprite; lpSprite->Create(x + 9, y + 93, 85, 124, 144, 138, g_ClientMain.m_lpInterface->m_lstTexture[11]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x + 155, y + 93, 85, 124, 144, 138, g_ClientMain.m_lpInterface->m_lstTexture[11]); m_lstSprite.push_back(lpSprite); // 2 lpSprite = new CSprite; lpSprite->Create(x + 9, y + 93, 85, 138, 144, 152, g_ClientMain.m_lpInterface->m_lstTexture[11]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x + 155, y + 93, 85, 138, 144, 152, g_ClientMain.m_lpInterface->m_lstTexture[11]); m_lstSprite.push_back(lpSprite); // ¹éÆÑ 1 lpSprite = new CSprite; lpSprite->Create(x + 176, y + 283, 0, 0, 34, 160, g_ClientMain.m_lpInterface->m_lstTexture[12]); m_lstSprite.push_back(lpSprite); // ¹éÆÑ 2 lpSprite = new CSprite; lpSprite->Create(x + 176, y + 283, 38, 0,76, 160, g_ClientMain.m_lpInterface->m_lstTexture[12]); m_lstSprite.push_back(lpSprite); // ¹éÆÑ 3 lpSprite = new CSprite; lpSprite->Create(x + 176, y + 283, 76, 0, 114, 160, g_ClientMain.m_lpInterface->m_lstTexture[12]); m_lstSprite.push_back(lpSprite); CGUIButton *lpButton; lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(190, 1, 0, 0, 28, 28, g_ClientMain.m_lpInterface->m_lpCommonWindow); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(190, 1, 28, 0, 56, 28, g_ClientMain.m_lpInterface->m_lpCommonWindow); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[160]); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(148, 66, 175, 164, 243, 186, g_ClientMain.m_lpInterface->m_lstTexture[11]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(148, 66, 175, 186, 243, 208, g_ClientMain.m_lpInterface->m_lstTexture[11]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[171]); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); m_bShow = FALSE; m_dwWindowKind = WINDOW_FIX; m_rcWindowSize.left = x; m_rcWindowSize.top = y; m_rcWindowSize.right = x + 222; m_rcWindowSize.bottom = y + 480; m_rcMoveEdge.left = x; m_rcMoveEdge.top = y; m_rcMoveEdge.right = x + 150; m_rcMoveEdge.bottom = y + 20; InitValue(); return TRUE; } BOOL CHumanInven::Update(BOOL &bClick, BOOL &bEdge) { if(g_DeviceInput.InRect(m_rcWindowSize.left, m_rcWindowSize.top, m_rcWindowSize.right, m_rcWindowSize.bottom)) { bEdge = TRUE; if(g_DeviceInput.GetIsLeftMouseDown() || g_DeviceInput.GetIsMiddleMouseDown() || g_DeviceInput.GetIsRightMouseDown() || g_DeviceInput.GetIsLeftMousePress() || g_DeviceInput.GetIsMiddleMousePress() || g_DeviceInput.GetIsRightMousePress() || g_DeviceInput.GetIsLeftMouseUp() || g_DeviceInput.GetIsMiddleMouseUp() || g_DeviceInput.GetIsRightMouseUp()) { bClick = TRUE; } } POINT *ptMousePos = g_DeviceInput.GetMousePosition(); unsigned long dwMousePosX = ptMousePos->x - (m_rcWindowSize.left + 18); unsigned long dwMousePosY = ptMousePos->y - (m_rcWindowSize.top + 286); m_ButtonManager.Update(); m_TooltipManager.Update(); list::iterator it; // ¼ö¸®ÇÏ±â ÆÐŶ º¸³»±â if(m_dwRepairResult & MB_YES) { g_ClientMain.m_Network.m_pSocket->CharRepairItem(g_ClientMain.m_dwTradingNpcID, &m_lpRepairItem->m_lpItemBase->GetPos(), m_lpRepairItem->m_lpItemBase->GetRepairPrice()); m_dwRepairResult = 0; m_lpRepairItem = NULL; return TRUE; } else if(m_dwRepairResult & MB_NO || m_dwRepairResult & MB_EXIT) { m_dwRepairResult = 0; m_lpRepairItem = NULL; return TRUE; } // ³ª´©±â if(m_dwSplitResult & MB_YES) { if(m_dwSplitValue) { if(m_dwSplitValue >= m_lpSplitItem->GetNowDurability()) { g_ClientMain.SetPickItem(m_lpSplitItem, FALSE); g_ClientMain.m_csStatus.DeleteInventoryItem(m_lpSplitItem); } else { g_ClientMain.m_lpPickItem = new CItemInstance; g_ClientMain.m_lpPickItem->m_lpItemBase = Item::CItemFactory::GetInstance().CreateItem(m_lpSplitItem->GetProtoTypeID()); g_ClientMain.m_lpPickItem->m_lpItemBase->MoveItem(m_lpSplitItem->m_lpItemBase->GetPos()); g_ClientMain.m_lpPickItem->SetNowDurability(m_dwSplitValue); g_ClientMain.m_lpPickItem->SetItemPos(ClientSocket::ItemPos_Inven); g_ClientMain.m_lpPickItem->m_dwItemUID = m_lpSplitItem->m_dwItemUID; g_ClientMain.m_lpPickItem->m_lCoolDownTimeCount = m_lpSplitItem->m_lCoolDownTimeCount; // g_ClientMain.m_lpPickItem->m_lpProtoTypeInfo = g_ItemMgr.GetProtoTypeInfo(g_ClientMain.m_lpPickItem->GetProtoTypeID()); g_ClientMain.m_lpPickItem->m_lpSprite = new CSprite; g_ClientMain.m_lpPickItem->m_lpSprite->Create(0, 0, g_ClientMain.m_lpPickItem->GetItemInfo().m_SpriteData.m_nSpriteMinX, g_ClientMain.m_lpPickItem->GetItemInfo().m_SpriteData.m_nSpriteMinY, g_ClientMain.m_lpPickItem->GetItemInfo().m_SpriteData.m_nSpriteMaxX, g_ClientMain.m_lpPickItem->GetItemInfo().m_SpriteData.m_nSpriteMaxY, NULL); g_ClientMain.m_lpPickItem->m_lpTooltip = new CGUITooltipItem; ((CGUITooltipItem *)g_ClientMain.m_lpPickItem->m_lpTooltip)->SetItem(g_ClientMain.m_lpPickItem); unsigned long dwSplitValue = m_lpSplitItem->GetNowDurability() - m_dwSplitValue; m_lpSplitItem->SetNowDurability(dwSplitValue); g_ClientMain.m_csStatus.SetQuickSlot(m_lpSplitItem); } } m_dwSplitResult = 0; m_dwSplitValue = 0; m_lpSplitItem = NULL; g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_ClientMain.SetFocus(); return TRUE; } else if(m_dwSplitResult & MB_NO || m_dwSplitResult & MB_EXIT) { m_dwSplitResult = 0; m_dwSplitValue = 0; m_lpSplitItem = NULL; g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_ClientMain.SetFocus(); return TRUE; } if(g_ClientMain.m_lpInterface->GetIsTrade()) { if(g_ClientMain.m_dwKindCursor == CURSOR_REPAIR && g_DeviceInput.GetIsLeftMouseDown()) { // ¼ö¸® for(int i = 0; i < 15; i++) { if(g_ClientMain.m_csStatus.m_lstEquipment[i]) { if(g_ClientMain.m_csStatus.m_lstEquipment[i]->IsOverMouse() && g_ClientMain.m_csStatus.m_lstEquipment[i]->GetIsEnableRepair() && g_ClientMain.m_csStatus.m_lstEquipment[i]->GetNowDurability() < g_ClientMain.m_csStatus.m_lstEquipment[i]->GetMaxDurability()) { if(g_ClientMain.m_csStatus.m_Info.Gold > g_ClientMain.m_csStatus.m_lstEquipment[i]->m_lpItemBase->GetRepairPrice()) { char strString[200]; sprintf(strString, g_StringTable.m_strString[161], g_ClientMain.m_csStatus.m_lstEquipment[i]->m_lpItemBase->GetRepairPrice()); CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(strString, MB_YES | MB_NO | MB_EXIT); lpMessageBox->SetResult(&m_dwRepairResult); m_lpRepairItem = g_ClientMain.m_csStatus.m_lstEquipment[i]; m_dwRepairResult = 0; } else { CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[162]); } return TRUE; } } } for(it = g_ClientMain.m_csStatus.m_lstInventory.begin(); it != g_ClientMain.m_csStatus.m_lstInventory.end(); it++) { if((*it)->m_lpItemBase->GetPos().GetZIndex() != m_dwBackInven) { continue; } if( (*it)->GetIsEnableRepair() && // ÀåºñÀ̰í (*it)->IsOverMouse() && // ¸¶¿ì½º·Î ¼±Åà (*it)->GetNowDurability() < (*it)->GetMaxDurability()) // ³»±¸µµ°¡ ÀûÀ»¶§ { if(g_ClientMain.m_csStatus.m_Info.Gold > (*it)->m_lpItemBase->GetRepairPrice()) { char strString[200]; sprintf(strString, g_StringTable.m_strString[161], (*it)->m_lpItemBase->GetRepairPrice()); CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(strString, MB_YES | MB_NO | MB_EXIT); lpMessageBox->SetResult(&m_dwRepairResult); m_lpRepairItem = (*it); m_dwRepairResult = 0; } else { CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[162]); } return TRUE; } } } } else { if(g_DeviceInput.GetIsRightMouseDown()) { for(it = g_ClientMain.m_csStatus.m_lstInventory.begin(); it != g_ClientMain.m_csStatus.m_lstInventory.end(); it++) { if((*it)->m_lpItemBase->GetPos().GetZIndex() != m_dwBackInven) { continue; } if((*it)->IsOverMouse()) { switch((*it)->GetItemType()) { case Item::CItemType::SKILLBOOK: UseSkillBook((*it)); break; case Item::CItemType::POTION: UsePotion((*it)); break; } return TRUE; } } } } // Àåºñ ¹× Àκ¥Å丮 ¾ÆÀÌÅÛ ¼±Åà if(SelectItem()) return TRUE; if(g_DeviceInput.GetIsLeftMouseDown()) { if(g_DeviceInput.InRect(m_rcWindowSize.left + 69, m_rcWindowSize.top + 93, m_rcWindowSize.left + 96, m_rcWindowSize.top + 106)) { m_dwBodyInven = 0; } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 97, m_rcWindowSize.top + 93, m_rcWindowSize.left + 125, m_rcWindowSize.top + 106)) { m_dwBodyInven = 1; } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 126, m_rcWindowSize.top + 93, m_rcWindowSize.left + 153, m_rcWindowSize.top + 106)) { m_dwBodyInven = 2; } else if((g_DeviceInput.InRect(m_rcWindowSize.left + 10, m_rcWindowSize.top + 94, m_rcWindowSize.left + 37, m_rcWindowSize.top + 106) || g_DeviceInput.InRect(m_rcWindowSize.left + 156, m_rcWindowSize.top + 94, m_rcWindowSize.left + 183, m_rcWindowSize.top + 106))) { if(g_ClientMain.m_csStatus.m_cWeaponPos != 0 && !g_CharacterData.GetAttacking()) { g_ClientMain.m_csStatus.m_cWeaponPos = 0; g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_dwAttackCombo = 0; g_ClientMain.m_Network.SendCharSwitchHand(); g_ClientMain.m_Network.SendCharShape(); g_ClientMain.m_csStatus.StatusUpdate(); } } else if((g_DeviceInput.InRect(m_rcWindowSize.left + 39, m_rcWindowSize.top + 94, m_rcWindowSize.left + 66, m_rcWindowSize.top + 106) || g_DeviceInput.InRect(m_rcWindowSize.left + 185, m_rcWindowSize.top + 94, m_rcWindowSize.left + 212, m_rcWindowSize.top + 106))) { if(g_ClientMain.m_csStatus.m_cWeaponPos != 1 && !g_CharacterData.GetAttacking()) { g_ClientMain.m_csStatus.m_cWeaponPos = 1; g_CharacterData.m_lstCharData[g_CharacterData.m_nFocusCharacter]->m_dwAttackCombo = 0; g_ClientMain.m_Network.SendCharSwitchHand(); g_ClientMain.m_Network.SendCharShape(); g_ClientMain.m_csStatus.StatusUpdate(); } }/**/ else if(g_DeviceInput.InRect(m_rcWindowSize.left + 177, m_rcWindowSize.top + 284, m_rcWindowSize.left + 207, m_rcWindowSize.top + 328)) { m_dwBackInven = 0; } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 177, m_rcWindowSize.top + 335, m_rcWindowSize.left + 207, m_rcWindowSize.top + 379)) { m_dwBackInven = 1; } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 177, m_rcWindowSize.top + 386, m_rcWindowSize.left + 207, m_rcWindowSize.top + 430)) { m_dwBackInven = 2; } if(g_ClientMain.m_lpPickItem && g_ClientMain.m_lpPickItem->GetItemPos() != ClientSocket::ItemPos_Stall && g_ClientMain.m_lpPickItem->GetItemPos() != ClientSocket::ItemPos_QSlot && g_ClientMain.m_lpPickItem->GetItemPos() != ClientSocket::ItemPos_SSlot) // ¼Õ¿¡ ÀÖ´Â ¾ÆÀÌÅÛ Ã³¸® { unsigned long dwInvenX = dwMousePosX / 26; unsigned long dwInvenY = dwMousePosY / 26; __int64 ddItem; if(g_DeviceInput.InRect(m_rcWindowSize.left + 15, m_rcWindowSize.top + 35, m_rcWindowSize.left + 39, m_rcWindowSize.top + 59)) // ¹ÝÁö 1 { Item::ItemPos pItemIndex; pItemIndex.m_cIndex = Item::EquipmentPos::RINGL; pItemIndex.m_cPos = ClientSocket::ItemPos_Equip; if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::RINGL)) != ITEM_FAILED) { if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex) { g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem); g_ClientMain.SetPickItem(NULL); g_ClientMain.m_Network.SendCharShape(); g_ClientMain.m_csStatus.StatusUpdate(); return TRUE; } if(ddItem == ITEM_EMPTY) { // ¾ÆÀÌÅÛ À̵¿ g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1); } else { // ½º¿ÒÇϱâ g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]); } return TRUE; } else { if(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]) { // ¼ÒÄÏ ¹Ú±â if(g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex], g_ClientMain.m_lpPickItem)) { g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID, &g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_lpItemBase->GetPos(), &g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); return TRUE; } } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 41, m_rcWindowSize.top + 35, m_rcWindowSize.left + 65, m_rcWindowSize.top + 59)) // ¹ÝÁö 2 { Item::ItemPos pItemIndex; pItemIndex.m_cIndex = Item::EquipmentPos::RINGR; pItemIndex.m_cPos = ClientSocket::ItemPos_Equip; if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::RINGR)) != ITEM_FAILED) { if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex) { g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem); g_ClientMain.SetPickItem(NULL); g_ClientMain.m_Network.SendCharShape(); g_ClientMain.m_csStatus.StatusUpdate(); return TRUE; } if(ddItem == ITEM_EMPTY) { // ¾ÆÀÌÅÛ À̵¿ g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1); } else { // ½º¿ÒÇϱâ g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]); } return TRUE; } else { if(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]) { // ¼ÒÄÏ ¹Ú±â if(g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex], g_ClientMain.m_lpPickItem)) { g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID, &g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_lpItemBase->GetPos(), &g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); return TRUE; } } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 86, m_rcWindowSize.top + 35, m_rcWindowSize.left + 136, m_rcWindowSize.top + 85)) // Çï¸ä { Item::ItemPos pItemIndex; pItemIndex.m_cIndex = Item::EquipmentPos::HELM; pItemIndex.m_cPos = ClientSocket::ItemPos_Equip; if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::HELM)) != ITEM_FAILED) { if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex) { g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem); g_ClientMain.SetPickItem(NULL); g_ClientMain.m_Network.SendCharShape(); g_ClientMain.m_csStatus.StatusUpdate(); return TRUE; } if(ddItem == ITEM_EMPTY) { // ¾ÆÀÌÅÛ À̵¿ g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1); } else { // ½º¿ÒÇϱâ g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]); } return TRUE; } else { if(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]) { // ¼ÒÄÏ ¹Ú±â if(g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex], g_ClientMain.m_lpPickItem)) { g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID, &g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_lpItemBase->GetPos(), &g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); return TRUE; } } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 159, m_rcWindowSize.top + 61, m_rcWindowSize.left + 183, m_rcWindowSize.top + 85)) // ¸ñ°ÉÀÌ { Item::ItemPos pItemIndex; pItemIndex.m_cIndex = Item::EquipmentPos::NECKLACE; pItemIndex.m_cPos = ClientSocket::ItemPos_Equip; if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::NECKLACE)) != ITEM_FAILED) { if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex) { g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem); g_ClientMain.SetPickItem(NULL); g_ClientMain.m_Network.SendCharShape(); g_ClientMain.m_csStatus.StatusUpdate(); return TRUE; } if(ddItem == ITEM_EMPTY) { // ¾ÆÀÌÅÛ À̵¿ g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1); } else { // ½º¿ÒÇϱâ g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]); } return TRUE; } else { if(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]) { // ¼ÒÄÏ ¹Ú±â if(g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex], g_ClientMain.m_lpPickItem)) { g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID, &g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_lpItemBase->GetPos(), &g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); return TRUE; } } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 13, m_rcWindowSize.top + 110, m_rcWindowSize.left + 63, m_rcWindowSize.top + 212)) // ¹«±â 1 { Item::ItemPos pItemIndex; pItemIndex.m_cIndex = g_ClientMain.m_csStatus.m_cWeaponPos + Item::EquipmentPos::WEAPON_HAND1; pItemIndex.m_cPos = ClientSocket::ItemPos_Equip; if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, g_ClientMain.m_csStatus.m_cWeaponPos + Item::EquipmentPos::WEAPON_HAND1)) != ITEM_FAILED) { if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex) { g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem); g_ClientMain.SetPickItem(NULL); g_ClientMain.m_Network.SendCharShape(); g_ClientMain.m_csStatus.StatusUpdate(); return TRUE; } if(ddItem == ITEM_EMPTY) { // ¾ÆÀÌÅÛ À̵¿ g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1); } else { // ½º¿ÒÇϱâ g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]); } return TRUE; } else { if(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]) { // ¼ÒÄÏ ¹Ú±â if(g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex], g_ClientMain.m_lpPickItem)) { g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID, &g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_lpItemBase->GetPos(), &g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); return TRUE; } } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 73, m_rcWindowSize.top + 110, m_rcWindowSize.left + 149, m_rcWindowSize.top + 212)) // ¸öÅë { switch(g_ClientMain.m_lpPickItem->GetItemType()) { case Item::CItemType::SHIRT: ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::SHIRT); break; case Item::CItemType::TUNIC: ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::TUNIC); break; case Item::CItemType::ARMOUR: ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::ARMOUR); break; default: ddItem = ITEM_FAILED; break; } if(ddItem != ITEM_FAILED) { m_dwBodyInven = g_ClientMain.m_lpPickItem->GetItemType() - 1; Item::ItemPos pItemIndex; pItemIndex.m_cIndex = m_dwBodyInven + Item::CItemType::SHIRT; pItemIndex.m_cPos = ClientSocket::ItemPos_Equip; if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex) { g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem); g_ClientMain.SetPickItem(NULL); g_ClientMain.m_Network.SendCharShape(); g_ClientMain.m_csStatus.StatusUpdate(); return TRUE; } if(ddItem == ITEM_EMPTY) { // ¾ÆÀÌÅÛ À̵¿ g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1); } else { // ½º¿ÒÇϱâ g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]); } return TRUE; } else { Item::ItemPos pItemIndex; pItemIndex.m_cIndex = m_dwBodyInven + Item::CItemType::SHIRT; pItemIndex.m_cPos = ClientSocket::ItemPos_Equip; if(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]) { // ¼ÒÄÏ ¹Ú±â if(g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex], g_ClientMain.m_lpPickItem)) { g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID, &g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_lpItemBase->GetPos(), &g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); return TRUE; } } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 159, m_rcWindowSize.top + 110, m_rcWindowSize.left + 209, m_rcWindowSize.top + 212)) // ¹«±â 2 { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, g_ClientMain.m_csStatus.m_cWeaponPos + Item::EquipmentPos::SHIELD_HAND1)) != ITEM_FAILED) { Item::ItemPos pItemIndex; pItemIndex.m_cIndex = g_ClientMain.m_csStatus.m_cWeaponPos + Item::EquipmentPos::SHIELD_HAND1; pItemIndex.m_cPos = ClientSocket::ItemPos_Equip; if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex) { g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem); g_ClientMain.SetPickItem(NULL); g_ClientMain.m_Network.SendCharShape(); g_ClientMain.m_csStatus.StatusUpdate(); return TRUE; } if(ddItem == ITEM_EMPTY) { // ¾ÆÀÌÅÛ À̵¿ if(g_ClientMain.m_lpPickItem->GetIsEnableStack()) { CItemInstance *lpExistItem = NULL; switch(g_ClientMain.m_lpPickItem->GetItemPos()) { case ClientSocket::ItemPos_Equip: lpExistItem = g_ClientMain.m_csStatus.m_lstEquipment[g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos().m_cIndex]; break; case ClientSocket::ItemPos_Inven: lpExistItem = g_ClientMain.m_csStatus.GetInventoryItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); break; case ClientSocket::ItemPos_Upgrade: lpExistItem = g_ClientMain.m_csStatus.m_lpUpgrade[g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos().m_cIndex]; break; case ClientSocket::ItemPos_Exchange: lpExistItem = g_ClientMain.m_csStatus.GetExchangeItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); break; case ClientSocket::ItemPos_Deposit: lpExistItem = g_ClientMain.m_csStatus.GetDepositItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); break; } if(lpExistItem && lpExistItem->GetProtoTypeID() == g_ClientMain.m_lpPickItem->GetProtoTypeID()) { // ±âÁ¸ÀÇ ÀÚ¸®¿¡ ¾ÆÀÌÅÛÀÌ ³²¾ÆÀÖÀ¸¸é ¾ÆÀÌÅÛÀÌ ³ª´²Áø°É·Î »ý°¢, ¾ÆÀÌÅÛÀ» ½ºÅÃÇÑ´Ù. g_ClientMain.m_Network.SendSplitItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_lpPickItem->GetNowDurability()); } else { g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_lpPickItem->GetMaxDurability()); } } else g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1); } else { // ½º¿ÒÇϱâ g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]); } return TRUE; } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 13, m_rcWindowSize.top + 223, m_rcWindowSize.left + 64, m_rcWindowSize.top + 274)) // Àå°© { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::GLOVE)) != ITEM_FAILED) { Item::ItemPos pItemIndex; pItemIndex.m_cIndex = Item::EquipmentPos::GLOVE; pItemIndex.m_cPos = ClientSocket::ItemPos_Equip; if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex) { g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem); g_ClientMain.SetPickItem(NULL); g_ClientMain.m_Network.SendCharShape(); g_ClientMain.m_csStatus.StatusUpdate(); return TRUE; } if(ddItem == ITEM_EMPTY) { // ¾ÆÀÌÅÛ À̵¿ g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1); } else { // ½º¿ÒÇϱâ g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]); } return TRUE; } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 86, m_rcWindowSize.top + 223, m_rcWindowSize.left + 136, m_rcWindowSize.top + 274)) // ¸ÁÅä { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::CLOAK)) != ITEM_FAILED) { Item::ItemPos pItemIndex; pItemIndex.m_cIndex = Item::EquipmentPos::CLOAK; pItemIndex.m_cPos = ClientSocket::ItemPos_Equip; if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex) { g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem); g_ClientMain.SetPickItem(NULL); g_ClientMain.m_Network.SendCharShape(); g_ClientMain.m_csStatus.StatusUpdate(); return TRUE; } if(ddItem == ITEM_EMPTY) { // ¾ÆÀÌÅÛ À̵¿ g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1); } else { // ½º¿ÒÇϱâ g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]); } return TRUE; } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 159, m_rcWindowSize.top + 223, m_rcWindowSize.left + 211, m_rcWindowSize.top + 274)) // ½Å¹ß { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::BOOTS)) != ITEM_FAILED) { Item::ItemPos pItemIndex; pItemIndex.m_cIndex = Item::EquipmentPos::BOOTS; pItemIndex.m_cPos = ClientSocket::ItemPos_Equip; if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex) { g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem); g_ClientMain.SetPickItem(NULL); g_ClientMain.m_Network.SendCharShape(); g_ClientMain.m_csStatus.StatusUpdate(); return TRUE; } if(ddItem == ITEM_EMPTY) { // ¾ÆÀÌÅÛ À̵¿ g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1); } else { // ½º¿ÒÇϱâ g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]); } return TRUE; } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 18, m_rcWindowSize.top + 286, m_rcWindowSize.left + 172, m_rcWindowSize.top + 440)) // Àκ¥ { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 0, dwInvenX, dwInvenY, m_dwBackInven)) != ITEM_FAILED) { Item::ItemPos pItemIndex; pItemIndex.SetPos(dwInvenX, dwInvenY, m_dwBackInven); pItemIndex.m_cPos = ClientSocket::ItemPos_Inven; if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex) { CItemInstance *lpExistItem = g_ClientMain.m_csStatus.GetInventoryItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); if(lpExistItem) { if(g_ClientMain.m_lpPickItem->GetIsEnableStack()) { unsigned long dwDurability = lpExistItem->GetNowDurability() + g_ClientMain.m_lpPickItem->GetNowDurability(); lpExistItem->SetNowDurability(dwDurability); g_ClientMain.m_csStatus.SetQuickSlot(lpExistItem); delete g_ClientMain.m_lpPickItem; g_ClientMain.SetPickItem(NULL); } } else { g_ClientMain.m_csStatus.AddInventoryItem(g_ClientMain.m_lpPickItem); g_ClientMain.SetPickItem(NULL); } return TRUE; } if(ddItem == ITEM_EMPTY) { if(g_ClientMain.m_lpPickItem->GetIsEnableStack()) { CItemInstance *lpExistItem = NULL; switch(g_ClientMain.m_lpPickItem->GetItemPos()) { case ClientSocket::ItemPos_Equip: lpExistItem = g_ClientMain.m_csStatus.m_lstEquipment[g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos().m_cIndex]; break; case ClientSocket::ItemPos_Inven: lpExistItem = g_ClientMain.m_csStatus.GetInventoryItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); break; case ClientSocket::ItemPos_Upgrade: lpExistItem = g_ClientMain.m_csStatus.m_lpUpgrade[g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos().m_cIndex]; break; case ClientSocket::ItemPos_Exchange: lpExistItem = g_ClientMain.m_csStatus.GetExchangeItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); break; case ClientSocket::ItemPos_Deposit: lpExistItem = g_ClientMain.m_csStatus.GetDepositItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); break; } if(lpExistItem && lpExistItem->GetProtoTypeID() == g_ClientMain.m_lpPickItem->GetProtoTypeID()) { // ±âÁ¸ÀÇ ÀÚ¸®¿¡ ¾ÆÀÌÅÛÀÌ ³²¾ÆÀÖÀ¸¸é ¾ÆÀÌÅÛÀÌ ³ª´²Áø°É·Î »ý°¢, ¾ÆÀÌÅÛÀ» ½ºÅÃÇÑ´Ù. g_ClientMain.m_Network.SendSplitItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_lpPickItem->GetNowDurability()); } else { g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_lpPickItem->GetNowDurability()); } } else { // ¾ÆÀÌÅÛ À̵¿ g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1); } } else { CItemInstance *lpExistItem = g_ClientMain.m_csStatus.GetInventoryItem(ddItem); if(g_ClientMain.m_lpPickItem->GetIsEnableStack() && lpExistItem) { CItemInstance *lpStallItem = g_ClientMain.m_csStatus.GetStreetTradeItem(lpExistItem->m_dwItemUID); if(!lpStallItem) { // ¼ÒÄÏ ¹Ú±â if(g_ClientMain.m_csStatus.GetIsInstallSocket(lpExistItem, g_ClientMain.m_lpPickItem)) { g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID, &lpExistItem->m_lpItemBase->GetPos(), &g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); return TRUE; } // ¾ÆÀÌÅÛ ½ºÅà if(lpExistItem->GetProtoTypeID() == g_ClientMain.m_lpPickItem->GetProtoTypeID() && (pItemIndex.GetXIndex() == lpExistItem->m_lpItemBase->GetPos().GetXIndex() && pItemIndex.GetYIndex() == lpExistItem->m_lpItemBase->GetPos().GetYIndex()) && lpExistItem->GetNowDurability() < lpExistItem->GetMaxDurability()) { // ¾ÆÀÌÅÛÀ» ½ºÅÃÇÑ´Ù. unsigned char cNum; if(lpExistItem->GetMaxDurability() - lpExistItem->GetNowDurability() < g_ClientMain.m_lpPickItem->GetNowDurability()) { cNum = lpExistItem->GetMaxDurability() - lpExistItem->GetNowDurability(); } else { cNum = g_ClientMain.m_lpPickItem->GetNowDurability(); } g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, cNum); return TRUE; } } } // Àκ¥Å丮 ¸®½ºÆ®¿¡¼­ ¾ÆÀÌÅÛÀ» ã´Â´Ù.(¿Ï·á) // ½º¿ÒÇϱâ CItemInstance *lpInvenItem = NULL; if(g_ClientMain.m_lpPickItem->GetIsEnableStack() && g_ClientMain.m_lpPickItem->GetItemPos() != ClientSocket::ItemPos_Temp) lpInvenItem = g_ClientMain.m_csStatus.GetInventoryItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); if(!lpInvenItem) g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, lpExistItem); } return TRUE; } } } } if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_CLICK) { m_ButtonManager.m_lstButton[0]->m_nState = BUTTON_NONE; ShowWindow(FALSE); } else if(m_ButtonManager.m_lstButton[1]->m_nState == BUTTON_CLICK) { if(!g_ClientMain.m_lpInterface->GetBusy()) { g_ClientMain.m_lpInterface->InitStreetStall(g_ClientMain.m_dwMyChrID, NULL); } } return TRUE; } void CHumanInven::ShowWindow(BOOL bShow) { if(bShow == FALSE) { if(!g_ClientMain.m_lpInterface->GetIsExchange()) { m_bShow = bShow; g_ClientMain.m_lpInterface->m_lstWindow[8]->ShowWindow(bShow); g_ClientMain.m_lpInterface->m_lstWindow[13]->ShowWindow(bShow); g_ClientMain.m_lpInterface->m_lstWindow[19]->ShowWindow(bShow); g_ClientMain.m_lpInterface->m_lstWindow[20]->ShowWindow(bShow); } } else { m_bShow = bShow; } } void CHumanInven::Render(LPDIRECT3DDEVICE8 lpD3DDevice) { m_lstSprite[0]->Render(lpD3DDevice, m_cAlpha); m_lstSprite[1]->Render(lpD3DDevice, m_cAlpha); switch(m_dwBodyInven) { case 0: m_lstSprite[2]->Render(lpD3DDevice, m_cAlpha); break; case 1: m_lstSprite[3]->Render(lpD3DDevice, m_cAlpha); break; case 2: m_lstSprite[4]->Render(lpD3DDevice, m_cAlpha); break; } switch(g_ClientMain.m_csStatus.m_cWeaponPos) { case 0: m_lstSprite[5]->Render(lpD3DDevice, m_cAlpha); m_lstSprite[6]->Render(lpD3DDevice, m_cAlpha); break; case 1: m_lstSprite[7]->Render(lpD3DDevice, m_cAlpha); m_lstSprite[8]->Render(lpD3DDevice, m_cAlpha); break; } switch(m_dwBackInven) { case 0: m_lstSprite[9]->Render(lpD3DDevice, m_cAlpha); break; case 1: m_lstSprite[10]->Render(lpD3DDevice, m_cAlpha); break; case 2: m_lstSprite[11]->Render(lpD3DDevice, m_cAlpha); break; } for(int i = 0; i < 15; i++) { if(g_ClientMain.m_csStatus.m_lstEquipment[i]) { switch(i) { case Item::EquipmentPos::SHIRT: if(m_dwBodyInven == 0) g_ClientMain.m_csStatus.m_lstEquipment[i]->Render(lpD3DDevice); break; case Item::EquipmentPos::TUNIC: if(m_dwBodyInven == 1) g_ClientMain.m_csStatus.m_lstEquipment[i]->Render(lpD3DDevice); break; case Item::EquipmentPos::ARMOUR: if(m_dwBodyInven == 2) g_ClientMain.m_csStatus.m_lstEquipment[i]->Render(lpD3DDevice); break; case Item::EquipmentPos::WEAPON_HAND1: case Item::EquipmentPos::SHIELD_HAND1: if(g_ClientMain.m_csStatus.m_cWeaponPos == 0) { // if(g_ClientMain.m_csStatus.m_lstEquipment[i]->GetTwoHandItem() || // ((g_ClientMain.m_csStatus.m_lstEquipment[i]->GetItemType() == Item::CItemType::BOW || g_ClientMain.m_csStatus.m_lstEquipment[i]->GetItemType() == Item::CItemType::CROSSBOW) && !g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::SHIELD_HAND1])) if(i == Item::EquipmentPos::WEAPON_HAND1 && g_ClientMain.m_csStatus.m_lstEquipment[i]->GetTwoHandItem()) { if((g_ClientMain.m_csStatus.m_lstEquipment[i]->GetItemType() == Item::CItemType::BOW || g_ClientMain.m_csStatus.m_lstEquipment[i]->GetItemType() == Item::CItemType::CROSSBOW) && g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::SHIELD_HAND1]) { g_ClientMain.m_csStatus.m_lstEquipment[i]->Render(lpD3DDevice); } else { g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_wPutX = m_rcWindowSize.left + 13 + ((50 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_lpSprite->GetSizeX()) / 2); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_wPutY = m_rcWindowSize.top + 110 + ((102 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_lpSprite->GetSizeY()) / 2); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->Render(lpD3DDevice); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_wPutX = m_rcWindowSize.left + 159 + ((50 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_lpSprite->GetSizeX()) / 2); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_wPutY = m_rcWindowSize.top + 110 + ((102 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_lpSprite->GetSizeY()) / 2); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->Render(lpD3DDevice); g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 159, m_rcWindowSize.top + 110, m_rcWindowSize.left + 209, m_rcWindowSize.top + 212, 0xFFFF0000, 0x80); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_wPutX = m_rcWindowSize.left + 13 + ((50 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_lpSprite->GetSizeX()) / 2); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_wPutY = m_rcWindowSize.top + 110 + ((102 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_lpSprite->GetSizeY()) / 2); } } else { g_ClientMain.m_csStatus.m_lstEquipment[i]->Render(lpD3DDevice); } } break; case Item::EquipmentPos::WEAPON_HAND2: case Item::EquipmentPos::SHIELD_HAND2: if(g_ClientMain.m_csStatus.m_cWeaponPos == 1) { // if(g_ClientMain.m_csStatus.m_lstEquipment[i]->GetTwoHandItem() || // ((g_ClientMain.m_csStatus.m_lstEquipment[i]->GetItemType() == Item::CItemType::BOW || g_ClientMain.m_csStatus.m_lstEquipment[i]->GetItemType() == Item::CItemType::CROSSBOW) && !g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::SHIELD_HAND2])) if(i == Item::EquipmentPos::WEAPON_HAND2 && g_ClientMain.m_csStatus.m_lstEquipment[i]->GetTwoHandItem()) { if((g_ClientMain.m_csStatus.m_lstEquipment[i]->GetItemType() == Item::CItemType::BOW || g_ClientMain.m_csStatus.m_lstEquipment[i]->GetItemType() == Item::CItemType::CROSSBOW) && g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::SHIELD_HAND2]) { g_ClientMain.m_csStatus.m_lstEquipment[i]->Render(lpD3DDevice); } else { g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_wPutX = m_rcWindowSize.left + 13 + ((50 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_lpSprite->GetSizeX()) / 2); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_wPutY = m_rcWindowSize.top + 110 + ((102 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_lpSprite->GetSizeY()) / 2); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->Render(lpD3DDevice); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_wPutX = m_rcWindowSize.left + 159 + ((50 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_lpSprite->GetSizeX()) / 2); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_wPutY = m_rcWindowSize.top + 110 + ((102 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_lpSprite->GetSizeY()) / 2); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->Render(lpD3DDevice); g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 159, m_rcWindowSize.top + 110, m_rcWindowSize.left + 209, m_rcWindowSize.top + 212, 0xFFFF0000, 0x80); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_wPutX = m_rcWindowSize.left + 13 + ((50 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_lpSprite->GetSizeX()) / 2); g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_wPutY = m_rcWindowSize.top + 110 + ((102 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_lpSprite->GetSizeY()) / 2); } } else { g_ClientMain.m_csStatus.m_lstEquipment[i]->Render(lpD3DDevice); } } break; default: g_ClientMain.m_csStatus.m_lstEquipment[i]->Render(lpD3DDevice); break; } } } list::iterator it; for(it = g_ClientMain.m_csStatus.m_lstInventory.begin(); it != g_ClientMain.m_csStatus.m_lstInventory.end(); it++) { if(m_dwBackInven == (*it)->m_lpItemBase->GetPos().GetZIndex()) (*it)->Render(lpD3DDevice); } if(g_ClientMain.m_lpPickItem && g_MessageBoxManager.m_lstMessageBox.empty()) { __int64 ddItem; if(g_DeviceInput.InRect(m_rcWindowSize.left + 15, m_rcWindowSize.top + 35, m_rcWindowSize.left + 39, m_rcWindowSize.top + 59)) // ¹ÝÁö 1 { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::RINGL)) != ITEM_FAILED) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 15, m_rcWindowSize.top + 35, m_rcWindowSize.left + 39, m_rcWindowSize.top + 59, 0xFF0000FF, 0x80); } else { if(g_ClientMain.m_lpPickItem->GetIsSocketItem() && g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::RINGL] && g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::RINGL], g_ClientMain.m_lpPickItem)) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 15, m_rcWindowSize.top + 35, m_rcWindowSize.left + 39, m_rcWindowSize.top + 59, 0xFFFFFFFF, 0x80); } else { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 15, m_rcWindowSize.top + 35, m_rcWindowSize.left + 39, m_rcWindowSize.top + 59, 0xFFFF0000, 0x80); } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 41, m_rcWindowSize.top + 35, m_rcWindowSize.left + 65, m_rcWindowSize.top + 59)) // ¹ÝÁö 2 { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::RINGR)) != ITEM_FAILED) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 41, m_rcWindowSize.top + 35, m_rcWindowSize.left + 65, m_rcWindowSize.top + 59, 0xFF0000FF, 0x80); } else { if(g_ClientMain.m_lpPickItem->GetIsSocketItem() && g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::RINGR] && g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::RINGR], g_ClientMain.m_lpPickItem)) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 41, m_rcWindowSize.top + 35, m_rcWindowSize.left + 65, m_rcWindowSize.top + 59, 0xFFFFFFFF, 0x80); } else { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 41, m_rcWindowSize.top + 35, m_rcWindowSize.left + 65, m_rcWindowSize.top + 59, 0xFFFF0000, 0x80); } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 86, m_rcWindowSize.top + 35, m_rcWindowSize.left + 136, m_rcWindowSize.top + 85)) // Çï¸ä { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::HELM)) != ITEM_FAILED) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 86, m_rcWindowSize.top + 35, m_rcWindowSize.left + 136, m_rcWindowSize.top + 85, 0xFF0000FF, 0x80); } else { if(g_ClientMain.m_lpPickItem->GetIsSocketItem() && g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::HELM] && g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::HELM], g_ClientMain.m_lpPickItem)) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 86, m_rcWindowSize.top + 35, m_rcWindowSize.left + 136, m_rcWindowSize.top + 85, 0xFFFFFFFF, 0x80); } else { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 86, m_rcWindowSize.top + 35, m_rcWindowSize.left + 136, m_rcWindowSize.top + 85, 0xFFFF0000, 0x80); } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 159, m_rcWindowSize.top + 61, m_rcWindowSize.left + 183, m_rcWindowSize.top + 85)) // ¸ñ°ÉÀÌ { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::NECKLACE)) != ITEM_FAILED) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 159, m_rcWindowSize.top + 61, m_rcWindowSize.left + 183, m_rcWindowSize.top + 85, 0xFF0000FF, 0x80); } else { if(g_ClientMain.m_lpPickItem->GetIsSocketItem() && g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::NECKLACE] && g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::NECKLACE], g_ClientMain.m_lpPickItem)) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 159, m_rcWindowSize.top + 61, m_rcWindowSize.left + 183, m_rcWindowSize.top + 85, 0xFFFFFFFF, 0x80); } else { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 159, m_rcWindowSize.top + 61, m_rcWindowSize.left + 183, m_rcWindowSize.top + 85, 0xFFFF0000, 0x80); } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 13, m_rcWindowSize.top + 110, m_rcWindowSize.left + 63, m_rcWindowSize.top + 212)) // ¹«±â 1 { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, g_ClientMain.m_csStatus.m_cWeaponPos + Item::EquipmentPos::WEAPON_HAND1)) != ITEM_FAILED) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 13, m_rcWindowSize.top + 110, m_rcWindowSize.left + 63, m_rcWindowSize.top + 212, 0xFF0000FF, 0x80); } else { if(g_ClientMain.m_lpPickItem->GetIsSocketItem() && g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos] && g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos], g_ClientMain.m_lpPickItem)) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 13, m_rcWindowSize.top + 110, m_rcWindowSize.left + 63, m_rcWindowSize.top + 212, 0xFFFFFFFF, 0x80); } else { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 13, m_rcWindowSize.top + 110, m_rcWindowSize.left + 63, m_rcWindowSize.top + 212, 0xFFFF0000, 0x80); } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 73, m_rcWindowSize.top + 110, m_rcWindowSize.left + 149, m_rcWindowSize.top + 212)) // ¸öÅë { switch(g_ClientMain.m_lpPickItem->GetItemType()) { case Item::CItemType::SHIRT: ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::SHIRT); break; case Item::CItemType::TUNIC: ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::TUNIC); break; case Item::CItemType::ARMOUR: ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::ARMOUR); break; default: ddItem = ITEM_FAILED; break; } if(ddItem != ITEM_FAILED) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 73, m_rcWindowSize.top + 110, m_rcWindowSize.left + 149, m_rcWindowSize.top + 212, 0xFF0000FF, 0x80); } else { if(g_ClientMain.m_lpPickItem->GetIsSocketItem() && g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::SHIRT + m_dwBodyInven] && g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::SHIRT + m_dwBodyInven], g_ClientMain.m_lpPickItem)) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 73, m_rcWindowSize.top + 110, m_rcWindowSize.left + 149, m_rcWindowSize.top + 212, 0xFFFFFFFF, 0x80); } else { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 73, m_rcWindowSize.top + 110, m_rcWindowSize.left + 149, m_rcWindowSize.top + 212, 0xFFFF0000, 0x80); } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 159, m_rcWindowSize.top + 110, m_rcWindowSize.left + 209, m_rcWindowSize.top + 212)) // ¹«±â 2 { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, g_ClientMain.m_csStatus.m_cWeaponPos + Item::EquipmentPos::SHIELD_HAND1)) != ITEM_FAILED) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 159, m_rcWindowSize.top + 110, m_rcWindowSize.left + 209, m_rcWindowSize.top + 212, 0xFF0000FF, 0x80); } else { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 159, m_rcWindowSize.top + 110, m_rcWindowSize.left + 209, m_rcWindowSize.top + 212, 0xFFFF0000, 0x80); } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 13, m_rcWindowSize.top + 223, m_rcWindowSize.left + 64, m_rcWindowSize.top + 274)) // Àå°© { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::GLOVE)) != ITEM_FAILED) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 13, m_rcWindowSize.top + 223, m_rcWindowSize.left + 64, m_rcWindowSize.top + 274, 0xFF0000FF, 0x80); } else { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 13, m_rcWindowSize.top + 223, m_rcWindowSize.left + 64, m_rcWindowSize.top + 274, 0xFFFF0000, 0x80); } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 86, m_rcWindowSize.top + 223, m_rcWindowSize.left + 136, m_rcWindowSize.top + 274)) // ¸ÁÅä { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::CLOAK)) != ITEM_FAILED) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 86, m_rcWindowSize.top + 223, m_rcWindowSize.left + 136, m_rcWindowSize.top + 274, 0xFF0000FF, 0x80); } else { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 86, m_rcWindowSize.top + 223, m_rcWindowSize.left + 136, m_rcWindowSize.top + 274, 0xFFFF0000, 0x80); } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 159, m_rcWindowSize.top + 223, m_rcWindowSize.left + 211, m_rcWindowSize.top + 274)) // ½Å¹ß { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::BOOTS)) != ITEM_FAILED) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 159, m_rcWindowSize.top + 223, m_rcWindowSize.left + 211, m_rcWindowSize.top + 274, 0xFF0000FF, 0x80); } else { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 159, m_rcWindowSize.top + 223, m_rcWindowSize.left + 211, m_rcWindowSize.top + 274, 0xFFFF0000, 0x80); } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 18, m_rcWindowSize.top + 286, m_rcWindowSize.left + 172, m_rcWindowSize.top + 440)) // Àκ¥ { Item::ItemPos pItemIndex; POINT *ptMousePos = g_DeviceInput.GetMousePosition(); pItemIndex.SetPos((ptMousePos->x - (m_rcWindowSize.left + 18)) / 26, (ptMousePos->y - (m_rcWindowSize.top + 286)) / 26, m_dwBackInven); if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 0, pItemIndex.GetXIndex(), pItemIndex.GetYIndex(), m_dwBackInven)) != ITEM_FAILED) { CItemInstance *lpExistItem = g_ClientMain.m_csStatus.GetInventoryItem(ddItem); CItemInstance *lpStallItem = NULL; if(lpExistItem) { lpStallItem = g_ClientMain.m_csStatus.GetStreetTradeItem(lpExistItem->m_dwItemUID); } if(!lpStallItem && (g_ClientMain.m_lpPickItem->GetItemType() == Item::CItemType::GEM || g_ClientMain.m_lpPickItem->GetItemType() == Item::CItemType::RUNE) && lpExistItem && g_ClientMain.m_csStatus.GetIsInstallSocket(lpExistItem, g_ClientMain.m_lpPickItem)) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 18 + lpExistItem->m_lpItemBase->GetPos().GetXIndex() * 26, m_rcWindowSize.top + 286 + lpExistItem->m_lpItemBase->GetPos().GetYIndex() * 26, m_rcWindowSize.left + 18 + lpExistItem->GetItemInfo().m_DetailData.m_cXSize * 26 + lpExistItem->m_lpItemBase->GetPos().GetXIndex() * 26, m_rcWindowSize.top + 286 + lpExistItem->GetItemInfo().m_DetailData.m_cYSize * 26 + lpExistItem->m_lpItemBase->GetPos().GetYIndex() * 26, 0xFFFFFFFF, 0x80); } else { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 18 + pItemIndex.GetXIndex() * 26, m_rcWindowSize.top + 286 + pItemIndex.GetYIndex() * 26, m_rcWindowSize.left + 18 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cXSize * 26 + pItemIndex.GetXIndex() * 26, m_rcWindowSize.top + 286 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cYSize * 26 + pItemIndex.GetYIndex() * 26, 0xFF0000FF, 0x80); } } else { if(g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cXSize + pItemIndex.GetXIndex() < 6 && g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cYSize + pItemIndex.GetYIndex() < 6) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 18 + pItemIndex.GetXIndex() * 26, m_rcWindowSize.top + 286 + pItemIndex.GetYIndex() * 26, m_rcWindowSize.left + 18 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cXSize * 26 + pItemIndex.GetXIndex() * 26, m_rcWindowSize.top + 286 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cYSize * 26 + pItemIndex.GetYIndex() * 26, 0xFFFF0000, 0x80); } } } } RECT rcRect; // Gold SetRect(&rcRect, 62 + m_rcWindowSize.left, 455 + m_rcWindowSize.top, 177 + m_rcWindowSize.left, 470 + m_rcWindowSize.top); g_TextEdit.DrawText(g_TextEdit.MakePrintGold(g_ClientMain.m_csStatus.m_Info.Gold), &rcRect, DT_RIGHT | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha)); m_ButtonManager.Render(lpD3DDevice); } BOOL CHumanInven::UseSkillBook(CItemInstance *lpItem) { /* { Item::UseItem *lpSkillBook = ((Item::UseItem *)lpItem->m_lpItemBase); g_ClientMain.m_Network.m_nsNetworkState = NS_USEITEM; g_ClientMain.m_Network.m_pSocket->CharUseItem(g_ClientMain.m_dwMyChrID, g_ClientMain.m_dwMyChrID, &lpSkillBook->m_ItemInfo.m_nItemIndex); return TRUE; }*/// º¸³ë Àü¿ë if(!lpItem) return FALSE; unsigned long dwResult = g_ClientMain.m_csStatus.CheckUseSkillBook(lpItem); CGUIMessageBox *lpMessageBox; switch(dwResult) { case 0: lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[163]); break; case 1: { CEffScript *test_script; // _ASSERTE(_CrtCheckMemory()); test_script = new CEffScript; test_script->SetInterfaceSet(true); test_script->GetScriptBinData("inter_book.esf"); test_script->m_InterfacePos[0] = (lpItem->m_wPutX) + 26; test_script->m_InterfacePos[1] = (lpItem->m_wPutY) + 26; CSceneManager::m_EffectManager.AddInterfaceScript(test_script); g_ClientMain.m_Network.m_nsNetworkState = NS_USEITEM; g_ClientMain.m_Network.m_pSocket->CharUseItem(g_ClientMain.m_dwMyChrID, g_ClientMain.m_dwMyChrID, &lpItem->m_lpItemBase->GetPos()); } break; case 2: lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[164]); break; case 3: lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[165]); break; case 4: lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[163]); break; case 5: lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[166]); break; case 6: lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[167]); break; case 7: lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[163]); break; case 8: lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[168]); break; case 9: lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[169]); break; } return TRUE; } BOOL CHumanInven::SelectItem() { BOOL bPickItem = FALSE; CItemInstance *lpInstance; const Item::ItemInfo *lpItemInfo; unsigned short wPosX[15] = { 86, 73, 73, 73, 13, 159, 159, 41, 15, 159, 159, 13, 13, 86, 0 }; unsigned short wPosY[15] = { 35, 110, 110, 110, 223, 223, 61, 35, 35, 110, 110, 110, 110, 223, 0 }; unsigned short wSizeX[15] = { 50, 76, 76, 76, 50, 50, 24, 24, 24, 50, 50, 50, 50, 50, 50 }; unsigned short wSizeY[15] = { 50, 102, 102, 102, 50, 50, 24, 24, 24, 102, 102, 102, 102, 50, 50 }; ///// Àåºñ ¾ÆÀÌÅÛ ¾÷µ¥ÀÌÆ® ¹× ¼±Åà for(int i = 0; i < Item::EquipmentPos::MAX_EQUPMENT_POS; i++) { switch(i) { case Item::EquipmentPos::SHIRT: if(m_dwBodyInven != 0) continue; break; case Item::EquipmentPos::TUNIC: if(m_dwBodyInven != 1) continue; break; case Item::EquipmentPos::ARMOUR: if(m_dwBodyInven != 2) continue; break; case Item::EquipmentPos::WEAPON_HAND1: case Item::EquipmentPos::SHIELD_HAND1: if(g_ClientMain.m_csStatus.m_cWeaponPos != 0) continue; break; case Item::EquipmentPos::WEAPON_HAND2: case Item::EquipmentPos::SHIELD_HAND2: if(g_ClientMain.m_csStatus.m_cWeaponPos != 1) continue; break; } if(g_ClientMain.m_csStatus.m_lstEquipment[i]) { lpInstance = g_ClientMain.m_csStatus.m_lstEquipment[i]; lpInstance->m_wPutX = m_rcWindowSize.left + wPosX[i] + ((wSizeX[i] - lpInstance->m_lpSprite->GetSizeX()) / 2); lpInstance->m_wPutY = m_rcWindowSize.top + wPosY[i] + ((wSizeY[i] - lpInstance->m_lpSprite->GetSizeY()) / 2); if(g_ClientMain.m_dwKindCursor == CURSOR_NORMAL && !g_ClientMain.m_lpPickItem && g_DeviceInput.GetIsLeftMouseDown() && lpInstance->IsOverMouse()) { BOOL bSwap = FALSE; if(i == Item::EquipmentPos::WEAPON_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos) { if(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::SHIELD_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos]) { unsigned long dwType = g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::SHIELD_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos]->GetItemType(); if(dwType == Item::CItemType::SWORD || dwType == Item::CItemType::BLUNT || dwType == Item::CItemType::DAGGER || dwType == Item::CItemType::AXE) { bSwap = TRUE; /* // ½º¿Ò ItemIndex pItemIndex; pItemIndex.m_cIndex = Item::EquipmentPos::WEAPON_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos; g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::SHIELD_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos], &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]); bSwap = TRUE; bPickItem = TRUE;*/ } } } if(!bSwap) { g_ClientMain.SetPickItem(lpInstance); g_ClientMain.m_csStatus.m_lstEquipment[i] = NULL; g_ClientMain.m_Network.SendCharShape(); g_ClientMain.m_csStatus.StatusUpdate(); bPickItem = TRUE; } if(bPickItem && (i == Item::EquipmentPos::WEAPON_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos || i == Item::EquipmentPos::SHIELD_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos)) { g_CharacterData.m_bAutoTargetAttack = false; g_CharacterData.m_dwAutoTargetID = 0xFFFFFFFF; } } } } list::iterator it; ///// Àκ¥ ¾ÆÀÌÅÛ ¾÷µ¥ÀÌÆ® ¹× ¼±Åà for(it = g_ClientMain.m_csStatus.m_lstInventory.begin(); it != g_ClientMain.m_csStatus.m_lstInventory.end();) { lpItemInfo = &(*it)->GetItemInfo(); if((*it)->m_lpItemBase->GetPos().GetZIndex() != m_dwBackInven) { it++; continue; } (*it)->m_wPutX = m_rcWindowSize.left + 18 + 26 * (*it)->m_lpItemBase->GetPos().GetXIndex() + (((lpItemInfo->m_DetailData.m_cXSize * 26 - 1) - (*it)->m_lpSprite->GetSizeX()) / 2); (*it)->m_wPutY = m_rcWindowSize.top + 286 + 26 * (*it)->m_lpItemBase->GetPos().GetYIndex() + (((lpItemInfo->m_DetailData.m_cYSize * 26 - 1) - (*it)->m_lpSprite->GetSizeY()) / 2); if(g_ClientMain.m_dwKindCursor == CURSOR_NORMAL && !g_ClientMain.m_lpPickItem && g_DeviceInput.GetIsLeftMouseDown() && (*it)->IsOverMouse()) { CItemInstance *lpStallItem = g_ClientMain.m_csStatus.GetStreetTradeItem((*it)->m_dwItemUID); if(lpStallItem) { TakeType pTakeType; pTakeType.m_srcPos.m_cPos = ClientSocket::ItemPos_Stall; pTakeType.m_srcPos.m_cIndex = 0; pTakeType.m_dstPos = lpStallItem->m_lpItemBase->GetPos(); if(lpStallItem->GetIsEnableStack()) { pTakeType.m_cNum = lpStallItem->GetNowDurability(); } else { pTakeType.m_cNum = 1; } g_ClientMain.m_Network.m_nsNetworkState = NS_STALLREGISTERITEM; g_ClientMain.m_Network.m_pSocket->CharStallRegisterItem(g_ClientMain.m_dwMyChrID, pTakeType, 0, ClientSocket::StallCmd_Cancel); } if((*it)->GetIsEnableStack() && g_DeviceInput.KeyHold(VK_SHIFT) && (*it)->GetNowDurability() > 1) { CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[170], MB_NUMBER | MB_YES | MB_NO | MB_EXIT); lpMessageBox->SetResult(&m_dwSplitResult); lpMessageBox->SetValue(&m_dwSplitValue); m_lpSplitItem = (*it); m_dwSplitResult = 0; m_dwSplitValue = 0; CSoundManager &sm = CSoundManager::GetInstance(); char Temp[MAX_PATH]; sprintf(Temp, "%s\\Sound\\Interface\\click.mnd", g_ClientMain.m_strClientPath); ISoundObject &sb = sm.GetBuffer(Temp, false); sb.Play(false); it++; } else/**/ { g_ClientMain.SetPickItem((*it)); g_ClientMain.m_csStatus.CheckInvenField(0, g_ClientMain.m_lpPickItem); it = g_ClientMain.m_csStatus.m_lstInventory.erase(it); g_ClientMain.m_csStatus.SetQuickSlot(g_ClientMain.m_lpPickItem); bPickItem = TRUE; } } else { it++; } } if(bPickItem) { return TRUE; } return FALSE; } BOOL CHumanInven::UsePotion(CItemInstance *lpItem) { Item::CUseItem *lpPotion = Item::CUseItem::DowncastToUseItem(lpItem->m_lpItemBase); if(!lpPotion) return FALSE; unsigned long dwResult = g_ClientMain.m_csStatus.CheckUsePotion(lpItem); if(dwResult == 1) { // Æ÷¼ÇÀ» ¾´´Ù. g_ClientMain.m_Network.m_nsNetworkState = NS_USEITEM; g_ClientMain.m_Network.m_pSocket->CharUseItem(g_ClientMain.m_dwMyChrID, g_ClientMain.m_dwMyChrID, &lpPotion->GetPos()); g_ClientMain.SetPotionCoolDown(); } return TRUE; }