📄 party.cpp
字号:
SetPartyExpMatrix(); // 颇萍 版氰摹 盒硅伏 拌魂
}
////////////////////////////////////////////////////////////////////////////////////////
// SEND 颇萍 盔 函版 MSG
////////////////////////////////////////////////////////////////////////////////////////
void CParty::Send_Refresh(_LPZW_PARTYREFRESH_REP pPacket)
{
for( int i=0; i < MAX_PARTY_NUM ; i ++ )
{
// if(!m_pPartySocket[i] ) continue;
// if( m_pPartySocket[i]->dwMagicNum != MAGIC_NUM ) continue;
// if( m_pPartySocket[i]->bClose ) continue;
if( !IsSocketValidity( m_pPartySocket[i] ) ) continue;
g_pServer->PacketSend_PartyRefresh( m_pPartySocket[i], pPacket );
}
}
////////////////////////////////////////////////////////////////////////////////////////
// 颇萍 LIST 沥焊甫 傈价窃
//
// - 颇萍盔 困摹 沥焊甫 UPDATE矫糯
////////////////////////////////////////////////////////////////////////////////////////
void CParty::Party_List( _LPSOCKET_FD pSocket )
{
// --------------------------------------------------------------------------------
// 颇萍盔狼 困摹甫 茫酒辑 Update矫糯
// --------------------------------------------------------------------------------
for( int i=0; i < MAX_PARTY_NUM ; i ++ )
{
if( m_pPartyMember->PARTYLIST[i].dwMapID != _Module.m_nMapSeq ) continue;
if( !IsSocketValidity( m_pPartySocket[i] ) ) continue;
if( !m_pPartySocket[i]->pPlayer ) continue;
m_pPartyMember->PARTYLIST[i].nX = m_pPartySocket[i]->pPlayer->m_Tile.x;
m_pPartyMember->PARTYLIST[i].nY = m_pPartySocket[i]->pPlayer->m_Tile.y;
m_pPartyMember->PARTYLIST[i].dwHP = m_pPartySocket[i]->pPlayer->m_nHP;
m_pPartyMember->PARTYLIST[i].dwMaxHP = m_pPartySocket[i]->pPlayer->m_nMaxHP ;
}
// --------------------------------------------------------------------------------
// 秦寸 颇萍盔俊霸 皋矫瘤 傈价
// --------------------------------------------------------------------------------
if( pSocket )
{
g_pServer->PacketSend_PartyList( pSocket, m_pPartyMember );
}
}
////////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
void CParty::Party_FightzoneTeleport(short nLayer,_LPZW_FIGHTZONERESERVE pPacket, _POINT p , short nTeam )
{
_LPCMATCH lpMatch = g_lpFightzoneManager->Find_Match(pPacket->dwMatchSEQ);
if (lpMatch == NULL) return ;
for( int i = 0 ; i < MAX_PARTY_NUM ; i ++ )
{
if( !IsSocketValidity( m_pPartySocket[i] ) ) continue;
if( !m_pPartySocket[i]->pPlayer ) continue;
// 府歹窍绊 鞍瘤 臼栏搁
if( m_pPartySocket[i]->pPlayer->m_nMapLayer != nLayer ) continue ;
// 荤捧吝捞 酒聪搁
if (m_pPartySocket[i]->pPlayer->m_dwMatchSEQ == 0 )
{
m_pPartySocket[i]->pPlayer->m_dwMatchSEQ = pPacket->dwMatchSEQ ;
m_pPartySocket[i]->pPlayer->m_nTeam = nTeam ;
m_pPartySocket[i]->pPlayer->m_bIsFightZone = true ;
m_pPartySocket[i]->pPlayer->m_bIsFightMode = false ;
m_pPartySocket[i]->pPlayer->m_nUsePotion = pPacket->lpInfor.UsePotion ;
ErrorMsg("(FZ) PlayerTeleport (%s) Match(%d) Killed(%d) Member(%d) TeamCount(%d) Team(%d)",
m_pPartySocket[i]->pPlayer->m_strPlayerID, m_pPartySocket[i]->pPlayer->m_dwMatchSEQ
, lpMatch->m_lpFightZone->KilledCount[m_pPartySocket[i]->pPlayer->m_nTeam], lpMatch->m_lpFightZone->MemberCount[m_pPartySocket[i]->pPlayer->m_nTeam]
, lpMatch->m_lpFightZone->sTeamCount ,m_pPartySocket[i]->pPlayer->m_nTeam);
lpMatch->JoinTeam(m_pPartySocket[i],nTeam ) ;
g_pServer->Teleport(m_pPartySocket[i], p ) ;
}
}
}
////////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
void CParty::Party_FightzoneMapMove(short sLayer, int nMapSeq, _POINT p ,DWORD dwMatchSeq, short nTeam)
{
for( int i = 0; i < MAX_PARTY_NUM ; i ++ )
{
if( !IsSocketValidity( m_pPartySocket[i] ) ) continue;
if( !m_pPartySocket[i]->pPlayer ) continue;
if( m_pPartySocket[i]->pPlayer->m_nMapLayer != sLayer ) continue; // 府歹窍绊 鞍瘤 臼栏搁
// ----------------------------------------------------------------------------
// 荤捧吝捞 酒聪搁
// ----------------------------------------------------------------------------
if (m_pPartySocket[i]->pPlayer->m_dwMatchSEQ == 0 )
{
m_pPartySocket[i]->pPlayer->m_dwMatchSEQ = dwMatchSeq;
m_pPartySocket[i]->pPlayer->m_nTeam = nTeam ;
g_pServer->MapMove(m_pPartySocket[i], nMapSeq, p ) ;
}
}
}
////////////////////////////////////////////////////////////////////////////////////////
// 颇萍 LIST 沥焊甫 傈价窃
//
// - 颇萍盔 困摹 沥焊甫 UPDATE矫糯
////////////////////////////////////////////////////////////////////////////////////////
void CParty::Party_List()
{
// --------------------------------------------------------------------------------
// 颇萍盔狼 困摹甫 茫酒辑 Update矫糯
// --------------------------------------------------------------------------------
for( int i=0; i < MAX_PARTY_NUM ; i ++ )
{
if( m_pPartyMember->PARTYLIST[i].dwMapID != _Module.m_nMapSeq ) continue;
if( !IsSocketValidity( m_pPartySocket[i] ) ) continue;
if( !m_pPartySocket[i]->pPlayer) continue;
m_pPartyMember->PARTYLIST[i].nX = m_pPartySocket[i]->pPlayer->m_Tile.x;
m_pPartyMember->PARTYLIST[i].nY = m_pPartySocket[i]->pPlayer->m_Tile.y;
m_pPartyMember->PARTYLIST[i].dwHP = m_pPartySocket[i]->pPlayer->m_nHP;
m_pPartyMember->PARTYLIST[i].dwMaxHP= m_pPartySocket[i]->pPlayer->m_nMaxHP;
}
// --------------------------------------------------------------------------------
// 颇萍盔俊霸 秦寸 颇萍 沥焊 傈价
// --------------------------------------------------------------------------------
for(i = 0 ; i < MAX_PARTY_NUM ; ++i )
{
if( m_pPartyMember->PARTYLIST[i].dwMapID != _Module.m_nMapSeq ) continue;
if( !IsSocketValidity( m_pPartySocket[i] ) ) continue;
g_pServer->PacketSend_PartyList( m_pPartySocket[i], m_pPartyMember );
}
}
////////////////////////////////////////////////////////////////////////////////////////
// PARTY MASTER咯何 魄沥
//
////////////////////////////////////////////////////////////////////////////////////////
bool CParty::bIsMaster( DWORD pPlayerHandle )
{
if( m_pPartyMember->PARTYLIST[0].dwPlayerHandle == pPlayerHandle )
return true ;
return false;
}
////////////////////////////////////////////////////////////////////////////////////////
// FULL PARTY 咯何 魄沥
//
// - 7.21 by kuma
////////////////////////////////////////////////////////////////////////////////////////
bool CParty::bIsParyFull()
{
return ( m_pPartyMember->nCount == MAX_PARTY_NUM );
}
////////////////////////////////////////////////////////////////////////////////////////
// ALL CLASS PARTY咯何 魄沥
//
// - 7.22 by kuma
////////////////////////////////////////////////////////////////////////////////////////
bool CParty::bIsAllClass()
{
return ( m_sClassCount == MAX_CHARACTERTYPE_NUM );
}
////////////////////////////////////////////////////////////////////////////////////////
// 葛电 颇萍盔捞 鞍篮 甘俊 粮犁 咯何 魄沥
// 10.08 by kuma
////////////////////////////////////////////////////////////////////////////////////////
bool CParty::bIsAllInMap()
{
if( m_pPartyMember->nCount > MAX_PARTY_NUM ) return false;
for( int i = 1; i < m_pPartyMember->nCount; i ++ )
{
if( m_pPartyMember->PARTYLIST[0].dwMapID != m_pPartyMember->PARTYLIST[i].dwMapID )
return false;
// 霸烙 肺爹 吝牢 版快
if( !IsPlayerConnect( m_pPartySocket[i] ) )
{
return false;
}
}
return true;
}
////////////////////////////////////////////////////////////////////////////////
// 泅犁 颇萍 涅胶飘甫 爱绊 乐绰单..
// 颇萍俊 颇萍 涅胶飘啊 乐绰瘤 茄锅 八荤秦焊磊..
// 颇萍 付胶磐 捞芭唱 颇萍 付胶磐客 颇萍 涅胶飘啊 促福搁 岿靛辑滚俊 犬牢 秦焊磊..( 2004.10.29 )
////////////////////////////////////////////////////////////////////////////////
void CParty::PartyQuest_CheckAliveQuest( _LPSOCKET_FD pSocket )
{
if ( m_pPartyMember->PARTYLIST[0].dwPlayerHandle == pSocket->pPlayer->m_dwHandle )
return;
if ( m_pPartyMember->PARTYLIST[0].dwPlayerHandle )
{
if ( IsSocketValidity( m_pPartySocket[0] ) )
{
if ( pSocket->pPlayer->m_dwPartyQuest == m_pPartySocket[0]->pPlayer->m_dwPartyQuest )
return;
}
ErrorMsg( "Quest Alive Check : M(%d) P(%d)", m_pPartyMember->PARTYLIST[0].dwPlayerHandle, pSocket->pPlayer->m_dwPartyQuest );
g_lpDBSock->WorldSend_PartyQuestIsAlive( pSocket,
pSocket->pPlayer->m_dwPartyHandle,
m_pPartyMember->PARTYLIST[0].dwPlayerHandle,
pSocket->pPlayer->m_dwPartyQuest );
}
}
#define PARTYQUEST_REQUEST_FIRST 23001
#define PARTYQUEST_REQUEST_END 23004
/////////////////////////////////////////////////////////////////////
// From WorldServer
// PartyMasetr Handle, PartMaster 狼 泅犁 颇萍 涅胶飘 沥焊
/////////////////////////////////////////////////////////////////////
void CParty::PartyQuest_IsAliveQuest( _LPSOCKET_FD pSocket, DWORD dwMaster, DWORD dwMasterPartyQuest )
{
// 颇萍 付胶磐啊 颇萍 涅胶飘甫 爱绊 乐瘤 臼促...
if ( dwMasterPartyQuest == 0 )
{
if ( pSocket->pPlayer->m_dwPartyQuest == 0 )
return;
ErrorMsg( "Quest Change : M(%d) P(%d)", dwMasterPartyQuest, pSocket->pPlayer->m_dwPartyQuest );
// 泅犁 颇萍盔篮 颇萍 涅胶飘甫 爱绊 乐促...
// 涅胶飘甫 绝局具 摆促..
if ( pSocket->pPlayer->m_dwPartyQuest )
{
CActiveQuest *pQuest = (CActiveQuest*)pSocket->pPlayer->m_ActiveQuest.Find( pSocket->pPlayer->m_dwPartyQuest );
if ( pQuest )
{
pSocket->pPlayer->QuestDelete( pQuest );
pQuest->ExecuteTriggerMissionStop();
}
}
}
else
{
if ( pSocket->pPlayer->m_dwPartyQuest == dwMasterPartyQuest )
return;
ErrorMsg( "Quest Change : M(%d) P(%d)", dwMasterPartyQuest, pSocket->pPlayer->m_dwPartyQuest );
// 颇萍盔篮 绝绊 颇萍 付胶磐绰 颇萍 涅胶飘啊 乐促.
if ( ( pSocket->pPlayer->m_dwPartyQuest == 0 ) &&
( dwMasterPartyQuest >= PARTYQUEST_REQUEST_FIRST ) &&
( dwMasterPartyQuest <= PARTYQUEST_REQUEST_END ) )
{
pSocket->pPlayer->QuestRequest( dwMasterPartyQuest, false );
}
// 颇萍盔苞 颇萍付胶磐 颇萍 涅胶飘啊 撇府促..
else if ( ( pSocket->pPlayer->m_dwPartyQuest >= PARTYQUEST_REQUEST_FIRST ) &&
( pSocket->pPlayer->m_dwPartyQuest <= PARTYQUEST_REQUEST_END ) &&
( dwMasterPartyQuest >= PARTYQUEST_REQUEST_FIRST ) &&
( dwMasterPartyQuest <= PARTYQUEST_REQUEST_END ) )
{
CActiveQuest *pQuest = (CActiveQuest*)pSocket->pPlayer->m_ActiveQuest.Find( pSocket->pPlayer->m_dwPartyQuest );
if ( pQuest )
{
pSocket->pPlayer->QuestDelete( pQuest );
pQuest->ExecuteTriggerMissionStop();
}
pSocket->pPlayer->QuestRequest( dwMasterPartyQuest, false );
}
}
}
///////////////////////////////////////////////////////////////
// return : 颇萍 付胶磐 涅胶飘 酒捞叼
// *pSameMap : 鞍篮 甘辑滚俊 乐促
///////////////////////////////////////////////////////////////
DWORD CParty::Get_MasterPartyQuest(int* pSameMap)
{
*pSameMap = 1;
// 颇萍 付胶磐啊 鞍篮 甘辑滚俊 绝促
// 岿靛 辑滚俊 舅酒 毫具 茄促.
if( !IsSocketValidity( m_pPartySocket[0] ) )
{
*pSameMap = 0;
return true;
}
return m_pPartySocket[0]->pPlayer->m_dwPartyQuest;
}
////////////////////////////////////////////////////////////////////////////////////////
// 颇萍 涅胶飘 函版 荤亲阑 促弗 甘辑滚俊 乐绰 颇萍盔甸俊霸 舅妨林绰 何盒
// From WorldServer
// btType PARTYQUEST_REQUEST (BYTE)0x01
// PARTYQUEST_ABANDON (BYTE)0x02
// PARTYQUEST_TELEPORT (BYTE)0x03
// pPartyHandle : 颇萍 勤甸
// pPlayerHandle : 颇萍 干滚 勤甸
// pPartyQuest :
// PARTYQUEST_REQUEST pParam1 = PartyQuest Index
// PARTYQUEST_ABANDON pParam1 = PartyQuest Index
// PARTYQUEST_TELEPORT pParam1 = Mapid, pParam2 = x, pParam3 = y
////////////////////////////////////////////////////////////////////////////////////////
void CParty::PartyQuest_Map_Change( _LPZW_PARTYQUESTMAPCHANGE_REP pPacket )
{
for( int i = 0; i < MAX_PARTY_NUM ; i ++ )
{
if( m_pPartyMember->PARTYLIST[i].dwPlayerHandle == pPacket->dwPlayerHandle )
{
if( !IsSocketValidity( m_pPartySocket[i] ) )
return;
// 颇萍 涅胶飘 角青
if ( pPacket->btType == PARTYQUEST_REQUEST )
{
CActiveQuest *pQuest = (CActiveQuest*)m_pPartySocket[i]->pPlayer->m_ActiveQuest.Find( pPacket->dwParam1 );
if ( pQuest )
return;
if ( m_pPartySocket[i]->pPlayer->m_dwPartyQuest == 0 )
m_pPartySocket[i]->pPlayer->QuestRequest( pPacket->dwParam1, false );
}
// 颇萍 涅胶飘 器扁
else if ( pPacket->btType == PARTYQUEST_ABANDON )
{
CActiveQuest *pQuest = (CActiveQuest*)m_pPartySocket[i]->pPlayer->m_ActiveQuest.Find( pPacket->dwParam1 );
if ( pQuest == NULL )
return;
if ( m_pPartySocket[i]->pPlayer->m_dwPartyQuest == pPacket->dwParam1 )
{
m_pPartySocket[i]->pPlayer->QuestDelete( pQuest );
pQuest->ExecuteTriggerMissionStop();
}
}
// 颇萍 涅胶飘 颇萍盔 碍力 捞悼
else if ( pPacket->btType == PARTYQUEST_TELEPORT )
{
m_pPartySocket[i]->pPlayer->Quest_Teleport( pPacket->dwParam1, pPacket->dwParam2, pPacket->dwParam3 );
}
return;
}
}
}
bool CParty::PartyQuest_MemberExist( DWORD dwPlayer )
{
// 秦寸 颇萍盔狼 SOCKET FD甫 掘澜
for( int i = 0; i < MAX_PARTY_NUM; i ++ )
{
if( m_pPartyMember->PARTYLIST[i].dwPlayerHandle == dwPlayer )
return true;
}
return false;
}
////////////////////////////////////////////////////////////////////////////////////////
// 秦寸 颇萍盔 漂沥
//
// - 犬厘 累诀 : 促弗 甘俊 立加茄 颇萍盔鳖瘤 楷悼 矫糯
////////////////////////////////////////////////////////////////////////////////////////
void CParty::PartyQuest_Teleport( int pQuestIndex, int pMapID, _POINT pPoint)
{
if ( !IsSocketValidity( m_pPartySocket[0] ) )
return;
for( int i = 0; i < MAX_PARTY_NUM ; i ++ )
{
if( !IsSocketValidity( m_pPartySocket[i] ) ) continue;
CActiveQuest *pAtiveQuest = (CActiveQuest *)m_pPartySocket[i]->pPlayer->m_ActiveQuest.Find( pQuestIndex );
if( !pAtiveQuest ) continue;
m_pPartySocket[i]->pPlayer->Quest_Teleport( pMapID, pPoint.x, pPoint.y );
// ----------------------------------------------------------------------------
// 鞍篮 甘俊辑 捞悼矫
// ----------------------------------------------------------------------------
/*
if( m_pPartySocket[i]->pPlayer->GetMapID() == pMapID )
{
g_pServer->Teleport(m_pPartySocket[i], pPoint ) ;
m_pPartySocket[i]->pPlayer->Quest_Teleport( pMapID, pPoint.x, pPoint.y );
}
// ----------------------------------------------------------------------------
// 促弗 甘栏肺 捞悼矫
// ----------------------------------------------------------------------------
else
{
g_pServer->MapMove(m_pPartySocket[i], pMapID, pPoint );
}
*/
}
}
////////////////////////////////////////////////////////////////////////////////////////
// 秦寸 颇萍盔俊霸 包访 QUEST REQUEST MSG甫 傈价
//
// - 颇萍盔 QUEST狼 巩力肺 牢窍咯 颇萍盔 何磐 皋矫瘤 傈价 饶
// 颇萍 付胶磐俊霸 皋矫瘤甫 傈价窃
//
// * 颇萍 付胶磐父 惯悼矫懦荐 乐澜 (包访 肺流 八配)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -