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

📄 battle_vimustreet.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		msg.vPosStage = m_VimuStreetInfo.vStgPos;
		
		PACKEDDATA_OBJ->QuickSend( pObject, &msg, sizeof(msg) );
	}
*/
	CObject* pObject = g_pUserTable->FindUser(MemberID);
	ASSERT(pObject);

	MSG_BATTLE_VIMU_CREATESTAGE msg;
	msg.Category = MP_BATTLE;
	msg.Protocol = MP_BATTLE_VIMU_CREATESTAGE;
	msg.dwObjectID = pObject->GetID();
	msg.dwBattleID = pObject->GetBattleID();
	msg.vPosStage = m_VimuStreetInfo.vStgPos;
	pObject->SendMsg( &msg, sizeof(msg) );

//#else
	
#endif
	//厚公厘 捞棋飘 焊郴磊.
}

BOOL CBattle_VimuStreet::OnTeamMemberDie(int Team,DWORD VictimMemberID,DWORD KillerID)
{
	ASSERT(Team < eBattleTeam_Max);
	
#ifdef _MAPSERVER_
	CObject* pVictimMember = g_pUserTable->FindUser(VictimMemberID);
	CObject* pKiller = g_pUserTable->FindUser(KillerID);
	if(pVictimMember == NULL || pKiller == NULL)
	{
		ASSERT(0);
		return FALSE;
	}
	
	ASSERT(pVictimMember->GetBattleID() == GetBattleID());

	if( pVictimMember->GetObjectKind() != eObjectKind_Player ) return FALSE;
	
	//搬苞肺.....
	((CBattleTeam_VimuStreet*)m_TeamArray[Team])->AddTeamDieNum();

	if(pKiller->GetBattleID() != GetBattleID())	//瞒饶 PK绊妨
	{
		//鸥某腐捞唱 阁胶磐茄抛 磷菌促.
		//
		return FALSE;
	}

	m_bDieByOp = TRUE; //惑措某腐茄抛 磷菌促.
	((CPlayer*)pVictimMember)->m_bNeedRevive = FALSE;		//何劝芒捞 鞘夸绝促.

	MSG_DWORD3 msg;
	SetProtocol(&msg,MP_BATTLE,MP_BATTLE_TEAMMEMBER_DIE_NOTIFY);
	msg.dwData1 = Team;
	msg.dwData2 = VictimMemberID;
	msg.dwData3 = KillerID;
	ToEachTeam(pTeam)
		pTeam->SendTeamMsg(&msg,sizeof(msg));
	EndToEachTeam

	
#endif


//	return TRUE;

//	FALSE甫 府畔窍搁 盔贰狼 贸府甫 茄促. CPlayer(CMonster)::DoDie 窃荐甫 龋免茄促.
	return FALSE;
	
}

void CBattle_VimuStreet::OnTeamObjectCreate(int Team,CBattleObject* pBattleObject)
{
}

void CBattle_VimuStreet::OnTeamObjectDestroy(int Team,CBattleObject* pBattleObject)
{
}

BOOL CBattle_VimuStreet::OnTeamMemberDelete(int Team,DWORD MemberID,char* Name)
{	
#ifdef _MAPSERVER_
/*
		CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser( MemberID );

		if( pPlayer )
		if( pPlayer->GetState() == eObjectState_Die )
			pPlayer->ReviveAfterVimu();	
*/
#endif

	return TRUE;
}


