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

📄 synattr.cpp

📁 魔域源代码需要的可以学习一下真么这么麻烦啊
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	tmE =*pTmDetected;

	tmE.tm_mon += 2;

	time_t	tE	= mktime(&tmE);

	//与当前时间进行比较
	time_t tCurTime = time(NULL);
	
	if(tCurTime >= tE) //若大于或等于2个月
	{	
		unsigned int uiTimeOnline = m_pData->GetInt(SYNATTRDATA_TIMEONLINE);

		if (m_pUser->GetSynRank()==RANK_RESERVED)
		{
			if(uiTimeOnline < TIMEONLINE_FIRSTJOIN) //连续2个月连续在线时间没有
			{
				//预备成员被开除
				this->Betray();
				return true;
			}
			else
			{
				//重新设置在线时间为0
				m_pData->SetInt(SYNATTRDATA_TIMEONLINE,0);
				m_pData->SetInt(SYNATTRDATA_TIMEDETECTED,tCurTime);
				m_pData->Update();
				return false;
			}
		}
		else
		{
			if(uiTimeOnline < TIMEONLINE_FIRSTJOIN/2) //连续2个月连续在线时间没有
			{				
				this->Betray();
				return true;
			}
			else
			{
				//重新设置在线时间为0
				m_pData->SetInt(SYNATTRDATA_TIMEONLINE,0);
				m_pData->SetInt(SYNATTRDATA_TIMEDETECTED,tCurTime);
				m_pData->Update();
				return false;
			}
		}
	
	}

	DEBUG_CATCH("bool CSynAttr::IsFullTimeOnline(int iMonth, int iDay)")

	return true;//未到检测时间 返回TRUE


}
//背叛帮派
void CSynAttr::Betray()
{
	DEBUG_TRY

	//
	if (m_pUser->GetSynRank()==RANK_RESERVED)
	{
		OBJID idOldSyn = GetSynID();
		//---jinggy---从帮派中删除此成员---begin	
		if(m_pData)
		{
			m_pData->DeleteRecord();
			m_pData->Release();
			m_pData	= NULL;
		}
		else
			return;
		DelMemberList(idOldSyn, m_pUser->GetName());	
		
		//---jinggy---从帮派中删除此成员---end
	}


	//若没有
	int  nDecProffer =0 ;
	
	switch(m_pUser->GetSynRank()) {
	case RANK_NEWBIE:
		{
			nDecProffer = 200;
			this->DecProffer(nDecProffer);			
			this->SetRank(RANK_NEWBIE);

		}
		break;			
	case RANK_SUBLEADER:
		{
			nDecProffer = 200;
			this->DecProffer(nDecProffer);
			this->SetRank(RANK_NEWBIE);
		}
		break;
	case RANK_TEAMLEADER:
		{
			nDecProffer = 500;
			this->DecProffer(nDecProffer);
			this->SetRank(RANK_NEWBIE);
		}
		break;
	default:
		break;
	}

	SynchroInfo();

/*
	CSyndicate* pSyn = SynManager()->QuerySyndicate(idOldSyn);
	
	IF_OK(pSyn && pSyn->GetInt(SYNDATA_AMOUNT) > 0)
	{
		pSyn->QueryModify()->AddData(SYNDATA_AMOUNT, -1);
		pSyn->QueryModify()->AddData(SYNDATA_REPUTE, -1*REPUTE_PER_MEMBER_OUT);		// 主动脱离帮派扣帮派的声望
		pSyn->QueryModify()->AddData(SYNDATA_MONEY, -1*MONEY_PER_MEMBER_OUT);		// 主动脱离帮派减少的基金

		//---jinggy---减少帮主和副帮主的贡献值---begin
		CSynAttrData* pData = CSynAttrData::CreateNew();

		IF_NOT(pData)
		{
			return ;
		}

		//帮主 的贡献值减2000
		char szSQL[1024];
		sprintf(szSQL, "SELECT * FROM %s WHERE syn_id=%d AND rank=%d LIMIT 1",\
			           _TBL_SYNATTR,idOldSyn,RANK_LEADER);
		
		IRecordset* pRes = Database()->CreateNewRecordset(szSQL);

		IF_NOT(pRes)
		{
			pData->Release();			
			return;
		}

		IF_NOT(pData->Create(pRes))
		{
			pData->Release();
			pRes->Release();
			return;
		}
		pRes->Release();

		int nProffer = pData->GetInt(SYNATTRDATA_PROFFER) - 2000;
		pData->SetInt(SYNATTRDATA_PROFFER,nProffer);
		pData->Update();
		pData->Release();

		//副帮主 的贡献值减1000
		sprintf(szSQL, "SELECT * FROM %s WHERE syn_id=%d AND rank=%d",\
			_TBL_SYNATTR,idOldSyn,RANK_SUBLEADER);

		pRes = Database()->CreateNewRecordset(szSQL);
		IF_NOT(pRes)
		{
			return;
		}

		for(int i = 0; i < pRes->RecordCount(); i++)
		{
			pData = CSynAttrData::CreateNew();
			
			IF_NOT(pData)
			{				
				pRes->Release();
				return ;
			}

			IF_NOT(pData->Create(pRes))
			{
				pData->Release();
				pRes->Release();
				return;
			}
			
			nProffer = pData->GetInt(SYNATTRDATA_PROFFER) - 1000;
			pData->SetInt(SYNATTRDATA_PROFFER,nProffer);
			pData->Update();
			pData->Release();

			pRes->MoveNext();
		}

		pRes->Release();		
	}
	//---jinggy---减少帮主和副帮主的贡献值---end
*/
	DEBUG_CATCH("void CSynAttr::Betray()")
}

//当帮主分配了贡献值后,需要重新设置 成员的 贡献值的增量
void CSynAttr::ResetSynProfferInc()
{
	m_pData->SetInt(SYNATTRDATA_PROFFERINC, 0);
}
/*
//添加帮派声望增量
void CSynAttr::AddReputeInc(int nReputeInc)
{
	//每帮军团增加10点军团声望,玩家军团贡献增加1点
	if(nReputeInc>=10)
	{
		int nProffer = nReputeInc/10;
		this->AddProffer(nProffer);		
		return;
	}	
}
*/
/*
//添加帮派基金增量
void CSynAttr::AddMoneyInc(int nMoneyInc)
{
	//每帮军团赚取100军团基金(不包括捐献军团基金),军团贡献增加1点。(这里包括招收新玩家)。
	DWORD dwMoneySum =  nMoneyInc;
	if(dwMoneySum/=100)
	{
		this->AddProffer(dwMoneySum);return;
	}	
}
*/
/*
CSyndicate* CSynAttr::GetMasterSyn()
{
	if(GetSynID() != ID_NONE)
	{
		CSynPtr pSyn = SynManager()->QuerySyndicate(GetSynID());
		IF_OK(pSyn)
		{
			if(pSyn->GetInt(SYNDATA_FEALTY) != ID_NONE)
			{
				OBJID idMaster = pSyn->GetInt(SYNDATA_FEALTY);
				CSynPtr pSyn = SynManager()->QuerySyndicate(idMaster);
				if(pSyn)
					return pSyn;
			}
			else
				return pSyn;
		}
	}
	
	return NULL;
}*/


