Hi Emudevs
can someone update this patch ( vip account ) for latest trinity core 3.3.5 :angry:
Please:
can someone update this patch ( vip account ) for latest trinity core 3.3.5 :angry:
Please:
Code:
diff -r b1691a15b430 -r 1fb9ba962712 src/server/authserver/Server/AuthSocket.cpp
--- a/src/server/authserver/Server/AuthSocket.cpp Wed May 08 12:56:11 2013 +0300
+++ b/src/server/authserver/Server/AuthSocket.cpp Wed May 08 14:30:29 2013 +0300
@@ -357,6 +357,10 @@
// Verify that this IP is not in the ip_banned table
LoginDatabase.Execute(LoginDatabase.GetPreparedStatement(LOGIN_DEL_EXPIRED_IP_BANS));
+
+ LoginDatabase.Execute(
+ LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_PREMIUM)
+ );
std::string const& ip_address = socket().getRemoteAddress();
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_IP_BANNED);
diff -r b1691a15b430 -r 1fb9ba962712 src/server/game/Entities/Player/Player.cpp
--- a/src/server/game/Entities/Player/Player.cpp Wed May 08 12:56:11 2013 +0300
+++ b/src/server/game/Entities/Player/Player.cpp Wed May 08 14:30:29 2013 +0300
@@ -7024,7 +7024,8 @@
{
XP = uint32(sObjectMgr->GetBaseXP(areaEntry->area_level)*sWorld->getRate(RATE_XP_EXPLORE));
}
-
+ if(GetSession()->IsPremium())
+ XP *= sWorld->getRate(RATE_XP_EXPLORE_VIP);
GiveXP(XP, NULL);
SendExplorationExperience(area, XP);
}
@@ -7371,6 +7372,8 @@
}
honor_f *= sWorld->getRate(RATE_HONOR);
+ if(GetSession()->IsPremium())
+ honor_f *= sWorld->getRate(RATE_HONOR_VIP);
// Back to int now
honor = int32(honor_f);
// honor - for show honor points in log
@@ -15363,6 +15366,9 @@
Unit::AuraEffectList const& ModXPPctAuras = GetAuraEffectsByType(SPELL_AURA_MOD_XP_QUEST_PCT);
for (Unit::AuraEffectList::const_iterator i = ModXPPctAuras.begin(); i != ModXPPctAuras.end(); ++i)
AddPct(XP, (*i)->GetAmount());
+
+ if (GetSession()->IsPremium())
+ XP *= sWorld->getRate(RATE_XP_QUEST_VIP);
int32 moneyRew = 0;
if (getLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
diff -r b1691a15b430 -r 1fb9ba962712 src/server/game/Miscellaneous/Formulas.h
--- a/src/server/game/Miscellaneous/Formulas.h Wed May 08 12:56:11 2013 +0300
+++ b/src/server/game/Miscellaneous/Formulas.h Wed May 08 14:30:29 2013 +0300
@@ -180,7 +180,9 @@
gain *= 2;
}
- gain = uint32(gain * sWorld->getRate(RATE_XP_KILL));
+ float premium_rate = player->GetSession()->IsPremium() ? sWorld->getRate(RATE_XP_KILL_VIP) : 1.0f;
+
+ return uint32(gain*sWorld->getRate(RATE_XP_KILL)*premium_rate);
}
sScriptMgr->OnGainCalculation(gain, player, u);
diff -r b1691a15b430 -r 1fb9ba962712 src/server/game/Reputation/ReputationMgr.cpp
--- a/src/server/game/Reputation/ReputationMgr.cpp Wed May 08 12:56:11 2013 +0300
+++ b/src/server/game/Reputation/ReputationMgr.cpp Wed May 08 14:30:29 2013 +0300
@@ -364,7 +364,11 @@
{
// int32 *= float cause one point loss?
standing = int32(floor((float)standing * sWorld->getRate(RATE_REPUTATION_GAIN) + 0.5f));
- standing += itr->second.Standing + BaseRep;
+
+ if(_player->GetSession()->IsPremium())
+ standing = int32(floor((float)standing * sWorld->getRate(RATE_REPUTATION_GAIN_VIP) + 0.5f));
+
+ standing += itr->second.Standing + BaseRep;
}
if (standing > Reputation_Cap)
diff -r b1691a15b430 -r 1fb9ba962712 src/server/game/Server/WorldSession.cpp
--- a/src/server/game/Server/WorldSession.cpp Wed May 08 12:56:11 2013 +0300
+++ b/src/server/game/Server/WorldSession.cpp Wed May 08 14:30:29 2013 +0300
@@ -96,12 +96,13 @@
}
/// WorldSession constructor
-WorldSession::WorldSession(uint32 id, WorldSocket* sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter, bool isARecruiter):
+WorldSession::WorldSession(uint32 id, 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),
_player(NULL),
m_Socket(sock),
_security(sec),
+ _ispremium(ispremium),
_accountId(id),
m_expansion(expansion),
_warden(NULL),
diff -r b1691a15b430 -r 1fb9ba962712 src/server/game/Server/WorldSession.h
--- a/src/server/game/Server/WorldSession.h Wed May 08 12:56:11 2013 +0300
+++ b/src/server/game/Server/WorldSession.h Wed May 08 14:30:29 2013 +0300
@@ -191,7 +191,7 @@
class WorldSession
{
public:
- WorldSession(uint32 id, WorldSocket* sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter, bool isARecruiter);
+ WorldSession(uint32 id, 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; }
@@ -223,6 +223,7 @@
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;
@@ -937,6 +938,7 @@
AccountTypes _security;
uint32 _accountId;
uint8 m_expansion;
+ bool _ispremium;
typedef std::list<AddonInfo> AddonsList;
diff -r b1691a15b430 -r 1fb9ba962712 src/server/game/Server/WorldSocket.cpp
--- a/src/server/game/Server/WorldSocket.cpp Wed May 08 12:56:11 2013 +0300
+++ b/src/server/game/Server/WorldSocket.cpp Wed May 08 14:30:29 2013 +0300
@@ -746,6 +746,7 @@
uint32 id;
LocaleConstant locale;
std::string account;
+ bool isPremium = false;
SHA1Hash sha;
uint32 clientBuild;
uint32 unk2, unk3, unk5, unk6, unk7;
@@ -875,6 +876,17 @@
sLog->outError(LOG_FILTER_NETWORKIO, "WorldSocket::HandleAuthSession: Sent Auth Response (Account banned).");
return -1;
}
+
+ QueryResult premresult =
+ LoginDatabase.PQuery ("SELECT 1 "
+ "FROM account_premium "
+ "WHERE id = '%u' "
+ "AND active = 1",
+ id);
+ if (premresult) // if account premium
+ {
+ isPremium = true;
+ }
// Check locked state for server
AccountTypes allowedAccountType = sWorld->GetPlayerSecurityLimit();
@@ -931,7 +943,7 @@
LoginDatabase.Execute(stmt);
// NOTE ATM the socket is single-threaded, have this in mind ...
- ACE_NEW_RETURN(m_Session, WorldSession(id, this, AccountTypes(security), expansion, mutetime, locale, recruiter, isRecruiter), -1);
+ ACE_NEW_RETURN (m_Session, WorldSession (id, this, AccountTypes(security), isPremium, expansion, mutetime, locale, recruiter, isRecruiter), -1);
m_Crypt.Init(&k);
diff -r b1691a15b430 -r 1fb9ba962712 src/server/game/World/World.cpp
--- a/src/server/game/World/World.cpp Wed May 08 12:56:11 2013 +0300
+++ b/src/server/game/World/World.cpp Wed May 08 14:30:29 2013 +0300
@@ -461,8 +461,11 @@
rate_values[RATE_DROP_ITEM_REFERENCED_AMOUNT] = ConfigMgr::GetFloatDefault("Rate.Drop.Item.ReferencedAmount", 1.0f);
rate_values[RATE_DROP_MONEY] = ConfigMgr::GetFloatDefault("Rate.Drop.Money", 1.0f);
rate_values[RATE_XP_KILL] = ConfigMgr::GetFloatDefault("Rate.XP.Kill", 1.0f);
+ rate_values[RATE_XP_KILL_VIP] = ConfigMgr::GetFloatDefault("Rate.XP.Kill.VIP", 1.0f);
rate_values[RATE_XP_QUEST] = ConfigMgr::GetFloatDefault("Rate.XP.Quest", 1.0f);
+ rate_values[RATE_XP_QUEST_VIP] = ConfigMgr::GetFloatDefault("Rate.XP.Quest.VIP", 1.0f);
rate_values[RATE_XP_EXPLORE] = ConfigMgr::GetFloatDefault("Rate.XP.Explore", 1.0f);
+ rate_values[RATE_XP_EXPLORE_VIP] = ConfigMgr::GetFloatDefault("Rate.XP.Explore.VIP", 1.0f);
rate_values[RATE_REPAIRCOST] = ConfigMgr::GetFloatDefault("Rate.RepairCost", 1.0f);
if (rate_values[RATE_REPAIRCOST] < 0.0f)
{
@@ -470,6 +473,7 @@
rate_values[RATE_REPAIRCOST] = 0.0f;
}
rate_values[RATE_REPUTATION_GAIN] = ConfigMgr::GetFloatDefault("Rate.Reputation.Gain", 1.0f);
+ rate_values[RATE_REPUTATION_GAIN_VIP] = ConfigMgr::GetFloatDefault("Rate.Reputation.Gain.VIP", 1.0f);
rate_values[RATE_REPUTATION_LOWLEVEL_KILL] = ConfigMgr::GetFloatDefault("Rate.Reputation.LowLevel.Kill", 1.0f);
rate_values[RATE_REPUTATION_LOWLEVEL_QUEST] = ConfigMgr::GetFloatDefault("Rate.Reputation.LowLevel.Quest", 1.0f);
rate_values[RATE_REPUTATION_RECRUIT_A_FRIEND_BONUS] = ConfigMgr::GetFloatDefault("Rate.Reputation.RecruitAFriendBonus", 0.1f);
@@ -497,6 +501,7 @@
rate_values[RATE_AUCTION_DEPOSIT] = ConfigMgr::GetFloatDefault("Rate.Auction.Deposit", 1.0f);
rate_values[RATE_AUCTION_CUT] = ConfigMgr::GetFloatDefault("Rate.Auction.Cut", 1.0f);
rate_values[RATE_HONOR] = ConfigMgr::GetFloatDefault("Rate.Honor", 1.0f);
+ rate_values[RATE_HONOR_VIP] = ConfigMgr::GetFloatDefault("Rate.Honor.VIP", 1.0f);
rate_values[RATE_INSTANCE_RESET_TIME] = ConfigMgr::GetFloatDefault("Rate.InstanceResetTime", 1.0f);
rate_values[RATE_TALENT] = ConfigMgr::GetFloatDefault("Rate.Talent", 1.0f);
if (rate_values[RATE_TALENT] < 0.0f)
diff -r b1691a15b430 -r 1fb9ba962712 src/server/game/World/World.h
--- a/src/server/game/World/World.h Wed May 08 12:56:11 2013 +0300
+++ b/src/server/game/World/World.h Wed May 08 14:30:29 2013 +0300
@@ -359,10 +359,14 @@
RATE_DROP_ITEM_REFERENCED_AMOUNT,
RATE_DROP_MONEY,
RATE_XP_KILL,
+ RATE_XP_KILL_VIP,
RATE_XP_QUEST,
+ RATE_XP_QUEST_VIP,
RATE_XP_EXPLORE,
+ RATE_XP_EXPLORE_VIP,
RATE_REPAIRCOST,
RATE_REPUTATION_GAIN,
+ RATE_REPUTATION_GAIN_VIP,
RATE_REPUTATION_LOWLEVEL_KILL,
RATE_REPUTATION_LOWLEVEL_QUEST,
RATE_REPUTATION_RECRUIT_A_FRIEND_BONUS,
@@ -390,6 +394,7 @@
RATE_AUCTION_DEPOSIT,
RATE_AUCTION_CUT,
RATE_HONOR,
+ RATE_HONOR_VIP,
RATE_TALENT,
RATE_CORPSE_DECAY_LOOTED,
RATE_INSTANCE_RESET_TIME,
diff -r b1691a15b430 -r 1fb9ba962712 src/server/shared/Database/Implementation/LoginDatabase.cpp
--- a/src/server/shared/Database/Implementation/LoginDatabase.cpp Wed May 08 12:56:11 2013 +0300
+++ b/src/server/shared/Database/Implementation/LoginDatabase.cpp Wed May 08 14:30:29 2013 +0300
@@ -52,6 +52,7 @@
PrepareStatement(LOGIN_DEL_IP_NOT_BANNED, "DELETE FROM ip_banned WHERE ip = ?", CONNECTION_ASYNC);
PrepareStatement(LOGIN_INS_ACCOUNT_BANNED, "INSERT INTO account_banned VALUES (?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()+?, ?, ?, 1)", CONNECTION_ASYNC);
PrepareStatement(LOGIN_UPD_ACCOUNT_NOT_BANNED, "UPDATE account_banned SET active = 0 WHERE id = ? AND active != 0", CONNECTION_ASYNC);
+ PrepareStatement(LOGIN_UPD_ACCOUNT_PREMIUM, "UPDATE account_premium SET active = 0 WHERE unsetdate<=UNIX_TIMESTAMP() AND unsetdate<>setdate", CONNECTION_ASYNC);
PrepareStatement(LOGIN_DEL_REALM_CHARACTERS_BY_REALM, "DELETE FROM realmcharacters WHERE acctid = ? AND realmid = ?", CONNECTION_ASYNC);
PrepareStatement(LOGIN_DEL_REALM_CHARACTERS, "DELETE FROM realmcharacters WHERE acctid = ?", CONNECTION_ASYNC);
PrepareStatement(LOGIN_INS_REALM_CHARACTERS, "INSERT INTO realmcharacters (numchars, acctid, realmid) VALUES (?, ?, ?)", CONNECTION_ASYNC);
diff -r b1691a15b430 -r 1fb9ba962712 src/server/shared/Database/Implementation/LoginDatabase.h
--- a/src/server/shared/Database/Implementation/LoginDatabase.h Wed May 08 12:56:11 2013 +0300
+++ b/src/server/shared/Database/Implementation/LoginDatabase.h Wed May 08 14:30:29 2013 +0300
@@ -72,6 +72,7 @@
LOGIN_SEL_ACCOUNT_BY_ID,
LOGIN_INS_ACCOUNT_BANNED,
LOGIN_UPD_ACCOUNT_NOT_BANNED,
+ LOGIN_UPD_ACCOUNT_PREMIUM,
LOGIN_DEL_REALM_CHARACTERS_BY_REALM,
LOGIN_DEL_REALM_CHARACTERS,
LOGIN_INS_REALM_CHARACTERS,
diff -r b1691a15b430 -r 1fb9ba962712 src/server/worldserver/worldserver.conf.dist
--- a/src/server/worldserver/worldserver.conf.dist Wed May 08 12:56:11 2013 +0300
+++ b/src/server/worldserver/worldserver.conf.dist Wed May 08 14:30:29 2013 +0300
@@ -2884,4 +2884,24 @@
DuelReset.Cooldown.Reset.Energy.OnStart = 0
#
+###################################################################################################
+
+###################################################################################################
+# VIP CONFIG
+#
+# Rate.XP.Kill.VIP
+# Rate.XP.Quest.VIP
+# Rate.XP.Explore.VIP
+# Rate.Honor.VIP
+# Rate.Reputation.Gain.VIP
+# XP rates VIP modifier
+# Default: 1
+
+Rate.XP.Kill.VIP = 1
+Rate.XP.Quest.VIP = 1
+Rate.XP.Explore.VIP = 1
+Rate.Honor.Premium = 1
+Rate.Reputation.Gain.VIP = 1
+
+#
###################################################################################################
\ No newline at end of