//server俊辑父 荤侩
void CBattle_VimuStreet::OnTick()
{
	ySWITCH(m_BattleInfo.BattleState)
		yCASE(eBATTLE_STATE_READY)
//			DWORD ElapTime = gCurTime - m_BattleInfo.BattleTime;
//			if( ElapTime > BATTLE_VIMUSTREET_READYTIME)
//			{
//				ToEachTeam(pTeam)
//					if(pTeam->GetAliveTeamMemberNum() == 0)
//						break;
//				EndToEachTeam
				
//				StartBattle();
//			}
			
			DWORD ElapTime = gCurTime - m_BattleInfo.BattleTime;
			if( ElapTime > BATTLE_VIMUSTREET_READYTIME )
			{
				for( int n = 0; n < eBattleTeam_Max; ++n )
				{
					if( m_TeamArray[n]->GetAliveTeamMemberNum() == 0 )
					{
						Draw();
						return;
					}
				}

				StartBattle();
			}

		yCASE(eBATTLE_STATE_FIGHT)
			Judge();

		yCASE(eBATTLE_STATE_RESULT)
			DWORD ElapTime = gCurTime - m_BattleInfo.BattleTime;
			if( ElapTime > BATTLE_VIMUSTREET_RESULTTIME)
			{
				SetDestroyFlag();
				
			}
	
	yENDSWITCH
}

// 铰菩 魄沥

BOOL CBattle_VimuStreet::JudgeOneTeamWinsOtherTeam(int TheTeam,int OtherTeam)
{
	CBattleTeam_VimuStreet* pTheTeam = (CBattleTeam_VimuStreet*)m_TeamArray[TheTeam];
	CBattleTeam_VimuStreet* pOtherTeam = (CBattleTeam_VimuStreet*)m_TeamArray[OtherTeam];

//	if(pOtherTeam->GetAliveTeamMemberNum() == 0)
	if( pTheTeam->GetTeamDieNum() == 0 )				//KKK
	if( pOtherTeam->GetTeamDieNum() != 0 )
	{
		Victory( TheTeam, OtherTeam );
		return TRUE;
	}

	return FALSE;
}

 
BOOL CBattle_VimuStreet::Judge()
{

	if(JudgeOneTeamWinsOtherTeam(eBattleTeam1,eBattleTeam2) == TRUE)
		return TRUE;

	if(JudgeOneTeamWinsOtherTeam(eBattleTeam2,eBattleTeam1) == TRUE)
		return TRUE;

	if( ((CBattleTeam_VimuStreet*)m_TeamArray[eBattleTeam1])->GetTeamDieNum()
		&& ((CBattleTeam_VimuStreet*)m_TeamArray[eBattleTeam2])->GetTeamDieNum() )
		Draw();


	DWORD ElapsedTime = gCurTime - m_BattleInfo.BattleTime;
	if(ElapsedTime > BATTLE_VIMUSTREET_FIGHTTIME)
		Draw();

	return FALSE;
}


void CBattle_VimuStreet::Victory(int WinnerTeamNum,int LoserTeamNum)
{
	CBattle::Victory(WinnerTeamNum,LoserTeamNum);

#ifndef _MAPSERVER_
	if( HERO->GetBattleTeam() == WinnerTeamNum )
	{
		m_pCurShowImage = &m_ImageWin;
	}
	else if( HERO->GetBattleTeam() == LoserTeamNum )
	{
		m_pCurShowImage = &m_ImageLose;
	}


	m_vTitleScale.x = 1.0f;
	m_vTitleScale.y = 1.0f;
	m_vTitlePos.x = (1024 - 512 * m_vTitleScale.x ) / 2;	//128 = width
//	m_vTitlePos.y = ( 768 - 128 * m_vTitleScale.y ) / 2;		//42 = height
	m_vTitlePos.y = 100;

	//AutoAttack肛勉
	HERO->DisableAutoAttack();					//傍拜吝 捞带芭 秒家登唱?
	HERO->SetNextAction(NULL);			//胶懦 静带巴档 秒家登唱?

#else
	SKILLMGR->ReleaseAllSkillInBattle(GetBattleID());

	CPlayer* pPlayer1 = (CPlayer*)g_pUserTable->FindUser(m_VimuStreetInfo.Character[0]);
	CPlayer* pPlayer2 = (CPlayer*)g_pUserTable->FindUser(m_VimuStreetInfo.Character[1]);
	CPlayer* pWinner = NULL;
	CPlayer* pLoser = NULL;

	if( WinnerTeamNum == 0 )
	{
		pWinner = pPlayer1;
		pLoser = pPlayer2;
	}
	else if( WinnerTeamNum == 1 )
	{
		pWinner = pPlayer2;
		pLoser = pPlayer1;
	}

	if( pPlayer1 == NULL || pPlayer2 == NULL || pWinner == NULL )
		return;

//	char buf[128];
//	sprintf( buf, "%s丛苞 %s丛狼 厚公俊辑 %s丛捞 铰府窍继嚼聪促.",
//			 pPlayer1->GetObjectName(),
//			 pPlayer2->GetObjectName(),
//			 pWinner->GetObjectName() );

	MSG_DWORD2 resultMsg;
	resultMsg.Category		= MP_SIGNAL;
	resultMsg.Protocol		= MP_SIGNAL_VIMU_RESULT;
	resultMsg.dwObjectID	= pWinner->GetID();
	resultMsg.dwData1		= pWinner->GetID();		//winner
	resultMsg.dwData2		= pLoser->GetID();		//loser
	PACKEDDATA_OBJ->QuickSend( pWinner, &resultMsg, sizeof(resultMsg) );
/*
	TESTMSG resultMsg;
	resultMsg.Category		= MP_SIGNAL;
	resultMsg.Protocol		= MP_SIGNAL_VIMU_RESULT;
	resultMsg.dwObjectID	= pWinner->GetID();
	//strcpy( resultMsg.Msg, buf );
	SafeStrCpy( resultMsg.Msg, buf, MAX_CHAT_LENGTH+1);
	//PACKEDDATA_OBJ->QuickSend( pWinner, (MSGBASE*)&resultMsg, sizeof(TESTMSG) );
	PACKEDDATA_OBJ->QuickSend( pWinner, (MSGBASE*)&resultMsg, resultMsg.GetMsgLength() );	//CHATMSG 040324
*/	

#endif
}

void CBattle_VimuStreet::Draw()
{
	CBattle::Draw();	

#ifndef _MAPSERVER_
	m_pCurShowImage = &m_ImageDraw;

	m_vTitleScale.x = 1.0f;
	m_vTitleScale.y = 1.0f;
	m_vTitlePos.x = (1024 - 512 * m_vTitleScale.x ) / 2;	//128 = width
//	m_vTitlePos.y = ( 768 - 128 * m_vTitleScale.y ) / 2;		//42 = height
	m_vTitlePos.y = 100;
	
	//AutoAttack肛勉
	HERO->DisableAutoAttack();					//傍拜吝 捞带芭 秒家登唱?
	HERO->SetNextAction(NULL);			//胶懦 静带巴档 秒家登唱?
#else
	SKILLMGR->ReleaseAllSkillInBattle(GetBattleID());

	CPlayer* pPlayer1 = (CPlayer*)g_pUserTable->FindUser(m_VimuStreetInfo.Character[0]);
	CPlayer* pPlayer2 = (CPlayer*)g_pUserTable->FindUser(m_VimuStreetInfo.Character[1]);

	if( pPlayer1 == NULL || pPlayer2 == NULL  )
		return;

	char buf[128];
	sprintf( buf, "%s丛苞 %s丛狼 厚公啊 公铰何肺 场车嚼聪促.",
			 pPlayer1->GetObjectName(),
			 pPlayer2->GetObjectName() );

	TESTMSG resultMsg;
	resultMsg.Category		= MP_SIGNAL;
	resultMsg.Protocol		= MP_SIGNAL_BATTLE;
	resultMsg.dwObjectID	= pPlayer1->GetID();
	//strcpy( resultMsg.Msg, buf );	
	SafeStrCpy( resultMsg.Msg, buf, MAX_CHAT_LENGTH+1 );

	//PACKEDDATA_OBJ->QuickSend( pPlayer1, (MSGBASE*)&resultMsg, sizeof(TESTMSG) );
	PACKEDDATA_OBJ->QuickSend( pPlayer1, (MSGBASE*)&resultMsg, resultMsg.GetMsgLength() );	//CHATMSG 040324
	
#endif
}



