Главная | Форум | Статьи | Фaйлы| Картинки WoW | Профиль | Регистрация | Вход

[ Новые сообщения · Правила форума · Поиск · RSS ]

WoW-Info — информационный World of Warcraft портал

Патч на Даларанскую Арену - Форум

  • Сторінка 1 з 1
  • 1
Патч на Даларанскую Арену
DarkensandДата: Неділя, 13.03.2011, 11:09 | Сообщение # 1



Darkensand
Главный Админ
Лучший из лучших
Группа: Администратор
Сообщений: 8083



Оффлайн
Code
diff --git a/src/game/BattleGroundDS.cpp b/src/game/BattleGroundDS.cpp  
index e6a298d..4f2fcd3 100644  
--- a/src/game/BattleGroundDS.cpp  
+++ b/src/game/BattleGroundDS.cpp  
@@ -16,14 +16,16 @@  
     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  
     */  
       
+#include "Object.h"  
    #include "Player.h"  
    #include "BattleGround.h"  
    #include "BattleGroundDS.h"  
+#include "ObjectMgr.h"  
+#include "WorldPacket.h"  
    #include "Language.h"  
       
    BattleGroundDS::BattleGroundDS()  
    {  
-  
        m_StartDelayTimes[BG_STARTING_EVENT_FIRST]  = BG_START_DELAY_1M;  
        m_StartDelayTimes[BG_STARTING_EVENT_SECOND] = BG_START_DELAY_30S;  
        m_StartDelayTimes[BG_STARTING_EVENT_THIRD]  = BG_START_DELAY_15S;  
@@ -43,6 +45,24 @@ BattleGroundDS::~BattleGroundDS()  
    void BattleGroundDS::Update(uint32 diff)  
    {  
        BattleGround::Update(diff);  
+    if (GetStatus() == STATUS_IN_PROGRESS)  
+    {  
+        // knockback  
+        if(m_uiKnockback < diff)  
+        {  
+            for(BattleGroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)  
+            {  
+                Player * plr = sObjectMgr.GetPlayer(itr->first);  
+                if (plr && plr->IsWithinLOS(1214,765,14) && plr->GetDistance2d(1214, 765) <= 50)  
+                    plr->KnockBackPlayerWithAngle(6.40f,55,7);  
+                if (plr && plr->IsWithinLOS(1369,817,14) && plr->GetDistance2d(1369, 817) <= 50)  
+                    plr->KnockBackPlayerWithAngle(3.03f,55,7);  
+            }  
+            m_uiKnockback = 1000;  
+        }  
+        else  
+            m_uiKnockback -= diff;  
+    }  
    }  
       
    void BattleGroundDS::StartingEventCloseDoors()  
@@ -51,6 +71,7 @@ void BattleGroundDS::StartingEventCloseDoors()  
       
    void BattleGroundDS::StartingEventOpenDoors()  
    {  
+    OpenDoorEvent(BG_EVENT_DOOR);  
    }  
       
    void BattleGroundDS::AddPlayer(Player *plr)  
@@ -60,19 +81,76 @@ void BattleGroundDS::AddPlayer(Player *plr)  
        BattleGroundDSScore* sc = new BattleGroundDSScore;  
       
        m_PlayerScores[plr->GetGUID()] = sc;  
+  
+    UpdateWorldState(0xe11, GetAlivePlayersCountByTeam(ALLIANCE));  
+    UpdateWorldState(0xe10, GetAlivePlayersCountByTeam(HORDE));  
+}  
+  
+void BattleGroundDS::RemovePlayer(Player* /*plr*/, uint64 /*guid*/)  
+{  
+    if (GetStatus() == STATUS_WAIT_LEAVE)  
+        return;  
+  
+    UpdateWorldState(0xe11, GetAlivePlayersCountByTeam(ALLIANCE));  
+    UpdateWorldState(0xe10, GetAlivePlayersCountByTeam(HORDE));  
+  
+    CheckArenaWinConditions();  
    }  
       
-void BattleGroundDS::RemovePlayer(Player * /*plr*/, uint64 /*guid*/)  
+void BattleGroundDS::HandleKillPlayer(Player *player, Player *killer)  
    {  
+    if (GetStatus() != STATUS_IN_PROGRESS)  
+        return;  
+  
+    if (!killer)  
+    {  
+        sLog.outError("BattleGroundDS: Killer player not found");  
+        return;  
+    }  
+  
+    BattleGround::HandleKillPlayer(player,killer);  
+  
+    UpdateWorldState(0xe11, GetAlivePlayersCountByTeam(ALLIANCE));  
+    UpdateWorldState(0xe10, GetAlivePlayersCountByTeam(HORDE));  
+  
+    CheckArenaWinConditions();  
+}  
+  
+bool BattleGroundDS::HandlePlayerUnderMap(Player *player)  
+{  
+    player->TeleportTo(GetMapId(),1299.046f,784.825f,9.338f,player->GetOrientation(),false);  
+    return true;  
+}  
+  
+void BattleGroundDS::HandleAreaTrigger(Player *Source, uint32 Trigger)  
+{  
+    if (GetStatus() != STATUS_IN_PROGRESS)  
+        return;  
+  
+    switch(Trigger)  
+    {  
+        case 5347:  
+        case 5348:  
+            break;  
+        default:  
+            sLog.outError("WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger);  
+            Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger);  
+            break;  
+    }  
    }  
       
