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

📄 herosyndicate.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//------------------------------------------------------------------
// HeroSyndicate.cpp
//------------------------------------------------------------------

#include "Hero.h"
#include "AllMsg.h"
#include "GameMsg.h"
#include "GamePlayerSet.h"
#include "GameDataSet.h"

//------------------------------------------------------------------
void CHero::SetLastSyndicateApplyID(OBJID idApply)
{
	m_idLastSyndicateApply = idApply;
}
//------------------------------------------------------------------
void CHero::SyndicateApplyJoin(OBJID idTarget)
{
	if(this->GetSydicateID() != ID_NONE)
	{
		OBJID idLeaveSyndicate = 100065;
		g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idLeaveSyndicate));
		return;
	}
	CPlayer* pPlayer = g_objPlayerSet.GetPlayer(idTarget);
	{
		if(!pPlayer)
		{
			OBJID idErrorTarget = 100066;
			g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idErrorTarget));
			return;
		}
	}
	if(pPlayer->GetSydicateID() == ID_NONE)
	{
		char szMsg[128];
		const OBJID idCanNotJion = 100067;
		sprintf(szMsg, g_objGameDataSet.GetStr(idCanNotJion), pPlayer->GetName());
		g_objGameMsg.AddMsg(szMsg);
		return;
	}
/*	if(pPlayer->GetSyndicateRank() != RANK_LEADER)
	{
		char szMsg[128];
		const OBJID idCanNotRecruit = 100068;
		sprintf(szMsg, g_objGameDataSet.GetStr(idCanNotRecruit), pPlayer->GetName());
		g_objGameMsg.AddMsg(szMsg);
		return;
	}*/

	CMsgSyndicate msg;
	if(msg.Create(APPLY_JOIN, idTarget))
	{
		msg.Send();
		OBJID idApplicationSend = 100069;
		g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idApplicationSend));
	}
}
//------------------------------------------------------------------
void CHero::SynDicateAcceptJoin()
{
	CMsgSyndicate msg;
	if(msg.Create(INVITE_JOIN, m_idLastSyndicateApply))
		msg.Send();
}
//------------------------------------------------------------------
void CHero::SyndicateApplyInvite(OBJID idTarget)
{
	if(this->GetSydicateID() == ID_NONE)
	{
		OBJID idPleaseJoinSyndicateFirst = 100070;
		g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idPleaseJoinSyndicateFirst));
		return;
	}
