📄 guildmanager.cpp
字号:
__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 + -