-void BattleGroundDS::HandleKillPlayer(Player* player, Player* killer)  
+void BattleGroundDS::FillInitialWorldStates(WorldPacket &data, uint32& count)  
    {  
-    BattleGround::HandleKillPlayer(player, killer);  
+    FillInitialWorldState(data, count, 0xe11, GetAlivePlayersCountByTeam(ALLIANCE));  
+    FillInitialWorldState(data, count, 0xe10, GetAlivePlayersCountByTeam(HORDE));  
+    FillInitialWorldState(data, count, 0xe1a, 1);  
    }  
       
-void BattleGroundDS::HandleAreaTrigger(Player * /*Source*/, uint32 /*Trigger*/)  
+void BattleGroundDS::Reset()

А вот это залить в базу

Code
delete from `gameobject` where `map` = 617;  
insert into `gameobject` values  
-- buffs  
('200060','184663','617','1','1','1291.7','813.424','7.11472','4.64562','0','0','0.730314','-0.683111','-120','100','1'),  
('200061',  '184664','617','1','1','1291.7','768.911','7.11472','1.55194','0','0','0.700409','0.713742','-120','100','1'),  
-- doors  
('200062','192642','617','1','1','1350.95','817.2','21.4096','3.15','0','0','0.99627','0.0862864','86400','100','1'),  
('200063','192  643','617','1','1','1232.65','764.913','21.4729','6.3','0','0','0.0310211','-0.999519','86400','100','1');  
       
delete from `gameobject_battleground` where `guid` in (200060,200061,200062,200063);  
insert into `gameobject_battleground` values  
-- buffs  
('200060','252','0'),  
('200061','252','0'),  
-- doors  
('200062','254','0'),  
('200063','254','0');  
       
delete from `battleground_events` where `map` = 617;  
insert into `battleground_events` values  
('617','252','0','buffs'),  
('617','254','0','doors');  
       
-- doors  
update `gameobject_template` set `faction` = 114, `flags` = 32, `size` = 1.5 where `entry` in (192642,192643);

Патч осуществляет арену в даларане.

 
  • Сторінка 1 з 1
  • 1
Пошук:

Новые сообщения в темах
Сдам в аренду сервер и хостинг · (Хост Предложения)
Автор: redlaine
Последнее сообщение в 23:53
хаха :D · (Приколы)
Автор: [N1ke]Medved
Последнее сообщение в 18:40
Autobattle - новый боевой бот ... · (Боты для WoW)
Автор: terrikon
Последнее сообщение в 18:39
PvE руководство для Чернокнижн... · (Чернокнижник)
Автор: Darkensand
Последнее сообщение в 18:38
Пустой свиток (Часть 11) · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:37
Друиды в Катаклизме: Официальн... · (Друид)
Автор: Darkensand
Последнее сообщение в 18:37
[Баг 3.3.5] Фарм ледяных бадже... · (Читы для WoW)
Автор: Darkensand
Последнее сообщение в 18:35
FarmBot (Бот для фарма руды и ... · (Боты для WoW)
Автор: homma
Последнее сообщение в 18:34
Почему мы сражаемся: ролевая и... · (Воин)
Автор: Darkensand
Последнее сообщение в 18:34
Книги по Wold of Warcraft · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:33
Маг огня в Cataclysm · (Маг)
Автор: Darkensand
Последнее сообщение в 18:33
Как начать играть в World of W... · (Полезно знать)
Автор: Belkmondesh
Последнее сообщение в 18:32
Характеризация профессий · (Профессии)
Автор: Darkensand
Последнее сообщение в 18:31
Что значит для арканов бета те... · (Маг)
Автор: Darkensand
Последнее сообщение в 18:31

Контакты Контакты Copyright WoW-Info — World of Warcraft портал © 2025 | Условия и правила использования ресурса | Реклама / Услуги
WoW-Info портал.World of Warcraft портал — готовые сервера, сайты, картинки, аддоны, патчи, читы, баги, mangos, ArcEmu, TrinityCore, Warcraft 3, новости, Cataclysm...
Яндекс.Метрика Хостинг від uCoz