Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 25.06.2011, 06:48   #1
 Разведчик
Аватар для Gors
 
Gors никому не известный тип
Регистрация: 23.06.2011
Сообщений: 10
Популярность: 16
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 2 сообщениях
 
По умолчанию [Trinity Core] Патч на V.I.P аккаунт

Патч на V.I.P аккаунт

Думаю куда сувать и что с ним делать писать не стоит.

Код:
diff -r 06dff18c14c6 sql/updates/xxxx_01_realm_premium_accounts.sql
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sql/updates/xxxx_01_realm_premium_accounts.sql	Sun Mar 21 11:25:32 2010 +0600
@@ -0,0 +1,8 @@
+CREATE TABLE IF NOT EXISTS `account_premium` (
+  `id` int(11) NOT NULL default '0' COMMENT 'Account id',
+  `setdate` bigint(40) NOT NULL default '0',
+  `unsetdate` bigint(40) NOT NULL default '0',
+  `premium_type` tinyint(4) unsigned NOT NULL default '1',
+  `active` tinyint(4) NOT NULL default '1',
+  PRIMARY KEY  (`id`,`setdate`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Premium Accounts';
\ No newline at end of file
diff -r 06dff18c14c6 src/game/AuctionHouseBot.cpp
--- a/src/game/AuctionHouseBot.cpp	Sat Mar 20 14:23:18 2010 +0600
+++ b/src/game/AuctionHouseBot.cpp	Sun Mar 21 11:25:32 2010 +0600
@@ -692,7 +692,7 @@
     if ((!AHBSeller) && (!AHBBuyer))
         return;
 
-    WorldSession _session(AHBplayerAccount, NULL, SEC_PLAYER, true, 0, LOCALE_enUS);
+    WorldSession _session(AHBplayerAccount, NULL, SEC_PLAYER, false, true, 0, LOCALE_enUS);
     Player _AHBplayer(&_session);
     _AHBplayer.MinimalLoadFromDB(QueryResult_AutoPtr(NULL), AHBplayerGUID);
     ObjectAccessor::Instance().AddObject(&_AHBplayer);
diff -r 06dff18c14c6 src/game/Formulas.h
--- a/src/game/Formulas.h	Sat Mar 20 14:23:18 2010 +0600
+++ b/src/game/Formulas.h	Sun Mar 21 11:25:32 2010 +0600
@@ -124,7 +124,10 @@
             if (u->GetTypeId() == TYPEID_UNIT && ((Creature*)u)->isElite())
                 xp_gain *= 2;
 
-            return uint32(xp_gain*sWorld.getRate(RATE_XP_KILL));
+	    float premium_rate = pl->GetSession()->IsPremium() ? sWorld.getRate(RATE_XP_KILL_PREMIUM) : 1.0f;
+
+            return uint32(xp_gain*sWorld.getRate(RATE_XP_KILL)*premium_rate);
+
         }
 
         inline float xp_in_group_rate(uint32 count, bool isRaid)
diff -r 06dff18c14c6 src/game/Player.cpp
--- a/src/game/Player.cpp	Sat Mar 20 14:23:18 2010 +0600
+++ b/src/game/Player.cpp	Sun Mar 21 11:25:32 2010 +0600
@@ -6136,6 +6136,8 @@
                     XP = uint32(objmgr.GetBaseXP(p->area_level)*sWorld.getRate(RATE_XP_EXPLORE));
                 }
 
+                if(GetSession()->IsPremium())
+                    XP *= sWorld.getRate(RATE_XP_EXPLORE_PREMIUM);
                 GiveXP( XP, NULL );
                 SendExplorationExperience(area,XP);
             }
@@ -14033,6 +14035,9 @@
     for (Unit::AuraEffectList::const_iterator i = ModXPPctAuras.begin(); i != ModXPPctAuras.end(); ++i)
         XP = uint32(XP*(1.0f + (*i)->GetAmount() / 100.0f));
 
+    if (GetSession()->IsPremium())
+        XP *= sWorld.getRate(RATE_XP_QUEST_PREMIUM);
+
     if (getLevel() < sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL))
         GiveXP(XP, NULL);
     else
diff -r 06dff18c14c6 src/game/World.cpp
--- a/src/game/World.cpp	Sat Mar 20 14:23:18 2010 +0600
+++ b/src/game/World.cpp	Sun Mar 21 11:25:32 2010 +0600
@@ -487,9 +487,13 @@
     rate_values[RATE_DROP_ITEM_ARTIFACT]   = sConfig.GetFloatDefault("Rate.Drop.Item.Artifact", 1.0f);
     rate_values[RATE_DROP_ITEM_REFERENCED] = sConfig.GetFloatDefault("Rate.Drop.Item.Referenced", 1.0f);
     rate_values[RATE_DROP_MONEY]  = sConfig.GetFloatDefault("Rate.Drop.Money", 1.0f);
-    rate_values[RATE_XP_KILL]     = sConfig.GetFloatDefault("Rate.XP.Kill", 1.0f);
-    rate_values[RATE_XP_QUEST]    = sConfig.GetFloatDefault("Rate.XP.Quest", 1.0f);
-    rate_values[RATE_XP_EXPLORE]  = sConfig.GetFloatDefault("Rate.XP.Explore", 1.0f);
+    rate_values[RATE_XP_KILL]            = sConfig.GetFloatDefault("Rate.XP.Kill", 1.0f);
+    rate_values[RATE_XP_KILL_PREMIUM]    = sConfig.GetFloatDefault("Rate.XP.Kill.Premium", 1.0f);
+    rate_values[RATE_XP_QUEST]           = sConfig.GetFloatDefault("Rate.XP.Quest", 1.0f);
+    rate_values[RATE_XP_QUEST_PREMIUM]   = sConfig.GetFloatDefault("Rate.XP.Quest.Premium", 1.0f);
+    rate_values[RATE_XP_EXPLORE]         = sConfig.GetFloatDefault("Rate.XP.Explore", 1.0f);
+    rate_values[RATE_XP_EXPLORE_PREMIUM] = sConfig.GetFloatDefault("Rate.XP.Explore.Premium", 1.0f);
+
     rate_values[RATE_REPAIRCOST]  = sConfig.GetFloatDefault("Rate.RepairCost", 1.0f);
     if (rate_values[RATE_REPAIRCOST] < 0.0f)
     {
diff -r 06dff18c14c6 src/game/World.h
--- a/src/game/World.h	Sat Mar 20 14:23:18 2010 +0600
+++ b/src/game/World.h	Sun Mar 21 11:25:32 2010 +0600
@@ -305,8 +305,11 @@
     RATE_DROP_ITEM_REFERENCED,
     RATE_DROP_MONEY,
     RATE_XP_KILL,
+    RATE_XP_KILL_PREMIUM,
     RATE_XP_QUEST,
+    RATE_XP_QUEST_PREMIUM,
     RATE_XP_EXPLORE,
+    RATE_XP_EXPLORE_PREMIUM,
     RATE_REPAIRCOST,
     RATE_REPUTATION_GAIN,
     RATE_REPUTATION_LOWLEVEL_KILL,
diff -r 06dff18c14c6 src/game/WorldSession.cpp
--- a/src/game/WorldSession.cpp	Sat Mar 20 14:23:18 2010 +0600
+++ b/src/game/WorldSession.cpp	Sun Mar 21 11:25:32 2010 +0600
@@ -44,9 +44,9 @@
 #include "ScriptMgr.h"
 
 /// WorldSession constructor
-WorldSession::WorldSession(uint32 id, WorldSocket *sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale) :
+WorldSession::WorldSession(uint32 id, WorldSocket *sock, AccountTypes sec, bool ispremium, uint8 expansion, time_t mute_time, LocaleConstant locale) :
 LookingForGroup_auto_join(false), LookingForGroup_auto_add(false), m_muteTime(mute_time),
-_player(NULL), m_Socket(sock),_security(sec), _accountId(id), m_expansion(expansion),
+_player(NULL), m_Socket(sock),_security(sec), _ispremium(ispremium), _accountId(id), m_expansion(expansion),
 m_sessionDbcLocale(sWorld.GetAvailableDbcLocale(locale)), m_sessionDbLocaleIndex(objmgr.GetIndexForLocale(locale)),
 _logoutTime(0), m_inQueue(false), m_playerLoading(false), m_playerLogout(false), m_playerRecentlyLogout(false), m_playerSave(false),
 m_latency(0), m_TutorialsChanged(false)
diff -r 06dff18c14c6 src/game/WorldSession.h
--- a/src/game/WorldSession.h	Sat Mar 20 14:23:18 2010 +0600
+++ b/src/game/WorldSession.h	Sun Mar 21 11:25:32 2010 +0600
@@ -99,7 +99,7 @@
 {
     friend class CharacterHandler;
     public:
-        WorldSession(uint32 id, WorldSocket *sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale);
+        WorldSession(uint32 id, WorldSocket *sock, AccountTypes sec, bool ispremium, uint8 expansion, time_t mute_time, LocaleConstant locale);
         ~WorldSession();
 
         bool PlayerLoading() const { return m_playerLoading; }
@@ -126,6 +126,7 @@
         void SendQueryTimeResponse();
 
         AccountTypes GetSecurity() const { return _security; }
+        bool IsPremium() const { return _ispremium; }
         uint32 GetAccountId() const { return _accountId; }
         Player* GetPlayer() const { return _player; }
         char const* GetPlayerName() const;
@@ -757,6 +758,7 @@
         AccountTypes _security;
         uint32 _accountId;
         uint8 m_expansion;
+        bool _ispremium;
 
         time_t _logoutTime;
         bool m_inQueue;                                     // session wait in auth.queue
diff -r 06dff18c14c6 src/game/WorldSocket.cpp
--- a/src/game/WorldSocket.cpp	Sat Mar 20 14:23:18 2010 +0600
+++ b/src/game/WorldSocket.cpp	Sun Mar 21 11:25:32 2010 +0600
@@ -720,6 +720,7 @@
     //uint8 expansion = 0;
     LocaleConstant locale;
     std::string account;
+    bool isPremium = false;
     Sha1Hash sha1;
     BigNumber v, s, g, N;
     WorldPacket packet, SendAddonPacked;
@@ -871,6 +872,16 @@
         return -1;
     }
 
+    QueryResult_AutoPtr 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
     sWorld.UpdateAllowedSecurity();
     AccountTypes allowedAccountType = sWorld.GetPlayerSecurityLimit ();
@@ -927,7 +938,7 @@
                             safe_account.c_str ());
 
     // NOTE ATM the socket is single-threaded, have this in mind ...
