void CWndGuildMeritCtrl::RestoreItem()
{
	CItemElem* pItemElem = NULL;

	for( int i=0; i<(int)( m_pItemContainer.size() ); i++ )
	{
		pItemElem = (CItemElem*)m_pItemContainer[i];

		if( pItemElem )
			pItemElem->SetExtra( 0 );
	}
}
BOOL CWndItemTransy::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 )
	{
		SetForbid( TRUE );
		return FALSE;
	}
	
	if( PtInRect( &m_Rect[0], point ) )
	{
		ItemProp* pItemPropChange = NULL;
		// 성별이 있는 아이템 인지 검사
		ItemProp* pItemProp = pItemElem->GetProp();
		
		pItemPropChange = g_pPlayer->GetTransyItem( pItemProp );
		if( pItemPropChange == NULL )
		{
			g_WndMng.PutString( prj.GetText(TID_GAME_ITEM_TRANSY), NULL, prj.GetTextColor(TID_GAME_ITEM_TRANSY) );
			SetForbid( TRUE );
			return FALSE;
		}

#ifdef __SYS_ITEMTRANSY
		if(!m_bMenu)
		{
#endif //__SYS_ITEMTRANSY
			if( m_pItemElem[1]->GetProp()->dwID == II_CHR_SYS_SCR_ITEMTRANSY_A )
			{
				if( 61 <= pItemElem->GetProp()->dwLimitLevel1 )
				{
					CString strMsg;
					strMsg.Format( prj.GetText( TID_GAME_ITEM_TRANSY_NOT_LEVEL_0 ), m_pItemElem[1]->GetProp()->szName );
					g_WndMng.PutString( strMsg, NULL, prj.GetTextColor(TID_GAME_ITEM_TRANSY_NOT_LEVEL_0) );
					SetForbid( TRUE );
					return FALSE;
				}
			}
			else
			{
				if( pItemElem->GetProp()->dwLimitLevel1 < 61 )
				{
					CString strMsg;
					strMsg.Format( prj.GetText( TID_GAME_ITEM_TRANSY_NOT_LEVEL_1 ), m_pItemElem[1]->GetProp()->szName );
					g_WndMng.PutString( strMsg, NULL, prj.GetTextColor(TID_GAME_ITEM_TRANSY_NOT_LEVEL_1) );
					SetForbid( TRUE );
					return FALSE;
				}
			}
#ifdef __SYS_ITEMTRANSY
		}
#endif //__SYS_ITEMTRANSY
		if( m_pItemElem[0] )
		{
			m_pItemElem[0]->SetExtra( 0 );	
		}
		
		pItemElem->SetExtra( 1 );
		m_pItemElem[0] = pItemElem;

		m_pItemElemChange = *m_pItemElem[0];
		m_pItemElemChange.m_dwItemId = pItemPropChange->dwID;
		m_pItemElemChange.m_nHitPoint	= pItemPropChange->dwEndurance;
	}
	
	return TRUE;
}
Beispiel #3
0
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;
}
BOOL CWndGuildMerit::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult ) 
{ 
	if ( message == EN_RETURN )
	{
		nID = WIDC_BUTTON1;
	}

	switch( nID )
	{
	case WIDC_CHECK2:	
		{
			CWndButton* pChk = (CWndButton*)GetDlgItem( WIDC_CHECK2 );
			
			m_nItem = pChk->GetCheck();

			if( m_nItem )
			{
				if( g_pPlayer )
				{
					CItemElem* pItemElem = NULL;
					
					for( int i=0; i<g_pPlayer->m_Inventory.GetMax() ; i++ )
					{
						pItemElem = g_pPlayer->m_Inventory.GetAtId(i);

						if( pItemElem == NULL )
							continue;
						
						if( pItemElem->GetProp()->dwItemKind3 == IK3_GEM )
						{
							pItemElem->SetExtra( pItemElem->m_nItemNum );
							m_wndctrlMerit.AddItem(pItemElem);
						}
					}
				}
			}
			else
			{
				m_wndctrlMerit.RestoreItem();
				m_wndctrlMerit.ClearItem();
			}
		}
		break;

	case WIDC_BUTTON1:		// OK
		{
			CWndEdit *pWndEdit = (CWndEdit *)GetDlgItem( WIDC_EDIT1 );
			m_nPenya = atoi( pWndEdit->GetString() );		// 문자열을 숫자로 변환.
			if( m_nPenya < 0 )
				m_nPenya = 0;
			CGuild* pGuild = g_pPlayer->GetGuild();
			if( pGuild )
			{
				// 페냐가 공헌가능한지 검사.
				if( m_nPenya )
				{
					CONTRIBUTION_RESULT cbResult = pGuild->CanContribute( 0, (DWORD)m_nPenya, g_pPlayer->m_idPlayer );
					if( cbResult == CONTRIBUTION_OK )	// 페냐 공헌가능.
						g_DPlay.SendGuildContribution( 0, m_nPenya );
					pGuild->MeritResultMsg( cbResult );	// 안내메시지.
				}
				
				//*
				// 공헌아이템
				if( m_nItem )
				{
					CONTRIBUTION_RESULT cbResult = pGuild->CanContribute( m_wndctrlMerit.GetTotalCount(), 0, g_pPlayer->m_idPlayer );
					if( cbResult == CONTRIBUTION_OK )	// 아이템 공헌가능
						g_DPlay.SendGuildContribution( 0, 0,  1);

					pGuild->MeritResultMsg( cbResult );	// 안내메시지.
				}
				
				/**/


			} // pGuild
			Destroy();
		}
		break;
	case 10000:
	case WIDC_BUTTON2:		// NO
		m_wndctrlMerit.RestoreItem();
		Destroy();			// 걍 창 닫고 나감.
		break;
	}

	return CWndNeuz::OnChildNotify( message, nID, pLResult ); 
}