📄 battle_vimustreet.cpp
字号:
#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 + -