⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 streetstallmanager.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			pExItem->SetPosition( pos );

			pDlg->RegistMoney( i, pStallInfo->Item[i].money );
			
			m_nLinkedItemNum++;
		}
	}

	pDlg->EditTitle( pStallInfo->Title );
	pDlg->SetStallOwnerId( pStallInfo->StallOwnerID );
}

void CStreetStallManager::NetworkMsgParse( BYTE Protocol, void* pMsg )
{	
	if(HERO == NULL)
		return;
	switch( Protocol ) 
	{
	case MP_STREETSTALL_OPEN_ACK:
		{
			MSG_STREETSTALL_TITLE* msg = (MSG_STREETSTALL_TITLE*)pMsg;

			ToggleHero_StreetStallMode();
			GAMEIN->GetStreetStallDialog()->RegistTitle( msg->Title, TRUE );
//			HERO->SetState( eObjectState_StreetStall_Owner );

			GAMEIN->GetInventoryDialog()->SetActive(TRUE);
			GAMEIN->GetStreetStallDialog()->ShowSellStall();
			CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(343) );
		}
		break;
	case MP_STREETSTALL_OPEN_NACK:
		{
			GAMEIN->GetStreetStallDialog()->RegistTitle( NULL, FALSE );
//			HERO->SetState( eObjectState_None );
			m_bOpenMsgBox = TRUE;
		}
		break;
	case MP_STREETSTALL_CLOSE_ACK:
		{
			GAMEIN->GetStreetStallDialog()->OnCloseStall();
		
			HERO->ShowStreetStallTitle( FALSE, NULL );
			STREETSTALLMGR->ToggleHero_StreetStallMode();

			m_nLinkedItemNum = 0;

			CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(344) );
			m_bOpenMsgBox = TRUE;
		}
		break;
	case MP_STREETSTALL_CLOSE_NACK:
		{
		}
		break;
	case MP_STREETSTALL_FAKEREGISTITEM_ACK:
		{
			MSG_LINKITEMEX* msg = (MSG_LINKITEMEX*)pMsg;
			CItem* pItem = (CItem*)GAMEIN->GetInventoryDialog()->GetItemForIdx( msg->ItemInfo.Position );
			if( !pItem )
			{
				ASSERT(0);
				return;
			}
			GAMEIN->GetStreetStallDialog()->SetDisable( FALSE );
			if( LinkItem( pItem, &msg->ItemInfo ) )
				GAMEIN->GetStreetStallDialog()->ChangeItemStatus( &msg->ItemInfo, msg->dwMoney, FALSE, 1 );	//TRUE
		}
		break;
	case MP_STREETSTALL_FAKEREGISTITEM_NACK:
		{
			MSG_DWORD2* msg = (MSG_DWORD2*)pMsg;

			--m_nLinkedItemNum; 
			CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(349) );

			CItem* pItem = (CItem*)GAMEIN->GetInventoryDialog()->GetItemForIdx( msg->dwData1 );
			if(!pItem)
			{
				ASSERT(0);
				return;
			}
			
			if( msg->dwData2 != 1 ) // 捞固 殿废登绢 乐促绰 俊矾 皋技瘤啊 酒聪搁..
				pItem->SetLock( FALSE );

			GAMEIN->GetStreetStallDialog()->SetDisable( FALSE );
		}
		break;
	case MP_STREETSTALL_FAKEREGISTITEM:
		{
			if( OBJECTSTATEMGR->GetObjectState(HERO) != eObjectState_StreetStall_Guest) return;

			SEND_LINKITEM_TOTALINFO* msg = (SEND_LINKITEM_TOTALINFO*)pMsg;

			if( msg->ItemInfo.wIconIdx == 0 )
			{
				ASSERT(msg->ItemInfo.wIconIdx);
				return;
			}

			if( msg->count != 0 ) // 可记捞 乐促搁
			{
				ITEMMGR->AddItemOption(&msg->sOptionInfo);
			}

			CExchangeItem* pExItem = new CExchangeItem;
			cImage tmpImage;
			pExItem->Init( 0, 0, DEFAULT_ICONSIZE, DEFAULT_ICONSIZE, 
				ITEMMGR->GetIconImage( msg->ItemInfo.wIconIdx, &tmpImage ), m_IconIndexCreator.GenerateIndex() );
			pExItem->SetData( msg->ItemInfo.wIconIdx );
			pExItem->SetDBId( msg->ItemInfo.dwDBIdx);
			pExItem->SetDurability( msg->ItemInfo.Durability );

			pExItem->SetLock( TRUE );
			pExItem->SetMovable( FALSE );

			if( msg->count != 0 ) // 可记捞 乐促搁
				ITEMMGR->SetToolTipIcon( pExItem , ITEMMGR->GetItemOption(msg->ItemInfo.Durability));
			else
				ITEMMGR->SetToolTipIcon( pExItem );
/*
			char buf[32];
			if( ITEMMGR->IsDupItem(msg->ItemInfo.wIconIdx) )
				wsprintf( buf, CHATMGR->GetChatMsg(199), AddComma( msg->dwMoney ) );
			else
				wsprintf( buf, CHATMGR->GetChatMsg(214), AddComma( msg->dwMoney ) );

			pExItem->AddToolTipLine( buf, TTTC_BUYPRICE );
*/
			char buf[32];
			wsprintf( buf, CHATMGR->GetChatMsg(114) );
			
			pExItem->AddToolTipLine( buf, TTTC_BUYPRICE );


			int pos = GAMEIN->GetStreetStallDialog()->AddItem( pExItem );
			if( pos == -1 ) 
			{
				SAFE_DELETE(pExItem);
				return;
			}

			WINDOWMGR->AddWindow( pExItem );
			pExItem->SetPosition( pos );
			GAMEIN->GetStreetStallDialog()->ChangeItemStatus( &msg->ItemInfo, msg->dwMoney, FALSE );
		}
		break;
	case MP_STREETSTALL_LOCKITEM_ACK:
		{
			MSG_STREETSTALL_ITEMSTATUS* msg = (MSG_STREETSTALL_ITEMSTATUS*)pMsg;
			GAMEIN->GetStreetStallDialog()->ChangeItemStatus( &msg->ItemInfo, msg->dwMoney, TRUE );
			GAMEIN->GetStreetStallDialog()->SetDisable( FALSE );
		}
		break;
	case MP_STREETSTALL_LOCKITEM_NACK:
		{
			CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(350) );
			GAMEIN->GetStreetStallDialog()->SetDisable( FALSE );
		}
		break;
	case MP_STREETSTALL_LOCKITEM:
		{
			if( OBJECTSTATEMGR->GetObjectState(HERO) != eObjectState_StreetStall_Guest) return;

			MSG_STREETSTALL_ITEMSTATUS* msg = (MSG_STREETSTALL_ITEMSTATUS*)pMsg;
			GAMEIN->GetStreetStallDialog()->ChangeItemStatus( &msg->ItemInfo, msg->dwMoney, TRUE );
		}
		break;
	case MP_STREETSTALL_UNLOCKITEM_ACK:
		{
			MSG_STREETSTALL_ITEMSTATUS* msg = (MSG_STREETSTALL_ITEMSTATUS*)pMsg;
			GAMEIN->GetStreetStallDialog()->ChangeItemStatus( &msg->ItemInfo, msg->dwMoney, FALSE, 2 );
			//GAMEIN->GetStreetStallDialog()->SetDisable( FALSE );
		}
		break;
	case MP_STREETSTALL_UNLOCKITEM_NACK:
		{
			CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(351) );
			//GAMEIN->GetStreetStallDialog()->SetDisable( FALSE );
		}
		break;
	case MP_STREETSTALL_UNLOCKITEM:
		{
			if( OBJECTSTATEMGR->GetObjectState(HERO) != eObjectState_StreetStall_Guest) return;

			MSG_STREETSTALL_ITEMSTATUS* msg = (MSG_STREETSTALL_ITEMSTATUS*)pMsg;
			GAMEIN->GetStreetStallDialog()->ChangeItemStatus( &msg->ItemInfo, msg->dwMoney, FALSE );
		}
		break;
	case MP_STREETSTALL_EDITTITLE_ACK:
		{
			MSG_STREETSTALL_TITLE* msg = (MSG_STREETSTALL_TITLE*)pMsg;
			GAMEIN->GetStreetStallDialog()->RegistTitle( msg->Title, TRUE );
		}
		break;
	case MP_STREETSTALL_EDITTITLE_NACK:
		{
			GAMEIN->GetStreetStallDialog()->RegistTitle( NULL, FALSE );
		}
		break;
	case MP_STREETSTALL_EDITTITLE:
		{
//			if( OBJECTSTATEMGR->GetObjectState(HERO) != eObjectState_StreetStall_Guest) return;

			MSG_STREETSTALL_TITLE* msg = (MSG_STREETSTALL_TITLE*)pMsg;

			CPlayer* pPlayer = (CPlayer*)OBJECTMGR->GetObject( msg->dwObjectID );

			pPlayer->SetStreetStallTitle( msg->Title );

			if( HERO->GetState() == eObjectState_StreetStall_Guest )
			{
				if( GAMEIN->GetStreetStallDialog()->GetStallOwnerId() == msg->dwObjectID )
				{
					GAMEIN->GetStreetStallDialog()->EditTitle( msg->Title );
				}
			}
		}
		break;
	case MP_STREETSTALL_BUYITEM_ACK:
		{
			MSG_ITEMEX* msg = (MSG_ITEMEX*)pMsg;

			if( msg->count != 0 )
				ITEMMGR->AddItemOption(&msg->sOptionInfo);

			CItem* pItem = ITEMMGR->MakeNewItem(&msg->ItemInfo,"MP_STREETSTALL_BUYITEM_ACK");
			BOOL rt = GAMEIN->GetInventoryDialog()->AddItem(pItem);
			QUICKMGR->RefreshQickItem();
			CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(341), pItem->GetItemInfo()->ItemName );

			ITEMMGR->SetDisableDialog( FALSE, eItemTable_Inventory );
			GAMEIN->GetStreetStallDialog()->SetDisable( FALSE );
			GAMEIN->GetStreetStallDialog()->SetData(NULL);
		}
		break;
	case MP_STREETSTALL_DELETEITEM_ACK:
		{
			MSG_LINKITEM* msg = (MSG_LINKITEM*)pMsg;
			GAMEIN->GetStreetStallDialog()->DeleteItem( &msg->ItemInfo );

			--m_nLinkedItemNum;
		}
		break;
	case MP_STREETSTALL_DELETEITEM_NACK:
		break;
	case MP_STREETSTALL_DELETEITEM:
		{
			if( OBJECTSTATEMGR->GetObjectState(HERO) != eObjectState_StreetStall_Guest) return;

			MSG_LINKITEM* msg = (MSG_LINKITEM*)pMsg;

			--m_nLinkedItemNum;

			if( !ITEMMGR->IsDupItem( msg->ItemInfo.wIconIdx ) && msg->ItemInfo.Durability != 0 )
				ITEMMGR->RemoveItemOption(msg->ItemInfo.Durability);

			GAMEIN->GetStreetStallDialog()->DeleteItem( &msg->ItemInfo );
			GAMEIN->GetStreetStallDialog()->SetCurSelectedItemNum(-1);
			GAMEIN->GetStreetStallDialog()->ResetDlgData();
		}
		break;
	case MP_STREETSTALL_BUYITEM_NACK:
		{
			MSG_WORD* msg  = (MSG_WORD*)pMsg;

			switch(msg->wData)
			{
			case NOT_EXIST:
				CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(358) );
				break;
			case NOT_MONEY:
				CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(117) );
				break;
			case NOT_SPACE:
				CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(354) );
				break;
			case NOT_OWNERMONEY:
				CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(364) );
				break;
			}
			ITEMMGR->SetDisableDialog( FALSE, eItemTable_Inventory );
			GAMEIN->GetStreetStallDialog()->SetDisable( FALSE );
			GAMEIN->GetStreetStallDialog()->SetData(NULL);
		}
		break;
	case MP_STREETSTALL_SELLITEM:
		{
			MSG_SELLITEM* msg = (MSG_SELLITEM*)pMsg;
			CItem* pItem = (CItem*)GAMEIN->GetInventoryDialog()->GetItemForIdx( msg->ItemInfo.Position );
			if( !pItem )
			{
				ASSERT(0);
				return;
			}

			CPlayer* pPlayer = (CPlayer*) OBJECTMGR->GetObject( msg->dwData );
			if( pPlayer )
				CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(342),  pPlayer->GetObjectName(),  pItem->GetItemInfo()->ItemName );

			if( msg->count == 0 )
			{
				CItem* pOutItem = NULL;
				ITEMMGR->DeleteItem( msg->ItemInfo.Position, &pOutItem );
				
				GAMEIN->GetStreetStallDialog()->DeleteItem( &msg->ItemInfo );
				--m_nLinkedItemNum;
			}
			else //梅啊窍绰 版快
			{
				pItem->SetDurability( msg->count );
//				GAMEIN->GetStreetStallDialog()->ResetItemInfo( msg->ItemInfo.dwDBIdx, msg->count );
			}
		}
		break;
	case MP_STREETSTALL_SELLITEM_ERROR:
		{
			MSG_WORD* msg = (MSG_WORD*)pMsg;
			ItemStatus(msg->wData, FALSE);
			CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(365) );
		}
		break;
	case MP_STREETSTALL_UPDATEITEM:
		{
			ITEMMGR->SetDisableDialog( FALSE, eItemTable_Inventory );
			if( OBJECTSTATEMGR->GetObjectState(HERO) != eObjectState_StreetStall_Guest 
				&& OBJECTSTATEMGR->GetObjectState(HERO) != eObjectState_StreetStall_Owner ) 
				return;

			MSG_SELLITEM* msg = (MSG_SELLITEM*)pMsg;

			CExchangeItem* pExItem = (CExchangeItem*)GAMEIN->GetStreetStallDialog()->GetItem(msg->ItemInfo.dwDBIdx);
			ASSERT( pExItem );
			if( pExItem == NULL ) return;

			pExItem->SetDurability( msg->count );
		}
		break;
	case MP_STREETSTALL_GUESTIN_ACK:
		{
			STREETSTALL_INFO* msg = (STREETSTALL_INFO*)pMsg;

			LinkBuyItem( msg );
			GAMEIN->GetStreetStallDialog()->ShowBuyStall();

			if( HERO->GetState() != eObjectState_StreetStall_Guest )
				OBJECTSTATEMGR->StartObjectState(HERO, eObjectState_StreetStall_Guest);

			//??? 恐? 肚? KES
			CPlayer* pPlayer = (CPlayer*)OBJECTMGR->GetObject( msg->StallOwnerID );
			if( pPlayer )
				pPlayer->SetStreetStallTitle( msg->Title );
		}
		break;
	case MP_STREETSTALL_GUESTIN_NACK:
		{
			//KES 040924
			OBJECTSTATEMGR->EndObjectState( HERO, eObjectState_StreetStall_Guest );
		}
		break;
	case MP_STREETSTALL_GUESTOUT_ACK:
		{
			GAMEIN->GetStreetStallDialog()->OnCloseStall(TRUE);	
			OBJECTSTATEMGR->EndObjectState(HERO, eObjectState_StreetStall_Guest);

			m_nLinkedItemNum = 0;
		}
		break;
	case MP_STREETSTALL_GUESTOUT_NACK:
		{
			//KES 040924
			OBJECTSTATEMGR->EndObjectState( HERO, eObjectState_StreetStall_Guest );
		}
		break;
	case MP_STREETSTALL_START: // 鸥 某腐磐狼 畴痢葛靛 矫累
		{
			CObject* pObject;
			MSG_STREETSTALL_TITLE* pmsg = (MSG_STREETSTALL_TITLE*)pMsg;
			pObject = OBJECTMGR->GetObject(pmsg->dwObjectID);
			ASSERT(pObject);
			Toggle_StreetStallMode(pObject, TRUE);
			((CPlayer*)pObject)->ShowStreetStallTitle( TRUE, pmsg->Title );
		}
		break;
	case MP_STREETSTALL_END:
		{
			CObject* pObject;
			MSG_STREETSTALL_TITLE* pmsg = (MSG_STREETSTALL_TITLE*)pMsg;
			pObject = OBJECTMGR->GetObject(pmsg->dwObjectID);
			ASSERT(pObject);

			if( pObject->GetID() != HERO->GetID() )
				Toggle_StreetStallMode(pObject, FALSE);
			else
			{
				GAMEIN->GetStreetStallDialog()->OnCloseStall();
				m_nLinkedItemNum = 0;
				m_bOpenMsgBox = TRUE;
			}

			((CPlayer*)pObject)->ShowStreetStallTitle( FALSE, NULL );
		}
		break;
	case MP_STREETSTALL_CLOSE: // 颊丛栏肺 曼咯茄 版快
		{
			if( OBJECTSTATEMGR->GetObjectState(HERO) != eObjectState_StreetStall_Guest) return;

			MSGBASE* msg = (MSGBASE*)pMsg;

			CStreetStall* pDlg = GAMEIN->GetStreetStallDialog();
			
			pDlg->OnCloseStall(TRUE);
			m_nLinkedItemNum = 0;

			OBJECTSTATEMGR->EndObjectState(HERO, eObjectState_StreetStall_Guest);

		}
		break;
	}	
}


