Files
Client/GameTools/NeoRylClient/HumanInven.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

1608 lines
64 KiB
C++

// HumanInven.cpp: implementation of the CHumanInven class.
//
//////////////////////////////////////////////////////////////////////
//#include <crtdbg.h>
#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<CItemInstance *>::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<CItemInstance *>::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<CItemInstance *>::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;
}