aboutsummaryrefslogtreecommitdiff
path: root/src/game/ObjectMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/ObjectMgr.cpp')
-rw-r--r--src/game/ObjectMgr.cpp78
1 files changed, 59 insertions, 19 deletions
diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
index e19c5e850e4..f051c2c6cc3 100644
--- a/src/game/ObjectMgr.cpp
+++ b/src/game/ObjectMgr.cpp
@@ -3223,10 +3223,14 @@ void ObjectMgr::BuildPlayerLevelInfo(uint8 race, uint8 _class, uint8 level, Play
void ObjectMgr::LoadGuilds()
{
- Guild *newguild;
+ Guild *newGuild;
uint32 count = 0;
-
- QueryResult_AutoPtr result = CharacterDatabase.Query( "SELECT guildid FROM guild" );
+
+ // 0 1 2 3 4 5 6
+ QueryResult_AutoPtr result = CharacterDatabase.Query("SELECT guild.guildid,guild.name,leaderguid,EmblemStyle,EmblemColor,BorderStyle,BorderColor,"
+ // 7 8 9 10 11 12
+ "BackgroundColor,info,motd,createdate,BankMoney,COUNT(guild_bank_tab.guildid) "
+ "FROM guild LEFT JOIN guild_bank_tab ON guild.guildid = guild_bank_tab.guildid GROUP BY guild.guildid ORDER BY guildid ASC");
if (!result)
{
@@ -3240,26 +3244,50 @@ void ObjectMgr::LoadGuilds()
return;
}
+ // load guild ranks
+ // 0 1 2 3 4
+ QueryResult_AutoPtr guildRanksResult = CharacterDatabase.Query("SELECT guildid,rid,rname,rights,BankMoneyPerDay FROM guild_rank ORDER BY guildid ASC, rid ASC");
+
+ // load guild members
+ // 0 1 2 3 4 5 6
+ QueryResult_AutoPtr guildMembersResult = CharacterDatabase.Query("SELECT guildid,guild_member.guid,rank,pnote,offnote,BankResetTimeMoney,BankRemMoney,"
+ // 7 8 9 10 11 12
+ "BankResetTimeTab0,BankRemSlotsTab0,BankResetTimeTab1,BankRemSlotsTab1,BankResetTimeTab2,BankRemSlotsTab2,"
+ // 13 14 15 16 17 18
+ "BankResetTimeTab3,BankRemSlotsTab3,BankResetTimeTab4,BankRemSlotsTab4,BankResetTimeTab5,BankRemSlotsTab5,"
+ // 19 20 21 22 23
+ "characters.name, characters.level, characters.class, characters.zone, characters.logout_time "
+ "FROM guild_member LEFT JOIN characters ON characters.guid = guild_member.guid ORDER BY guildid ASC");
+
+ // load guild bank tab rights
+ // 0 1 2 3 4
+ QueryResult_AutoPtr guildBankTabRightsResult = CharacterDatabase.Query("SELECT guildid,TabId,rid,gbright,SlotPerDay FROM guild_bank_right ORDER BY guildid ASC, TabId ASC");
+
barGoLink bar(result->GetRowCount());
do
{
- Field *fields = result->Fetch();
+ //Field *fields = result->Fetch();
bar.step();
++count;
- newguild = new Guild;
- if (!newguild->LoadGuildFromDB(fields[0].GetUInt32()))
- {
- newguild->Disband();
- delete newguild;
+ newGuild = new Guild;
+ if (!newGuild->LoadGuildFromDB(result) ||
+ !newGuild->LoadRanksFromDB(guildRanksResult) ||
+ !newGuild->LoadMembersFromDB(guildMembersResult) ||
+ !newGuild->LoadBankRightsFromDB(guildBankTabRightsResult) ||
+ !newGuild->CheckGuildStructure()
+ )
+ {
+ newGuild->Disband();
+ delete newGuild;
continue;
}
- newguild->LoadGuildEventLogFromDB();
- newguild->LoadGuildBankEventLogFromDB();
- newguild->LoadGuildBankFromDB();
- AddGuild(newguild);
+ newGuild->LoadGuildEventLogFromDB();
+ newGuild->LoadGuildBankEventLogFromDB();
+ newGuild->LoadGuildBankFromDB();
+ AddGuild(newGuild);
} while (result->NextRow());
@@ -3276,7 +3304,11 @@ void ObjectMgr::LoadArenaTeams()
{
uint32 count = 0;
- QueryResult_AutoPtr result = CharacterDatabase.Query( "SELECT arenateamid FROM arena_team" );
+ // 0 1 2 3 4 5
+ QueryResult_AutoPtr result = CharacterDatabase.Query( "SELECT arena_team.arenateamid,name,captainguid,type,BackgroundColor,EmblemStyle,"
+ // 6 7 8 9 10 11 12 13 14
+ "EmblemColor,BorderStyle,BorderColor, rating,games,wins,played,wins2,rank "
+ "FROM arena_team LEFT JOIN arena_team_stats ON arena_team.arenateamid = arena_team_stats.arenateamid ORDER BY arena_team.arenateamid ASC" );
if( !result )
{
@@ -3289,7 +3321,13 @@ void ObjectMgr::LoadArenaTeams()
sLog.outString( ">> Loaded %u arenateam definitions", count );
return;
}
-
+
+ // load arena_team members
+ QueryResult_AutoPtr arenaTeamMembersResult = CharacterDatabase.Query(
+ // 0 1 2 3 4 5 6 7 8
+ "SELECT arenateamid,member.guid,played_week,wons_week,played_season,wons_season,personal_rating,name,class "
+ "FROM arena_team_member member LEFT JOIN characters chars on member.guid = chars.guid ORDER BY member.arenateamid ASC");
+
barGoLink bar( result->GetRowCount() );
do
@@ -3299,13 +3337,15 @@ void ObjectMgr::LoadArenaTeams()
bar.step();
++count;
- ArenaTeam *newarenateam = new ArenaTeam;
- if(!newarenateam->LoadArenaTeamFromDB(fields[0].GetUInt32()))
+ ArenaTeam *newArenaTeam = new ArenaTeam;
+ if (!newArenaTeam->LoadArenaTeamFromDB(result) ||
+ !newArenaTeam->LoadMembersFromDB(arenaTeamMembersResult))
{
- delete newarenateam;
+ newArenaTeam->Disband(NULL);
+ delete newArenaTeam;
continue;
}
- AddArenaTeam(newarenateam);
+ AddArenaTeam(newArenaTeam);
}while( result->NextRow() );
sLog.outString();