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

📄 guildmanager.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	__LEAVE_CRITICAL_SECTION( m_Mutex )	return pGuild;	__END_CATCH}	Guild* GuildManager::getGuild_NOBLOCKED(GuildID_t id)	throw (){	__BEGIN_TRY	// 府畔 且 辨靛 器牢磐	Guild* pGuild;	hash_map<GuildID_t, Guild*>::iterator itr = m_Guilds.find(id);	if (itr == m_Guilds.end())	{		return NULL;	}	pGuild = itr->second;	return pGuild;	__END_CATCH}void GuildManager::clear()	throw(){	__BEGIN_TRY	__ENTER_CRITICAL_SECTION( m_Mutex )	HashMapGuildItor itr = m_Guilds.begin();	for ( ; itr != m_Guilds.end(); itr++ )	{		SAFE_DELETE( itr->second );	}	m_Guilds.clear();	__LEAVE_CRITICAL_SECTION( m_Mutex )	__END_CATCH}void GuildManager::clear_NOBLOCKED(){	__BEGIN_TRY	HashMapGuildItor itr = m_Guilds.begin();	for ( ; itr != m_Guilds.end(); itr++ )	{		SAFE_DELETE( itr->second );	}	m_Guilds.clear();	__END_CATCH}#ifdef __SHARED_SERVER__void GuildManager::makeSGGuildInfo( SGGuildInfo& sgGuildInfo )	throw(){	__BEGIN_TRY		__ENTER_CRITICAL_SECTION( m_Mutex )	HashMapGuildConstItor itr = m_Guilds.begin();	for ( ; itr != m_Guilds.end(); itr++ )	{		GuildInfo2* pGuildInfo = new GuildInfo2();		itr->second->makeInfo( pGuildInfo );		sgGuildInfo.addGuildInfo( pGuildInfo );	}	__LEAVE_CRITICAL_SECTION( m_Mutex )		__END_CATCH}#endifvoid GuildManager::makeWaitGuildList( GCWaitGuildList& gcWaitGuildList, GuildRace_t race )	throw(){	__BEGIN_TRY		__ENTER_CRITICAL_SECTION( m_Mutex )	HashMapGuildConstItor itr = m_Guilds.begin();	for ( ; itr != m_Guilds.end(); itr++ )	{		Guild* pGuild = itr->second;		if ( pGuild->getState() == Guild::GUILD_STATE_WAIT && pGuild->getRace() == race )		{			GuildInfo* pGuildInfo = new GuildInfo();			pGuild->makeInfo( pGuildInfo );			gcWaitGuildList.addGuildInfo( pGuildInfo );		}	}	__LEAVE_CRITICAL_SECTION( m_Mutex )	__END_CATCH}void GuildManager::makeActiveGuildList( GCActiveGuildList& gcActiveGuildList, GuildRace_t race )	throw(){	__BEGIN_TRY		__ENTER_CRITICAL_SECTION( m_Mutex )	HashMapGuildConstItor itr = m_Guilds.begin();	for ( ; itr != m_Guilds.end(); itr++ )	{		Guild* pGuild = itr->second;		if ( pGuild->getState() == Guild::GUILD_STATE_ACTIVE && pGuild->getRace() == race )		{			GuildInfo* pGuildInfo = new GuildInfo();			pGuild->makeInfo( pGuildInfo );			gcActiveGuildList.addGuildInfo( pGuildInfo );		}	}	__LEAVE_CRITICAL_SECTION( m_Mutex )	__END_CATCH}void GuildManager::heartbeat()	throw(Error){	__BEGIN_TRY#ifdef __SHARED_SERVER__	Timeval currentTime;	getCurrentTime( currentTime );	////////////////////////////////////////////////////////	// 辨靛 啊涝 脚没 措扁 矫埃捞 逞绢埃 糕滚甫 瘤款促.	////////////////////////////////////////////////////////	if ( currentTime > m_WaitMemberClearTime )	{		__ENTER_CRITICAL_SECTION( m_Mutex )		VSDateTime currentDateTime = VSDateTime::currentDateTime();		HashMapGuildConstItor itr = m_Guilds.begin();		for ( ; itr != m_Guilds.end(); itr++ )		{			Guild* pGuild = itr->second;			list<string> mList;			pGuild->expireTimeOutWaitMember( currentDateTime, mList );			list<string>::const_iterator itr2 = mList.begin();			for ( ; itr2 != mList.end(); itr2++ )			{				// 啊涝捞 秒家登菌澜阑 霸烙辑滚俊 舅赴促.				SGExpelGuildMemberOK sgExpelGuildMemberOK;				sgExpelGuildMemberOK.setGuildID( pGuild->getID() );				sgExpelGuildMemberOK.setName( *itr2 );				sgExpelGuildMemberOK.setSender( pGuild->getMaster() );				g_pGameServerManager->broadcast( &sgExpelGuildMemberOK );			}		}		m_WaitMemberClearTime.tv_sec = currentTime.tv_sec + 3600;			// 1矫埃 林扁		__LEAVE_CRITICAL_SECTION( m_Mutex )	}#endif	__END_CATCH}string GuildManager::toString() const	throw(){	__BEGIN_TRY	StringStream msg;	return msg.toString();	__END_CATCH}bool GuildManager::isGuildMaster( GuildID_t guildID, PlayerCreature* pPC )	throw(Error){#ifdef __GAME_SERVER__	__BEGIN_TRY	Guild* pGuild = getGuild( guildID );	if ( pGuild == NULL ) return false;	return ( pGuild->getMaster() == pPC->getName() );	__END_CATCH#else	return false;#endif}// 辨靛啊 己阑 啊脸唱?bool GuildManager::hasCastle( GuildID_t guildID ) 	throw(Error){	__BEGIN_TRY	bool bHasCastle = false;#ifdef __GAME_SERVER__	Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		Result* pResult = pStmt->executeQuery(				"SELECT count(*) FROM CastleInfo WHERE GuildID = %d", (int)guildID);		if (pResult->next()) 		{			int count = pResult->getInt(1);			if (count > 0)			{				bHasCastle = true;			}		}		SAFE_DELETE(pStmt);	}	END_DB(pStmt)#endif	return bHasCastle;	__END_CATCH}// 辨靛啊 己阑 啊脸唱?bool GuildManager::hasCastle( GuildID_t guildID, ServerID_t& serverID, ZoneID_t& zoneID ) 	throw(Error){	__BEGIN_TRY	bool bHasCastle = false;#ifdef __GAME_SERVER__	Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		Result* pResult = pStmt->executeQuery(				"SELECT ServerID, ZoneID FROM CastleInfo WHERE GuildID = %d", (int)guildID);		if (pResult->next()) 		{			serverID = pResult->getInt(1);			zoneID = pResult->getInt(2);			bHasCastle = true;		}		SAFE_DELETE(pStmt);	}	END_DB(pStmt)#endif	return bHasCastle;	__END_CATCH}// 辨靛啊 傈里脚没阑 沁唱?bool GuildManager::hasWarSchedule( GuildID_t guildID ) 	throw(Error){	__BEGIN_TRY	bool bHasWarSchedule = false;#ifdef __GAME_SERVER__	Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		Result* pResult = pStmt->executeQuery(				"SELECT count(*) FROM WarScheduleInfo WHERE AttackGuildID = %d AND Status<>'END'", (int)guildID);		if (pResult->next()) 		{			int count = pResult->getInt(1);			if (count > 0)			{				bHasWarSchedule = true;			}		}		SAFE_DELETE(pStmt);	}	END_DB(pStmt)#endif	return bHasWarSchedule;	__END_CATCH}bool GuildManager::hasActiveWar( GuildID_t guildID )	throw(Error){	__BEGIN_TRY	bool bHasActiveWar = false;#ifdef __GAME_SERVER__	ServerID_t	serverID;	ZoneID_t	zoneID;	if ( hasCastle( guildID, serverID, zoneID ) )	{		// 己阑 家蜡窍绊 乐促搁 弊 己阑 惑措肺 窍绰 辨靛 傈里捞 乐绰瘤 犬牢茄促.		Statement* pStmt = NULL;				BEGIN_DB		{			pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();			Result* pResult = pStmt->executeQuery(				"SELECT count(*) FROM WarScheduleInfo WHERE ServerID = %u AND ZoneID = %u AND Status = 'START'", serverID, zoneID );			if ( pResult->next() )			{				int count = pResult->getInt(1);				if ( count > 0 )				{					bHasActiveWar = true;				}			}			SAFE_DELETE( pStmt );		}		END_DB( pStmt )	}	else	{		// 己阑 家蜡窍绊 乐瘤 臼促搁 弊 辨靛啊 绢恫 己阑 惑措肺 窍绰 辨靛 傈里捞 乐绰瘤 犬牢茄促.		Statement* pStmt = NULL;		BEGIN_DB		{			pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();			Result* pResult = pStmt->executeQuery(					"SELECT count(*) FROM WarScheduleInfo WHERE AttackGuildID = %d AND Status = 'START'", (int)guildID);			if (pResult->next()) 			{				int count = pResult->getInt(1);				if (count > 0)				{					bHasActiveWar = true;				}			}			SAFE_DELETE(pStmt);		}		END_DB(pStmt)	}#endif	return bHasActiveWar;	__END_CATCH}string GuildManager::getGuildName( GuildID_t guildID )	throw (Error){	__BEGIN_TRY	Guild* pGuild = getGuild( guildID );	if ( pGuild != NULL )		return pGuild->getName();	return "";	__END_CATCH}

⌨️ 快捷键说明

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