Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 24th, 2012  |  syntax: C++  |  size: 5.97 KB  |  hits: 35  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. CWndAwakeTrans::CWndAwakeTrans()
  2. {
  3.     for( int i = 0; i < 3; i++ )
  4.     {
  5.         m_pItemElem[i] = NULL;
  6.         m_pTexture[i] = NULL;
  7.     }    
  8. }
  9.  
  10. CWndAwakeTrans::~CWndAwakeTrans()
  11. {
  12.     for( int i = 0; i < 3; i++ )
  13.     {
  14.         if( m_pItemElem[i] != NULL )
  15.         {
  16.             if( !g_pPlayer->m_vtInfo.IsTrading( m_pItemElem[i] ))
  17.                 m_pItemElem[i]->SetExtra(0);
  18.         }
  19.     }
  20.  
  21.         for( int i = 0; i < 3; i++ )
  22.     {
  23.         m_pItemElem[i] = NULL;
  24.         m_pTexture[i] = NULL;
  25.     }    
  26. }
  27.  
  28. BOOL CWndAwakeTrans::Initialize( CWndBase* pWndParent, DWORD dwType )
  29. {
  30.     return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), APP_TRANSFER, 0, CPoint( 0, 0 ), pWndParent );
  31. }
  32.  
  33. BOOL CWndAwakeTrans::OnCommand( UINT nID, DWORD dwMessage, CWndBase* pWndBase )
  34. {
  35.     return CWndNeuz::OnCommand( nID, dwMessage, pWndBase );
  36. }
  37. void CWndAwakeTrans::OnSize( UINT nType, int cx, int cy )
  38. {
  39.     CWndNeuz::OnSize( nType, cx, cy );
  40. }
  41.  
  42. //Window
  43. void CWndAwakeTrans::OnDraw( C2DRender* p2DRender )
  44. {
  45.         LPWNDCTRL wndCtrl[3];
  46.  
  47.     wndCtrl[0] = GetWndCtrl( WIDC_STATIC1 );
  48.     wndCtrl[1] = GetWndCtrl( WIDC_STATIC2 );
  49.         wndCtrl[2] = GetWndCtrl( WIDC_STATIC3 );
  50.  
  51.     for( int i = 0; i < 3; i++ )
  52.     {
  53.         if( m_pItemElem[i] && m_pTexture[i] )
  54.             m_pTexture[i]->Render( p2DRender, CPoint( wndCtrl[i]->rect.left, wndCtrl[i]->rect.top));
  55.  
  56.                 if ( m_pItemElem[0] && m_pItemElem[1] && m_pItemElem[2] )
  57.                 {
  58.                          m_pTexture[2] = CWndBase::m_textureMng.AddTexture( D3DDEVICE, MakePath( DIR_ITEM, m_pItemElem[2]->GetProp()->szIcon ), 0xffff00ff );
  59.                          m_pTexture[2]->Render( p2DRender, CPoint( wndCtrl[2]->rect.left, wndCtrl[2]->rect.top));
  60.                 }
  61.     }
  62. }
  63.  
  64. BOOL CWndAwakeTrans::OnDropIcon( LPSHORTCUT pShortcut, CPoint point )
  65. {
  66.     LPWNDCTRL pCtrl = GetWndCtrl( WIDC_STATIC1 );
  67.         CItemElem *pItem = (CItemElem*)g_pPlayer->GetItemId( pShortcut->m_dwId );
  68.  
  69.         if(! pItem )
  70.                 return FALSE;
  71.  
  72.         if( pCtrl && pCtrl->rect.PtInRect( point ) )
  73.         {
  74.                 if( pItem->GetRandomOptItemId() > 0 )
  75.                 {
  76.                         m_pItemElem[0] = pItem;
  77.                         pItem->SetExtra(1);
  78.                         m_pTexture[0] = CWndBase::m_textureMng.AddTexture( D3DDEVICE, MakePath( DIR_ITEM, m_pItemElem[0]->GetProp()->szIcon ), 0xffff00ff);
  79.                         return TRUE;
  80.                 }
  81.         }
  82.  
  83.         pCtrl = GetWndCtrl( WIDC_STATIC2 );
  84.         if( pCtrl && pCtrl->rect.PtInRect( point ) )
  85.         {
  86.                 if( pItem->GetRandomOptItemId() <= 0 )
  87.                 {
  88.                         m_pItemElem[1] = pItem;
  89.                         pItem->SetExtra(1);
  90.                         m_pTexture[1] = CWndBase::m_textureMng.AddTexture( D3DDEVICE, MakePath( DIR_ITEM, m_pItemElem[1]->GetProp()->szIcon ), 0xffff00ff);
  91.                         return TRUE;
  92.                 }
  93.         }
  94.  
  95.         pCtrl = GetWndCtrl( WIDC_STATIC3 );
  96.         if( pCtrl && pCtrl->rect.PtInRect( point ))
  97.         {
  98. /*              if( pItem->GetProp()->dwID == II_SYS_SRC_TRANSAWAKE )
  99.                 {*/
  100.                         m_pItemElem[2] = pItem;
  101.                         pItem->SetExtra(1);
  102.                         m_pTexture[2] = CWndBase::m_textureMng.AddTexture( D3DDEVICE, MakePath( DIR_ITEM, m_pItemElem[2]->GetProp()->szIcon ), 0xffff00ff );
  103.                         return TRUE;
  104. /*              } */
  105.         }
  106.         return TRUE;
  107. }
  108.  
  109. BOOL CWndAwakeTrans::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
  110. {
  111.         switch( nID)
  112.         {
  113.         case WIDC_OK:
  114.                 if( m_pItemElem[0] && m_pItemElem[1] && m_pItemElem[2] )
  115.                 {
  116.                         g_DPlay.SendTransferAwake( m_pItemElem[1]->m_dwObjId, m_pItemElem[0]->m_dwObjId, m_pItemElem[2]->m_dwObjId );
  117.                         Destroy();
  118.                 }
  119.                 else
  120.                         g_WndMng.PutString( "Unable to transfer awake!" );
  121.  
  122.                 break;
  123.         }
  124.     return CWndNeuz::OnChildNotify( message, nID, pLResult );
  125. }
  126.  
  127. void CWndAwakeTrans::OnInitialUpdate( void )
  128. {
  129.         CWndNeuz::OnInitialUpdate();
  130.     MoveParentCenter();
  131. }
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141. //DPSrvr
  142. void CDPSrvr::OnSendTransferAwake( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long )
  143. {
  144.         CUser *pUser = g_UserMng.GetUser( dpidCache, dpidUser );
  145.         if( IsInvalidObj( pUser ) )
  146.                 return;
  147.  
  148.         DWORD dwDest, dwSource, dwScroll;
  149.         ar >> dwDest >> dwSource, dwScroll;
  150.  
  151.         CItemElem *pDest = NULL, *pSource = NULL, *pScroll = NULL;
  152.  
  153.         pSource = pUser->m_Inventory.GetAtId( dwSource ); // Original awake
  154.         pDest = pUser->m_Inventory.GetAtId( dwDest ); // Transfer awake
  155.         pScroll = pUser->m_Inventory.GetAtId( dwScroll ); // Transfer scroll
  156.  
  157.         if( !pDest || !pSource /*|| !pScroll*/ )
  158.                 return;
  159.  
  160.         if( g_xRandomOptionProperty->GetRandomOptionKind( pDest) > 0 &&
  161.                 ( pDest->GetProp()->dwItemKind3 != IK3_HAT
  162.                 && pDest->GetProp()->dwItemKind3 != IK3_CLOTH
  163.                 && pDest->GetProp()->dwItemKind3 != IK3_GLOVE
  164.                 && pDest->GetProp()->dwItemKind3 != IK3_SHOES
  165.                 && pDest->GetProp()->dwItemKind3 != IK3_CLOAK) )
  166.         {
  167.                 pUser->AddText( "Destination item must not be awake!" );
  168.                 return;
  169.         }
  170.         else if( g_xRandomOptionProperty->GetRandomOptionKind( pSource ) < 0 )
  171.         {
  172.                 pUser->AddText( "Principal item must have an awake!" );
  173.                 return;
  174.         }
  175.         else if( pScroll->GetProp()->dwID != II_SYS_SRC_TRANSAWAKE )
  176.         {
  177.                 pUser->AddText( "Please insert an Scroll of Transfer Awakening!" );
  178.                 return;
  179.         }
  180.         else if( pDest->GetProp()->dwItemKind3 != pSource->GetProp()->dwItemKind3 &&
  181.                 ( pDest->GetProp()->dwItemKind2 != IK2_WEAPON_DIRECT
  182.                 && pDest->GetProp()->dwItemKind2 != IK2_WEAPON_MAGIC ) )
  183.         {
  184.                 pUser->AddText( "Item kind must be the same!" );
  185.                 return;
  186.         }
  187.         else
  188.         {
  189.                 pDest->SetRandomOptItemId( pSource->GetRandomOptItemId() ); // Get awake from source to destination
  190.                 g_xRandomOptionProperty->InitializeRandomOption( pSource->GetRandomOptItemIdPtr() ); // unawake source
  191.                 pUser->UpdateItem( (BYTE) pScroll->m_dwObjId, UI_NUM, pScroll->m_nItemNum - 1 ); // Update scroll item count
  192.                 pUser->UpdateItemEx( (BYTE) pDest->m_dwObjId, UI_RANDOMOPTITEMID, pDest->GetRandomOptItemId() ); // Update destination
  193.                 pUser->UpdateItemEx( (BYTE) pSource->m_dwObjId, UI_RANDOMOPTITEMID, pSource->GetRandomOptItemId() ); // Update source
  194.                 pUser->AddText( "Awake transfer completed!" );
  195.         }
  196. }
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203. //DPClient
  204. void CDPClient::SendTransferAwake( DWORD pItemElemMain, DWORD pItemElemDestroy, DWORD pItemScroll )
  205. {
  206.     BEFORESENDSOLE( ar, PACKETTYPE_TRANSFERAWAKE, DPID_UNKNOWN );
  207.     ar << pItemElemMain << pItemElemDestroy << pItemScroll;
  208.     SEND( ar, this, DPID_SERVERPLAYER );
  209. }