void CStreetStallManager::SendBuyItemMsg()
{
	CStreetStall* pDlg	= GAMEIN->GetStreetStallDialog();
	if( pDlg == NULL )				return;
	if( pDlg->IsActive() == FALSE ) return;

	DWORD dwCheckDBIdx	= pDlg->GetCheckDBIdx();
	DWORD dwNum			= m_dwWantBuyNum;

	CExchangeItem* pItem = pDlg->FindItem( dwCheckDBIdx );
//	CExchangeItem* pItem = (CExchangeItem*)pDlg->GetItem( (POSTYPE)pos );
	
	if( pItem == NULL )
	{
		pDlg->SetData( NULL );
		pDlg->SetDisable( FALSE );
		return;
	}

	POSTYPE pos			= pItem->GetPosition();

	if( pDlg->GetItemMoney( pos )*dwNum > HERO->GetMoney() ) 
	{
		// MsgBox 贸府 (家瘤陛捞 何练窍促.) 355
		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(117) );
		pDlg->SetData( NULL );
		pDlg->SetDisable( FALSE );
		return;
	}
	if( GAMEIN->GetInventoryDialog()->GetBlankNum() == 0 )
	{
		// MsgBox 贸府 (牢亥捞 菜瞒乐促.)354
		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(354) );
		pDlg->SetData( NULL );
		pDlg->SetDisable( FALSE );
		return;
	}
	if( pItem->GetDBId() != dwCheckDBIdx )
	{
		// 国结 迫赴 酒捞袍捞促. 358
		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(358) );
		pDlg->SetData( NULL );
		pDlg->SetDisable( FALSE );
		return;
	}
	
	ITEMBASE base;
	base.dwDBIdx = pItem->GetDBId();
	base.wIconIdx = pItem->GetData();
	base.Durability = dwNum;			// 混 肮荐..

	STREETSTALL_BUYINFO BuyMsg;
	
	BuyMsg.Category = MP_STREETSTALL;
	BuyMsg.Protocol = MP_STREETSTALL_BUYITEM_SYN;
	BuyMsg.dwObjectID = HEROID;
	BuyMsg.StallOwnerID = pDlg->GetStallOwnerId();
	BuyMsg.StallPos = pos;
	BuyMsg.ItemInfo = base;
	BuyMsg.dwBuyPrice = pDlg->GetItemMoney( pos );


//	if( m_BuyMsg.Protocol == 0 )
//	{
//		CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(358) );
//		return;
//	}

	NETWORK->Send( &BuyMsg, sizeof(STREETSTALL_BUYINFO) );
//	m_BuyMsg.Protocol = 0;
	
	//KES 040801 牢亥配府 遏吧扁
	ITEMMGR->SetDisableDialog( TRUE, eItemTable_Inventory );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -