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

📄 gameplayerset.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
📖 第 1 页 / 共 2 页
字号:
								pFocusPlayer = pPlayer;
							else
							{
								if (g_objHero.GetFriend(pFocusPlayer->GetID()) 
										|| g_objHero.GetTeamMemberInfoByID(pFocusPlayer->GetID())
										|| g_objHero.GetSydicateID() == pFocusPlayer->GetSydicateID())
								{
									pFocusPlayer = pPlayer;									
								}
								else
								{
									if (g_objHero.GetFriend(pFocusPlayer->GetID()) 
											|| g_objHero.GetTeamMemberInfoByID(pFocusPlayer->GetID())
											|| g_objHero.GetSydicateID() == pFocusPlayer->GetSydicateID())
									{
									}
									else
										pFocusPlayer = pPlayer;									
								}
							}
						}
					}
					else if (dwFlag&PLAYER_PLAYERPRI)
					{
						if (!pFocusPlayer->IsNpc())
						{
							if (!pPlayer->IsNpc())
								pFocusPlayer = pPlayer;
						}
						else
						{
							pFocusPlayer = pPlayer;
						}
					}
					else
					{
						pFocusPlayer = pPlayer;
					}
				}
			}
			else
				pFocusPlayer = pPlayer;
		}
	}
	
	return pFocusPlayer;
}

//////////////////////////////////////////////////////////////////////
void CGamePlayerSet::ShowX(void)
{
	if (CPlayer::IsValidPt(m_pFocusPlayer))
	{
		m_pFocusPlayer->ShowInfo();
	}
}

//////////////////////////////////////////////////////////////////////
void CGamePlayerSet::ProcessManager(int nHeroX, int nHeroY)
{
	return;
	int iPlayerAmount = this->GetPlayerAmount();
	for(int i=iPlayerAmount-1; i>=0; i--)
	{
		CPlayer* pPlayer	=m_dequePlayer[i];
		if (CPlayer::IsValidPt(pPlayer) && _ROLE_CALL_PET != pPlayer->GetRoleType())
		{
			if (nHeroX > 0 && nHeroY > 0)
			{
				// del player by distance from hero
				int nPosX=0, nPosY=0;
				CMyPos posHero, posPlayer;
				posHero.x = nHeroX;
				posHero.y = nHeroY;
				pPlayer->GetPos(posPlayer);
//				int nDelta = __max(abs(posHero.x - posPlayer.x), abs(posHero.y - posPlayer.y));
//				::DebugMsg("player des %s %d", pPlayer->GetName(), nDelta);

				if(g_objGameMap.Outof9Block(posHero, posPlayer))
				{
					if (m_pFocusPlayer == pPlayer)
						m_pFocusPlayer = NULL;
					g_objGameMap.DelInteractiveObj(pPlayer);
//					::DebugMsg("delete player %s", pPlayer->GetName());

					m_dequePlayer.erase(m_dequePlayer.begin()+i);
					SAFE_DELETE(pPlayer);
				}
			}
		}
	}
}
//////////////////////////////////////////////////////////////////////

void CGamePlayerSet::Process(int nHeroX, int nHeroY)
{
	m_pFocusPlayer	=NULL;	// reset
	DWORD dwDistance = 999;
	
	int iPlayerAmount = this->GetPlayerAmount();
	for(int i=iPlayerAmount-1; i>=0; i--)
	{
		CPlayer* pPlayer	=m_dequePlayer[i];
		if (CPlayer::IsValidPt(pPlayer))
		{
			if (!pPlayer->IsDead() && pPlayer->IsMouseFocus())
			{
				if(pPlayer->IsHypersensitive())
				{
					m_pFocusPlayer = pPlayer;
					break;
				}
				if (m_pFocusPlayer)	// got one already
				{
					CMyPos posFocusPlayer;
					m_pFocusPlayer->GetPos(posFocusPlayer);

					CMyPos posPlayer;
					pPlayer->GetPos(posPlayer);

					if (posPlayer.x+posPlayer.y >= posFocusPlayer.x+posFocusPlayer.y)
						m_pFocusPlayer = pPlayer;
				}
				else
					m_pFocusPlayer = pPlayer;
			}

		}
		else
		{
			if (m_pFocusPlayer == pPlayer)
				m_pFocusPlayer = NULL;

			g_objGameMap.DelInteractiveObj(pPlayer);
			m_dequePlayer.erase(m_dequePlayer.begin()+i);
		}
	}
	m_objFaceEffectWhite.Process();
	m_objFaceEffectBlack.Process();
}
//--------------------------------------------------------------
BOOL	CGamePlayerSet::AddSyndicate(OBJID idSyndaicate,OBJID idTopSyndaicate, char* pszName,char* pszLeaderName,DWORD dwStatus)
{
	if (idSyndaicate == ID_NONE)
		return FALSE;

	int nAmount = m_setSyndicateInfo.size();
	for(int i=0;i<nAmount;i++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo && pInfo->idSyndicate == idSyndaicate)
			return FALSE;
	}
	const OBJID idStrNone = 100021;
	InfoSyndicate* pInfoSyndicate = new InfoSyndicate;
	pInfoSyndicate->idSyndicate = idSyndaicate;
	pInfoSyndicate->idTopSyndicate = idTopSyndaicate;
	strcpy(pInfoSyndicate->szSyndicateName,pszName);
	strcpy(pInfoSyndicate->szSyndicateLeaderName,pszLeaderName);
	pInfoSyndicate->dwStatus = dwStatus;

	m_setSyndicateInfo.push_back(pInfoSyndicate);
	return TRUE;
}

char*	CGamePlayerSet::GetSyndicateLeaderName(OBJID idSyndaicate)
{
	// seek ...
	const OBJID idStrNone = 100021;
	InfoSyndicate infoNoSyndicate = {ID_NONE,ID_NONE, "NONE","NONE",SYNDICATE_NORMAL};
	strcpy(infoNoSyndicate.szSyndicateLeaderName, g_objGameDataSet.GetStr(idStrNone));
	if(idSyndaicate == ID_NONE)
		return infoNoSyndicate.szSyndicateLeaderName;

	int nAmount = m_setSyndicateInfo.size();
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo && pInfo->idSyndicate == idSyndaicate)
			return pInfo->szSyndicateLeaderName;
	}
	return "";	
}
//--------------------------------------------------------------
char* CGamePlayerSet::GetSyndicateName(OBJID idSyndaicate)
{
	// seek ...
	const OBJID idStrNone = 100021;
	InfoSyndicate infoNoSyndicate = {ID_NONE,ID_NONE, "NONE","NONE",SYNDICATE_NORMAL};
	strcpy(infoNoSyndicate.szSyndicateName, g_objGameDataSet.GetStr(idStrNone));
	if(idSyndaicate == ID_NONE)
		return infoNoSyndicate.szSyndicateName;

	int nAmount = m_setSyndicateInfo.size();
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo && pInfo->idSyndicate == idSyndaicate)
			return pInfo->szSyndicateName;
	}
	
	// query ...
	CMsgSyndicate msg;
	if(msg.Create(QUERY_SYN_NAME, idSyndaicate))
		msg.Send();

	// insert a virtual record...
	InfoSyndicate* pInfo = new InfoSyndicate;

	MYASSERT(pInfo);
	pInfo->idSyndicate = idSyndaicate;
	pInfo->idTopSyndicate = idSyndaicate;
	strcpy(pInfo->szSyndicateName, "");
	strcpy(pInfo->szSyndicateLeaderName, "");
	pInfo->dwStatus	= SYNDICATE_NORMAL;
	m_setSyndicateInfo.push_back(pInfo);
	return pInfo->szSyndicateName;
}
//--------------------------------------------------------------
void CGamePlayerSet::SetSyndicateName(OBJID idSyndaicate, char* pszName, char* pszLeaderName)
{
	if(!pszName || !pszLeaderName)
		return;

	// seek ...
	int nAmount = m_setSyndicateInfo.size();
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo && pInfo->idSyndicate == idSyndaicate)
		{
			strcpy(pInfo->szSyndicateName, pszName);
			strcpy(pInfo->szSyndicateLeaderName, pszLeaderName);
			return;
		}
	}

	// server error ...
	// skip ...
	return;
}
//--------------------------------------------------------------
void  CGamePlayerSet::SetSyndicateStatus(OBJID idSyndaicate, DWORD dwStatus)
{
	CGamePlayerSet::GetSyndicateName(idSyndaicate);
	int nAmount = m_setSyndicateInfo.size();
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo && pInfo->idSyndicate == idSyndaicate)
		{
			pInfo->dwStatus = dwStatus;
			::PostCmd(CMD_FLASH_SYNALLY);
			return;
		}
	}
}
//--------------------------------------------------------------
void CGamePlayerSet::ClearAllSyndicateStatus()
{
	int nAmount = m_setSyndicateInfo.size();
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo)
		{
			pInfo->dwStatus = SYNDICATE_NORMAL;
		}
	}
}
//--------------------------------------------------------------
OBJID   CGamePlayerSet::GetSyndicateIdByName(char* pszSynName)
{
	int nAmount = m_setSyndicateInfo.size();
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo && strcmp(pInfo->szSyndicateName,pszSynName) == 0)
		{
			return pInfo->idSyndicate;
		}
	}
	return ID_NONE;
}
//--------------------------------------------------------------
int		CGamePlayerSet::GetSubSyndicateAmount(OBJID idSyndicate)
{
	int nAmount = m_setSyndicateInfo.size();
	int nSubAmount = 0;
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo && pInfo->idTopSyndicate == idSyndicate 
			&& (pInfo->dwStatus == SYNDICATE_SUB || pInfo->dwStatus == SYNDICATE_SUBSUB) )
		{
			nSubAmount++;
		}
	}
	return nSubAmount;		
}
//--------------------------------------------------------------
DWORD	CGamePlayerSet::GetSubSyndicateId(OBJID idSyndicate,int nIndex)
{
	int nAmount = m_setSyndicateInfo.size();
	int nSubAmount = 0;
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo && pInfo->idTopSyndicate == idSyndicate 
			&& (pInfo->dwStatus == SYNDICATE_SUB || pInfo->dwStatus == SYNDICATE_SUBSUB) )
		{
			if (nSubAmount == nIndex)
				return pInfo->idSyndicate;
			nSubAmount++;
		}
	}
	return ID_NONE;	
}
//--------------------------------------------------------------
DWORD	CGamePlayerSet::GetSyndicateStatus(OBJID idSyndaicate)
{
	int nAmount = m_setSyndicateInfo.size();
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo && pInfo->idSyndicate == idSyndaicate)
		{
			return pInfo->dwStatus;
		}
	}
	return SYNDICATE_NORMAL;
}
//--------------------------------------------------------------
DWORD	CGamePlayerSet::GetAllySyndicateAmount()
{
	int nAmount = m_setSyndicateInfo.size();
	int nAllySyndicateAmount = 0;
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo->dwStatus == SYNDICATE_ALLY)		
		{
			nAllySyndicateAmount ++;
		}
	}
	return nAllySyndicateAmount;
}
//--------------------------------------------------------------
char*	CGamePlayerSet::GetAllySyndicateNameByIndex(int nIndex)
{
	int nAmount = m_setSyndicateInfo.size();
	int nAllySyndicateAmount = 0;
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo->dwStatus == SYNDICATE_ALLY)		
		{
			if(nAllySyndicateAmount == nIndex)
				return pInfo->szSyndicateName;
			nAllySyndicateAmount ++;
		}
	}
	return NULL;
}
//--------------------------------------------------------------
DWORD	CGamePlayerSet::GetAntagonizeSyndicateAmount()
{
	int nAmount = m_setSyndicateInfo.size();
	int nAntagonizeSyndicateAmount = 0;
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo->dwStatus == SYNDICATE_ANTAGONIZE)		
		{
			nAntagonizeSyndicateAmount ++;
		}
	}
	return nAntagonizeSyndicateAmount;
}
//--------------------------------------------------------------
char*	CGamePlayerSet::GetAntagonizeNameByIndex(int nIndex)
{
	int nAmount = m_setSyndicateInfo.size();
	int nAntagonizeSyndicateAmount = 0;
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo->dwStatus == SYNDICATE_ANTAGONIZE)		
		{
			if(nAntagonizeSyndicateAmount == nIndex)
				return pInfo->szSyndicateName;
			nAntagonizeSyndicateAmount ++;
		}
	}
	return NULL;
}
//--------------------------------------------------------------
void	CGamePlayerSet::UpdateSyndicateName(OBJID idSyndaicate)
{
	int nAmount = m_setSyndicateInfo.size();
	for(int i = 0; i < nAmount; i ++)
	{
		InfoSyndicate* pInfo = m_setSyndicateInfo[i];
		if(pInfo && pInfo->idSyndicate == idSyndaicate)
			SAFE_DELETE(pInfo);
		m_setSyndicateInfo.erase(m_setSyndicateInfo.begin()+i);
		return;
	}
}
//--------------------------------------------------------------
void	CGamePlayerSet::SetWhiteSynId(OBJID idWhiteSyn)
{
	m_idWhiteSyn = idWhiteSyn;
	m_objFaceEffectWhite.Clear();
	m_objFaceEffectWhite.Add("White_Frame");
}
//--------------------------------------------------------------
OBJID	CGamePlayerSet::GetWhiteSynId()
{
	return m_idWhiteSyn;
}
//--------------------------------------------------------------
void	CGamePlayerSet::SetBlackSynId(OBJID idBlackSyn)
{
	m_idBlackSyn = idBlackSyn;
	m_objFaceEffectBlack.Clear();
	m_objFaceEffectBlack.Add("Black_Frame");
}
//--------------------------------------------------------------
OBJID	CGamePlayerSet::GetBlackSynId()
{
	return m_idBlackSyn;
}
//--------------------------------------------------------------
void	CGamePlayerSet::DestroySyndicate(OBJID idSyndicate)
{
	// process hero ...
	if(g_objHero.GetSydicateID() == idSyndicate)
	{
		g_objHero.SetSyndicateAnnounce("");
		g_objHero.SetSyndicateFund(0);
		g_objHero.SetSyndicateLeaderName("");
		g_objHero.SetSyndicatePopulation(0);
		g_objHero.SetSyndicateProffer(0);
		g_objHero.SetSyndicateRank(RANK_NONE);
		g_objHero.SetSyndicateID(ID_NONE);
	}
	
	// process playerset ...
	int nAmount = this->GetPlayerAmount();
	for(int i = 0; i < nAmount; i ++)
	{
		CPlayer* pPlayer = this->GetPlayerByIndex(i);
		if(pPlayer && pPlayer->GetSydicateID() == idSyndicate)
		{
			pPlayer->SetSyndicateID(ID_NONE);
			pPlayer->SetSyndicateFund(0);
			pPlayer->SetSyndicateLeaderName("");
			pPlayer->SetSyndicatePopulation(0);
			pPlayer->SetSyndicateProffer(0);
			pPlayer->SetSyndicateRank(ID_NONE);
		}
	}

	nAmount  = m_setSyndicateInfo.size();
	for(i =nAmount-1 ;i>=0;i--)
	{
		InfoSyndicate* pInfo =  m_setSyndicateInfo[i];
		if (pInfo && pInfo->idSyndicate == idSyndicate) 
		{
			SAFE_DELETE(pInfo);			
			m_setSyndicateInfo.erase(m_setSyndicateInfo.begin() + i);
		}
	}
	::PostCmd(CMD_FLASH_SYNALLY);	
}

//--------------------------------------------------------------
void	CGamePlayerSet::SetMantle(OBJID idSyndicate, DWORD dwMantle)
{
	int nAmount  = this->GetPlayerAmount();
	for(int i = 0; i < nAmount; i ++)
	{
		CPlayer* pPlayer = this->GetPlayerByIndex(i);
		if(pPlayer && pPlayer->GetSydicateID() == idSyndicate)
		{
			pPlayer->SetMantle(dwMantle);
		}
	}
	if(g_objHero.GetSydicateID() == idSyndicate)
		g_objHero.SetMantle(dwMantle);
}

⌨️ 快捷键说明

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