aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/characters/2012_07_18_00_characters_characters_434.sql1
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp38
-rwxr-xr-xsrc/server/game/Entities/Player/Player.h15
-rwxr-xr-xsrc/server/shared/Database/Implementation/CharacterDatabase.cpp5
-rwxr-xr-xsrc/server/shared/Database/Implementation/CharacterDatabase.h2
5 files changed, 25 insertions, 36 deletions
diff --git a/sql/updates/characters/2012_07_18_00_characters_characters_434.sql b/sql/updates/characters/2012_07_18_00_characters_characters_434.sql
new file mode 100644
index 00000000000..159c3d85703
--- /dev/null
+++ b/sql/updates/characters/2012_07_18_00_characters_characters_434.sql
@@ -0,0 +1 @@
+ALTER TABLE `characters` DROP `guildId`;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index b22cbd5e3e2..2d210c981d3 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -694,7 +694,6 @@ Player::Player(WorldSession* session): Unit(true), m_achievementMgr(this), m_rep
duel = NULL;
m_GuildIdInvited = 0;
- m_guildId = 0;
m_ArenaTeamIdInvited = 0;
m_atLoginFlags = AT_LOGIN_NONE;
@@ -967,6 +966,7 @@ bool Player::Create(uint32 guidlow, CharacterCreateInfo* createInfo)
SetByteValue(PLAYER_BYTES_3, 0, createInfo->Gender);
SetByteValue(PLAYER_BYTES_3, 3, 0); // BattlefieldArenaFaction (0 or 1)
+ SetUInt64Value(OBJECT_FIELD_DATA, 0);
SetUInt32Value(PLAYER_GUILDRANK, 0);
SetUInt32Value(PLAYER_GUILD_TIMESTAMP, 0);
@@ -4534,6 +4534,9 @@ void Player::InitVisibleBits()
updateVisualBits.SetCount(PLAYER_END);
updateVisualBits.SetBit(OBJECT_FIELD_GUID);
+ updateVisualBits.SetBit(OBJECT_FIELD_GUID + 1);
+ updateVisualBits.SetBit(OBJECT_FIELD_DATA);
+ updateVisualBits.SetBit(OBJECT_FIELD_DATA + 1);
updateVisualBits.SetBit(OBJECT_FIELD_TYPE);
updateVisualBits.SetBit(OBJECT_FIELD_ENTRY);
updateVisualBits.SetBit(OBJECT_FIELD_SCALE_X);
@@ -5547,13 +5550,13 @@ uint32 Player::DurabilityRepair(uint16 pos, bool cost, float discountMod, bool g
if (guildBank)
{
- if (m_guildId == 0)
+ if (GetGuildId() == 0)
{
sLog->outStaticDebug("You are not member of a guild");
return TotalCost;
}
- Guild* guild = sGuildMgr->GetGuildById(m_guildId);
+ Guild* guild = sGuildMgr->GetGuildById(GetGuildId());
if (!guild)
return TotalCost;
@@ -5633,7 +5636,7 @@ bool Player::CanJoinConstantChannelInZone(ChatChannelsEntry const* channel, Area
if ((channel->flags & CHANNEL_DBC_FLAG_CITY_ONLY) && (!(zone->flags & AREA_FLAG_SLAVE_CAPITAL)))
return false;
- if ((channel->flags & CHANNEL_DBC_FLAG_GUILD_REQ) && m_guildId)
+ if ((channel->flags & CHANNEL_DBC_FLAG_GUILD_REQ) && GetGuildId())
return false;
return true;
@@ -7544,10 +7547,10 @@ uint32 Player::_GetCurrencyWeekCap(const CurrencyTypesEntry* currency) const
uint32 Player::GetGuildIdFromDB(uint64 guid)
{
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_GET_GUILD_ID);
- stmt->setUInt64(0, guid);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER);
+ stmt->setUInt32(0, GUID_LOPART(guid));
if (PreparedQueryResult result = CharacterDatabase.Query(stmt))
- return (*result)[0].GetUInt32();
+ return result->Fetch()[0].GetUInt32();
return 0;
}
@@ -7556,15 +7559,10 @@ uint8 Player::GetRankFromDB(uint64 guid)
{
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER);
stmt->setUInt32(0, GUID_LOPART(guid));
- PreparedQueryResult result = CharacterDatabase.Query(stmt);
+ if (PreparedQueryResult result = CharacterDatabase.Query(stmt))
+ return result->Fetch()[1].GetUInt8();
- if (result)
- {
- uint32 v = result->Fetch()[1].GetUInt8();
- return v;
- }
- else
- return 0;
+ return 0;
}
uint32 Player::GetArenaTeamIdFromDB(uint64 guid, uint8 type)
@@ -16792,8 +16790,8 @@ bool Player::LoadFromDB(uint32 guid, SQLQueryHolder *holder)
//"conquestPoints, totalHonorPoints, totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, "
// 48 49 50 51 52 53 54 55 56 57 58
//"health, power1, power2, power3, power4, power5, instance_id, speccount, activespec, exploredZones, equipmentCache, "
- // 59 60 61 62
- //"knownTitles, actionBars, grantableLevels, guildId FROM characters WHERE guid = '%u'", guid);
+ // 59 60 61
+ //"knownTitles, actionBars, grantableLevels FROM characters WHERE guid = '%u'", guid);
PreparedQueryResult result = holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOADFROM);
if (!result)
@@ -17434,8 +17432,6 @@ bool Player::LoadFromDB(uint32 guid, SQLQueryHolder *holder)
if (m_grantableLevels > 0)
SetByteValue(PLAYER_FIELD_BYTES, 1, 0x01);
- m_guildId = fields[62].GetUInt32();
-
_LoadDeclinedNames(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOADDECLINEDNAMES));
m_achievementMgr.CheckAllAchievementCriteria(this);
@@ -24354,7 +24350,7 @@ void Player::UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 mis
if (sAchievementMgr->IsGroupCriteriaType(type))
return;
- if (Guild* guild = sGuildMgr->GetGuildById(m_guildId))
+ if (Guild* guild = sGuildMgr->GetGuildById(GetGuildId()))
guild->GetAchievementMgr().UpdateAchievementCriteria(type, miscValue1, miscValue2, unit, this);
}
@@ -25418,7 +25414,7 @@ uint32 Player::GetReputation(uint32 factionentry)
std::string Player::GetGuildName()
{
- return sGuildMgr->GetGuildById(m_guildId)->GetName();
+ return sGuildMgr->GetGuildById(GetGuildId())->GetName();
}
void Player::SendDuelCountdown(uint32 counter)
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 858bd7c3d05..050e655fdca 100755
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1874,18 +1874,17 @@ class Player : public Unit, public GridObject<Player>
void SetInGuild(uint32 GuildId)
{
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SET_GUILD_ID);
- stmt->setUInt32(0, GuildId);
- stmt->setUInt64(1, GetGUID());
- CharacterDatabase.Execute(stmt);
- m_guildId = GuildId;
+ if (GuildId)
+ SetUInt64Value(OBJECT_FIELD_DATA, MAKE_NEW_GUID(GuildId, 0, HIGHGUID_GUILD));
+ else
+ SetUInt64Value(OBJECT_FIELD_DATA, 0);
}
- uint32 GetGuildId() const { return m_guildId; }
- static uint32 GetGuildIdFromDB(uint64 guid);
void SetRank(uint8 rankId) { SetUInt32Value(PLAYER_GUILDRANK, rankId); }
uint8 GetRank() { return uint8(GetUInt32Value(PLAYER_GUILDRANK)); }
void SetGuildIdInvited(uint32 GuildId) { m_GuildIdInvited = GuildId; }
+ uint32 GetGuildId() const { return GetUInt32Value(OBJECT_FIELD_DATA); /* return only lower part */ }
+ static uint32 GetGuildIdFromDB(uint64 guid);
static uint8 GetRankFromDB(uint64 guid);
int GetGuildIdInvited() { return m_GuildIdInvited; }
static void RemovePetitionsAndSigns(uint64 guid, uint32 type);
@@ -2800,8 +2799,6 @@ class Player : public Unit, public GridObject<Player>
uint32 m_restTime;
- uint32 m_guildId;
-
uint32 m_WeaponProficiency;
uint32 m_ArmorProficiency;
bool m_canParry;
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
index 880794d14d5..2f5d82b2fc3 100755
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -66,7 +66,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
"position_x, position_y, position_z, map, orientation, taximask, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, "
"resettalents_time, talentTree, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, online, death_expire_time, taxi_path, instance_mode_mask, "
"conquestPoints, totalHonorPoints, totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, "
- "health, power1, power2, power3, power4, power5, instance_id, speccount, activespec, exploredZones, equipmentCache, knownTitles, actionBars, grantableLevels, guildId FROM characters WHERE guid = ?", CONNECTION_ASYNC)
+ "health, power1, power2, power3, power4, power5, instance_id, speccount, activespec, exploredZones, equipmentCache, knownTitles, actionBars, grantableLevels FROM characters WHERE guid = ?", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_GROUP_MEMBER, "SELECT guid FROM group_member WHERE memberGuid = ?", CONNECTION_BOTH)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_INSTANCE, "SELECT id, permanent, map, difficulty, resettime FROM character_instance LEFT JOIN instance ON instance = id WHERE guid = ?", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_AURAS, "SELECT caster_guid, spell, effect_mask, recalculate_mask, stackcount, amount0, amount1, amount2, "
@@ -154,9 +154,6 @@ void CharacterDatabaseConnection::DoPrepareStatements()
// 0: uint32, 1: string, 2: uint32, 3: string, 4: string, 5: uint64, 6-10: uint32, 11: uint64
PREPARE_STATEMENT(CHAR_INS_GUILD, "INSERT INTO guild (guildid, name, leaderguid, info, motd, createdate, EmblemStyle, EmblemColor, BorderStyle, BorderColor, BackgroundColor, BankMoney) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_DEL_GUILD, "DELETE FROM guild WHERE guildid = ?", CONNECTION_ASYNC) // 0: uint32
- // 0: uint32
- PREPARE_STATEMENT(CHAR_SET_GUILD_ID, "UPDATE characters SET guildId = ? WHERE guid = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_GET_GUILD_ID, "SELECT guildId FROM characters WHERE guid = ?", CONNECTION_SYNCH)
// 0: uint32, 1: uint32, 2: uint8, 4: string, 5: string
PREPARE_STATEMENT(CHAR_INS_GUILD_MEMBER, "INSERT INTO guild_member (guildid, guid, rank, pnote, offnote) VALUES (?, ?, ?, ?, ?)", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_DEL_GUILD_MEMBER, "DELETE FROM guild_member WHERE guid = ?", CONNECTION_ASYNC) // 0: uint32
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h
index adaa4acf7c5..c0ab078dfe3 100755
--- a/src/server/shared/Database/Implementation/CharacterDatabase.h
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.h
@@ -161,8 +161,6 @@ enum CharacterDatabaseStatements
CHAR_INS_GUILD,
CHAR_DEL_GUILD,
- CHAR_SET_GUILD_ID,
- CHAR_GET_GUILD_ID,
CHAR_INS_GUILD_MEMBER,
CHAR_DEL_GUILD_MEMBER,
CHAR_DEL_GUILD_MEMBERS,