diff options
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, |