游戏乐悠悠网游开发网

 找回密码
 立即注册
查看: 1260|回复: 1
打印 上一主题 下一主题

修改穿洞功能

[复制链接]
  • TA的每日心情
    开心
    2011-11-24 11:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    鲜花(3) 鸡蛋(0)
    跳转到指定楼层
    楼主
    发表于 2015-9-22 09:14:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    void CWndPiercing::OnDraw( C2DRender* p2DRender )//穿刺  穿洞
    {
    for( int i=0; i<3; i++ )
    {
      if( m_pItemElem && m_pItemElem->GetTexture() )
      {
       m_pItemElem->GetTexture()->Render( p2DRender, m_Rect.TopLeft(), 255 );
       if( m_pItemElem->m_nItemNum > 1 )
       {
        TCHAR szTemp[32];
        _stprintf( szTemp, "%d", m_pItemElem->GetExtra() );//get the number
        p2DRender->TextOut( m_Rect.right-11,  m_Rect.bottom-11 , szTemp, 0xff1010ff );//output number
       }
       //*
        //Display icon
       CRect hitrect = m_Rect;
       CPoint point = GetMousePoint();
       if( m_Rect.PtInRect( point ) )
       {
        CPoint point2 = point;
        ClientToScreen( &point2 );
        ClientToScreen( &hitrect );
         
        g_WndMng.PutToolTip_Item( (CItemBase*)m_pItemElem, point2, &hitrect );
       }
       /**/
      }
    }
    CWndStatic* pWndFocusStatic = (CWndStatic*)GetDlgItem(WIDC_STATIC9);   
    if( m_pItemElem[0] )
    {
      int nCost = 0;
      ItemProp* pItemProp = m_pItemElem[0]->GetProp();
      if( pItemProp )
       //显示所需的金币
        nCost = m_pItemElem[0]->GetLimitLevel() * ( 200  + ( m_pItemElem[0]->GetAbilityOption()+1) * 200 );
      char buff[10] = { 0 };
      pWndFocusStatic->SetTitle( itoa( nCost, buff, 10 ) );   
    }
    else
    {
      pWndFocusStatic->SetTitle( "0" );   
    }
    }
    ////////////////////////////////////////


    void CItemUpgrade::OnPiercingSize( CUser* pUser, DWORD dwId1, DWORD dwId2, DWORD dwId3 )
    {
    CItemElem* pItemElem0 = pUser->m_Inventory.GetAtId( dwId1 );
    CItemElem* pItemElem1 = pUser->m_Inventory.GetAtId( dwId2 );
    CItemElem* pItemElem2 = pUser->m_Inventory.GetAtId( dwId3 );
    if( IsUsableItem( pItemElem0 ) == FALSE || IsUsableItem( pItemElem1 ) == FALSE )
      return;
    if( pUser->m_vtInfo.GetOther() || pUser->m_vtInfo.VendorIsVendor() ) // 芭贰 吝捞搁...
      return;
      
    if( pUser->m_Inventory.IsEquip( pItemElem0->m_dwObjId ) )
    {
      pUser->AddDefinedText( TID_GAME_EQUIPPUT );
      return;
    }
    //////////////// 能否被穿洞 ////////////////
    if( !pItemElem0->IsPierceAble( NULL_ID, TRUE ) )
    {
      pUser->AddDefinedText( TID_PIERCING_POSSIBLE_ITEM );
      return;
    }
    /////////////////////////检查精炼的所需品 1
    #if __VER >= 13
      if( pItemElem1->GetProp()->dwID != II_GEN_MAT_ORICHALCUM01
      && pItemElem1->GetProp()->dwID != II_GEN_MAT_ORICHALCUM01_1 )
    {
      pUser->AddDefinedText( TID_SBEVE_NOTUSEITEM );   // 乔绢教俊 鞘夸茄 林荤困啊 酒聪搁 阂啊瓷
      return;
    }
    #else
    if( pItemElem1->GetProp()->dwID != II_GEN_MAT_MOONSTONE
      && pItemElem1->GetProp()->dwID != II_GEN_MAT_MOONSTONE_1 )
    {
      pUser->AddDefinedText( TID_SBEVE_NOTUSEITEM );   // 乔绢教俊 鞘夸茄 林荤困啊 酒聪搁 阂啊瓷
      return;
    }
    #endif //__VAR_D >=4
    /////////////////////////检查精炼的所需品 2
    if( IsUsableItem( pItemElem2 ) && pItemElem2->m_dwItemId != II_SYS_SYS_SCR_PIEPROT )
    {
      pUser->AddDefinedText( TID_SBEVE_NOTUSEITEM );   // 惑侩酒捞袍捞 酒聪搁 阂啊瓷
      return;
    }
    LogItemInfo aLogItem;
    aLogItem.SendName = pUser->GetName();
    aLogItem.RecvName = "PIERCING";
    aLogItem.WorldId = pUser->GetWorld()->GetID();
    int nCost = 100000;
      nCost = pItemElem0->GetLimitLevel() * ( 200  + ( pItemElem0->GetAbilityOption()+1) * 200 );
    if( 0 < nCost )
    {
      if( pUser->GetGold() < nCost )
      {
       pUser->AddDefinedText( TID_GAME_LACKMONEY , "" );
       return;
      }
      pUser->AddGold( -( nCost ) );
      aLogItem.Gold = pUser->GetGold() + nCost;
      aLogItem.Gold2 = pUser->GetGold();
      aLogItem.Action = "!";
      //aLogItem.ItemName = "SEED";
      _stprintf( aLogItem.szItemName, "%d", II_GOLD_SEED1 );
      aLogItem.itemNumber = nCost;
      g_DPSrvr.OnLogItem( aLogItem );
    }
    else
    {
      return;
    }
    aLogItem.Gold = aLogItem.Gold2 = pUser->GetGold();
    #if __VER >= 13
    int RandUp[41] = { 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000,
            10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000,
            10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000,
            10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000,
         };
      //Get Refining the number
      WORD GetUp = pItemElem0->GetAbilityOption();
    if(pItemElem0->GetAbilityOption() > 9 && pItemElem0->GetAbilityOption() < 50)
    {
    int i = GetUp - 10;
    if( (int)( xRandom( 10000 ) ) > RandUp )
    { // 角菩
      if( pItemElem2 )        // 惑侩拳 酒捞袍阑 荤侩窍看栏搁...
       aLogItem.RecvName = "PIERCING_PROTECTED";
      aLogItem.Action = "!";
      g_DPSrvr.OnLogItem( aLogItem, pItemElem0, pItemElem0->m_nItemNum );
      aLogItem.RecvName = "PIERCING";
      pUser->AddPlaySound( SND_INF_UPGRADEFAIL );
      g_UserMng.AddCreateSfxObj((CMover *)pUser, XI_INT_FAIL, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z);
      if(pItemElem0->GetAbilityOption()>= 1)
      {
       pUser->UpdateItem( (BYTE)pItemElem0->m_dwObjId, UI_AO,  pItemElem0->GetAbilityOption()- 1 );
      }
      pUser->AddDefinedText( TID_UPGRADE_FAIL , "" );//强化失败了
       
      if( pItemElem2 == NULL )        // 如果没有辅助物品的话,穿洞失败后物品删除
       pUser->RemoveItem( (BYTE)( dwId1 ), (short)1 );   
    }
    else
    { // 己傍   
      pUser->AddPlaySound( SND_INF_UPGRADESUCCESS );
       
      if( pUser->IsMode( TRANSPARENT_MODE ) == 0)
       g_UserMng.AddCreateSfxObj( (CMover *)pUser, XI_INT_SUCCESS, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z);
       pUser->UpdateItem( (BYTE)pItemElem0->m_dwObjId, UI_AO,  pItemElem0->GetAbilityOption()+1 );
       aLogItem.Action = "H";
         pUser->AddDefinedText( TID_UPGRADE_SUCCEEFUL , "" );//穿洞成功
       g_DPSrvr.OnLogItem( aLogItem, pItemElem0, pItemElem0->m_nItemNum );
    }
    aLogItem.Action = "!";
    g_DPSrvr.OnLogItem( aLogItem, pItemElem1, pItemElem1->m_nItemNum );
    // 促捞胶客 蜡丰酒捞袍 昏力茄促.
    pUser->RemoveItem( (BYTE)( dwId2 ), (short)1 );
    if( dwId3 != NULL_ID )
    {
      aLogItem.Action = "!";
      if( IsUsableItem( pItemElem2 ) )
      {
       g_DPSrvr.OnLogItem( aLogItem, pItemElem2, pItemElem2->m_nItemNum );
       g_dpDBClient.SendLogSMItemUse( "2", pUser, pItemElem2, pItemElem2->GetProp() );
       pUser->RemoveItem( (BYTE)( dwId3 ), (short)1 );
      }
      else
      {
       g_DPSrvr.OnLogItem( aLogItem, NULL, 0 );
      }
    }
    }else
      pUser->AddDefinedText( TID_GAME_SMELT_SAFETY_ERROR13 , "" );//运行出错
    #else // __VAR_ >=4
    //得到下一个等级穿刺的几率
    int nPersent = 0;
    if( pItemElem1->GetProp()->dwID == II_GEN_MAT_MOONSTONE
      || pItemElem1->GetProp()->dwID == II_GEN_MAT_MOONSTONE_1 )
      nPersent = GetSizeProb( pItemElem0 );
    if( nPersent < (int)( xRandom( 10000 ) ) )
    { // 角菩
      if( pItemElem2 )        // 惑侩拳 酒捞袍阑 荤侩窍看栏搁...
       aLogItem.RecvName = "PIERCING_PROTECTED";
      aLogItem.Action = "!";
      g_DPSrvr.OnLogItem( aLogItem, pItemElem0, pItemElem0->m_nItemNum );
      aLogItem.RecvName = "PIERCING";
      pUser->AddPlaySound( SND_INF_UPGRADEFAIL );
      g_UserMng.AddCreateSfxObj((CMover *)pUser, XI_INT_FAIL, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z);
      pUser->AddDefinedText( TID_MMI_PIERCINGFAIL , "" );
       
      if( pItemElem2 == NULL )        // 惑侩拳 酒捞袍阑 荤侩窍瘤 臼疽促搁
       pUser->RemoveItem( (BYTE)( dwId1 ), (short)1 ); // 乔绢教 措惑 酒捞袍篮 昏力等促.   
    }
    else
    { // 己傍   
      pUser->AddPlaySound( SND_INF_UPGRADESUCCESS );   
      g_UserMng.AddCreateSfxObj((CMover *)pUser, XI_INT_SUCCESS, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z);   
      pUser->UpdateItem( (BYTE)pItemElem0->m_dwObjId, UI_PIERCING_SIZE, pItemElem0->GetPiercingSize() + 1 );
      pUser->AddDefinedText( TID_MMI_PIERCINGSUCCESS , "" );
      aLogItem.Action = "#";
      g_DPSrvr.OnLogItem( aLogItem, pItemElem0, pItemElem0->m_nItemNum );
    }
    aLogItem.Action = "!";
    g_DPSrvr.OnLogItem( aLogItem, pItemElem1, pItemElem1->m_nItemNum );
    // 促捞胶客 蜡丰酒捞袍 昏力茄促.
    pUser->RemoveItem( (BYTE)( dwId2 ), (short)1 );
    if( dwId3 != NULL_ID )
    {
      aLogItem.Action = "!";
      if( IsUsableItem( pItemElem2 ) )
      {
       g_DPSrvr.OnLogItem( aLogItem, pItemElem2, pItemElem2->m_nItemNum );
       g_dpDBClient.SendLogSMItemUse( "2", pUser, pItemElem2, pItemElem2->GetProp() );
       pUser->RemoveItem( (BYTE)( dwId3 ), (short)1 );
      }
      else
      {
       g_DPSrvr.OnLogItem( aLogItem, NULL, 0 );
      }
    }
    #endif //__VAR_D
    }
  • TA的每日心情

    2024-1-16 11:00
  • 签到天数: 242 天

    [LV.8]以坛为家I

    鲜花(0) 鸡蛋(0)
    沙发
    发表于 2018-12-22 23:56:18 | 只看该作者
           
    顶一个,支持
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|Online Game Xingbarking Dev Team  

    GMT+8, 2024-5-5 18:14 , Processed in 0.143937 second(s), 33 queries .

    Powered by Discuz! X3.2 Licensed

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表