#ifdef _MHCLIENT_

#include "interface/cFont.h"
//#include "interface/cImage.h"
#include "ImageNumber.h"

void CBattle_VimuStreet::Render()
{


//Title
//	RECT rect = { 30, 100, 500, 150 };
//	char temp[256];
//	sprintf( temp, "VimuStreet Battle" );
//	CFONT_OBJ->RenderFont( 0, temp, strlen(temp), &rect, 0xffffffff );

//力茄矫埃...

//	SetRect( &rect, 30, 120, 500, 150 );
//	RECT rect = { 30, 100, 500, 150 };
	DWORD ElapsedTime = gCurTime-m_BattleInfo.BattleTime;


	switch(m_BattleInfo.BattleState )
	{
	case eBATTLE_STATE_READY:
		{
			//拳搁吝埃俊
			DWORD RemainTime = BATTLE_VIMUSTREET_READYTIME > ElapsedTime ? BATTLE_VIMUSTREET_READYTIME - ElapsedTime : 0;
			//sprintf( temp, "Battle Start in %d sec", RemainTime / 1000 );
			m_ImageNumber.SetNumber( RemainTime / 1000 );
			if( m_ImageNumber.IsNumberChanged() )
				m_ImageNumber.SetFadeOut( 500 );

			m_ImageNumber.Render();
			
//			if( m_pCurShowImage )
//				m_pCurShowImage->RenderSprite( &m_vTitleScale, NULL, 0.0f, &m_vTitlePos, 0xffffffff );
		}
		break;

	case eBATTLE_STATE_FIGHT:
		{
			if( m_pCurShowImage )
				m_pCurShowImage->RenderSprite( &m_vTitleScale, NULL, 0.0f, &m_vTitlePos, 0xffffffff );

			//拳搁吝埃俊 唱吭促啊 困肺?
			DWORD RemainTime = BATTLE_VIMUSTREET_FIGHTTIME > ElapsedTime ? BATTLE_VIMUSTREET_FIGHTTIME - ElapsedTime : 0;
			//sprintf( temp, "Battle End in %d sec", RemainTime / 1000 );
			m_ImageNumber.SetNumber( RemainTime / 1000 );

//			m_ImageNumber.SetPosition( 512 + 32, 130 ); //130
//			m_ImageNumber.SetPosition( 512 + 32, 30 ); //130
			m_ImageNumber.Render();			

		}
		break;

	case eBATTLE_STATE_RESULT:
		{
			DWORD dwAlpha = 255;
			if( !m_bFadeOut )
			{
				if( ElapsedTime > 5500 )
				{
					m_dwFadeOutStartTime = gCurTime;
					m_bFadeOut = TRUE;
				}
			}
			else
			{
				DWORD dwElapsed = gCurTime - m_dwFadeOutStartTime;
				DWORD dwMinusAlpha = 255 * dwElapsed / 1000;
				if( dwMinusAlpha < 255 )
				{
					dwAlpha = 255 - dwMinusAlpha;
				}
				else
				{
					dwAlpha = 0;
				}
			}

			if(m_WinnerTeam == eBattleTeam_Max)
			{				
				if( m_pCurShowImage )
					m_pCurShowImage->RenderSprite( &m_vTitleScale, NULL, 0.0f, &m_vTitlePos, 0x00ffffff | (dwAlpha << 24) );
			}
			else
			{
				if(ElapsedTime > 2500)
				{
					if( m_pCurShowImage )
						m_pCurShowImage->RenderSprite( &m_vTitleScale, NULL, 0.0f, &m_vTitlePos, 0x00ffffff | (dwAlpha << 24) );
				}
			}
		}
		break;
	}

	//CFONT_OBJ->RenderFont(0,temp,strlen(temp),&rect,0xffffffff);	

}

#endif
// } end virtual func
//////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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