Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- From 8b4613f987dcbe3e6299911b5c6035190567df14 Mon Sep 17 00:00:00 2001
- From: SignFinder <Pandemonium709@mail.ru>
- Date: Tue, 24 Jun 2014 07:19:16 -0400
- Subject: [PATCH] GuildLevelSystem
- ---
- .../GuildLevelSystem/auth_guild_level_system.sql | 7 +
- .../characters_guild_level_system.sql | 55 ++++++++
- .../GuildLevelSystem/world_guild_level_system.sql | 6 +
- src/server/game/Accounts/RBAC.h | 4 +
- src/server/game/Conditions/ConditionMgr.cpp | 22 +++
- src/server/game/Conditions/ConditionMgr.h | 3 +-
- src/server/game/Entities/Player/Player.cpp | 41 ++++++
- src/server/game/Entities/Unit/Unit.cpp | 22 ++-
- src/server/game/Guilds/Guild.cpp | 144 ++++++++++++++++++++
- src/server/game/Guilds/Guild.h | 37 +++++
- src/server/game/Handlers/LootHandler.cpp | 11 ++
- src/server/game/Miscellaneous/Formulas.h | 11 ++
- src/server/game/Miscellaneous/Language.h | 6 +-
- src/server/game/Reputation/ReputationMgr.cpp | 10 ++
- src/server/game/World/World.cpp | 87 ++++++++++++
- src/server/game/World/World.h | 20 +++
- src/server/scripts/Commands/cs_guild.cpp | 133 +++++++++++++++++-
- .../Database/Implementation/CharacterDatabase.cpp | 10 ++
- .../Database/Implementation/CharacterDatabase.h | 7 +
- 19 files changed, 626 insertions(+), 10 deletions(-)
- create mode 100644 sql/TrinityCore-Patches/GuildLevelSystem/auth_guild_level_system.sql
- create mode 100644 sql/TrinityCore-Patches/GuildLevelSystem/characters_guild_level_system.sql
- create mode 100644 sql/TrinityCore-Patches/GuildLevelSystem/world_guild_level_system.sql
- diff --git a/sql/TrinityCore-Patches/GuildLevelSystem/auth_guild_level_system.sql b/sql/TrinityCore-Patches/GuildLevelSystem/auth_guild_level_system.sql
- new file mode 100644
- index 0000000..598b496
- --- /dev/null
- +++ b/sql/TrinityCore-Patches/GuildLevelSystem/auth_guild_level_system.sql
- @@ -0,0 +1,7 @@
- +INSERT INTO `rbac_permissions` VALUES ('1000', 'Command: guild info');
- +INSERT INTO `rbac_permissions` VALUES ('1001', 'Command: guild setlevel');
- +INSERT INTO `rbac_permissions` VALUES ('1002', 'Command: guild givexp');
- +
- +INSERT INTO `rbac_linked_permissions` VALUES ('195', '1000');
- +INSERT INTO `rbac_linked_permissions` VALUES ('192', '1001');
- +INSERT INTO `rbac_linked_permissions` VALUES ('192', '1002');
- diff --git a/sql/TrinityCore-Patches/GuildLevelSystem/characters_guild_level_system.sql b/sql/TrinityCore-Patches/GuildLevelSystem/characters_guild_level_system.sql
- new file mode 100644
- index 0000000..ae05ff6
- --- /dev/null
- +++ b/sql/TrinityCore-Patches/GuildLevelSystem/characters_guild_level_system.sql
- @@ -0,0 +1,55 @@
- +ALTER TABLE `guild` ADD `xp` INT(10) DEFAULT 0 NOT NULL AFTER `BankMoney`;
- +ALTER TABLE `guild` ADD `level` TINYINT(3) DEFAULT 0 NOT NULL AFTER `xp`;
- +
- +SET FOREIGN_KEY_CHECKS=0;
- +
- +-- ----------------------------
- +-- Table structure for `guild_bonus_config`
- +-- ----------------------------
- +DROP TABLE IF EXISTS `guild_bonus_config`;
- +CREATE TABLE `guild_bonus_config` (
- + `BonusId` smallint(5) NOT NULL DEFAULT '0',
- + `RequiredGuildLevel` tinyint(3) NOT NULL DEFAULT '0',
- + `comment` longtext CHARACTER SET utf8
- +) ENGINE=InnoDB DEFAULT CHARSET=latin1;
- +
- +-- ----------------------------
- +-- Records of guild_bonus_config
- +-- ----------------------------
- +INSERT INTO `guild_bonus_config` VALUES ('1', '1', 'Goldbonus | 5% Bonus gold for the guild bank');
- +INSERT INTO `guild_bonus_config` VALUES ('2', '1', 'XP-Bonus | +5% XP at the end of quest or kill monsters');
- +INSERT INTO `guild_bonus_config` VALUES ('3', '2', 'Faster Spirit | Double movement speed as spirit');
- +INSERT INTO `guild_bonus_config` VALUES ('4', '2', 'Cheap repair | -25% Repair costs');
- +INSERT INTO `guild_bonus_config` VALUES ('5', '3', 'Goldbonus-2 | 10% Bonus gold for the guild bank');
- +INSERT INTO `guild_bonus_config` VALUES ('6', '4', 'Riding Pace | +5% Riding pace (Except Battlegrounds and Arenas)');
- +INSERT INTO `guild_bonus_config` VALUES ('7', '4', 'Good Relationships | +5% Reputation gain');
- +INSERT INTO `guild_bonus_config` VALUES ('8', '5', 'XP-Bonus-2 | +10% XP at the end of quest or kill monsters');
- +INSERT INTO `guild_bonus_config` VALUES ('9', '6', 'Cheap Repair-2 | -50% Repair costs');
- +INSERT INTO `guild_bonus_config` VALUES ('10', '6', 'Riding Pace-2 | +10% Riding pace (Except Battlegrounds and Arenas)');
- +INSERT INTO `guild_bonus_config` VALUES ('11', '7', 'Good Relationships-2 | +10% Reputation gain');
- +INSERT INTO `guild_bonus_config` VALUES ('12', '5', 'Bonus Honor | +5% Honor');
- +INSERT INTO `guild_bonus_config` VALUES ('13', '8', 'Bonus Honor-2 | +10% Honor');
- +
- +SET FOREIGN_KEY_CHECKS=0;
- +
- +-- ----------------------------
- +-- Table structure for `guild_xp_for_next_level`
- +-- ----------------------------
- +DROP TABLE IF EXISTS `guild_xp_for_next_level`;
- +CREATE TABLE `guild_xp_for_next_level` (
- + `level` tinyint(3) NOT NULL DEFAULT '0',
- + `xp_for_next_level` int(10) NOT NULL DEFAULT '0',
- + PRIMARY KEY (`level`)
- +) ENGINE=InnoDB DEFAULT CHARSET=latin1;
- +
- +-- ----------------------------
- +-- Records of guild_xp_for_next_level
- +-- ----------------------------
- +INSERT INTO `guild_xp_for_next_level` VALUES ('0', '8000000');
- +INSERT INTO `guild_xp_for_next_level` VALUES ('1', '12000000');
- +INSERT INTO `guild_xp_for_next_level` VALUES ('2', '18000000');
- +INSERT INTO `guild_xp_for_next_level` VALUES ('3', '27000000');
- +INSERT INTO `guild_xp_for_next_level` VALUES ('4', '40500000');
- +INSERT INTO `guild_xp_for_next_level` VALUES ('5', '60750000');
- +INSERT INTO `guild_xp_for_next_level` VALUES ('6', '91125000');
- +INSERT INTO `guild_xp_for_next_level` VALUES ('7', '136687500');
- \ No newline at end of file
- diff --git a/sql/TrinityCore-Patches/GuildLevelSystem/world_guild_level_system.sql b/sql/TrinityCore-Patches/GuildLevelSystem/world_guild_level_system.sql
- new file mode 100644
- index 0000000..2c72414
- --- /dev/null
- +++ b/sql/TrinityCore-Patches/GuildLevelSystem/world_guild_level_system.sql
- @@ -0,0 +1,6 @@
- +INSERT INTO `trinity_string` VALUES ('13000', 'Guild Level: %u.', null, null, null, null, null, null, null, null);
- +INSERT INTO `trinity_string` VALUES ('13001', 'Guild Experience: %u/%u.', null, null, null, null, null, null, null, null);
- +
- +INSERT INTO `command` VALUES ('guild info', '1000', 'Syntax: .guild info');
- +INSERT INTO `command` VALUES ('guild setlevel', '1001', 'Syntax: .guild setlevel $GuildName $Level');
- +INSERT INTO `command` VALUES ('guild givexp', '1002', 'Syntax: .guild givexp $GuildName $Xp');
- \ No newline at end of file
- diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h
- index 9ce1f9b..668d717 100644
- --- a/src/server/game/Accounts/RBAC.h
- +++ b/src/server/game/Accounts/RBAC.h
- @@ -683,6 +683,10 @@ enum RBACPermissions
- RBAC_PERM_COMMAND_MAILBOX = 777,
- // custom permissions 1000+
- +
- + RBAC_PERM_COMMAND_GUILD_INFO = 1000,
- + RBAC_PERM_COMMAND_GUILD_SET_LEVEL = 1001,
- + RBAC_PERM_COMMAND_GUILD_GIVE_XP = 1002,
- RBAC_PERM_MAX
- };
- diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
- index bb1a722..13800b6 100644
- --- a/src/server/game/Conditions/ConditionMgr.cpp
- +++ b/src/server/game/Conditions/ConditionMgr.cpp
- @@ -28,6 +28,7 @@
- #include "SpellAuras.h"
- #include "SpellMgr.h"
- #include "Spell.h"
- +#include "Guild.h"
- // Checks if object meets the condition
- // Can have CONDITION_SOURCE_TYPE_NONE && !mReferenceId if called from a special event (ie: eventAI)
- @@ -323,6 +324,13 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo)
- condMeets = creature->GetCreatureTemplate()->type == ConditionValue1;
- break;
- }
- + case CONDITION_GUILD_LEVEL:
- + {
- + if (Player* player = object->ToPlayer())
- + if (Guild* guild = player->GetGuild())
- + condMeets = CompareValues(static_cast<ComparisionType>(ConditionValue2), static_cast<uint32>(guild->GetLevel()), ConditionValue1);
- + break;
- + }
- default:
- condMeets = false;
- break;
- @@ -487,6 +495,9 @@ uint32 Condition::GetSearcherTypeMaskForCondition()
- case CONDITION_CREATURE_TYPE:
- mask |= GRID_MAP_TYPE_MASK_CREATURE;
- break;
- + case CONDITION_GUILD_LEVEL:
- + mask |= GRID_MAP_TYPE_MASK_PLAYER;
- + break;
- default:
- ASSERT(false && "Condition::GetSearcherTypeMaskForCondition - missing condition handling!");
- break;
- @@ -2009,6 +2020,17 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond)
- }
- break;
- }
- + case CONDITION_GUILD_LEVEL:
- + {
- + if (cond->ConditionValue2 >= COMP_TYPE_MAX)
- + {
- + TC_LOG_ERROR("sql.sql", "Guildlevel condition has invalid option (%u), skipped", cond->ConditionValue2);
- + return false;
- + }
- + if (cond->ConditionValue3)
- + TC_LOG_ERROR("sql.sql", "Guildlevel condition has useless data in value3 (%u)!", cond->ConditionValue3);
- + break;
- + }
- default:
- break;
- }
- diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h
- index 876b922..993f892 100644
- --- a/src/server/game/Conditions/ConditionMgr.h
- +++ b/src/server/game/Conditions/ConditionMgr.h
- @@ -72,7 +72,8 @@ enum ConditionTypes
- CONDITION_ALIVE = 36, // 0 0 0 true if unit is alive
- CONDITION_HP_VAL = 37, // hpVal ComparisonType 0 true if unit's hp matches given value
- CONDITION_HP_PCT = 38, // hpPct ComparisonType 0 true if unit's hp matches given pct
- - CONDITION_MAX = 39 // MAX
- + CONDITION_GUILD_LEVEL = 39, // Gildenlevel Level Vergleichstyp
- + CONDITION_MAX = 40 // MAX
- };
- /*! Documentation on implementing a new ConditionSourceType:
- diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
- index 9733c0f..a9f450d 100644
- --- a/src/server/game/Entities/Player/Player.cpp
- +++ b/src/server/game/Entities/Player/Player.cpp
- @@ -5107,6 +5107,12 @@ void Player::BuildPlayerRepop()
- // convert player body to ghost
- SetHealth(1);
- + //Guild-Level-System (Bonus: Faster spirit)
- + if (!GetMap()->IsBattlegroundOrArena())
- + if (Guild* guild = GetGuild())
- + if (guild->HasLevelForBonus(GUILD_BONUS_SCHNELLER_GEIST))
- + SetSpeed(MOVE_RUN, 2.0f, true);
- +
- SetMovement(MOVE_WATER_WALK);
- if (!GetSession()->isLogingOut())
- SetMovement(MOVE_UNROOT);
- @@ -5154,6 +5160,9 @@ void Player::ResurrectPlayer(float restore_percent, bool applySickness)
- SetMovement(MOVE_LAND_WALK);
- SetMovement(MOVE_UNROOT);
- + //Guild-Level-System (Bonus: Faster spirit)
- + SetSpeed(MOVE_RUN, 1.0f, true);
- +
- m_deathTimer = 0;
- // set health/powers (0- will be set in caller)
- @@ -5479,6 +5488,15 @@ uint32 Player::DurabilityRepair(uint16 pos, bool cost, float discountMod, bool g
- costs = uint32(costs * discountMod * sWorld->getRate(RATE_REPAIRCOST));
- + //Guild-Level-System (Bonus: Guenstige Reperatur)
- + if (Guild* guild = GetGuild())
- + {
- + if (guild->HasLevelForBonus(GUILD_BONUS_REPERATUR_1))
- + costs -= uint32(costs*0.25f);
- + if (guild->HasLevelForBonus(GUILD_BONUS_REPERATUR_2))
- + costs -= uint32(costs*0.5f);
- + }
- +
- if (costs == 0) //fix for ITEM_QUALITY_ARTIFACT
- costs = 1;
- @@ -7249,6 +7267,16 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto
- }
- honor_f *= sWorld->getRate(RATE_HONOR);
- +
- + //Guild-Level-System (Bonus: Ehre)
- + if (Guild* guild = GetGuild())
- + {
- + if (guild->HasLevelForBonus(GUILD_BONUS_EHRE_1))
- + honor_f *= 0.05f;
- + if (guild->HasLevelForBonus(GUILD_BONUS_EHRE_2))
- + honor_f *= 0.1f;
- + }
- +
- // Back to int now
- honor = int32(honor_f);
- // honor - for show honor points in log
- @@ -15333,6 +15361,19 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
- for (Unit::AuraEffectList::const_iterator i = ModXPPctAuras.begin(); i != ModXPPctAuras.end(); ++i)
- AddPct(XP, (*i)->GetAmount());
- + //Guild-Level-System (Bonus: QuestXP)
- + if (Guild* guild = GetGuild())
- + {
- + //QuestXP for the Guild
- + guild->GiveXp(50000);
- +
- + //GuildXP-Bonus
- + if (guild->HasLevelForBonus(GUILD_BONUS_XP_1))
- + XP += uint32(XP*0.05f);
- + if (guild->HasLevelForBonus(GUILD_BONUS_XP_2))
- + XP += uint32(XP*0.1f);
- + }
- +
- int32 moneyRew = 0;
- if (getLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
- GiveXP(XP, NULL);
- diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
- index 492197d..89a955e 100644
- --- a/src/server/game/Entities/Unit/Unit.cpp
- +++ b/src/server/game/Entities/Unit/Unit.cpp
- @@ -60,6 +60,7 @@
- #include "World.h"
- #include "WorldPacket.h"
- #include "WorldSession.h"
- +#include "Guild.h"
- #include <math.h>
- @@ -12195,6 +12196,23 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced)
- float stack_bonus = 1.0f;
- float non_stack_bonus = 1.0f;
- + //Guild-Level-System (Bonus: Reittempo)
- + uint8 bonusSpeed = 0;
- + if (GetTypeId() == TYPEID_PLAYER)
- + {
- + Player* player = ToPlayer();
- + if (Guild* guild = player->GetGuild())
- + {
- + if (!player->GetMap()->IsBattlegroundOrArena())
- + {
- + if (guild->HasLevelForBonus(GUILD_BONUS_REITTEMPO_1))
- + bonusSpeed = 5;
- + if (guild->HasLevelForBonus(GUILD_BONUS_REITTEMPO_2))
- + bonusSpeed = 10;
- + }
- + }
- + }
- +
- switch (mtype)
- {
- // Only apply debuffs
- @@ -12208,7 +12226,7 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced)
- {
- if (IsMounted()) // Use on mount auras
- {
- - main_speed_mod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_INCREASE_MOUNTED_SPEED);
- + main_speed_mod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_INCREASE_MOUNTED_SPEED) + bonusSpeed;
- stack_bonus = GetTotalAuraMultiplier(SPELL_AURA_MOD_MOUNTED_SPEED_ALWAYS);
- non_stack_bonus += GetMaxPositiveAuraModifier(SPELL_AURA_MOD_MOUNTED_SPEED_NOT_STACK) / 100.0f;
- }
- @@ -12242,7 +12260,7 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced)
- }
- else if (IsMounted())
- {
- - main_speed_mod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED);
- + main_speed_mod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) + bonusSpeed;
- stack_bonus = GetTotalAuraMultiplier(SPELL_AURA_MOD_MOUNTED_FLIGHT_SPEED_ALWAYS);
- }
- else // Use not mount (shapeshift for example) auras (should stack)
- diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
- index db0a196..cdb4ecf 100644
- --- a/src/server/game/Guilds/Guild.cpp
- +++ b/src/server/game/Guilds/Guild.cpp
- @@ -1206,6 +1206,9 @@ bool Guild::Create(Player* pLeader, std::string const& name)
- if (ret)
- sScriptMgr->OnGuildCreate(this, pLeader, name);
- + //Guild-Level-System
- + LoadLevelInfo();
- +
- return ret;
- }
- @@ -1957,6 +1960,10 @@ bool Guild::LoadFromDB(Field* fields)
- m_bankTabs[i] = new BankTab(m_id, i);
- _CreateLogHolders();
- +
- + //Guild-Level-System
- + LoadLevelInfo();
- +
- return true;
- }
- @@ -2924,3 +2931,140 @@ void Guild::ResetTimes()
- _BroadcastEvent(GE_BANK_TAB_AND_MONEY_UPDATED, 0);
- }
- +
- +//Guild-Level-System [Start]
- +void Guild::LoadLevelInfo()
- +{
- + PreparedStatement* stmt;
- + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_LEVEL_INFO);
- + stmt->setUInt32(0, m_id);
- + PreparedQueryResult result = CharacterDatabase.Query(stmt);
- +
- + if (result)
- + {
- + m_current_guildXp = (*result)[0].GetUInt32();
- + m_guild_level = (*result)[1].GetUInt8();
- + }
- + else
- + {
- + m_current_guildXp = 0;
- + m_guild_level = 0;
- + }
- +
- + if (m_guild_level < GUILD_MAX_LEVEL)
- + {
- + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_XP_FOR_NEXT_LEVEL);
- + stmt->setUInt32(0, m_guild_level);
- + PreparedQueryResult result = CharacterDatabase.Query(stmt);
- +
- + if (result)
- + m_xp_for_next_level = (*result)[0].GetUInt32();
- + else
- + m_xp_for_next_level = 0;
- + }
- +}
- +
- +bool Guild::HasLevelForBonus(uint8 guildBonus)
- +{
- + switch (guildBonus)
- + {
- + case GUILD_BONUS_GOLD_1:
- + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_GOLD_1);
- + break;
- + case GUILD_BONUS_XP_1:
- + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_XP_1);
- + break;
- + case GUILD_BONUS_SCHNELLER_GEIST:
- + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_SCHNELLER_GEIST);
- + break;
- + case GUILD_BONUS_REPERATUR_1:
- + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_REPERATUR_1);
- + break;
- + case GUILD_BONUS_GOLD_2:
- + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_GOLD_2);
- + break;
- + case GUILD_BONUS_REITTEMPO_1:
- + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_REITTEMPO_1);
- + break;
- + case GUILD_BONUS_RUF_1:
- + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_RUF_1);
- + break;
- + case GUILD_BONUS_XP_2:
- + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_XP_2);
- + break;
- + case GUILD_BONUS_REPERATUR_2:
- + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_REPERATUR_2);
- + break;
- + case GUILD_BONUS_REITTEMPO_2:
- + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_REITTEMPO_2);
- + break;
- + case GUILD_BONUS_RUF_2:
- + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_RUF_2);
- + break;
- + case GUILD_BONUS_EHRE_1:
- + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_EHRE_1);
- + break;
- + case GUILD_BONUS_EHRE_2:
- + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_EHRE_2);
- + break;
- + default:
- + return false;
- + break;
- + }
- +}
- +
- +void Guild::GiveXp(uint32 value)
- +{
- + if (m_guild_level > GUILD_MAX_LEVEL)
- + return;
- +
- + if ((m_current_guildXp + value) >= m_xp_for_next_level)
- + {
- + m_current_guildXp = ((m_current_guildXp + value) - m_xp_for_next_level);
- + SetLevel(m_guild_level + 1, false);
- + }
- + else
- + m_current_guildXp += value;
- +
- + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_XP);
- + stmt->setUInt32(0, value);
- + stmt->setUInt32(1, m_id);
- + CharacterDatabase.Execute(stmt);
- +}
- +
- +void Guild::SetLevel(uint8 level, bool byCommand)
- +{
- + if (level > GUILD_MAX_LEVEL)
- + return;
- +
- + m_guild_level = level;
- +
- + if (byCommand)
- + {
- + m_current_guildXp = 0;
- +
- + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_XP);
- + stmt->setUInt8(0, m_current_guildXp);
- + stmt->setUInt32(1, m_id);
- + CharacterDatabase.Execute(stmt);
- + }
- +
- + char worldMsg[250];
- + sprintf(worldMsg, "Die Gilde %s hat das Gildenlevel %d erreicht.", m_name.c_str(), level);
- + sWorld->SendWorldText(SERVER_MSG_STRING, worldMsg);
- +
- + //Save to DB
- + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_LEVEL);
- + stmt->setUInt8(0, level);
- + stmt->setUInt32(1, m_id);
- + CharacterDatabase.Execute(stmt);
- +
- + //reqXp fuers naechste Level laden
- + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_XP_FOR_NEXT_LEVEL);
- + stmt->setUInt32(0, level);
- + PreparedQueryResult result = CharacterDatabase.Query(stmt);
- +
- + if (result)
- + m_xp_for_next_level = (*result)[0].GetUInt32();
- +}
- +//Guild-Level-System [End]
- diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h
- index ea0b2e4..ef71bb6 100644
- --- a/src/server/game/Guilds/Guild.h
- +++ b/src/server/game/Guilds/Guild.h
- @@ -222,6 +222,29 @@ enum GuildMemberFlags
- GUILDMEMBER_STATUS_MOBILE = 0x0008, // remote chat from mobile app
- };
- +//Guild-Level-System [Start]
- +enum GuildBonus
- +{
- + GUILD_BONUS_GOLD_1 = 1,
- + GUILD_BONUS_XP_1 = 2,
- + GUILD_BONUS_SCHNELLER_GEIST = 3,
- + GUILD_BONUS_REPERATUR_1 = 4,
- + GUILD_BONUS_GOLD_2 = 5,
- + GUILD_BONUS_REITTEMPO_1 = 6,
- + GUILD_BONUS_RUF_1 = 7,
- + GUILD_BONUS_XP_2 = 8,
- + GUILD_BONUS_REPERATUR_2 = 9,
- + GUILD_BONUS_REITTEMPO_2 = 10,
- + GUILD_BONUS_RUF_2 = 11,
- + GUILD_BONUS_EHRE_1 = 12,
- + GUILD_BONUS_EHRE_2 = 13,
- +
- + GUILD_BONUS_MAX = 14
- +};
- +
- +#define GUILD_MAX_LEVEL 8
- +//Guild-Level-System [End]
- +
- // Emblem info
- class EmblemInfo
- {
- @@ -740,6 +763,15 @@ public:
- void ResetTimes();
- + //Guild-Level-System
- + void LoadLevelInfo();
- + bool HasLevelForBonus(uint8 guildBonus);
- + void GiveXp(uint32 value);
- + void SetLevel(uint8 level, bool byCommand);
- + uint8 GetLevel() const { return m_guild_level; };
- + uint32 GetCurrentXP() const { return m_current_guildXp; };
- + uint32 GetXpForNextLevel() const { return m_xp_for_next_level; };
- +
- protected:
- uint32 m_id;
- std::string m_name;
- @@ -760,6 +792,11 @@ protected:
- LogHolder* m_eventLog;
- LogHolder* m_bankEventLog[GUILD_BANK_MAX_TABS + 1];
- + //Guild-Level-System
- + uint8 m_guild_level;
- + uint32 m_current_guildXp;
- + uint32 m_xp_for_next_level;
- +
- private:
- inline uint8 _GetRanksSize() const { return uint8(m_ranks.size()); }
- inline const RankInfo* GetRankInfo(uint8 rankId) const { return rankId < _GetRanksSize() ? &m_ranks[rankId] : NULL; }
- diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp
- index 61f0b9a..ab9bc11 100644
- --- a/src/server/game/Handlers/LootHandler.cpp
- +++ b/src/server/game/Handlers/LootHandler.cpp
- @@ -30,6 +30,7 @@
- #include "World.h"
- #include "WorldPacket.h"
- #include "WorldSession.h"
- +#include "Guild.h"
- void WorldSession::HandleAutostoreLootItemOpcode(WorldPacket& recvData)
- {
- @@ -203,6 +204,16 @@ void WorldSession::HandleLootMoneyOpcode(WorldPacket& /*recvData*/)
- SendPacket(&data);
- }
- + //Guild-Level-System (Bonus: Gold)
- + if (Guild* guild = player->GetGuild())
- + {
- + //Extra Gold fuer die Gildenbank
- + if (guild->HasLevelForBonus(GUILD_BONUS_GOLD_1))
- + guild->HandleMemberDepositMoney(this, uint32(loot->gold*0.05f));
- + if (guild->HasLevelForBonus(GUILD_BONUS_GOLD_2))
- + guild->HandleMemberDepositMoney(this, uint32(loot->gold*0.1f));
- + }
- +
- loot->gold = 0;
- // Delete the money loot record from the DB
- diff --git a/src/server/game/Miscellaneous/Formulas.h b/src/server/game/Miscellaneous/Formulas.h
- index 8d0e97d..185c073 100644
- --- a/src/server/game/Miscellaneous/Formulas.h
- +++ b/src/server/game/Miscellaneous/Formulas.h
- @@ -23,6 +23,7 @@
- #include "SharedDefines.h"
- #include "ScriptMgr.h"
- #include "Player.h"
- +#include "Guild.h"
- namespace Trinity
- {
- @@ -181,6 +182,16 @@ namespace Trinity
- }
- gain = uint32(gain * sWorld->getRate(RATE_XP_KILL));
- +
- + //Guild-Level-System (Bonus: MonsterKillXp)
- + if (Guild* guild = player->GetGuild())
- + {
- + //GildenXP-Bonus
- + if (guild->HasLevelForBonus(GUILD_BONUS_XP_1))
- + gain += uint32(gain*0.05f);
- + if (guild->HasLevelForBonus(GUILD_BONUS_XP_2))
- + gain += uint32(gain*0.1f);
- + }
- }
- sScriptMgr->OnGainCalculation(gain, player, u);
- diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h
- index 3a680e3..f144aff 100644
- --- a/src/server/game/Miscellaneous/Language.h
- +++ b/src/server/game/Miscellaneous/Language.h
- @@ -1225,7 +1225,11 @@ enum TrinityStrings
- LANG_BAN_ACCOUNT_YOUPERMBANNEDMESSAGE_WORLD = 11007,
- LANG_NPCINFO_INHABIT_TYPE = 11008,
- - LANG_NPCINFO_FLAGS_EXTRA = 11009
- + LANG_NPCINFO_FLAGS_EXTRA = 11009,
- +
- + //Guild-Level-System
- + LANG_GUILDINFO_LEVEL = 13000,
- + LANG_GUILDINFO_XP_INFO = 13001,
- // NOT RESERVED IDS 12000-1999999999
- // `db_script_string` table index 2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID)
- diff --git a/src/server/game/Reputation/ReputationMgr.cpp b/src/server/game/Reputation/ReputationMgr.cpp
- index 46b73e7..a6f2437 100644
- --- a/src/server/game/Reputation/ReputationMgr.cpp
- +++ b/src/server/game/Reputation/ReputationMgr.cpp
- @@ -25,6 +25,7 @@
- #include "ObjectMgr.h"
- #include "ScriptMgr.h"
- #include "WorldSession.h"
- +#include "Guild.h"
- const int32 ReputationMgr::PointsInRank[MAX_REPUTATION_RANK] = {36000, 3000, 3000, 3000, 6000, 12000, 21000, 1000};
- @@ -367,6 +368,15 @@ bool ReputationMgr::SetOneFactionReputation(FactionEntry const* factionEntry, in
- standing += itr->second.Standing + BaseRep;
- }
- + //Guild-Level-System (Bonus: Ruf)
- + if (Guild* guild = _player->GetGuild())
- + {
- + if (guild->HasLevelForBonus(GUILD_BONUS_RUF_1))
- + standing += uint32(standing*0.05f);
- + if (guild->HasLevelForBonus(GUILD_BONUS_RUF_2))
- + standing += uint32(standing*0.1f);
- + }
- +
- if (standing > Reputation_Cap)
- standing = Reputation_Cap;
- else if (standing < Reputation_Bottom)
- diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
- index b643d12..9b1652f 100644
- --- a/src/server/game/World/World.cpp
- +++ b/src/server/game/World/World.cpp
- @@ -1257,6 +1257,9 @@ void World::LoadConfigSettings(bool reload)
- m_bool_configs[CONFIG_IP_BASED_LOGIN_LOGGING] = sConfigMgr->GetBoolDefault("Wrong.Password.Login.Logging", false);
- + //Guild-Level-System
- + LoadGuildBonusInfo();
- +
- // call ScriptMgr if we're reloading the configuration
- if (reload)
- sScriptMgr->OnConfigLoad(reload);
- @@ -3204,3 +3207,87 @@ void World::ReloadRBAC()
- if (WorldSession* session = itr->second)
- session->InvalidateRBACData();
- }
- +
- +//Guild-Level-System [Start]
- +void World::LoadGuildBonusInfo()
- +{
- + //Moechte keinen riesigen Abschnitt in die Worldconf hinzufuegen, deswegen
- + //soll das ganze ueber eine Tabelle in der CharDB geregelt werden.
- + //Hier werden die benoetigten Daten geladen.
- + m_req_guildLevel_gold_1 = SelectReqGuildLevelForBonus(GUILD_BONUS_GOLD_1);
- + m_req_guildLevel_xp_1 = SelectReqGuildLevelForBonus(GUILD_BONUS_XP_1);
- + m_req_guildLevel_schneller_geist = SelectReqGuildLevelForBonus(GUILD_BONUS_SCHNELLER_GEIST);
- + m_req_guildLevel_reperatur_1 = SelectReqGuildLevelForBonus(GUILD_BONUS_REPERATUR_1);
- + m_req_guildLevel_gold_2 = SelectReqGuildLevelForBonus(GUILD_BONUS_GOLD_2);
- + m_req_guildLevel_reittempo_1 = SelectReqGuildLevelForBonus(GUILD_BONUS_REITTEMPO_1);
- + m_req_guildLevel_reputation_1 = SelectReqGuildLevelForBonus(GUILD_BONUS_RUF_1);
- + m_req_guildLevel_xp_2 = SelectReqGuildLevelForBonus(GUILD_BONUS_XP_2);
- + m_req_guildLevel_reperatur_2 = SelectReqGuildLevelForBonus(GUILD_BONUS_REPERATUR_2);
- + m_req_guildLevel_reittempo_2 = SelectReqGuildLevelForBonus(GUILD_BONUS_REITTEMPO_2);
- + m_req_guildLevel_reputation_2 = SelectReqGuildLevelForBonus(GUILD_BONUS_RUF_2);
- + m_req_guildLevel_honor_1 = SelectReqGuildLevelForBonus(GUILD_BONUS_EHRE_1);
- + m_req_guildLevel_honor_2 = SelectReqGuildLevelForBonus(GUILD_BONUS_EHRE_2);
- +}
- +
- +uint8 World::SelectReqGuildLevelForBonus(uint8 guildBonus)
- +{
- + PreparedStatement* stmt;
- + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_BONUS_INFO);
- + stmt->setUInt8(0, guildBonus);
- + PreparedQueryResult result = CharacterDatabase.Query(stmt);
- +
- + if (result)
- + return (*result)[0].GetUInt8();
- + else
- + return 0;
- +}
- +
- +uint8 World::GetReqGuildLevelForBonus(uint8 guildBonus)
- +{
- + switch (guildBonus)
- + {
- + case GUILD_BONUS_GOLD_1:
- + return m_req_guildLevel_gold_1;
- + break;
- + case GUILD_BONUS_GOLD_2:
- + return m_req_guildLevel_gold_2;
- + break;
- + case GUILD_BONUS_EHRE_1:
- + return m_req_guildLevel_honor_1;
- + break;
- + case GUILD_BONUS_EHRE_2:
- + return m_req_guildLevel_honor_2;
- + break;
- + case GUILD_BONUS_REITTEMPO_1:
- + return m_req_guildLevel_reittempo_1;
- + break;
- + case GUILD_BONUS_REITTEMPO_2:
- + return m_req_guildLevel_reittempo_2;
- + break;
- + case GUILD_BONUS_REPERATUR_1:
- + return m_req_guildLevel_reperatur_1;
- + break;
- + case GUILD_BONUS_REPERATUR_2:
- + return m_req_guildLevel_reperatur_2;
- + break;
- + case GUILD_BONUS_RUF_1:
- + return m_req_guildLevel_reputation_1;
- + break;
- + case GUILD_BONUS_RUF_2:
- + return m_req_guildLevel_reputation_2;
- + break;
- + case GUILD_BONUS_SCHNELLER_GEIST:
- + return m_req_guildLevel_schneller_geist;
- + break;
- + case GUILD_BONUS_XP_1:
- + return m_req_guildLevel_xp_1;
- + break;
- + case GUILD_BONUS_XP_2:
- + return m_req_guildLevel_xp_2;
- + break;
- + default:
- + return 0;
- + break;
- + }
- +}
- +//Guild-Level-System [End]
- diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
- index efd7570..29508f9 100644
- --- a/src/server/game/World/World.h
- +++ b/src/server/game/World/World.h
- @@ -741,6 +741,11 @@ class World
- void ReloadRBAC();
- + //Guild-Level-System
- + void LoadGuildBonusInfo();
- + uint8 GetReqGuildLevelForBonus(uint8 guildBonus);
- + uint8 SelectReqGuildLevelForBonus(uint8 guildBonus);
- +
- protected:
- void _UpdateGameTime();
- // callback for UpdateRealmCharacters
- @@ -840,6 +845,21 @@ class World
- void ProcessQueryCallbacks();
- ACE_Future_Set<PreparedQueryResult> m_realmCharCallbacks;
- +
- + //Guild-Level-System
- + uint8 m_req_guildLevel_gold_1;
- + uint8 m_req_guildLevel_xp_1;
- + uint8 m_req_guildLevel_schneller_geist;
- + uint8 m_req_guildLevel_reperatur_1;
- + uint8 m_req_guildLevel_gold_2;
- + uint8 m_req_guildLevel_reittempo_1;
- + uint8 m_req_guildLevel_reputation_1;
- + uint8 m_req_guildLevel_xp_2;
- + uint8 m_req_guildLevel_reperatur_2;
- + uint8 m_req_guildLevel_reittempo_2;
- + uint8 m_req_guildLevel_reputation_2;
- + uint8 m_req_guildLevel_honor_1;
- + uint8 m_req_guildLevel_honor_2;
- };
- extern uint32 realmID;
- diff --git a/src/server/scripts/Commands/cs_guild.cpp b/src/server/scripts/Commands/cs_guild.cpp
- index 4627f6b..50645fd 100644
- --- a/src/server/scripts/Commands/cs_guild.cpp
- +++ b/src/server/scripts/Commands/cs_guild.cpp
- @@ -38,12 +38,15 @@ public:
- {
- static ChatCommand guildCommandTable[] =
- {
- - { "create", rbac::RBAC_PERM_COMMAND_GUILD_CREATE, true, &HandleGuildCreateCommand, "", NULL },
- - { "delete", rbac::RBAC_PERM_COMMAND_GUILD_DELETE, true, &HandleGuildDeleteCommand, "", NULL },
- - { "invite", rbac::RBAC_PERM_COMMAND_GUILD_INVITE, true, &HandleGuildInviteCommand, "", NULL },
- - { "uninvite", rbac::RBAC_PERM_COMMAND_GUILD_UNINVITE, true, &HandleGuildUninviteCommand, "", NULL },
- - { "rank", rbac::RBAC_PERM_COMMAND_GUILD_RANK, true, &HandleGuildRankCommand, "", NULL },
- - { "rename", rbac::RBAC_PERM_COMMAND_GUILD_RENAME, true, &HandleGuildRenameCommand, "", NULL },
- + { "create", rbac::RBAC_PERM_COMMAND_GUILD_CREATE, true, &HandleGuildCreateCommand, "", NULL },
- + { "delete", rbac::RBAC_PERM_COMMAND_GUILD_DELETE, true, &HandleGuildDeleteCommand, "", NULL },
- + { "invite", rbac::RBAC_PERM_COMMAND_GUILD_INVITE, true, &HandleGuildInviteCommand, "", NULL },
- + { "uninvite", rbac::RBAC_PERM_COMMAND_GUILD_UNINVITE, true, &HandleGuildUninviteCommand, "", NULL },
- + { "rank", rbac::RBAC_PERM_COMMAND_GUILD_RANK, true, &HandleGuildRankCommand, "", NULL },
- + { "rename", rbac::RBAC_PERM_COMMAND_GUILD_RENAME, true, &HandleGuildRenameCommand, "", NULL },
- + { "info", rbac::RBAC_PERM_COMMAND_GUILD_INFO, true, &HandleGuildInfoCommand, "", NULL },
- + { "setlevel", rbac::RBAC_PERM_COMMAND_GUILD_SET_LEVEL, true, &HandleGuildSetLevelCommand, "", NULL },
- + { "givexp", rbac::RBAC_PERM_COMMAND_GUILD_GIVE_XP, true, &HandleGuildGiveXpCommand, "", NULL },
- { NULL, 0, false, NULL, "", NULL }
- };
- static ChatCommand commandTable[] =
- @@ -243,6 +246,124 @@ public:
- handler->PSendSysMessage(LANG_GUILD_RENAME_DONE, oldGuildStr, newGuildStr);
- return true;
- }
- +
- + //Guild-Level-System
- + static bool HandleGuildInfoCommand(ChatHandler* handler, char const* /*args*/)
- + {
- + Guild* guild = handler->GetSession()->GetPlayer()->GetGuild();
- +
- + if (guild)
- + {
- + handler->PSendSysMessage(LANG_GUILDINFO_LEVEL, guild->GetLevel());
- +
- + if (guild->GetLevel() >= GUILD_MAX_LEVEL)
- + handler->PSendSysMessage(LANG_GUILDINFO_XP_INFO, 0, 0);
- + else
- + handler->PSendSysMessage(LANG_GUILDINFO_XP_INFO, guild->GetCurrentXP(), guild->GetXpForNextLevel());
- +
- + handler->PSendSysMessage("Aktive Gildenboni:");
- +
- + if (guild->GetLevel() > 0)
- + {
- + if (guild->HasLevelForBonus(GUILD_BONUS_GOLD_1))
- + handler->PSendSysMessage("Goldbonus [Rang 1]");
- + if (guild->HasLevelForBonus(GUILD_BONUS_XP_1))
- + handler->PSendSysMessage("Erfahrungszuwachs [Rang 1]");
- + if (guild->HasLevelForBonus(GUILD_BONUS_SCHNELLER_GEIST))
- + handler->PSendSysMessage("Schneller Geist");
- + if (guild->HasLevelForBonus(GUILD_BONUS_REPERATUR_1))
- + handler->PSendSysMessage("G\303\274nstige Reperatur [Rang 1]");
- + if (guild->HasLevelForBonus(GUILD_BONUS_GOLD_2))
- + handler->PSendSysMessage("Goldbonus [Rang 2]");
- + if (guild->HasLevelForBonus(GUILD_BONUS_REITTEMPO_1))
- + handler->PSendSysMessage("Reittempo [Rang 1]");
- + if (guild->HasLevelForBonus(GUILD_BONUS_RUF_1))
- + handler->PSendSysMessage("Rufzuwachs [Rang 1]");
- + if (guild->HasLevelForBonus(GUILD_BONUS_XP_2))
- + handler->PSendSysMessage("Erfahrungszuwachs [Rang 2]");
- + if (guild->HasLevelForBonus(GUILD_BONUS_REPERATUR_2))
- + handler->PSendSysMessage("G\303\274nstige Reperatur [Rang 2]");
- + if (guild->HasLevelForBonus(GUILD_BONUS_REITTEMPO_2))
- + handler->PSendSysMessage("Reittempo [Rang 2]");
- + if (guild->HasLevelForBonus(GUILD_BONUS_REPERATUR_2))
- + handler->PSendSysMessage("Rufzuwachs [Rang 2]");
- + if (guild->HasLevelForBonus(GUILD_BONUS_EHRE_1))
- + handler->PSendSysMessage("Ehrezuwachs [Rang 1]");
- + if (guild->HasLevelForBonus(GUILD_BONUS_EHRE_2))
- + handler->PSendSysMessage("Ehrezuwachs [Rang 2]");
- + }
- + else
- + handler->PSendSysMessage("Keine");
- +
- + return true;
- + }
- + else
- + {
- + handler->PSendSysMessage("Du bist in keiner Gilde.");
- + return false;
- + }
- + }
- +
- + static bool HandleGuildSetLevelCommand(ChatHandler* handler, char const* args)
- + {
- + if (!*args)
- + return false;
- +
- + char* guildNameStr;
- + char* levelStr;
- + handler->extractOptFirstArg((char*)args, &guildNameStr, &levelStr);
- +
- + if (!levelStr)
- + return false;
- +
- + uint8 newLevel = uint8(atoi(levelStr));
- + Guild* guild = sGuildMgr->GetGuildByName(guildNameStr);
- +
- + if (guild)
- + {
- + if (newLevel > GUILD_MAX_LEVEL)
- + {
- + handler->PSendSysMessage("Das angegebene Level ist zu hoch.");
- + return false;
- + }
- + else
- + guild->SetLevel(newLevel, true);
- + }
- + else
- + {
- + handler->PSendSysMessage("Es konnte keine Gilde mit den Namen [%s] gefunden werden.", guildNameStr);
- + return false;
- + }
- +
- + return true;
- + }
- +
- + static bool HandleGuildGiveXpCommand(ChatHandler* handler, char const* args)
- + {
- + if (!*args)
- + return false;
- +
- + char* guildNameStr;
- + char* xpStr;
- + handler->extractOptFirstArg((char*)args, &guildNameStr, &xpStr);
- +
- + if (!xpStr)
- + return false;
- +
- + uint32 value = uint32(atoi(xpStr));
- +
- + Guild* guild = sGuildMgr->GetGuildByName(guildNameStr);
- +
- + if (guild)
- + guild->GiveXp(value);
- + else
- + {
- + handler->PSendSysMessage("There was no guild with the name [%s] be found.", guildNameStr);
- + return false;
- + }
- +
- + return true;
- + }
- };
- void AddSC_guild_commandscript()
- diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
- index 24e61e7..8f50914 100644
- --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
- +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
- @@ -600,4 +600,14 @@ void CharacterDatabaseConnection::DoPrepareStatements()
- PrepareStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID, "UPDATE character_pet SET slot = ? WHERE owner = ? AND id = ?", CONNECTION_ASYNC);
- PrepareStatement(CHAR_DEL_CHAR_PET_BY_ID, "DELETE FROM character_pet WHERE id = ?", CONNECTION_ASYNC);
- PrepareStatement(CHAR_DEL_CHAR_PET_BY_SLOT, "DELETE FROM character_pet WHERE owner = ? AND (slot = ? OR slot > ?)", CONNECTION_ASYNC);
- +
- + //Guild-Level-System
- + //Load
- + PrepareStatement(CHAR_SEL_GUILD_BONUS_INFO, "SELECT RequiredGuildLevel FROM guild_bonus_config WHERE BonusId = ?", CONNECTION_SYNCH);
- + PrepareStatement(CHAR_SEL_GUILD_LEVEL_INFO, "SELECT xp, level FROM guild WHERE guildid = ?", CONNECTION_SYNCH);
- + PrepareStatement(CHAR_SEL_GUILD_XP_FOR_NEXT_LEVEL, "SELECT xp_for_next_level FROM guild_xp_for_next_level WHERE level = ?", CONNECTION_SYNCH);
- +
- + //Save
- + PrepareStatement(CHAR_UPD_GUILD_LEVEL, "UPDATE guild SET level = ? WHERE guildid = ?", CONNECTION_ASYNC);
- + PrepareStatement(CHAR_UPD_GUILD_XP, "UPDATE guild SET xp = (xp + ?) WHERE guildid = ?", CONNECTION_ASYNC);
- }
- diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h
- index 98d7fe2..816fe14 100644
- --- a/src/server/shared/Database/Implementation/CharacterDatabase.h
- +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h
- @@ -534,6 +534,13 @@ enum CharacterDatabaseStatements
- CHAR_DEL_ITEMCONTAINER_MONEY,
- CHAR_INS_ITEMCONTAINER_MONEY,
- + //Guild-Level-System
- + CHAR_SEL_GUILD_BONUS_INFO,
- + CHAR_SEL_GUILD_LEVEL_INFO,
- + CHAR_SEL_GUILD_XP_FOR_NEXT_LEVEL,
- + CHAR_UPD_GUILD_LEVEL,
- + CHAR_UPD_GUILD_XP,
- +
- MAX_CHARACTERDATABASE_STATEMENTS
- };
- --
- 1.7.10.4
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement