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

📄 battle_vimustreet.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "stdafx.h"
#include "Battle_VimuStreet.h"
#include "BattleTeam_VimuStreet.h"
#include "Object.h"
#include "ObjectStateManager.h"
#include "WantedManager.h"
#include "PartyManager.h"
#include "Party.h"
#include "PKManager.h"

#ifdef _MAPSERVER_
#include "ObjectStateManager.h"
#include "UserTable.h"
#include "Player.h"
#include "PackedData.h"
#include "SkillManager_Server.h"
#else
#include "./interface/cWindowManager.h"
#include "./Interface/cScriptManager.h"
#include "ObjectManager.h"
#include "TileManager.h"
#include "MHMap.h"
#include "ChatManager.h"
#endif


CBattle_VimuStreet::CBattle_VimuStreet()
{
	m_BattleFlag = BATTLE_FLAG_NONE;
#ifndef _MAPSERVER_
	m_pCurShowImage	= NULL;
#endif
}

CBattle_VimuStreet::~CBattle_VimuStreet()
{

}

void CBattle_VimuStreet::Initialize(BATTLE_INFO_BASE* pCreateInfo, CBattleTeam* pTeam1, CBattleTeam* pTeam2)
{
	CBattle::Initialize(pCreateInfo,&m_Team[0],&m_Team[1]);
}


//////////////////////////////////////////////////////////////////////////
// { start virtual func 馆靛矫 坷滚扼捞爹 秦具窃




// Battle 沥焊 包访
#ifdef _MAPSERVER_
void CBattle_VimuStreet::GetBattleInfo(char* pInfo,WORD* size)
{
	BATTLE_INFO_VIMUSTREET* info = (BATTLE_INFO_VIMUSTREET*)pInfo;

	memcpy(info,&m_VimuStreetInfo,sizeof(BATTLE_INFO_VIMUSTREET));
	
	ToEachTeam(pTeam)
		CBattleTeam_VimuStreet* pTeamVM	= (CBattleTeam_VimuStreet*)pTeam;
		info->Character[TeamNumber] = pTeamVM->GetCharacterID();
	EndToEachTeam
	
	*size = sizeof(BATTLE_INFO_VIMUSTREET);
}
/*
void CBattle_VimuStreet::GetBattleInfo(BATTLE_INFO_BASE*& pInfo,int& size)
{
	pInfo = &m_VimuStreetInfo;
	size = sizeof(BATTLE_INFO_BASE);
}
*/
#endif