static int	PROFFER_TIME_DIV[]	= {10, 20, 40};
// 给领导分贡献度
void CSynAttr::AddProfferToLeader(int nProffer)
{
	int nTime = 0;

	CSyndicate* pSyn = QuerySyndicate();
	if (pSyn)
	{
		CUser* pUser = NULL;

		if (pSyn->GetInt(SYNDATA_LEADERID) != ID_NONE
			&& pSyn->GetInt(SYNDATA_LEADERID) != m_pUser->GetID())
		{
			// 如果本人不是本帮派帮主,且存在帮主,直接找帮主
			CUser* pUser = UserManager()->GetUser(pSyn->GetInt(SYNDATA_LEADERID));
			if (pUser && pUser->QuerySynAttr())
			{
				CHECK(nTime<3);
				int nAddProffer = nProffer/PROFFER_TIME_DIV[nTime];
				pUser->QuerySynAttr()->AddProffer(nAddProffer);
			}
			++nTime;	// 即使帮主不在线,也当作分享了贡献度
		}

		// 向上寻找帮主
		while (!pSyn->IsMasterSyn())
		{
			pSyn = SynManager()->QuerySyndicate(pSyn->GetInt(SYNDATA_FEALTY));
			if (pSyn && pSyn->GetInt(SYNDATA_LEADERID) != ID_NONE)
			{
				// 如果存在帮主,寻找帮主并分享贡献度
				pUser = UserManager()->GetUser(pSyn->GetInt(SYNDATA_LEADERID));
				if (pUser)
				{
					CHECK(nTime<3);
					int nAddProffer = nProffer/PROFFER_TIME_DIV[nTime];
					pUser->QuerySynAttr()->AddProffer(nAddProffer);
				}
				++nTime;	// 即使帮主不在线,也当作分享了贡献度
			}
		}
	}
}

//改变帮派的成员的等级
bool CSynAttr::SetSynMemberLevel(int nLevel)
{
	if(m_pData)
	{
		m_pData->SetInt(SYNATTRDATA_MEMBERLEVEL,nLevel); 
		return true;
	}
	return false;
}

int CSynAttr::GetSynMemberLevel()
{
	if(m_pData)
		return m_pData->GetInt(SYNATTRDATA_MEMBERLEVEL);
	return -1;
}

bool CSynAttr::CreateSubSubSyn(LPCTSTR szName, int nLevel,int nProffer, int nMoney, int nMoneyLeave)
{
/*	CHECKF(m_pData);

	if(m_pUser->GetLev() < nLevel)
	{
		m_pUser->SendSysMsg(STR_NOT_ENOUGH_LEV, nLevel);
		return false;
	}
	if (m_pUser->QuerySynProffer()<nProffer)
	{
		m_pUser->SendSysMsg(STR_SYN_SETSUBLEADER_NOPROFFER,nProffer);
		return false;
	}

	CSyndicate* pFealty = SynManager()->QuerySyndicate(GetSynID());
	CHECKF(pFealty);
	if(pFealty->GetInt(SYNDATA_MONEY) < nMoney)
	{
		m_pUser->SendSysMsg(STR_GUILD_FUND_NOT_ENOUGH, nMoney);
		return false;
	}

	CreateSyndicateInfo	info;
	info.idSyn	= ID_NONE;
	SafeCopy(info.szName, szName, _MAX_NAMESIZE);
	SafeCopy(info.szTenet, DEFAULT_TENET, MAX_TENETSIZE);
	SafeCopy(info.szLeaderTitle, DEFAULT_LEADERTITLE, _MAX_NAMESIZE);
	SafeCopy(info.szMemberTitle, DEFAULT_MEMBERTITLE, _MAX_NAMESIZE);
	info.idLeader	= m_pUser->GetID();
	SafeCopy(info.szLeader, m_pUser->GetName(), _MAX_NAMESIZE);
	info.nMoney		= nMoneyLeave;
	info.idFealty	= GetSynID();

	OBJID idNewSyn = SynManager()->QueryModify()->CreateSyndicate(&info);
	if(idNewSyn == ID_NONE)
	{
		m_pUser->SendSysMsg(STR_FORBIDDEN_GUILD_NAME);
		return false;
	}

	// update new leader
	DelMemberList(GetSynID(), m_pUser->GetName());
	AddMemberList(idNewSyn, m_pUser->GetName(), m_pUser->GetLev());
//	m_pData->SetInt(SYNATTRDATA_SYNID, idNewSyn);
//	m_pData->SetInt(SYNATTRDATA_RANK, RANK_LEADER);
//	m_pData->Update();
// update later	SynchroInfo();

	// update syndicate
	pFealty->QueryModify()->AddData(SYNDATA_MONEY, -1*nMoney);
	pFealty->QueryModify()->AddData(SYNDATA_AMOUNT, -1);

	// synchro relation
	CMsgSyndicate	msg;
	IF_OK(msg.Create(SET_SUBSUBSYN,pSyn->GetID(),pSynTeam->GetID()))
		pFealty->BroadcastSynMsg(&msg);
*/
	return true;
}


