BOOL CDbManager::PiercingConfirmGuildBank( int nGuildId, CItemContainer< CItemElem >* GuildBank ) { BOOL bUpdate = FALSE; if( prj.IsConvMode( PIERCING_CONFIRM ) ) { int nSize = GuildBank->m_dwItemMax; CItemElem* pItemElem; for( int i = 0 ; i < nSize; i++ ) { pItemElem = GuildBank->GetAtId( i ); if( pItemElem ) { ItemProp* pGetItemProp = prj.GetItemProp( pItemElem->m_dwItemId ); if( pGetItemProp && pGetItemProp->dwItemKind3 != IK3_SUIT && pItemElem->GetPiercingSize() != 0 ) { FILEOUT( "..\\RemoveItemPiercingConfirm.log", "nGuildId = %06d, ItemName : %s %d/%d/%d %d/%d/%d/%d/%d", nGuildId, pGetItemProp->szName, pItemElem->GetOption(), pItemElem->m_bItemResist, pItemElem->m_nResistAbilityOption, pItemElem->GetPiercingSize(), pItemElem->GetPiercingItem( 0 ), pItemElem->GetPiercingItem( 1 ), pItemElem->GetPiercingItem( 2 ), pItemElem->GetPiercingItem( 3 ) ); GuildBank->RemoveAtId( pItemElem->m_dwObjId ); bUpdate = TRUE; } } } } return bUpdate; }
BOOL CDbManager::PiercingConfirmInventoryBank( CMover* pMover ) { BOOL bUpdate = FALSE; if( prj.IsConvMode( PIERCING_CONFIRM ) ) { // Inventory int nSize = pMover->m_Inventory.m_dwItemMax; CItemElem* pItemElem; for( int i = 0 ; i < nSize; i++ ) { pItemElem = pMover->m_Inventory.GetAtId( i ); if( pItemElem ) { ItemProp* pGetItemProp = prj.GetItemProp( pItemElem->m_dwItemId ); if( pGetItemProp && pGetItemProp->dwItemKind3 != IK3_SUIT && pItemElem->GetPiercingSize() != 0 ) { FILEOUT( "..\\RemoveItemPiercingConfirm.log", "IdPlayer = %07d, ItemName : %s %d/%d/%d %d/%d/%d/%d/%d", pMover->m_idPlayer, pGetItemProp->szName, pItemElem->GetOption(), pItemElem->m_bItemResist, pItemElem->m_nResistAbilityOption, pItemElem->GetPiercingSize(), pItemElem->GetPiercingItem( 0 ), pItemElem->GetPiercingItem( 1 ), pItemElem->GetPiercingItem( 2 ), pItemElem->GetPiercingItem( 3 ) ); pMover->m_Inventory.RemoveAtId( pItemElem->m_dwObjId ); bUpdate = TRUE; } } } // Bank nSize = pMover->m_Bank[0].m_dwItemMax; for( i = 0 ; i < nSize; i++ ) { pItemElem = pMover->m_Bank[0].GetAtId( i ); if( pItemElem ) { ItemProp* pGetItemProp = prj.GetItemProp( pItemElem->m_dwItemId ); if( pGetItemProp && pGetItemProp->dwItemKind3 != IK3_SUIT && pItemElem->GetPiercingSize() != 0 ) { FILEOUT( "..\\RemoveItemPiercingConfirm.log", "IdPlayer = %07d, ItemName : %s %d/%d/%d %d/%d/%d/%d/%d", pMover->m_idPlayer, pGetItemProp->szName, pItemElem->GetOption(), pItemElem->m_bItemResist, pItemElem->m_nResistAbilityOption, pItemElem->GetPiercingSize(), pItemElem->GetPiercingItem( 0 ), pItemElem->GetPiercingItem( 1 ), pItemElem->GetPiercingItem( 2 ), pItemElem->GetPiercingItem( 3 ) ); pMover->m_Bank[0].RemoveAtId( pItemElem->m_dwObjId ); bUpdate = TRUE; } } } } return bUpdate; }
BOOL CWndPiercing::OnDropIcon( LPSHORTCUT pShortcut, CPoint point ) { CWndBase* pWndFrame = pShortcut->m_pFromWnd->GetFrameWnd(); // 아이템이 인벤토리에서 왔는가? if( !(pShortcut->m_dwShortcut == SHORTCUT_ITEM) && !(pWndFrame->GetWndId() == APP_INVENTORY) ) return FALSE; if( g_pPlayer->m_Inventory.IsEquip( pShortcut->m_dwId ) ) { g_WndMng.PutString( prj.GetText(TID_GAME_EQUIPPUT), NULL, prj.GetTextColor(TID_GAME_EQUIPPUT) ); SetForbid( TRUE ); return FALSE; } CItemElem* pItemElem = (CItemElem*)g_pPlayer->GetItemId( pShortcut->m_dwId ); if(pItemElem == NULL) return FALSE; // 아이템( 방어구, 무기구 ) if( PtInRect(&m_Rect[0], point) ) { #if __VER < 9 // __ULTIMATE if( pItemElem->GetProp()->dwItemKind3 != IK3_SUIT ) { g_WndMng.PutString( prj.GetText(TID_PIERCING_POSSIBLE_ITEM), NULL, prj.GetTextColor(TID_PIERCING_POSSIBLE_ITEM) ); return FALSE; } #endif // __ULTIMATE // 4개 초과로 피어싱 할수 없음 #if __VER >= 12 // __EXT_PIERCING if( !pItemElem->IsPierceAble( NULL_ID, TRUE ) ) #else // __EXT_PIERCING if( pItemElem->GetPiercingSize() >= MAX_PIERCING_SUIT ) #endif // __EXT_PIERCING { g_WndMng.PutString( prj.GetText(TID_PIERCING_POSSIBLE), NULL, prj.GetTextColor(TID_PIERCING_POSSIBLE) ); return FALSE; } #ifdef __NEW_ITEM_VARUNA if( pItemElem->GetProp()->IsBaruna() ) { g_WndMng.PutString( prj.GetText(TID_PIERCING_POSSIBLE), NULL, prj.GetTextColor(TID_PIERCING_POSSIBLE) ); return FALSE; } #endif // __NEW_ITEM_VARUNA if( pItemElem->GetProp()->dwItemRare == 0xffffffff ) { g_WndMng.PutString( prj.GetText(TID_PIERCING_POSSIBLE_ITEM), NULL, prj.GetTextColor(TID_PIERCING_POSSIBLE_ITEM) ); return FALSE; } if( m_pItemElem[0] ) m_pItemElem[0]->SetExtra( 0 ); pItemElem->SetExtra( 1 ); m_pItemElem[0] = pItemElem; if( m_pItemElem[1] ) { m_pItemElem[1]->SetExtra( 0 ); m_pItemElem[1] = NULL; } if( m_pItemElem[2] ) { m_pItemElem[2]->SetExtra( 0 ); m_pItemElem[2] = NULL; } } else if( PtInRect(&m_Rect[1], point) ) { // 파워다이스 8, 10만 사용할수 있음 if( m_pItemElem[0] ) { #if __VER >= 8 //__Y_NEW_ENCHANT if( pItemElem->GetProp()->dwID != II_GEN_MAT_MOONSTONE && pItemElem->GetProp()->dwID != II_GEN_MAT_MOONSTONE_1 ) #else //__Y_NEW_ENCHANT if( pItemElem->GetProp()->dwID != II_GEN_MAT_DIE_EIGHT && pItemElem->GetProp()->dwID != II_GEN_MAT_DIE_TEN ) #endif //__Y_NEW_ENCHANT { g_WndMng.PutString( prj.GetText(TID_SBEVE_NOTUSEITEM), NULL, prj.GetTextColor(TID_SBEVE_NOTUSEITEM) ); return FALSE; } if( m_pItemElem[1] ) m_pItemElem[1]->SetExtra( 0 ); pItemElem->SetExtra( 1 ); m_pItemElem[1] = pItemElem; } } else if( PtInRect(&m_Rect[2], point) ) { if( m_pItemElem[0] ) { // 보조아이템은 상용화 아이템만 검사 if( pItemElem->GetProp()->dwID != II_SYS_SYS_SCR_PIEPROT ) { g_WndMng.PutString( prj.GetText(TID_SBEVE_NOTUSEITEM), NULL, prj.GetTextColor(TID_SBEVE_NOTUSEITEM) ); return FALSE; } if( m_pItemElem[2] ) m_pItemElem[2]->SetExtra( 0 ); pItemElem->SetExtra( 1 ); m_pItemElem[2] = pItemElem; } } return TRUE; }