// 利,酒焙 备喊
BOOL CBattle_VimuStreet::IsEnemy(CObject* pOperator,CObject* pTarget)
{
	if( pOperator->GetObjectKind() == eObjectKind_Player )
	{
		if( pTarget->GetObjectKind() & eObjectKind_Monster )	// 阁胶磐绰 利捞促
		{
			return TRUE;
		}
		else if( pTarget->GetObjectKind() == eObjectKind_Player )	//鸥百捞 敲饭捞绢 老版快
		{
			/////咯扁 沥府窍绊!!!!!!!!!
			/////厚公肺 磷绊 促矫 登混酒 朝锭! 弊锭 厚公肺 磷菌绰瘤 PK肺 磷菌绰瘤 犬牢且巴!

			if( pOperator->GetBattleID() == pTarget->GetBattleID() &&
				pOperator->GetBattleTeam() != pTarget->GetBattleTeam() &&
				GetBattleState() == eBATTLE_STATE_FIGHT )
				return TRUE;	// 海撇酒捞叼啊 鞍绊 评捞 促福促搁 利捞促.	//厚公惑 利

#ifdef _MAPSERVER_
			if( ((CPlayer*)pOperator)->GetPartyIdx() != 0 )
			{
				CParty* pParty = PARTYMGR->GetParty( ((CPlayer*)pOperator)->GetPartyIdx() );
				if( pParty )
				if( pParty->IsPartyMember( pTarget->GetID() ) )
				{
					return FALSE;	//颇萍盔篮 利捞 酒聪促.
				}
			}

			if( PKMGR->IsPKAllow() )
			if( WANTEDMGR->IsOwner((CPlayer*)pOperator, ((CPlayer*)pTarget)->GetWantedIdx()) == TRUE )
				return TRUE;		//么混 措惑磊绰 利捞促.
#else
			if( pOperator == HERO )
			{
				if( PARTYMGR->IsPartyMember( pTarget->GetID() ) )
				{
//					if( OBJECTMGR->GetSelectedObjectID() == pTarget->GetID() )
//					{ //裹困傍拜栏肺 颇萍盔阑 傍拜且锭绰 皋技瘤 绝霸 窍扁 困秦
//						CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(630) );
//					}
					return FALSE;	//颇萍盔篮 利捞 酒聪促.
				}

				if( PKMGR->IsPKAllow() )
				if( WANTEDMGR->IsChrIDInList( pTarget->GetID() ) )
					return TRUE;	//么混 措惑磊绰 利捞促.
			}
#endif
			if( PKMGR->IsPKAllow() )
			{
				if( ((CPlayer*)pOperator)->IsPKMode() )				
				{
					if(pOperator == pTarget )
						return FALSE;
					else
						return TRUE;	//磊脚捞 PK葛靛捞搁 磊脚阑 猾 唱赣瘤绰 利捞促.
				}
				if( ((CPlayer*)pTarget)->IsPKMode() )
					return TRUE;	//惑措啊 PK葛靛捞搁 利捞促.
			}

			return FALSE;
		}
		else if( pOperator->GetObjectKind() & eObjectKind_Monster )
		{	// Operator 啊 阁胶磐老版快	//荤角 咯扁 吧副 老捞 绝促. 阁胶磐绰 厚公甫 给窍骨肺
			if( pTarget->GetObjectKind() & eObjectKind_Monster )	// 阁胶磐绰 利捞 酒丛
				return FALSE;
		}
		else if(pTarget->GetObjectKind() == eObjectKind_SkillObject)
		{
			return TRUE;
		}
		else	//唱赣瘤绰 利捞 酒聪促.
		{
			return FALSE;
		}
	}

	return TRUE;
}


BOOL CBattle_VimuStreet::IsFriend(CObject* pOperator,CObject* pTarget)
{
	if(pOperator->GetBattleID() != pTarget->GetBattleID())
		return FALSE;
	
	if(pOperator->GetBattleTeam() != pTarget->GetBattleTeam())
		return FALSE;
	
	return TRUE;
}

// event func
void CBattle_VimuStreet::OnCreate(BATTLE_INFO_BASE* pCreateInfo, CBattleTeam* pTeam1, CBattleTeam* pTeam2)
{
	CBattle::OnCreate(pCreateInfo,pTeam1,pTeam2);

	memcpy(&m_VimuStreetInfo,pCreateInfo,sizeof(BATTLE_INFO_VIMUSTREET));

	m_Team[0].SetCharacterID(m_VimuStreetInfo.Character[VIMUTEAM_BLUE]);	
	m_Team[1].SetCharacterID(m_VimuStreetInfo.Character[VIMUTEAM_RED]);

#ifndef _MAPSERVER_	
	m_ImageNumber.Init( 32, 0 );
	m_ImageNumber.SetFillZero( FALSE );
	m_ImageNumber.SetLimitCipher( 2 );
	m_ImageNumber.SetPosition( 512 - 16, 80 );
	m_ImageNumber.SetScale( 3.0f, 3.0f );

	m_dwFadeOutStartTime = 0;
	m_bFadeOut	 = FALSE;

//	SCRIPTMGR->GetImage( 59, &m_ImageReady, PFT_HARDPATH );
	SCRIPTMGR->GetImage( 60, &m_ImageStart, PFT_HARDPATH );
	SCRIPTMGR->GetImage( 61, &m_ImageWin, PFT_HARDPATH );
	SCRIPTMGR->GetImage( 62, &m_ImageLose, PFT_HARDPATH );
	SCRIPTMGR->GetImage( 76, &m_ImageDraw, PFT_HARDPATH );
	
//	m_pCurShowImage = &m_ImageReady;

	m_vTitlePos.x = (1024 - 512) / 2;	//128 width
	m_vTitlePos.y = 32;
	m_vTitleScale.x = 1.0f;
	m_vTitleScale.y = 1.0f;
	
	CTileManager* pTileManager = MAP->GetTileManager();

	//厚公厘阑 父甸磊...
	VECTOR3 vPos	= m_VimuStreetInfo.vStgPos;
	VECTOR3 vStgPos;

	float fx, fz = vPos.z;
//	RECT rc = { -100.0f, -50.0f, -50.0f, 0.0f };
	float fAdd = -50.0f;

	for( fx = vPos.x - 1000.0f ; fx <= vPos.x + 1000.0f + fAdd ; fx += 50.0f )//
	{
		vStgPos.x = fx;
		vStgPos.z = fz - 1000.0f;
		pTileManager->AddTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
		vStgPos.z = fz + 1000.0f + fAdd;
		pTileManager->AddTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
	}

	fx = vPos.x;
	for( fz = vPos.z - 1000.0f ; fz <= vPos.z + 1000.0f + fAdd; fz += 50.0f )
	{
		vStgPos.x = fx - 1000.0f;
		vStgPos.z = fz;
		pTileManager->AddTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
		vStgPos.x = fx + 1000.0f + fAdd;
		vStgPos.z = fz;
		pTileManager->AddTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
	}

//---烙矫	
	fz = vPos.z;
	for( fx = vPos.x - 1050.0f ; fx <= vPos.x + 1050.0f + fAdd ; fx += 50.0f )//
	{
		vStgPos.x = fx;
		vStgPos.z = fz - 1050.0f;
		pTileManager->AddTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
		vStgPos.z = fz + 1050.0f + fAdd;
		pTileManager->AddTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
	}

	fx = vPos.x;
	for( fz = vPos.z - 1050.0f ; fz <= vPos.z + 1050.0f + fAdd ; fz += 50.0f )
	{
		vStgPos.x = fx - 1050.0f;
		vStgPos.z = fz;
		pTileManager->AddTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
		vStgPos.x = fx + 1050.0f + fAdd;
		vStgPos.z = fz;
		pTileManager->AddTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
	}
//------------------

	//芭府救俊 乐唱? 绝栏搁? confirm
	
	CPlayer* pPlayer1 = (CPlayer*)OBJECTMGR->GetObject( m_VimuStreetInfo.Character[0] );
	CPlayer* pPlayer2 = (CPlayer*)OBJECTMGR->GetObject( m_VimuStreetInfo.Character[1] );
	if( pPlayer1 )
	if( pPlayer1->GetState() == eObjectState_BattleReady )
		OBJECTSTATEMGR->EndObjectState(pPlayer1, eObjectState_BattleReady );
	if( pPlayer2 )
	if( pPlayer2->GetState() == eObjectState_BattleReady )
		OBJECTSTATEMGR->EndObjectState(pPlayer2, eObjectState_BattleReady );

#else

	m_bDieByOp = FALSE;

	CPlayer* pPlayer1 = (CPlayer*)g_pUserTable->FindUser(m_VimuStreetInfo.Character[0]);
	CPlayer* pPlayer2 = (CPlayer*)g_pUserTable->FindUser(m_VimuStreetInfo.Character[1]);
	if( pPlayer1 )
	if( pPlayer1->GetState() == eObjectState_BattleReady )
		OBJECTSTATEMGR_OBJ->EndObjectState(pPlayer1, eObjectState_BattleReady);

	if( pPlayer2 )
	if( pPlayer2->GetState() == eObjectState_BattleReady )
		OBJECTSTATEMGR_OBJ->EndObjectState(pPlayer2, eObjectState_BattleReady);

#endif


//阿辆 贸府....
//-捞棋飘甫 贸府茄促.
//-牧飘费 穿福瘤 臼绊档 惑措甫 傍拜啊瓷窍档废 茄促.
//-促弗 某腐磐狼 PK甫 阜绰促.

}

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