OBJID CSynAttr::CreateSubSyn(OBJID idFealty, const char* pszName)
{
	if (ID_NONE == idFealty)
		return ID_NONE;

	CSyndicate* pFealty = SynManager()->QuerySyndicate(idFealty);
	CHECKF(pFealty);
	
	CreateSyndicateInfo	info;
	info.idSyn	= ID_NONE;
	SafeCopy(info.szName, pszName, _MAX_NAMESIZE);
	SafeCopy(info.szTenet, DEFAULT_TENET, MAX_TENETSIZE);
	SafeCopy(info.szLeaderTitle, DEFAULT_LEADERTITLE, _MAX_NAMESIZE);
	SafeCopy(info.szMemberTitle, DEFAULT_MEMBERTITLE, _MAX_NAMESIZE);
	info.idLeader	= ID_NONE;
	SafeCopy(info.szLeader, "", _MAX_NAMESIZE);
	info.nMoney		= 0;
	info.idFealty	= idFealty;
	info.nSynFlag	= 1;

	OBJID idNewSyn = SynManager()->QueryModify()->CreateSyndicate(&info);
	if(idNewSyn == ID_NONE)
	{
		m_pUser->SendSysMsg(STR_FORBIDDEN_GUILD_NAME);
		return ID_NONE;
	}

	// synchro relation
	CMsgSyndicate	msg;
	IF_OK(msg.Create(SET_SYN, idNewSyn, idFealty))
		pFealty->BroadcastSynMsg(&msg);
	return idNewSyn;
}

OBJID CSynAttr::CreateSubSubSyn(OBJID idFealty,const char szName[])
{
	IF_NOT(idFealty)
		return ID_NONE;

	CreateSyndicateInfo	info;
	info.idSyn	= ID_NONE;
	SafeCopy(info.szName, szName, _MAX_NAMESIZE);
	SafeCopy(info.szTenet, DEFAULT_TENET, MAX_TENETSIZE);
	SafeCopy(info.szLeaderTitle, DEFAULT_LEADERTITLE, _MAX_NAMESIZE);
	SafeCopy(info.szMemberTitle, DEFAULT_MEMBERTITLE, _MAX_NAMESIZE);
	info.idLeader	= NULL;
	SafeCopy(info.szLeader, "", _MAX_NAMESIZE);
	info.nMoney		= 0;
	info.idFealty	= idFealty;
	info.nSynFlag	= 2;

	OBJID idNewSyn = SynManager()->QueryModify()->CreateSyndicate(&info);
	if(idNewSyn == ID_NONE)
	{
		m_pUser->SendSysMsg(STR_FORBIDDEN_GUILD_NAME);
		return ID_NONE;
	}
	CSyndicate* pFealty = SynManager()->QuerySyndicate(idFealty);
	CHECKF(pFealty);

	// synchro relation
	CMsgSyndicate	msg;
	IF_OK(msg.Create(SET_SYN, idNewSyn, idFealty))
		pFealty->BroadcastSynMsg(&msg);
	return idNewSyn;
	
}

int CSynAttr::GetSynRank()
{
	if(GetSynID() != ID_NONE)
		return m_pData->GetInt(SYNATTRDATA_RANK);
	else
		return RANK_NONE;
}

⌨️ 快捷键说明

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