-    ACE_NEW_RETURN (m_Session, WorldSession (id, this, AccountTypes(security), expansion, mutetime, locale), -1);
+    ACE_NEW_RETURN (m_Session, WorldSession (id, this, AccountTypes(security), isPremium, expansion, mutetime, locale), -1);
 
     m_Crypt.Init(&K);
 
diff -r 06dff18c14c6 src/trinitycore/trinitycore.conf.dist
--- a/src/trinitycore/trinitycore.conf.dist	Sat Mar 20 14:23:18 2010 +0600
+++ b/src/trinitycore/trinitycore.conf.dist	Sun Mar 21 11:25:32 2010 +0600
@@ -1456,6 +1456,11 @@
 #    Rate.XP.Explore
 #        XP rates
 #        Default: 1
+#    Rate.XP.Kill.Premium
+#    Rate.XP.Quest.Premium
+#    Rate.XP.Explore.Premium
+#        XP rates Premium modifier
+#        Default: 1
 #
 #    Rate.XP.PastLevel70
 #        XP needed per level past 70 (Rates below 1 not recommended)
@@ -1627,6 +1632,9 @@
 Rate.XP.Kill    = 1
 Rate.XP.Quest   = 1
 Rate.XP.Explore = 1
+Rate.XP.Kill.Premium    = 1
+Rate.XP.Quest.Premium   = 1
+Rate.XP.Explore.Premium = 1
 Rate.XP.PastLevel70 = 1
 Rate.RepairCost = 1
 Rate.Rest.InGame = 1
diff -r 06dff18c14c6 src/trinityrealm/AuthSocket.cpp
--- a/src/trinityrealm/AuthSocket.cpp	Sat Mar 20 14:23:18 2010 +0600
+++ b/src/trinityrealm/AuthSocket.cpp	Sun Mar 21 11:25:32 2010 +0600
@@ -408,6 +408,8 @@
             {
                 //set expired bans to inactive
                 loginDatabase.Execute("UPDATE account_banned SET active = 0 WHERE unbandate<=UNIX_TIMESTAMP() AND unbandate<>bandate");
+                loginDatabase.Execute("UPDATE account_premium SET active = 0 WHERE unsetdate<=UNIX_TIMESTAMP() AND unsetdate<>setdate");
+
                 ///- If the account is banned, reject the logon attempt
                 QueryResult_AutoPtr banresult = loginDatabase.PQuery("SELECT bandate,unbandate FROM account_banned WHERE id = %u AND active = 1", (*result)[1].GetUInt32());
                 if (banresult)
________________
/root
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Программа] Trinity Core Community application p3w Вопросы и ответы, обсуждение 1 28.03.2012 12:34
[Trinity Core]YTDB for Trinity / релизы Gors World of Warcraft 0 23.06.2011 09:53
[Руководство] Компиляция Сервера Trinity Core под Linux Gors World of Warcraft 0 23.06.2011 05:12
[Руководство] Компиляция ядра Trinity Core Gors World of Warcraft 0 23.06.2011 05:01
[Информация] [Trinity Core - patch] Tympanic Tantrum Gors World of Warcraft 0 23.06.2011 04:21

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 23:14.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net