/*	if(this->GetSyndicateRank() != RANK_LEADER)
	{
		OBJID idCanNotRecurit = 100071;
		g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idCanNotRecurit));
		return;
	}*/
	CPlayer* pPlayer = g_objPlayerSet.GetPlayer(idTarget);
	{
		if(!pPlayer)
		{
			OBJID idErrorTarget = 100072;
			g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idErrorTarget));
			return;
		}
	}
	if(pPlayer->GetSydicateID() != ID_NONE)
	{
		OBJID idTargetHaveSyndicate = 100073;
		g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idTargetHaveSyndicate));
		return;
	}
	CMsgSyndicate msg;
	if(msg.Create(INVITE_JOIN, idTarget))
		msg.Send();
}
//------------------------------------------------------------------
void CHero::SyndicateAcceptInvite()
{
	CMsgSyndicate msg;
	if(msg.Create(APPLY_JOIN, m_idLastSyndicateApply))
		msg.Send();
}
//------------------------------------------------------------------
void CHero::SetLastSyndicateID(OBJID idSynDicate)
{
	m_idLastSyndicate = idSynDicate;
}
//------------------------------------------------------------------
OBJID CHero::GetLastSyndicateID()
{
	return m_idLastSyndicate;
}
//------------------------------------------------------------------
void CHero::LeaveSyndicate()
{
	if(this->GetSydicateID() == ID_NONE)
		return;

	CONST MINPROFFER_QUITSYN = 200; //贡献度大于200才能退出
	if(this->GetSyndicateProffer() < MINPROFFER_QUITSYN && 	this->GetSyndicateRank() > 10)  //检查贡献度 -- 预备团员不用检查
		return;

	CMsgSyndicate msg;
	if(msg.Create(LEAVE_SYN, g_objHero.GetID()))
		msg.Send();
}
//------------------------------------------------------------------
OBJID CHero::IsSubSynLeader()
{
	if (this->GetSydicateID() != ID_NONE)
	{
		int nAmount = g_objPlayerSet.GetSubSyndicateAmount(this->GetSydicateID());
		if (nAmount == 0)
			return 0;
		else
		{
			for(int i=0;i<nAmount;i++)
			{	
				OBJID idSubSyn = g_objPlayerSet.GetSubSyndicateId(this->GetSydicateID(),i);
				if (strcmp(g_objPlayerSet.GetSyndicateLeaderName(idSubSyn),this->GetName()) == 0 )
					return idSubSyn;
			}
		}
	}
	return 0;
}
//------------------------------------------------------------------
OBJID CHero::IsSubSubSynLeader()
{
	if (this->GetSydicateID() != ID_NONE)
	{
		int nAmount = g_objPlayerSet.GetSubSyndicateAmount(this->GetSydicateID());
		if (nAmount == 0)
			return 0;
		else
		{
			for(int i=0;i<nAmount;i++)
			{	
				OBJID idSubSyn = g_objPlayerSet.GetSubSyndicateId(this->GetSydicateID(),i);
				int nSubAmount = g_objPlayerSet.GetSubSyndicateAmount(idSubSyn);
				for(int j=0;j<nSubAmount;j++)
				{	
					OBJID idSubSubSyn = g_objPlayerSet.GetSubSyndicateId(idSubSyn,j);
					if (strcmp(g_objPlayerSet.GetSyndicateLeaderName(idSubSubSyn),this->GetName()) == 0 )
						return idSubSubSyn;
				}
			}
		}
	}
	return 0;
}
//------------------------------------------------------------------
void CHero::SynContribute(DWORD dwMoney)
{
	if(this->GetSydicateID() == ID_NONE)
	{
		OBJID idHaveNoSynDicate = 100074;
		g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idHaveNoSynDicate));
		return;
	}
	if(this->GetMoney() < dwMoney)
	{
		OBJID idMoneyNotEnough = 100075;
		g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idMoneyNotEnough));
		return;
	}
	CMsgSyndicate msg;
	if(msg.Create(DONATE_MONEY, dwMoney))
		msg.Send();
}
//------------------------------------------------------------------
void CHero::SetSyndicateAnnounce(char* pszWord)
{
	if(pszWord)
	{
		strcpy(m_szSyndicateAnnounce, pszWord);
		::PostCmd(CMD_FLASH_SYNDICATE_WORD);
	}
}
//------------------------------------------------------------------
char* CHero::GetSyndicateAnnounce()
{
	return m_szSyndicateAnnounce;
}
//------------------------------------------------------------------
void CHero::SetSyndicateAnnounceTime(DWORD dwTime)
{
	if (dwTime) 
	{
		int nYear = dwTime / 10000;
		int nMonth = ( dwTime / 100 ) % 100;
		int nDay = dwTime % 100 ;
		sprintf( m_szSyndicateAnnounceTime, "%d-%d-%d",nYear, nMonth, nDay) ;		
	}
}
//------------------------------------------------------------------
char* CHero::GetSyndicateAnnounceTime()
{
	return m_szSyndicateAnnounceTime;
}
//------------------------------------------------------------------
void CHero::QuerySynicateInfo()
{
	CMsgSyndicate msg;
	if(msg.Create(QUERY_SYNATTR, this->GetID()))
		msg.Send();
}
//------------------------------------------------------------------
void CHero::QueryOtherSynicateInfo(char* szSynName)
{
	if (strlen(szSynName) <= 0) 
		return;
	else
	{
		OBJID idSyn  = g_objPlayerSet.GetSyndicateIdByName(szSynName);
		if (idSyn) 
		{
			CMsgAction msg;
			if (msg.Create(this->GetID(),0,0,0,actionQuerySynInfo,idSyn)) 
				msg.Send();
		}
	}
}
//------------------------------------------------------------------
int		CHero::GetSynWarReportAmount ()
{
	return m_dequeSynWarReport.size();
}
//------------------------------------------------------------------
char*	CHero::GetSynWarReportLine(int nIndex)
{
	int nAmount = m_dequeSynWarReport.size();
	if(nIndex >= nAmount && nIndex < 0)
		return NULL;
	return m_dequeSynWarReport[nIndex];
}
//------------------------------------------------------------------
void	CHero::ClearSynWarReport()
{
	int nAmount = m_dequeSynWarReport.size();
	for(int i = 0; i < nAmount; i ++)
	{
		char* pszChar = m_dequeSynWarReport[i];
		delete[] pszChar;
	}
	m_dequeSynWarReport.clear();
}
//------------------------------------------------------------------
void	CHero::AddSynWarReport(char* pszLine)
{
	if(!pszLine)
		return;
	if(strlen(pszLine) >= 512)
		return;
	char* pszTemp = new char[512];
	strcpy(pszTemp, pszLine);
	m_dequeSynWarReport.push_back(pszTemp);
	m_dwTimeSynWarReportLastFlash = ::TimeGet();
}
//------------------------------------------------------------------
void	CHero::ShowSynWarReport()
{
	const DWORD dwDelay = 60 * 1000;
	if(::TimeGet() - m_dwTimeSynWarReportLastFlash > dwDelay)
		return;
	CMyPos posShow = {_SCR_WIDTH-300, 5};
	CMySize sizeFont;
	CMyBitmap::GetFontSize(sizeFont);
	int nAmount = this->GetSynWarReportAmount();
	for(int i = 0; i < nAmount; i ++)
	{
		char* pszLine = this->GetSynWarReportLine(i);
		if(pszLine)
		{
			posShow.y += sizeFont.iHeight +5;
			CMyBitmap::ShowString(posShow.x, posShow.y, _COLOR_YELLOW, pszLine);
		}	
	}
}
//------------------------------------------------------------------
void	CHero::SendSyndicateAnnounce(char* pszStr)

⌨️ 快捷键说明

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