#ifndef _MAPSERVER_
	m_pCurShowImage = &m_ImageStart;
	m_ImageNumber.SetFillZero( TRUE );
	m_ImageNumber.SetFadeOut( 0 );	//fadeout off
	m_ImageNumber.SetScale( 1.0f, 1.0f );
	m_ImageNumber.SetPosition( 512 + 32, 130 );
#endif
	
}

void CBattle_VimuStreet::OnDestroy()
{

#ifndef _MAPSERVER_	

	CTileManager* pTileManager = MAP->GetTileManager();
	//厚公厘阑 秦眉
	VECTOR3 vPos	= m_VimuStreetInfo.vStgPos;
	VECTOR3 vStgPos;

	float fx, fz = vPos.z;
	float fAdd = -50.0f;
	
	for( fx = vPos.x - 1000.0f ; fx <= vPos.x + 1000.0f + fAdd ; fx += 50.0f )
	{
		vStgPos.x = fx;
		vStgPos.z = fz - 1000.0f;
		pTileManager->RemoveTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
		vStgPos.z = fz + 1000.0f + fAdd;
		pTileManager->RemoveTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
	}
	fx = vPos.x;
	for( fz = vPos.z - 1000.0f ; fz <= vPos.z + 1000.0f + fAdd ; fz += 50.0f )
	{
		vStgPos.x = fx - 1000.0f;
		vStgPos.z = fz;
		pTileManager->RemoveTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
		vStgPos.x = fx + 1000.0f + fAdd;
		vStgPos.z = fz;
		pTileManager->RemoveTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
	}

//---烙矫	
	fz = vPos.z;
	for( fx = vPos.x - 1050.0f ; fx <= vPos.x + 1050.0f + fAdd ; fx += 50.0f )//
	{
		vStgPos.x = fx;
		vStgPos.z = fz - 1050.0f;
		pTileManager->RemoveTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
		vStgPos.z = fz + 1050.00f + fAdd;
		pTileManager->RemoveTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
	}

	fx = vPos.x;
	for( fz = vPos.z - 1050.0f ; fz <= vPos.z + 1050.0f + fAdd; fz += 50.0f )
	{
		vStgPos.x = fx - 1050.0f;
		vStgPos.z = fz;
		pTileManager->RemoveTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
		vStgPos.x = fx + 1050.0f + fAdd;
		vStgPos.z = fz;
		pTileManager->RemoveTileAttrByAreaData( NULL, &vStgPos, SKILLAREA_ATTR_BLOCK );
	}
//------------------

#else

	CPlayer* pPlayer1 = (CPlayer*)g_pUserTable->FindUser(m_VimuStreetInfo.Character[0]);
	CPlayer* pPlayer2 = (CPlayer*)g_pUserTable->FindUser(m_VimuStreetInfo.Character[1]);
	if( pPlayer1 )
	{
		pPlayer1->SetBattleID(pPlayer1->GetGridID());
		pPlayer1->SetVimuing( FALSE );

		if( pPlayer1->GetState() == eObjectState_Die && m_bDieByOp )
		{
			pPlayer1->ReviveAfterVimu();
			m_bDieByOp = FALSE;
		}
	}
	if( pPlayer2 )
	{
		pPlayer2->SetBattleID(pPlayer2->GetGridID());
		pPlayer2->SetVimuing( FALSE );
		
		if( pPlayer2->GetState() == eObjectState_Die && m_bDieByOp )
		{
			pPlayer2->ReviveAfterVimu();
			m_bDieByOp = FALSE;
		}
	}

#endif

	CBattle::OnDestroy();
	
}

void CBattle_VimuStreet::OnTeamMemberAdd( int Team, DWORD MemberID, char* Name )
{
#ifdef _MAPSERVER_
/*
	if( Team == eBattleTeam1 )
	{
		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();

⌨️ 快捷键说明

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