also... ich denke, dass das switchen des PartyLeaders über
Code:
void CPartyMng::RemoveConnection( CPlayer* pPlayer )
erfolgt... und zwar gibt es dort folgende wichtige abschnitte:
Code:
int i = pParty->FindMember( pPlayer->uKey ); //stellt ArrayPosition des Members fest
if( i == 0 ) // also wenn spieler partyleader ist ( PartyLeader ist immer auf Position 0 des Arrays )
for( j = 1; j < pParty->m_nSizeofMember; j++ ) //alle Member durchgehen
{
if( pParty->m_aMember[j].m_bRemove == FALSE ) //wenn spieler in party und online
{
fRemoveParty = false; //party soll nicht gelöscht werden ( bezieht sich auf späteren codepart )
pParty->SwapPartyMember( 0, j ); //wechsle die spieler aus ( j wird zum PartyLeader )
// swap
break;
}
}
Die Funktion wird aufgerufen vom CoreServer in
Code:
BOOL CPlayerMng::UnregisterPlayerInfo( CPlayer* pPlayer, BOOL bNotify )
welche wieder von
Code:
void CPlayerMng::RemovePlayer( CPlayer* pPlayer, BOOL bNotify )
aufgerufen wird usw^^