mirror of
https://github.com/ornfelt/azerothcore_lua_scripts
synced 2026-08-22 06:26:03 -04:00
454 lines
20 KiB
Diff
454 lines
20 KiB
Diff
From d0701846903fad6cf94f950dde89a3f89200398b Mon Sep 17 00:00:00 2001
|
|
From: LordPsyan <realmsofwarcraft@gmail.com>
|
|
Date: Mon, 29 Feb 2016 07:58:47 -0600
|
|
Subject: [PATCH] 2016_02_29-VIP
|
|
|
|
---
|
|
sql/TrinityCore-Patches/VIP/account_premium.sql | 22 ++++++
|
|
.../Database/Implementation/LoginDatabase.cpp | 4 +-
|
|
.../Database/Implementation/LoginDatabase.h | 3 +
|
|
src/server/game/Entities/Player/Player.cpp | 9 ++-
|
|
src/server/game/Miscellaneous/Formulas.h | 5 +-
|
|
src/server/game/Miscellaneous/Language.h | 2 +-
|
|
src/server/game/Reputation/ReputationMgr.cpp | 4 +
|
|
src/server/game/Server/WorldSession.cpp | 3 +-
|
|
src/server/game/Server/WorldSession.h | 4 +-
|
|
src/server/game/Server/WorldSocket.cpp | 14 +++-
|
|
src/server/game/World/World.cpp | 9 +++
|
|
src/server/game/World/World.h | 9 +++
|
|
src/server/scripts/Custom/cs_premium.cpp | 88 ++++++++++++++++++++++
|
|
src/server/scripts/Custom/custom_script_loader.cpp | 6 +-
|
|
src/server/worldserver/worldserver.conf.dist | 16 ++++
|
|
15 files changed, 187 insertions(+), 11 deletions(-)
|
|
create mode 100644 sql/TrinityCore-Patches/VIP/account_premium.sql
|
|
create mode 100644 src/server/scripts/Custom/cs_premium.cpp
|
|
|
|
diff --git a/sql/TrinityCore-Patches/VIP/account_premium.sql b/sql/TrinityCore-Patches/VIP/account_premium.sql
|
|
new file mode 100644
|
|
index 0000000..770380c
|
|
--- /dev/null
|
|
+++ b/sql/TrinityCore-Patches/VIP/account_premium.sql
|
|
@@ -0,0 +1,22 @@
|
|
+CREATE TABLE IF NOT EXISTS `auth`.`account_premium` (
|
|
+ `id` int(11) NOT NULL DEFAULT '0' COMMENT 'Account id',
|
|
+ `setdate` int(4) NOT NULL DEFAULT '0',
|
|
+ `unsetdate` int(4) NOT NULL DEFAULT '0',
|
|
+ `premium_type` tinyint(4) unsigned NOT NULL DEFAULT '1',
|
|
+ `active` tinyint(4) NOT NULL DEFAULT '1',
|
|
+ PRIMARY KEY (`id`),
|
|
+ KEY `active` (`active`),
|
|
+ KEY `setdate` (`setdate`),
|
|
+ KEY `unsetdate` (`unsetdate`)
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
+
|
|
+
|
|
+INSERT INTO `auth`.`rbac_permissions` (`id`, `name`) VALUES
|
|
+(999, 'Command: vip');
|
|
+
|
|
+INSERT INTO `auth`.`rbac_linked_permissions` (`id`, `linkedId`) VALUES
|
|
+(195, 999);
|
|
+
|
|
+INSERT INTO `world`.`command` (`name`, `permission`, `help`) VALUES
|
|
+('vip bank', 999, 'Syntax: .vip bank'),
|
|
+('vip mail', 999, 'Syntax: .vip mail');
|
|
\ No newline at end of file
|
|
diff --git a/src/server/database/Database/Implementation/LoginDatabase.cpp b/src/server/database/Database/Implementation/LoginDatabase.cpp
|
|
index 2749c08..7985d4b 100644
|
|
--- a/src/server/database/Database/Implementation/LoginDatabase.cpp
|
|
+++ b/src/server/database/Database/Implementation/LoginDatabase.cpp
|
|
@@ -110,8 +110,10 @@ void LoginDatabaseConnection::DoPrepareStatements()
|
|
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);
|
|
// 0: string, 1: string, 2: string // Complete name: "Login_Insert_Failed_Account_Login_due_password_IP_Logging"
|
|
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);
|
|
- 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);
|
|
+ PrepareStatement(LOGIN_UPD_EXPIRED_ACCOUNT_PREMIUM, "UPDATE account_premium SET active = 0 WHERE unsetdate<=UNIX_TIMESTAMP() AND unsetdate<>setdate", CONNECTION_SYNCH);
|
|
+ PrepareStatement(LOGIN_SEL_PREMIUM, "SELECT 1 FROM account_premium WHERE id = ? AND active = 1", CONNECTION_SYNCH);
|
|
|
|
+ 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);
|
|
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_BOTH);
|
|
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);
|
|
PrepareStatement(LOGIN_DEL_RBAC_ACCOUNT_PERMISSION, "DELETE FROM rbac_account_permissions WHERE accountId = ? AND permissionId = ? AND (realmId = ? OR realmId = -1)", CONNECTION_ASYNC);
|
|
diff --git a/src/server/database/Database/Implementation/LoginDatabase.h b/src/server/database/Database/Implementation/LoginDatabase.h
|
|
index a3789fa..8aa7be5 100644
|
|
--- a/src/server/database/Database/Implementation/LoginDatabase.h
|
|
+++ b/src/server/database/Database/Implementation/LoginDatabase.h
|
|
@@ -106,6 +106,9 @@ enum LoginDatabaseStatements
|
|
LOGIN_INS_CHAR_IP_LOGGING,
|
|
LOGIN_INS_FALP_IP_LOGGING,
|
|
|
|
+ LOGIN_UPD_EXPIRED_ACCOUNT_PREMIUM,
|
|
+ LOGIN_SEL_PREMIUM,
|
|
+
|
|
LOGIN_SEL_ACCOUNT_ACCESS_BY_ID,
|
|
LOGIN_SEL_RBAC_ACCOUNT_PERMISSIONS,
|
|
LOGIN_INS_RBAC_ACCOUNT_PERMISSION,
|
|
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
|
|
index 7190a80..db3f63e 100644
|
|
--- a/src/server/game/Entities/Player/Player.cpp
|
|
+++ b/src/server/game/Entities/Player/Player.cpp
|
|
@@ -6541,6 +6541,9 @@ void Player::CheckAreaExploreAndOutdoor()
|
|
XP = uint32(sObjectMgr->GetBaseXP(areaEntry->area_level)*sWorld->getRate(RATE_XP_EXPLORE));
|
|
}
|
|
|
|
+ if(GetSession()->IsPremium())
|
|
+ XP *= sWorld->getRate(RATE_XP_EXPLORE_PREMIUM);
|
|
+
|
|
GiveXP(XP, NULL);
|
|
SendExplorationExperience(areaId, XP);
|
|
}
|
|
@@ -6910,7 +6913,8 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto
|
|
// 34
|
|
// 35
|
|
// 36
|
|
- // 37
|
|
+ if(GetSession()->IsPremium())
|
|
+ honor_f *= sWorld->getRate(RATE_HONOR_PREMIUM);
|
|
// 38
|
|
// 39
|
|
// 40
|
|
@@ -15040,7 +15044,8 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
|
// 49
|
|
// 50
|
|
// 51
|
|
- // 52
|
|
+ if (GetSession()->IsPremium())
|
|
+ XP *= sWorld->getRate(RATE_XP_QUEST_PREMIUM);
|
|
// 53
|
|
// 54
|
|
// 55
|
|
diff --git a/src/server/game/Miscellaneous/Formulas.h b/src/server/game/Miscellaneous/Formulas.h
|
|
index 451883c..1571913 100644
|
|
--- a/src/server/game/Miscellaneous/Formulas.h
|
|
+++ b/src/server/game/Miscellaneous/Formulas.h
|
|
@@ -27,7 +27,7 @@
|
|
// Prepatch by LordPsyan
|
|
// 01
|
|
// 02
|
|
-// 03
|
|
+#include "WorldSession.h"
|
|
// 04
|
|
// 05
|
|
// 06
|
|
@@ -238,6 +238,9 @@ namespace Trinity
|
|
if (creature && creature->m_PlayerDamageReq) // if players dealt less than 50% of the damage and were credited anyway (due to CREATURE_FLAG_EXTRA_NO_PLAYER_DAMAGE_REQ), scale XP gained appropriately (linear scaling)
|
|
xpMod *= 1.0f - 2.0f*creature->m_PlayerDamageReq / creature->GetMaxHealth();
|
|
|
|
+ if(player->GetSession()->IsPremium())
|
|
+ xpMod *= sWorld->getRate(RATE_XP_KILL_PREMIUM);
|
|
+
|
|
gain = uint32(gain * xpMod);
|
|
}
|
|
}
|
|
diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h
|
|
index 73a9905..d19eb4b 100644
|
|
--- a/src/server/game/Miscellaneous/Language.h
|
|
+++ b/src/server/game/Miscellaneous/Language.h
|
|
@@ -1206,7 +1206,7 @@ enum TrinityStrings
|
|
// 15
|
|
// 16
|
|
// 17
|
|
- // 18
|
|
+ LANG_PREMIUM_CANT_DO = 12009,
|
|
// 19
|
|
// 20
|
|
// Visit http://www.realmsofwarcraft.com/bb for forums and information
|
|
diff --git a/src/server/game/Reputation/ReputationMgr.cpp b/src/server/game/Reputation/ReputationMgr.cpp
|
|
index fb2873f..e274d04 100644
|
|
--- a/src/server/game/Reputation/ReputationMgr.cpp
|
|
+++ b/src/server/game/Reputation/ReputationMgr.cpp
|
|
@@ -367,6 +367,10 @@ bool ReputationMgr::SetOneFactionReputation(FactionEntry const* factionEntry, in
|
|
{
|
|
// int32 *= float cause one point loss?
|
|
standing = int32(floor((float)standing * sWorld->getRate(RATE_REPUTATION_GAIN) + 0.5f));
|
|
+
|
|
+ if(_player->GetSession()->IsPremium())
|
|
+ standing *= sWorld->getRate(RATE_REPUTATION_PREMIUM);
|
|
+
|
|
standing += itr->second.Standing + BaseRep;
|
|
}
|
|
|
|
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
|
|
index c380c1a..324b205 100644
|
|
--- a/src/server/game/Server/WorldSession.cpp
|
|
+++ b/src/server/game/Server/WorldSession.cpp
|
|
@@ -95,7 +95,7 @@ bool WorldSessionFilter::Process(WorldPacket* packet)
|
|
}
|
|
|
|
/// WorldSession constructor
|
|
-WorldSession::WorldSession(uint32 id, std::string&& name, std::shared_ptr<WorldSocket> sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter, bool isARecruiter):
|
|
+WorldSession::WorldSession(uint32 id, std::string&& name, std::shared_ptr<WorldSocket> sock, AccountTypes sec, bool ispremium, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter, bool isARecruiter):
|
|
m_muteTime(mute_time),
|
|
m_timeOutTime(0),
|
|
AntiDOS(this),
|
|
@@ -103,6 +103,7 @@ WorldSession::WorldSession(uint32 id, std::string&& name, std::shared_ptr<WorldS
|
|
_player(NULL),
|
|
m_Socket(sock),
|
|
_security(sec),
|
|
+ _ispremium(ispremium),
|
|
_accountId(id),
|
|
_accountName(std::move(name)),
|
|
m_expansion(expansion),
|
|
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
|
|
index 2253b6b..fb64704 100644
|
|
--- a/src/server/game/Server/WorldSession.h
|
|
+++ b/src/server/game/Server/WorldSession.h
|
|
@@ -249,7 +249,7 @@ struct PacketCounter
|
|
class WorldSession
|
|
{
|
|
public:
|
|
- WorldSession(uint32 id, std::string&& name, std::shared_ptr<WorldSocket> sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter, bool isARecruiter);
|
|
+ WorldSession(uint32 id, std::string&& name, std::shared_ptr<WorldSocket> sock, AccountTypes sec, bool ispremium, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter, bool isARecruiter);
|
|
~WorldSession();
|
|
|
|
bool PlayerLoading() const { return m_playerLoading; }
|
|
@@ -286,6 +286,7 @@ class WorldSession
|
|
void InvalidateRBACData(); // Used to force LoadPermissions at next HasPermission check
|
|
|
|
AccountTypes GetSecurity() const { return _security; }
|
|
+ bool IsPremium() const { return _ispremium; }
|
|
uint32 GetAccountId() const { return _accountId; }
|
|
Player* GetPlayer() const { return _player; }
|
|
std::string const& GetPlayerName() const;
|
|
@@ -1040,6 +1041,7 @@ class WorldSession
|
|
uint32 _accountId;
|
|
std::string _accountName;
|
|
uint8 m_expansion;
|
|
+ bool _ispremium;
|
|
|
|
typedef std::list<AddonInfo> AddonsList;
|
|
|
|
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
|
|
index 3602911..45df331 100644
|
|
--- a/src/server/game/Server/WorldSocket.cpp
|
|
+++ b/src/server/game/Server/WorldSocket.cpp
|
|
@@ -477,7 +477,7 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<AuthSession> authSes
|
|
|
|
// Check that Key and account name are the same on client and server
|
|
uint32 t = 0;
|
|
-
|
|
+ bool isPremium = false;
|
|
SHA1Hash sha;
|
|
sha.UpdateData(authSession->Account);
|
|
sha.UpdateData((uint8*)&t, 4);
|
|
@@ -541,6 +541,16 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<AuthSession> authSes
|
|
return;
|
|
}
|
|
|
|
+ // Check premium
|
|
+ stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PREMIUM);
|
|
+ stmt->setUInt32(0, account.Id);
|
|
+ PreparedQueryResult premresult = LoginDatabase.Query(stmt);
|
|
+
|
|
+ if (premresult)
|
|
+ {
|
|
+ isPremium = true;
|
|
+ }
|
|
+
|
|
// Check locked state for server
|
|
AccountTypes allowedAccountType = sWorld->GetPlayerSecurityLimit();
|
|
TC_LOG_DEBUG("network", "Allowed Level: %u Player Level %u", allowedAccountType, account.Security);
|
|
@@ -568,7 +578,7 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<AuthSession> authSes
|
|
|
|
_authed = true;
|
|
_worldSession = new WorldSession(account.Id, std::move(authSession->Account), shared_from_this(), account.Security,
|
|
- account.Expansion, mutetime, account.Locale, account.Recruiter, account.IsRectuiter);
|
|
+ isPremium, account.Expansion, mutetime, account.Locale, account.Recruiter, account.IsRectuiter);
|
|
_worldSession->ReadAddonsInfo(authSession->AddonInfo);
|
|
|
|
// Initialize Warden system only if it is enabled by config
|
|
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
|
|
index f904f30..6c2f49a 100644
|
|
--- a/src/server/game/World/World.cpp
|
|
+++ b/src/server/game/World/World.cpp
|
|
@@ -472,6 +472,15 @@ void World::LoadConfigSettings(bool reload)
|
|
rate_values[RATE_XP_BG_KILL] = sConfigMgr->GetFloatDefault("Rate.XP.BattlegroundKill", 1.0f);
|
|
rate_values[RATE_XP_QUEST] = sConfigMgr->GetFloatDefault("Rate.XP.Quest", 1.0f);
|
|
rate_values[RATE_XP_EXPLORE] = sConfigMgr->GetFloatDefault("Rate.XP.Explore", 1.0f);
|
|
+
|
|
+ rate_values[RATE_XP_KILL_PREMIUM] = sConfigMgr->GetFloatDefault("Rate.XP.Kill.Premium", 1.0f);
|
|
+ rate_values[RATE_XP_QUEST_PREMIUM] = sConfigMgr->GetFloatDefault("Rate.XP.Quest.Premium", 1.0f);
|
|
+ rate_values[RATE_XP_EXPLORE_PREMIUM] = sConfigMgr->GetFloatDefault("Rate.XP.Explore.Premium", 1.0f);
|
|
+ rate_values[RATE_REPUTATION_PREMIUM] = sConfigMgr->GetFloatDefault("Rate.Reputation.Premium", 1.0f);
|
|
+ rate_values[RATE_HONOR_PREMIUM] = sConfigMgr->GetFloatDefault("Rate.Honor.Premium", 1.0f);
|
|
+ m_bool_configs[COMMAND_BANK_PREMIUM] = sConfigMgr->GetFloatDefault("Command.Bank.Premium", false);
|
|
+ m_bool_configs[COMMAND_MAIL_PREMIUM] = sConfigMgr->GetFloatDefault("Command.Mail.Premium", false);
|
|
+
|
|
rate_values[RATE_REPAIRCOST] = sConfigMgr->GetFloatDefault("Rate.RepairCost", 1.0f);
|
|
if (rate_values[RATE_REPAIRCOST] < 0.0f)
|
|
{
|
|
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
|
|
index 492a3bd..d6c16e3 100644
|
|
--- a/src/server/game/World/World.h
|
|
+++ b/src/server/game/World/World.h
|
|
@@ -98,6 +98,8 @@ enum WorldBoolConfigs
|
|
CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD,
|
|
CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION,
|
|
CONFIG_ALLOW_TWO_SIDE_TRADE,
|
|
+ COMMAND_BANK_PREMIUM,
|
|
+ COMMAND_MAIL_PREMIUM,
|
|
CONFIG_ALL_TAXI_PATHS,
|
|
CONFIG_INSTANT_TAXI,
|
|
CONFIG_INSTANCE_IGNORE_LEVEL,
|
|
@@ -499,6 +501,13 @@ enum Rates
|
|
RATE_XP_BG_KILL,
|
|
RATE_XP_QUEST,
|
|
RATE_XP_EXPLORE,
|
|
+
|
|
+ RATE_XP_KILL_PREMIUM,
|
|
+ RATE_XP_QUEST_PREMIUM,
|
|
+ RATE_XP_EXPLORE_PREMIUM,
|
|
+ RATE_REPUTATION_PREMIUM,
|
|
+ RATE_HONOR_PREMIUM,
|
|
+
|
|
RATE_REPAIRCOST,
|
|
RATE_REPUTATION_GAIN,
|
|
RATE_REPUTATION_LOWLEVEL_KILL,
|
|
diff --git a/src/server/scripts/Custom/cs_premium.cpp b/src/server/scripts/Custom/cs_premium.cpp
|
|
new file mode 100644
|
|
index 0000000..f85ea26
|
|
--- /dev/null
|
|
+++ b/src/server/scripts/Custom/cs_premium.cpp
|
|
@@ -0,0 +1,88 @@
|
|
+#include "Language.h"
|
|
+#include "World.h"
|
|
+//#include "AuctionHouseMgr.h"
|
|
+
|
|
+class premium_commandscript : public CommandScript
|
|
+{
|
|
+public:
|
|
+ premium_commandscript() : CommandScript("premium_commandscript") { }
|
|
+
|
|
+ std::vector<ChatCommand> GetCommands() const override
|
|
+ {
|
|
+ static std::vector<ChatCommand> premiumCommandTable =
|
|
+ {
|
|
+ { "bank", SEC_PLAYER, false, &HandlePremiumBankCommand, "" },
|
|
+ { "mail", SEC_PLAYER, false, &HandlePremiumMailCommand, "" },
|
|
+ //{ "auc", SEC_PLAYER, false, &HandlePremiumAuctionCommand, "", NULL },
|
|
+ };
|
|
+
|
|
+ static std::vector<ChatCommand> commandTable =
|
|
+ {
|
|
+ { "vip", SEC_PLAYER, false, NULL, "", premiumCommandTable },
|
|
+ };
|
|
+
|
|
+ return commandTable;
|
|
+ }
|
|
+
|
|
+ static bool HandlePremiumBankCommand(ChatHandler* handler, char const* /*args*/)
|
|
+ {
|
|
+ Player *player = handler->GetSession()->GetPlayer();
|
|
+ if (player->GetSession()->IsPremium() && sWorld->getBoolConfig(COMMAND_BANK_PREMIUM))
|
|
+ {
|
|
+ //Different Checks
|
|
+ if (player->IsInCombat() || player->IsInFlight() || player->GetMap()->IsBattlegroundOrArena() || player->HasStealthAura() || player->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH) || player->isDead())
|
|
+ {
|
|
+ handler->SendSysMessage(LANG_PREMIUM_CANT_DO);
|
|
+ handler->SetSentErrorMessage(true);
|
|
+ return false;
|
|
+ }
|
|
+
|
|
+ handler->GetSession()->SendShowBank(handler->GetSession()->GetPlayer()->GetGUID());
|
|
+ }
|
|
+ return true;
|
|
+ }
|
|
+
|
|
+ static bool HandlePremiumMailCommand(ChatHandler* handler, char const* /*args*/)
|
|
+ {
|
|
+ Player* player = handler->GetSession()->GetPlayer();
|
|
+ if (player->GetSession()->IsPremium() && sWorld->getBoolConfig(COMMAND_MAIL_PREMIUM))
|
|
+ {
|
|
+ //Different Checks
|
|
+ if (player->IsInCombat() || player->IsInFlight() || player->GetMap()->IsBattlegroundOrArena() || player->HasStealthAura() || player->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH) || player->isDead())
|
|
+ {
|
|
+ handler->SendSysMessage(LANG_PREMIUM_CANT_DO);
|
|
+ handler->SetSentErrorMessage(true);
|
|
+ return false;
|
|
+ }
|
|
+
|
|
+ handler->GetSession()->SendShowMailBox(player->GetGUID());
|
|
+ }
|
|
+ return true;
|
|
+ }
|
|
+
|
|
+ //static bool HandlePremiumAuctionCommand(ChatHandler* handler, char const* /*args*/)
|
|
+ //{
|
|
+ //Player* player = handler->GetSession()->GetPlayer();
|
|
+ //if(player->GetSession()->IsPremium())
|
|
+ //{
|
|
+ //Different Checks
|
|
+ //if(player->IsInCombat() || player->IsInFlight() || player->GetMap()->IsBattlegroundOrArena() || player->HasStealthAura() || player->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH) || player->isDead())
|
|
+ //{
|
|
+ // handler->SendSysMessage(LANG_PREMIUM_CANT_DO);
|
|
+ // handler->SetSentErrorMessage(true);
|
|
+ // return false;
|
|
+ //}
|
|
+
|
|
+ //handler->GetSession()->SendAuctionHello(player->GetGUID());
|
|
+ //handler->GetSession()->SendAuctionHello(player->getFaction());
|
|
+
|
|
+ //}
|
|
+ //return true;
|
|
+ //}
|
|
+
|
|
+};
|
|
+
|
|
+void AddSC_premium_commandscript()
|
|
+{
|
|
+ new premium_commandscript();
|
|
+}
|
|
\ No newline at end of file
|
|
diff --git a/src/server/scripts/Custom/custom_script_loader.cpp b/src/server/scripts/Custom/custom_script_loader.cpp
|
|
index 0592bb5..ec9ff67 100644
|
|
--- a/src/server/scripts/Custom/custom_script_loader.cpp
|
|
+++ b/src/server/scripts/Custom/custom_script_loader.cpp
|
|
@@ -167,7 +167,8 @@
|
|
// start149
|
|
// start150
|
|
// start151
|
|
-// start152
|
|
+// VIP
|
|
+void AddSC_premium_commandscript();
|
|
// start153
|
|
// start154
|
|
// start155
|
|
@@ -372,7 +373,8 @@ void AddCustomScripts()
|
|
// end149
|
|
// end150
|
|
// end151
|
|
-// end152
|
|
+// VIP
|
|
+ AddSC_premium_commandscript();
|
|
// end153
|
|
// end154
|
|
// end155
|
|
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
|
|
index 4837a24..083827b 100644
|
|
--- a/src/server/worldserver/worldserver.conf.dist
|
|
+++ b/src/server/worldserver/worldserver.conf.dist
|
|
@@ -2680,6 +2680,22 @@ CharDelete.KeepDays = 30
|
|
#
|
|
###################################################################################################
|
|
|
|
+# Rate.XP.Kill.Premium
|
|
+# Rate.XP.Quest.Premium
|
|
+# Rate.XP.Explore.Premium
|
|
+# Rate.Honor.Premium
|
|
+# Rate.Reputation.Gain.Premium
|
|
+# XP rates Premium modifier
|
|
+# Default: 1
|
|
+
|
|
+Rate.XP.Kill.Premium = 1
|
|
+Rate.XP.Quest.Premium = 1
|
|
+Rate.XP.Explore.Premium = 1
|
|
+Rate.Honor.Premium = 1
|
|
+Rate.Reputation.Premium = 1
|
|
+Command.Bank.Premium = 1
|
|
+Command.Mail.Premium = 1
|
|
+
|
|
###################################################################################################
|
|
# CUSTOM SERVER OPTIONS
|
|
#
|
|
--
|
|
2.1.4
|
|
|