kusanagy

2015_10_29-VIP

Dec 10th, 2019
1,416
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 20.70 KB | None | 0 0
  1. From c97ce9e201e9b7bb204d10c7ffe0a39b40112e6c Mon Sep 17 00:00:00 2001
  2. From: LordPsyan <[email protected]>
  3. Date: Thu, 29 Oct 2015 21:26:31 -0500
  4. Subject: [PATCH] 2015_10_29-VIP
  5.  
  6. ---
  7. sql/TrinityCore-Patches/VIP/account_premium.sql    | 22 ++++++
  8.  src/server/authserver/Server/AuthSession.cpp       |  3 +
  9.  .../Database/Implementation/LoginDatabase.cpp      |  5 +-
  10.  .../Database/Implementation/LoginDatabase.h        |  3 +
  11.  src/server/game/Entities/Player/Player.cpp         |  9 ++-
  12.  src/server/game/Miscellaneous/Formulas.h           |  6 +-
  13.  src/server/game/Miscellaneous/Language.h           |  2 +-
  14.  src/server/game/Reputation/ReputationMgr.cpp       |  4 +
  15.  src/server/game/Scripting/ScriptLoader.cpp         |  4 +-
  16.  src/server/game/Server/WorldSession.cpp            |  3 +-
  17.  src/server/game/Server/WorldSession.h              |  4 +-
  18.  src/server/game/Server/WorldSocket.cpp             | 13 +++-
  19.  src/server/game/World/World.cpp                    |  9 +++
  20.  src/server/game/World/World.h                      |  9 +++
  21.  src/server/scripts/Custom/cs_premium.cpp           | 88 ++++++++++++++++++++++
  22.  src/server/worldserver/worldserver.conf.dist       | 16 ++++
  23.  16 files changed, 190 insertions(+), 10 deletions(-)
  24.  create mode 100644 sql/TrinityCore-Patches/VIP/account_premium.sql
  25.  create mode 100644 src/server/scripts/Custom/cs_premium.cpp
  26.  
  27. diff --git a/sql/TrinityCore-Patches/VIP/account_premium.sql b/sql/TrinityCore-Patches/VIP/account_premium.sql
  28. new file mode 100644
  29. index 0000000..770380c
  30. --- /dev/null
  31. +++ b/sql/TrinityCore-Patches/VIP/account_premium.sql
  32. @@ -0,0 +1,22 @@
  33. +CREATE TABLE IF NOT EXISTS `auth`.`account_premium` (
  34. +  `id` int(11) NOT NULL DEFAULT '0' COMMENT 'Account id',
  35. +  `setdate` int(4) NOT NULL DEFAULT '0',
  36. +  `unsetdate` int(4) NOT NULL DEFAULT '0',
  37. +  `premium_type` tinyint(4) unsigned NOT NULL DEFAULT '1',
  38. +  `active` tinyint(4) NOT NULL DEFAULT '1',
  39. +  PRIMARY KEY (`id`),
  40. +  KEY `active` (`active`),
  41. +  KEY `setdate` (`setdate`),
  42. +  KEY `unsetdate` (`unsetdate`)
  43. +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  44. +
  45. +
  46. +INSERT INTO `auth`.`rbac_permissions` (`id`, `name`) VALUES
  47. +(999, 'Command: vip');
  48. +
  49. +INSERT INTO `auth`.`rbac_linked_permissions` (`id`, `linkedId`) VALUES
  50. +(195, 999);
  51. +
  52. +INSERT INTO `world`.`command` (`name`, `permission`, `help`) VALUES
  53. +('vip bank', 999, 'Syntax: .vip bank'),
  54. +('vip mail', 999, 'Syntax: .vip mail');
  55. \ No newline at end of file
  56. diff --git a/src/server/authserver/Server/AuthSession.cpp b/src/server/authserver/Server/AuthSession.cpp
  57. index 28819b8..9b87c0d 100644
  58. --- a/src/server/authserver/Server/AuthSession.cpp
  59. +++ b/src/server/authserver/Server/AuthSession.cpp
  60. @@ -297,6 +297,9 @@ bool AuthSession::HandleLogonChallenge()
  61.                  //set expired bans to inactive
  62.                  LoginDatabase.DirectExecute(LoginDatabase.GetPreparedStatement(LOGIN_UPD_EXPIRED_ACCOUNT_BANS));
  63.  
  64. +                //set expired premium to inactive
  65. +                LoginDatabase.DirectExecute(LoginDatabase.GetPreparedStatement(LOGIN_UPD_EXPIRED_ACCOUNT_PREMIUM));
  66. +
  67.                  // If the account is banned, reject the logon attempt
  68.                  stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BANNED);
  69.                  stmt->setUInt32(0, fields[1].GetUInt32());
  70. diff --git a/src/server/database/Database/Implementation/LoginDatabase.cpp b/src/server/database/Database/Implementation/LoginDatabase.cpp
  71. index 8f0b506..2bdae15 100644
  72. --- a/src/server/database/Database/Implementation/LoginDatabase.cpp
  73. +++ b/src/server/database/Database/Implementation/LoginDatabase.cpp
  74. @@ -106,8 +106,11 @@ void LoginDatabaseConnection::DoPrepareStatements()
  75.      PrepareStatement(LOGIN_INS_CHAR_IP_LOGGING, "INSERT INTO logs_ip_actions (account_id,character_guid,type,ip,systemnote,unixtime,time) VALUES (?, ?, ?, ?, ?, unix_timestamp(NOW()), NOW())", CONNECTION_ASYNC);
  76.      // 0: string, 1: string, 2: string                      // Complete name: "Login_Insert_Failed_Account_Login_due_password_IP_Logging"
  77.      PrepareStatement(LOGIN_INS_FALP_IP_LOGGING, "INSERT INTO logs_ip_actions (account_id,character_guid,type,ip,systemnote,unixtime,time) VALUES ((SELECT id FROM account WHERE username = ?), 0, 1, ?, ?, unix_timestamp(NOW()), NOW())", CONNECTION_ASYNC);
  78. -    PrepareStatement(LOGIN_SEL_ACCOUNT_ACCESS_BY_ID, "SELECT gmlevel, RealmID FROM account_access WHERE id = ? and (RealmID = ? OR RealmID = -1) ORDER BY gmlevel desc", CONNECTION_SYNCH);
  79.  
  80. +    PrepareStatement(LOGIN_UPD_EXPIRED_ACCOUNT_PREMIUM, "UPDATE account_premium SET active = 0 WHERE unsetdate<=UNIX_TIMESTAMP() AND unsetdate<>setdate", CONNECTION_SYNCH);
  81. +    PrepareStatement(LOGIN_SEL_PREMIUM, "SELECT 1 FROM account_premium WHERE id = ? AND active = 1", CONNECTION_SYNCH);
  82. +
  83. +    PrepareStatement(LOGIN_SEL_ACCOUNT_ACCESS_BY_ID, "SELECT gmlevel, RealmID FROM account_access WHERE id = ? and (RealmID = ? OR RealmID = -1) ORDER BY gmlevel desc", CONNECTION_SYNCH);
  84.      PrepareStatement(LOGIN_SEL_RBAC_ACCOUNT_PERMISSIONS, "SELECT permissionId, granted FROM rbac_account_permissions WHERE accountId = ? AND (realmId = ? OR realmId = -1) ORDER BY permissionId, realmId", CONNECTION_SYNCH);
  85.      PrepareStatement(LOGIN_INS_RBAC_ACCOUNT_PERMISSION, "INSERT INTO rbac_account_permissions (accountId, permissionId, granted, realmId) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE granted = VALUES(granted)", CONNECTION_ASYNC);
  86.      PrepareStatement(LOGIN_DEL_RBAC_ACCOUNT_PERMISSION, "DELETE FROM rbac_account_permissions WHERE accountId = ? AND permissionId = ? AND (realmId = ? OR realmId = -1)", CONNECTION_ASYNC);
  87. diff --git a/src/server/database/Database/Implementation/LoginDatabase.h b/src/server/database/Database/Implementation/LoginDatabase.h
  88. index 79b7a53..00d053a 100644
  89. --- a/src/server/database/Database/Implementation/LoginDatabase.h
  90. +++ b/src/server/database/Database/Implementation/LoginDatabase.h
  91. @@ -110,6 +110,9 @@ enum LoginDatabaseStatements
  92.      LOGIN_INS_CHAR_IP_LOGGING,
  93.      LOGIN_INS_FALP_IP_LOGGING,
  94.  
  95. +    LOGIN_UPD_EXPIRED_ACCOUNT_PREMIUM,
  96. +    LOGIN_SEL_PREMIUM,
  97. +
  98.      LOGIN_SEL_ACCOUNT_ACCESS_BY_ID,
  99.      LOGIN_SEL_RBAC_ACCOUNT_PERMISSIONS,
  100.      LOGIN_INS_RBAC_ACCOUNT_PERMISSION,
  101. diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
  102. index 13a720f..cca752f 100644
  103. --- a/src/server/game/Entities/Player/Player.cpp
  104. +++ b/src/server/game/Entities/Player/Player.cpp
  105. @@ -6827,6 +6827,9 @@ void Player::CheckAreaExploreAndOutdoor()
  106.                      XP = uint32(sObjectMgr->GetBaseXP(areaEntry->area_level)*sWorld->getRate(RATE_XP_EXPLORE));
  107.                  }
  108.  
  109. +                if(GetSession()->IsPremium())
  110. +                    XP *= sWorld->getRate(RATE_XP_EXPLORE_PREMIUM);
  111. +
  112.                  GiveXP(XP, NULL);
  113.                  SendExplorationExperience(area, XP);
  114.              }
  115. @@ -7196,7 +7199,8 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto
  116.      // 34
  117.      // 35
  118.      // 36
  119. -    // 37
  120. +    if(GetSession()->IsPremium())
  121. +        honor_f *= sWorld->getRate(RATE_HONOR_PREMIUM);
  122.      // 38
  123.      // 39
  124.      // 40
  125. @@ -15337,7 +15341,8 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
  126.      // 49
  127.      // 50
  128.      // 51
  129. -    // 52
  130. +    if (GetSession()->IsPremium())
  131. +        XP *= sWorld->getRate(RATE_XP_QUEST_PREMIUM);
  132.      // 53
  133.      // 54
  134.      // 55
  135. diff --git a/src/server/game/Miscellaneous/Formulas.h b/src/server/game/Miscellaneous/Formulas.h
  136. index f8f6fc4..b29009d 100644
  137. --- a/src/server/game/Miscellaneous/Formulas.h
  138. +++ b/src/server/game/Miscellaneous/Formulas.h
  139. @@ -27,7 +27,7 @@
  140.  // Prepatch by LordPsyan
  141.  // 01
  142.  // 02
  143. -// 03
  144. +#include "WorldSession.h"
  145.  // 04
  146.  // 05
  147.  // 06
  148. @@ -235,6 +235,10 @@ namespace Trinity
  149.                      // End of prepatch
  150.                  } else {
  151.                  xpMod *= isBattleGround ? sWorld->getRate(RATE_XP_BG_KILL) : sWorld->getRate(RATE_XP_KILL);
  152. +
  153. +                if(player->GetSession()->IsPremium())
  154. +                    xpMod *= sWorld->getRate(RATE_XP_KILL_PREMIUM);
  155. +
  156.                  gain = uint32(gain * xpMod);
  157.              }
  158.              }
  159. diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h
  160. index 7106320..85c9d84 100644
  161. --- a/src/server/game/Miscellaneous/Language.h
  162. +++ b/src/server/game/Miscellaneous/Language.h
  163. @@ -1206,7 +1206,7 @@ enum TrinityStrings
  164.      // 15
  165.      // 16
  166.      // 17
  167. -    // 18
  168. +    LANG_PREMIUM_CANT_DO                = 12009,
  169.      // 19
  170.      // 20
  171.      // Visit http://www.realmsofwarcraft.com/bb for forums and information
  172. diff --git a/src/server/game/Reputation/ReputationMgr.cpp b/src/server/game/Reputation/ReputationMgr.cpp
  173. index a4065fa..0ea904f 100644
  174. --- a/src/server/game/Reputation/ReputationMgr.cpp
  175. +++ b/src/server/game/Reputation/ReputationMgr.cpp
  176. @@ -367,6 +367,10 @@ bool ReputationMgr::SetOneFactionReputation(FactionEntry const* factionEntry, in
  177.          {
  178.              // int32 *= float cause one point loss?
  179.              standing = int32(floor((float)standing * sWorld->getRate(RATE_REPUTATION_GAIN) + 0.5f));
  180. +
  181. +            if(_player->GetSession()->IsPremium())
  182. +                 standing *= sWorld->getRate(RATE_REPUTATION_PREMIUM);
  183. +
  184.              standing += itr->second.Standing + BaseRep;
  185.          }
  186.  
  187. diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp
  188. index fff6dd6..ee66b32 100644
  189. --- a/src/server/game/Scripting/ScriptLoader.cpp
  190. +++ b/src/server/game/Scripting/ScriptLoader.cpp
  191. @@ -1482,7 +1482,7 @@ void AddBattlegroundScripts()
  192.  // start63
  193.  // start64
  194.  // start65
  195. -// start66
  196. +void AddSC_premium_commandscript();
  197.  // start67
  198.  // start68
  199.  // start69
  200. @@ -1608,7 +1608,7 @@ void AddCustomScripts()
  201.  // end63
  202.  // end64
  203.  // end65
  204. -// end66
  205. +    AddSC_premium_commandscript();
  206.  // end67
  207.  // end68
  208.  // end69
  209. diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
  210. index c99346c..113e835 100644
  211. --- a/src/server/game/Server/WorldSession.cpp
  212. +++ b/src/server/game/Server/WorldSession.cpp
  213. @@ -95,7 +95,7 @@ bool WorldSessionFilter::Process(WorldPacket* packet)
  214.  }
  215.  
  216.  /// WorldSession constructor
  217. -WorldSession::WorldSession(uint32 id, std::shared_ptr<WorldSocket> sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter, bool isARecruiter):
  218. +WorldSession::WorldSession(uint32 id, std::shared_ptr<WorldSocket> sock, AccountTypes sec, bool ispremium, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter, bool isARecruiter):
  219.      m_muteTime(mute_time),
  220.      m_timeOutTime(0),
  221.      AntiDOS(this),
  222. @@ -103,6 +103,7 @@ WorldSession::WorldSession(uint32 id, std::shared_ptr<WorldSocket> sock, Account
  223.      _player(NULL),
  224.      m_Socket(sock),
  225.      _security(sec),
  226. +    _ispremium(ispremium),
  227.      _accountId(id),
  228.      m_expansion(expansion),
  229.      _warden(NULL),
  230. diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
  231. index 6b1279e..f1ab205 100644
  232. --- a/src/server/game/Server/WorldSession.h
  233. +++ b/src/server/game/Server/WorldSession.h
  234. @@ -249,7 +249,7 @@ struct PacketCounter
  235.  class WorldSession
  236.  {
  237.      public:
  238. -        WorldSession(uint32 id, std::shared_ptr<WorldSocket> sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter, bool isARecruiter);
  239. +        WorldSession(uint32 id, std::shared_ptr<WorldSocket> sock, AccountTypes sec, bool ispremium, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter, bool isARecruiter);
  240.          ~WorldSession();
  241.  
  242.          bool PlayerLoading() const { return m_playerLoading; }
  243. @@ -282,6 +282,7 @@ class WorldSession
  244.          void InvalidateRBACData(); // Used to force LoadPermissions at next HasPermission check
  245.  
  246.          AccountTypes GetSecurity() const { return _security; }
  247. +        bool IsPremium() const { return _ispremium; }
  248.          uint32 GetAccountId() const { return _accountId; }
  249.          Player* GetPlayer() const { return _player; }
  250.          std::string const& GetPlayerName() const;
  251. @@ -1035,6 +1036,7 @@ class WorldSession
  252.          AccountTypes _security;
  253.          uint32 _accountId;
  254.          uint8 m_expansion;
  255. +        bool _ispremium;
  256.  
  257.          typedef std::list<AddonInfo> AddonsList;
  258.  
  259. diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
  260. index 066a4e5..03f87f3 100644
  261. --- a/src/server/game/Server/WorldSocket.cpp
  262. +++ b/src/server/game/Server/WorldSocket.cpp
  263. @@ -262,6 +262,7 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
  264.      uint32 id;
  265.      LocaleConstant locale;
  266.      std::string account;
  267. +    bool isPremium = false;
  268.      SHA1Hash sha;
  269.      uint32 clientBuild;
  270.      uint32 serverId, loginServerType, region, battlegroup, realmIndex;
  271. @@ -447,6 +448,16 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
  272.          return;
  273.      }
  274.  
  275. +    // Check premium
  276. +    stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PREMIUM);
  277. +    stmt->setUInt32(0, id);
  278. +    PreparedQueryResult premresult = LoginDatabase.Query(stmt);
  279. +
  280. +    if (premresult)
  281. +    {
  282. +        isPremium = true;
  283. +    }
  284. +
  285.      // Check locked state for server
  286.      AccountTypes allowedAccountType = sWorld->GetPlayerSecurityLimit();
  287.      TC_LOG_DEBUG("network", "Allowed Level: %u Player Level %u", allowedAccountType, AccountTypes(security));
  288. @@ -486,7 +497,7 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
  289.      sScriptMgr->OnAccountLogin(id);
  290.  
  291.      _authed = true;
  292. -    _worldSession = new WorldSession(id, shared_from_this(), AccountTypes(security), expansion, mutetime, locale, recruiter, isRecruiter);
  293. +    _worldSession = new WorldSession(id, shared_from_this(), AccountTypes(security), isPremium, expansion, mutetime, locale, recruiter, isRecruiter);
  294.      _worldSession->LoadGlobalAccountData();
  295.      _worldSession->LoadTutorialsData();
  296.      _worldSession->ReadAddonsInfo(recvPacket);
  297. diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
  298. index 028ed43..8a8fa37 100644
  299. --- a/src/server/game/World/World.cpp
  300. +++ b/src/server/game/World/World.cpp
  301. @@ -482,6 +482,15 @@ void World::LoadConfigSettings(bool reload)
  302.      rate_values[RATE_XP_BG_KILL]  = sConfigMgr->GetFloatDefault("Rate.XP.BattlegroundKill", 1.0f);
  303.      rate_values[RATE_XP_QUEST]    = sConfigMgr->GetFloatDefault("Rate.XP.Quest", 1.0f);
  304.      rate_values[RATE_XP_EXPLORE]  = sConfigMgr->GetFloatDefault("Rate.XP.Explore", 1.0f);
  305. +
  306. +    rate_values[RATE_XP_KILL_PREMIUM]    = sConfigMgr->GetFloatDefault("Rate.XP.Kill.Premium", 1.0f);
  307. +    rate_values[RATE_XP_QUEST_PREMIUM]   = sConfigMgr->GetFloatDefault("Rate.XP.Quest.Premium", 1.0f);
  308. +    rate_values[RATE_XP_EXPLORE_PREMIUM] = sConfigMgr->GetFloatDefault("Rate.XP.Explore.Premium", 1.0f);
  309. +    rate_values[RATE_REPUTATION_PREMIUM] = sConfigMgr->GetFloatDefault("Rate.Reputation.Premium", 1.0f);
  310. +    rate_values[RATE_HONOR_PREMIUM]      = sConfigMgr->GetFloatDefault("Rate.Honor.Premium", 1.0f);
  311. +    m_bool_configs[COMMAND_BANK_PREMIUM] = sConfigMgr->GetFloatDefault("Command.Bank.Premium", false);
  312. +    m_bool_configs[COMMAND_MAIL_PREMIUM] = sConfigMgr->GetFloatDefault("Command.Mail.Premium", false);
  313. +
  314.      rate_values[RATE_REPAIRCOST]  = sConfigMgr->GetFloatDefault("Rate.RepairCost", 1.0f);
  315.      if (rate_values[RATE_REPAIRCOST] < 0.0f)
  316.      {
  317. diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
  318. index ccea34e..b7b0d5d 100644
  319. --- a/src/server/game/World/World.h
  320. +++ b/src/server/game/World/World.h
  321. @@ -97,6 +97,8 @@ enum WorldBoolConfigs
  322.      CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD,
  323.      CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION,
  324.      CONFIG_ALLOW_TWO_SIDE_TRADE,
  325. +    COMMAND_BANK_PREMIUM,
  326. +    COMMAND_MAIL_PREMIUM,
  327.      CONFIG_ALL_TAXI_PATHS,
  328.      CONFIG_INSTANT_TAXI,
  329.      CONFIG_INSTANCE_IGNORE_LEVEL,
  330. @@ -470,6 +472,13 @@ enum Rates
  331.      RATE_XP_BG_KILL,
  332.      RATE_XP_QUEST,
  333.      RATE_XP_EXPLORE,
  334. +
  335. +    RATE_XP_KILL_PREMIUM,
  336. +    RATE_XP_QUEST_PREMIUM,
  337. +    RATE_XP_EXPLORE_PREMIUM,
  338. +    RATE_REPUTATION_PREMIUM,
  339. +    RATE_HONOR_PREMIUM,
  340. +
  341.      RATE_REPAIRCOST,
  342.      RATE_REPUTATION_GAIN,
  343.      RATE_REPUTATION_LOWLEVEL_KILL,
  344. diff --git a/src/server/scripts/Custom/cs_premium.cpp b/src/server/scripts/Custom/cs_premium.cpp
  345. new file mode 100644
  346. index 0000000..f85ea26
  347. --- /dev/null
  348. +++ b/src/server/scripts/Custom/cs_premium.cpp
  349. @@ -0,0 +1,88 @@
  350. +#include "Language.h"
  351. +#include "World.h"
  352. +//#include "AuctionHouseMgr.h"
  353. +
  354. +class premium_commandscript : public CommandScript
  355. +{
  356. +public:
  357. +    premium_commandscript() : CommandScript("premium_commandscript") { }
  358. +
  359. +    std::vector<ChatCommand> GetCommands() const override
  360. +    {
  361. +        static std::vector<ChatCommand> premiumCommandTable =
  362. +        {
  363. +            { "bank",  SEC_PLAYER, false, &HandlePremiumBankCommand,    "" },
  364. +            { "mail",  SEC_PLAYER, false, &HandlePremiumMailCommand,    "" },
  365. +            //{ "auc",  SEC_PLAYER,  false, &HandlePremiumAuctionCommand, "", NULL },
  366. +        };
  367. +
  368. +        static std::vector<ChatCommand> commandTable =
  369. +        {
  370. +            { "vip", SEC_PLAYER, false, NULL, "", premiumCommandTable },
  371. +        };
  372. +
  373. +        return commandTable;
  374. +    }
  375. +
  376. +    static bool HandlePremiumBankCommand(ChatHandler* handler, char const* /*args*/)
  377. +    {
  378. +        Player *player = handler->GetSession()->GetPlayer();
  379. +        if (player->GetSession()->IsPremium() && sWorld->getBoolConfig(COMMAND_BANK_PREMIUM))
  380. +        {
  381. +            //Different Checks
  382. +            if (player->IsInCombat() || player->IsInFlight() || player->GetMap()->IsBattlegroundOrArena() || player->HasStealthAura() || player->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH) || player->isDead())
  383. +            {
  384. +                handler->SendSysMessage(LANG_PREMIUM_CANT_DO);
  385. +                handler->SetSentErrorMessage(true);
  386. +                return false;
  387. +            }
  388. +
  389. +            handler->GetSession()->SendShowBank(handler->GetSession()->GetPlayer()->GetGUID());
  390. +        }
  391. +        return true;
  392. +    }
  393. +
  394. +    static bool HandlePremiumMailCommand(ChatHandler* handler, char const* /*args*/)
  395. +    {
  396. +        Player* player = handler->GetSession()->GetPlayer();
  397. +        if (player->GetSession()->IsPremium() && sWorld->getBoolConfig(COMMAND_MAIL_PREMIUM))
  398. +        {
  399. +            //Different Checks
  400. +            if (player->IsInCombat() || player->IsInFlight() || player->GetMap()->IsBattlegroundOrArena() || player->HasStealthAura() || player->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH) || player->isDead())
  401. +            {
  402. +                handler->SendSysMessage(LANG_PREMIUM_CANT_DO);
  403. +                handler->SetSentErrorMessage(true);
  404. +                return false;
  405. +            }
  406. +
  407. +            handler->GetSession()->SendShowMailBox(player->GetGUID());
  408. +        }
  409. +        return true;
  410. +    }
  411. +
  412. +    //static bool HandlePremiumAuctionCommand(ChatHandler* handler, char const* /*args*/)
  413. +    //{
  414. +        //Player* player = handler->GetSession()->GetPlayer();
  415. +        //if(player->GetSession()->IsPremium())
  416. +        //{
  417. +            //Different Checks
  418. +            //if(player->IsInCombat() || player->IsInFlight() || player->GetMap()->IsBattlegroundOrArena() || player->HasStealthAura() || player->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH) || player->isDead())
  419. +            //{
  420. +            //    handler->SendSysMessage(LANG_PREMIUM_CANT_DO);
  421. +            //    handler->SetSentErrorMessage(true);
  422. +            //    return false;
  423. +            //}
  424. +
  425. +            //handler->GetSession()->SendAuctionHello(player->GetGUID());
  426. +            //handler->GetSession()->SendAuctionHello(player->getFaction());
  427. +
  428. +        //}
  429. +        //return true;
  430. +    //}
  431. +
  432. +};
  433. +
  434. +void AddSC_premium_commandscript()
  435. +{
  436. +    new premium_commandscript();
  437. +}
  438. \ No newline at end of file
  439. diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
  440. index 8a7da8c..e0b1cea 100644
  441. --- a/src/server/worldserver/worldserver.conf.dist
  442. +++ b/src/server/worldserver/worldserver.conf.dist
  443. @@ -2592,6 +2592,22 @@ CharDelete.KeepDays = 30
  444.  #
  445.  ###################################################################################################
  446.  
  447. +#    Rate.XP.Kill.Premium
  448. +#    Rate.XP.Quest.Premium
  449. +#    Rate.XP.Explore.Premium
  450. +#    Rate.Honor.Premium
  451. +#    Rate.Reputation.Gain.Premium
  452. +#        XP rates Premium modifier
  453. +#        Default: 1
  454. +
  455. +Rate.XP.Kill.Premium     = 1
  456. +Rate.XP.Quest.Premium    = 1
  457. +Rate.XP.Explore.Premium  = 1
  458. +Rate.Honor.Premium       = 1
  459. +Rate.Reputation.Premium  = 1
  460. +Command.Bank.Premium     = 1
  461. +Command.Mail.Premium     = 1
  462. +
  463.  ###################################################################################################
  464.  # CUSTOM SERVER OPTIONS
  465.  #
  466. --
  467. 2.1.4
Advertisement
Add Comment
Please, Sign In to add comment