aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Guilds/GuildMgr.cpp
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2012-11-07 23:21:19 +0100
committerSpp <spp@jorge.gr>2012-11-07 23:21:19 +0100
commit9659f0335f3dad4cf84dca70fa436cb4b214ba39 (patch)
tree93e93eedb1e0bf0e8126a002892acab1e4ce2279 /src/server/game/Guilds/GuildMgr.cpp
parent06eff945065b65cf707837eca6c940ecbf8c7122 (diff)
Core/Guilds: Multiple changes
- Fix Delete Rank - Fix Rank order after Rank is deleted - Send correct event after Guild Tab purchase - Better debug msgs - Move news to Event Logs (internal struct is like Event Logs and Bank Event Logs). Max news configurable
Diffstat (limited to 'src/server/game/Guilds/GuildMgr.cpp')
-rw-r--r--src/server/game/Guilds/GuildMgr.cpp54
1 files changed, 38 insertions, 16 deletions
diff --git a/src/server/game/Guilds/GuildMgr.cpp b/src/server/game/Guilds/GuildMgr.cpp
index 38a5699510e..1cb8419be7c 100644
--- a/src/server/game/Guilds/GuildMgr.cpp
+++ b/src/server/game/Guilds/GuildMgr.cpp
@@ -197,13 +197,13 @@ void GuildMgr::LoadGuilds()
CharacterDatabase.DirectExecute("DELETE gm FROM guild_member gm LEFT JOIN guild g ON gm.guildId = g.guildId WHERE g.guildId IS NULL");
CharacterDatabase.DirectExecute("DELETE gm FROM guild_member_withdraw gm LEFT JOIN guild_member g ON gm.guid = g.guid WHERE g.guid IS NULL");
- // 0 1 2 3 4 5 6 7 8 9 10
- QueryResult result = CharacterDatabase.Query("SELECT guildid, gm.guid, rank, pnote, offnote, w.tab0, w.tab1, w.tab2, w.tab3, w.tab4, w.tab5, "
+ // 0 1 2 3 4 5 6 7 8 9 10
+ QueryResult result = CharacterDatabase.Query("SELECT gm.guildid, gm.guid, rank, pnote, offnote, w.tab0, w.tab1, w.tab2, w.tab3, w.tab4, w.tab5, "
// 11 12 13 14 15 16 17 18 19
"w.tab6, w.tab7, w.money, c.name, c.level, c.class, c.zone, c.account, c.logout_time "
"FROM guild_member gm "
"LEFT JOIN guild_member_withdraw w ON gm.guid = w.guid "
- "LEFT JOIN characters c ON c.guid = gm.guid ORDER BY guildid ASC");
+ "LEFT JOIN characters c ON c.guid = gm.guid ORDER BY gm.guildid ASC");
if (!result)
sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded 0 guild members. DB table `guild_member` is empty.");
@@ -328,7 +328,39 @@ void GuildMgr::LoadGuilds()
}
}
- // 7. Load all guild bank tabs
+ // 7. Load all news event logs
+ sLog->outInfo(LOG_FILTER_SERVER_LOADING, "Loading Guild News...");
+ {
+ uint32 oldMSTime = getMSTime();
+
+ CharacterDatabase.DirectPExecute("DELETE FROM guild_newslog WHERE LogGuid > %u", sWorld->getIntConfig(CONFIG_GUILD_NEWS_LOG_COUNT));
+
+ // 0 1 2 3 4 5 6
+ QueryResult result = CharacterDatabase.Query("SELECT guildid, LogGuid, EventType, PlayerGuid, Flags, Value, Timestamp FROM guild_newslog ORDER BY TimeStamp DESC, LogGuid DESC");
+
+ if (!result)
+ sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded 0 guild event logs. DB table `guild_newslog` is empty.");
+ else
+ {
+ uint32 count = 0;
+ do
+ {
+ Field* fields = result->Fetch();
+ uint32 guildId = fields[0].GetUInt32();
+
+ if (Guild* guild = GetGuildById(guildId))
+ guild->LoadGuildNewsLogFromDB(fields);
+
+ ++count;
+ }
+ while (result->NextRow());
+
+ sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded %u guild new logs in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
+ }
+ }
+
+
+ // 8. Load all guild bank tabs
sLog->outInfo(LOG_FILTER_SERVER_LOADING, "Loading guild bank tabs...");
{
uint32 oldMSTime = getMSTime();
@@ -362,7 +394,7 @@ void GuildMgr::LoadGuilds()
}
}
- // 8. Fill all guild bank tabs
+ // 9. Fill all guild bank tabs
sLog->outInfo(LOG_FILTER_GUILD, "Filling bank tabs with items...");
{
uint32 oldMSTime = getMSTime();
@@ -398,7 +430,7 @@ void GuildMgr::LoadGuilds()
}
}
- // 9. Load guild achievements
+ // 10. Load guild achievements
{
PreparedQueryResult achievementResult;
PreparedQueryResult criteriaResult;
@@ -414,16 +446,6 @@ void GuildMgr::LoadGuilds()
itr->second->GetAchievementMgr().LoadFromDB(achievementResult, criteriaResult);
}
}
- // 10. Loading Guild news
- sLog->outInfo(LOG_FILTER_GENERAL, "Loading Guild News");
- {
- for (GuildContainer::const_iterator itr = GuildStore.begin(); itr != GuildStore.end(); ++itr)
- {
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_LOAD_GUILD_NEWS);
- stmt->setInt32(0, itr->first);
- itr->second->GetNewsLog().LoadFromDB(CharacterDatabase.Query(stmt));
- }
- }
// 11. Validate loaded guild data
sLog->outInfo(LOG_FILTER_GENERAL, "Validating data of loaded guilds...");