• Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: Dimitro  
Форум » TrinityCore » Патчи / Моды / Фиксы для Trinity » C++ fun script - Король лич должен существовать всегда
C++ fun script - Король лич должен существовать всегда
Dimitro
Praise the sun!
Ясное дело...
На нее рег по другому осуществляется...

И вообще, не пойму, зачем эта комманда, когда один бегаешь еще норм, но на серве ее юзать...
Есть же battleground_template таблица...
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 31 написано 23.10.2011 в 13:19
nrj45
Рыцарь
а скрипт почему срабатывает только один раз, вот закончилось бг всё вышли всё забрали морф и вещь, потом опять регаемся на ущелье а он уже не морфает и шмотку не даёт, а почему, и как исправить можно подскажите ?
Новый сервер - http://lk-wow.ru
Сообщение # 32 написано 28.10.2011 в 02:02
Dimitro
Praise the sun!
Добавьте в одну из функций окончания варсонга lich_exists = false; и будет вам счастье)
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 33 написано 28.10.2011 в 02:09
Dimitro
Praise the sun!
А еще лучше, реализуйте сохранение этого значения через базу.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 34 написано 28.10.2011 в 02:10
nrj45
Рыцарь
помоги пожалуйста, очень прошу тебя

Добавлено (28.10.2011, 02:17)
---------------------------------------------
lich_exists = true; стоит её чтоли изменить или куда добавить ?

Новый сервер - http://lk-wow.ru
Сообщение # 35 написано 28.10.2011 в 02:17
DedjeL
Скаут
Quote (nrj45)
помоги пожалуйста, очень прошу тебя
Добавлено (28.10.2011, 02:17)
---------------------------------------------
lich_exists = true; стоит её чтоли изменить или куда добавить ?

изменить на lich_exists = false;
Сообщение # 36 отредактировано DedjeL - Пятница, 28.10.2011, 04:38
Dimitro
Praise the sun!
Не-не-не, ничего менять не надо, там все правильно.
Надо просто немного переписать, я сейчас не могу, видуха горелая, сижу не со своего компа, неудобно.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 37 написано 28.10.2011 в 04:42
nrj45
Рыцарь
Quote (Dimitro)
Не-не-не, ничего менять не надо, там все правильно. Надо просто немного переписать, я сейчас не могу, видуха горелая, сижу не со своего компа, неудобно.

отписал в лс прочитай плз, будим ждать нового патча

Добавлено (19.03.2012, 00:40)
---------------------------------------------
Ну так что сможешь реализовать полностью рабочий данный патч ?

Новый сервер - http://lk-wow.ru
Сообщение # 38 написано 19.03.2012 в 00:40
NeWoW_MoZyR
Скаут
на мой взгляд бред какой это уже варик
Сообщение # 39 отредактировано NeWoW_MoZyR - Понедельник, 19.03.2012, 09:26
WorldCroFF
Капрал
Димитро, у меня не работает проверял через 4/4 Бг
Сообщение # 40 написано 19.03.2012 в 07:19
keonji
I ♥ S-PB
Quote (The_Sun)
Надо кучу триггеров в Городах раставить, если король города сдох, заселить его NPC противоложной фракции... или просто сделать фазовую систему. и Worldstates. но, по моему бред


это уже реально реализовано в патче City Conquest
Сообщение # 41 написано 19.03.2012 в 16:31
Blizzzzzard
Скаут
как установить сам патч
Сообщение # 42 написано 30.06.2012 в 21:51
kleuser
Командир
Blizzzzzard, руками в ядро bag
Сообщение # 43 написано 01.07.2012 в 10:37
Ma_aelKoT
Скаут
Прошу прощения, но школьник идет на врыв. Ни языка не понимаю, ни гайдов не читаю, просто разбираю чужой кот и пытаюсь осмыслить что и как тут делается... но не суть... Извините, если что.

Не подскажете, можно ли проверку на Класс персонажа (и выдачу вещи по этому классу) написать вот так:

Code
+    if (!lich_exists)    
    +    {    
    +  plr->SetDisplayId(24191);//Lich King    
    +  plr->Whisper("Король-Лич должен существовать всегда...", LANG_UNIVERSAL, plr->GetGUID());    
    +  plr->Whisper("Вы можете найти ледяную скорбь в своем инвертаре...", LANG_UNIVERSAL, plr->GetGUID());    
    +  int playerClass = player->getClass();
    +       switch (playerClass)
    +              {
    +              case CLASS_WARLOCK:
    +                       plr->AddItem(FROSTMOURNE1_ID, 1);
    +              break;
....................................................
    +              case CLASS_WARRIOR:
    +                       plr->AddItem(FROSTMOURNE2_ID, 1);
    +              break;
    +              }
    +  lichGUID = plr->GetGUID();    
    +  lich_exists = true;    
    +    }


FROSTMOURNE1_ID /FROSTMOURNE2_ID это я догадаюсь где добавить)
там где много точечек - там однотипное "если этот класс то дать эту вещь; break;"

Сам вопрос именно на счет проверки... где то видел где то слышал... можно ли так?
и что такое "int" в записи "int playerClass = player->getClass();"
и нужно ли где то..мм... "объявлять" эту... введенную переменную playerClass ?

У вас, конечно, всегда есть право послать куда подальше, но я правда хочу научиться! "ЧИТАЙ МАНУАЛЫ", уже слышу, но вот на практике было бы много интереснее и полезнее)
Сообщение # 44 отредактировано Ma_aelKoT - Пятница, 24.08.2012, 23:59
Dimitro
Praise the sun!
Можно и так как вы написали, я думаю.
Но на самом деле, переменная лишняя, тем более с таким огромным диапазоном.
Делайте так:

switch(player->getClass())

А int - это целочисленный беззнаковый тип данных в С++, что написано на первых страницах любого учебника по этому языку.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 45 написано 25.08.2012 в 02:42
Ma_aelKoT
Скаут
Спасибо)
Вот так всегда - сначала напишешь глупое сообщение с глупыми вопросами - а потом уйдешь гуглить...
Про тот же целочисленный беззнаковый тип данных было очень верно подмечено)
И что такое switch загуглил, и switch (player->getClass()) именно так написал) и пошел спать) спасибо)

Теперь пытаюсь найти - есть ли тут чтото вроде "проверки на наличие выученного спелла / таланта", чтобы определять какой спек у класса, чтобы выдавать итем по классу...

Code
switch (player->getClass())              
                {              
                case CLASS_PALADIN:              
                        switch (SpellFamilyName)
                        {
                        case SPELLFAMILY_PALADIN:
                    switch (Id)
                    {
                    case 20473:   // холипал
                    case 53385:   // ретрипал
                    case 31935:    // танкопал
                    }
                         }
......................................................................................
                }
не хочет он ровненько становится(

так ведь не пойдет? switch (SpellFamilyName) это просто проверка кастующегося спелла? или вообще непойми чего... буду сидеть и дальше ковыряться(((

________________________________________________________________________________

хм >< я наркоман
сделать для каждой нужной комбинации проверку класса и спека; и без switch (player->getClass())
Code
if (player->HasSpell(******))

попробую... что получится - выложу сюда, может помежете поискать ошибки(

________________________________________________________________________________

Quote (std_Suicide)
В данном случае у тебя компилятор будет кричать на Player, ибо это класс.
Code
if (player->HasSpell(******))
^ вродебы исправил?
говорю же, я в этом ничерта не смыслю, но пытаюсь научится
Сообщение # 46 отредактировано Ma_aelKoT - Суббота, 25.08.2012, 13:48
_dm666
<3 Death Metal
Quote (Ma_aelKoT)
Player()->HasSpell(******))

В данном случае у тебя компилятор будет кричать на Player, ибо это класс.
Сообщение # 47 написано 25.08.2012 в 13:30
Ma_aelKoT
Скаут
Продолжая тему дурацких вопросов..... Можно ли писать так вот? При невыполнении первого условия - еще одно.. вроде бы
Code
  +   switch (killer->getClass())
          +      {
          +      case CLASS_PALADIN:
          +         if (killer->HasSpell(31935))                   //пропал
          +         {          
          +           killer->AddItem(FROSTMOURNE2_ID, 1);
          +           break;
          +          }
          +         else
          +         {
          +            if (killer->HasSpell(53385))          //ретрипал
          +            {
          +               killer->AddItem(FROSTMOURNE3_ID, 1);
          +               break;
          +            }
          +            else                    //холипал
          +              {
          +                killer->AddItem(FROSTMOURNE4_ID, 1);
          +                break;
          +              }
          +     }
..................................................
опять меня эти }{ агрят >< да и вообще как то коряво

И на счет уничтожения итемов - будет ли правильно просто напросто перечислить вообще все виды фростморнов-рисовок, или тоже нужно писать мм... проверку классов/спеков?
Code
+ plr->DestroyItemCount(123451, 1, true, true);
+ plr->DestroyItemCount(123422, 1, true, true);
+ plr->DestroyItemCount(123453, 1, true, true);
+ plr->DestroyItemCount(123454, 1, true, true);
+ plr->DestroyItemCount(123455, 1, true, true);
+ plr->DestroyItemCount(123456, 1, true, true);
+ plr->DestroyItemCount(123457, 1, true, true);

? задаю, конечно, вопросы, на которые должно отвечать "напиши скомпиль запусти проверь сам"; но блин, в теории, со всем можно разабраться и в теории

кроме того, может кто над подобным уже думал и делал, так почему бы и не узнать? (вынь да подай, блин)

________________________
и еще. "plr" в коде Dimitro - это ведь просто где то прописанное сокращение от "player"?
почему тогда в некоторых местах пишется "plr", а в некоторых - "player"? имеет ли это какое либо значение?
Сообщение # 48 отредактировано Ma_aelKoT - Суббота, 25.08.2012, 16:24
Dimitro
Praise the sun!
Учите С++, на настолько глупые вопросы я не отвечаю.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 49 написано 25.08.2012 в 17:31
Ma_aelKoT
Скаут
ясно. иду учить
Сообщение # 50 отредактировано Ma_aelKoT - Суббота, 25.08.2012, 17:49
_dm666
<3 Death Metal
Quote (Ma_aelKoT)
почему тогда в некоторых местах пишется "plr", а в некоторых - "player"? имеет ли это какое либо значение?

Потому что это переменная класса Player. Можно так Player* plr, Player* dwad; и так далее.
Quote (Ma_aelKoT)
switch (killer->getClass())
          +      {
          +      case CLASS_PALADIN:
          +         if (killer->HasSpell(31935))                   //пропал
          +         {          
          +           killer->AddItem(FROSTMOURNE2_ID, 1);
          +           break;
          +          }
          +         else
          +         {
          +            if (killer->HasSpell(53385))          //ретрипал
          +            {
          +               killer->AddItem(FROSTMOURNE3_ID, 1);
          +               break;
          +            }
          +            else                    //холипал
          +              {
          +                killer->AddItem(FROSTMOURNE4_ID, 1);
          +                break;
          +              }
          +     }

тут не хватает скобки, вместо else можно использовать else if. Это же начальные знания. И зачем в условия ставить break? Почитай, что он значит.
Сообщение # 51 написано 25.08.2012 в 17:52
Ma_aelKoT
Скаут
На сей раз у меня вопрос чуть более серьездный( На который, может быть, даже не зазорно будет ответить(

Вот у Dimitro патч старенький, (судя по "Fri Aug 26 23:58:55 2011" - у него завтра годовщина )

по добавлению изменений в файл Battlegrounds.cpp у меня вопрос...
Code
             if (plr->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION))       
                       plr->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT);       
                     
       +  plr->DeMorph();       
       +  plr->DestroyItemCount(49623, 1, true, true);//Замените 49623 на ID вашей рисовки       
       +       
                   if (!plr->isAlive())       
                   {       
                       plr->ResurrectPlayer(1.0f);

Строка if (plr->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) в Battleground.cpp встречается в коде дважды, но у нас стоит @@ -784,6 +784,9 @@ - что показывает какая именно это строка была год назад.

А в теперяшних Battleground.cpp она есть под номерами ~825 и 963...
На сколько я понял, строка 825 - одно из действий, которое выполняется при окончании БГ;
а строка 963 - при ливе персонажа с БГ.

Теоретически, и в том и во втором случае нужно добавлять
Code
+  plr->DeMorph();       
+  plr->DestroyItemCount(49623, 1, true, true);
но у Dimitro - только 1 раз.

Вот и не могу понять - нужно ли дописать эти действия и при окончании БГ и при ливе с БГ; либо достаточно только 1 раз, как в оригинальном коде (тогда где?..)? Спасите.....

__________________________________________________________
еще из разряда дурацких вопросов..
Code
diff -r 53648bd13f2f src/server/game/Battlegrounds/Battleground.cpp

что в этой, и ей подобных записях, значат цифры, вроде "53648bd13f2f"?..

еще всетрчал как то, ну, к примеру
Code
diff -r 43bf3a55b4df -r f7ad640c54a5 src/server/game/Entities/Player/Player.cpp

тут в двое больше этих странных непонятных цифро-символов
Сообщение # 52 отредактировано Ma_aelKoT - Суббота, 25.08.2012, 23:27
doomkas
Центурион
Бред в том. То что если за дру превратиться в кого то там, то морф спадает, или в овечку за мага кинуть в лича, либо за шаму превратиться в волка и т.д
Сообщение # 53 отредактировано doomkas - Среда, 29.08.2012, 17:48
Ma_aelKoT
Скаут
В общем, в итоге, вышло нечто подобное:
Code
--- Battleground.cpp    Fri Sep 14 09:13:39 2012
+++ Battleground.cpp    Fri Sep 14 09:30:28 2012
@@ -1006,6 +1006,47 @@ void Battleground::RemovePlayerAtLeave(u
       {
           if (player->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION))
               player->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT);
+     
+    player->DeMorph();      
+    switch (player->getClass())
+    {
+        case CLASS_WARLOCK:
+   player->DestroyItemCount(47401, 1, true, true);
+        case CLASS_ROGUE:
+   player->DestroyItemCount(47361, 1, true, true);
+        case CLASS_MAGE:
+   player->DestroyItemCount(47401, 1, true, true);
+        case CLASS_HUNTER:
+   player->DestroyItemCount(33795, 1, true, true);
+        case CLASS_PRIEST:
+    player->DestroyItemCount(47401, 1, true, true);
+        case CLASS_PALADIN:
+   {
+    player->DestroyItemCount(42169, 1, true, true);
+    player->DestroyItemCount(49293, 1, true, true);
+    player->DestroyItemCount(53096, 1, true, true);
+   }
+        case CLASS_DEATH_KNIGHT:
+              {
+    player->DestroyItemCount(37001, 1, true, true);
+    player->DestroyItemCount(33475, 1, true, true);
+   }
+        case CLASS_SHAMAN:
+             {
+    player->DestroyItemCount(50513, 1, true, true);
+    player->DestroyItemCount(53096, 1, true, true);
+   }
+        case CLASS_DRUID:
+              {
+               player->DestroyItemCount(33795, 1, true, true);
+    player->DestroyItemCount(53096, 1, true, true);
+   }
+        case CLASS_WARRIOR:
+              {
+    player->DestroyItemCount(37001, 1, true, true);
+    player->DestroyItemCount(51322, 1, true, true);
+   }
+    }   
     
           if (!player->isAlive())                    // resurrect on exit
           {


И воооооот это...
Code
--- BattlegroundWS.cpp    Fri Sep 14 09:20:30 2012
+++ BattlegroundWS.cpp    Fri Sep 14 10:08:19 2012
@@ -28,6 +28,20 @@
   #include "World.h"
   #include "WorldPacket.h"
     
+uint64 FROST_SPD_MACE = 53096; //хпал рдру мункдру ршам элемшам
+uint64 FROST_SPD_DAGER = 47401;//маг прист лок
+uint64 FROST_AP_MACE = 42169; //протопал крит+хаст
+//uint64 FROST_AP_AXE = протовар
+uint64 FROST_AP_MIGHT = 37001; //фростдк протвар
+uint64 FROST_AP_FIST = 50513; //энхшам
+uint64 FROST_AP_DAGER = 47361; //рог
+uint64 FROST_2H_STUFF = 33795; //фералдру хант
+uint64 FROST_2H_MIGHT = 33475; //дк
+uint64 FROST_2H_MACE = 49293; //рпаладин крит+хаст
+uint64 FROST_2H_AXE= 51322; //варриор
+uint64 lichGUID;   
+bool lich_exists = false;   
+
   // these variables aren't used outside of this file, so declare them only here
   enum BG_WSG_Rewards
   {
@@ -205,6 +219,67 @@ void BattlegroundWS::AddPlayer(Player* p
       BattlegroundWGScore* sc = new BattlegroundWGScore;
     
       PlayerScores[player->GetGUID()] = sc;
+
+    if (!lich_exists)   
+    {   
+    player->SetDisplayId(24191);                    //Lich King   
+    player->Whisper("The Lich King must always exist ...", LANG_UNIVERSAL,player->GetGUID());   
+    player->Whisper("You can find Frostmourne in your invertare ...", LANG_UNIVERSAL, player->GetGUID());   
+    switch (player->getClass())
+       {
+        case CLASS_WARLOCK:
+                   player->AddItem(FROST_SPD_DAGER, 1);
+        case CLASS_ROGUE:
+                   player->AddItem(FROST_AP_DAGER, 1);
+        case CLASS_MAGE:
+                   player->AddItem(FROST_SPD_DAGER, 1);
+        case CLASS_HUNTER:
+                   player->AddItem(FROST_2H_STUFF, 1);
+        case CLASS_PRIEST:
+                   player->AddItem(FROST_SPD_DAGER, 1);
+        case CLASS_PALADIN:
+     if (player->HasSpell(31935))               //протопал
+         {   
+                player->AddItem(FROST_AP_MACE, 1);
+        }
+     else if (player->HasSpell(53385))          //ретрипал
+          {
+           player->AddItem(FROST_2H_MACE, 1);
+          }
+              else                    //холипал
+            player->AddItem(FROST_SPD_MACE, 1);
+        case CLASS_DEATH_KNIGHT:
+     if (player->HasSpell(65661))              //с одноручками
+          {   
+                 player->AddItem(FROST_AP_MIGHT, 1);
+         }
+    else
+     player->AddItem(FROST_2H_MIGHT, 1);
+        case CLASS_SHAMAN:
+    if (player->HasSpell(30798))             //энх шам
+             {   
+                 player->AddItem(FROST_AP_FIST, 1);
+         }
+    else
+    player->AddItem(FROST_SPD_MACE, 1);
+        case CLASS_DRUID:
+    if (player->HasSpell(33917))             //ферал друид
+             {   
+                 player->AddItem(FROST_2H_STUFF, 1);
+        }
+    else
+     player->AddItem(FROST_SPD_MACE, 1);
+        case CLASS_WARRIOR:
+    if (player->HasSpell(20243))            //протовар
+             {   
+                 player->AddItem(FROST_AP_MIGHT, 1);
+         }
+    else
+     player->AddItem(FROST_2H_AXE, 1);
+       }   
+    lichGUID = player->GetGUID();   
+    lich_exists = true;   
+    }   
   }
     
   void BattlegroundWS::RespawnFlag(uint32 Team, bool captured)
@@ -755,7 +830,107 @@ void BattlegroundWS::HandleKillPlayer(Pl
   {
       if (GetStatus() != STATUS_IN_PROGRESS)
           return;
-
+    
+    if (player->GetGUID() == lichGUID)   
+    {   
+     player->DeMorph();   
+  switch (player->getClass())
+     {
+        case CLASS_WARLOCK:
+       player->DestroyItemCount(47401, 1, true, true);
+        case CLASS_ROGUE:
+       player->DestroyItemCount(47361, 1, true, true);
+        case CLASS_MAGE:
+       player->DestroyItemCount(47401, 1, true, true);
+        case CLASS_HUNTER:
+       player->DestroyItemCount(33795, 1, true, true);
+        case CLASS_PRIEST:
+       player->DestroyItemCount(47401, 1, true, true);
+        case CLASS_PALADIN:
+   {
+    player->DestroyItemCount(42169, 1, true, true);
+    player->DestroyItemCount(49293, 1, true, true);
+    player->DestroyItemCount(53096, 1, true, true);
+   }
+        case CLASS_DEATH_KNIGHT:
+      {
+    player->DestroyItemCount(37001, 1, true, true);
+    player->DestroyItemCount(33475, 1, true, true);
+   }
+        case CLASS_SHAMAN:
+      {
+    player->DestroyItemCount(50513, 1, true, true);
+    player->DestroyItemCount(53096, 1, true, true);
+   }
+        case CLASS_DRUID:
+      {
+       player->DestroyItemCount(33795, 1, true, true);
+    player->DestroyItemCount(53096, 1, true, true);
+   }
+        case CLASS_WARRIOR:
+      {
+    player->DestroyItemCount(37001, 1, true, true);
+    player->DestroyItemCount(51322, 1, true, true);
+   }
+     }   
+     player->Whisper("The Lich King must always exist ...", LANG_UNIVERSAL, killer->GetGUID());   
+     player->Whisper("You can find Frostmourne in your invertare ...", LANG_UNIVERSAL, killer->GetGUID());   
+     killer->SetDisplayId(24191);            //Lich King   
+        switch (killer->getClass())
+        {
+         case CLASS_WARLOCK:
+                  killer->AddItem(FROST_SPD_DAGER, 1);
+         case CLASS_ROGUE:
+                  killer->AddItem(FROST_AP_DAGER, 1);
+         case CLASS_MAGE:
+                  killer->AddItem(FROST_SPD_DAGER, 1);
+         case CLASS_HUNTER:
+                  killer->AddItem(FROST_2H_STUFF, 1);
+         case CLASS_PRIEST:
+                  killer->AddItem(FROST_SPD_DAGER, 1);
+         case CLASS_PALADIN:
+    if (killer->HasSpell(31935))               //протопал
+             {   
+                 killer->AddItem(FROST_AP_MACE, 1);
+         }
+    else if (killer->HasSpell(53385))          //ретрипал
+         {
+          killer->AddItem(FROST_2H_MACE, 1);
+         }
+            else                    //холипал
+           killer->AddItem(FROST_SPD_MACE, 1);
+         case CLASS_DEATH_KNIGHT:
+    if (killer->HasSpell(65661))              //с одноручками
+             {   
+                 killer->AddItem(FROST_AP_MIGHT, 1);
+    }
+    else
+     killer->AddItem(FROST_2H_MIGHT, 1);
+         case CLASS_SHAMAN:
+    if (killer->HasSpell(30798))             //энх шам
+             {   
+                 killer->AddItem(FROST_AP_FIST, 1);
+    }
+    else
+     killer->AddItem(FROST_SPD_MACE, 1);
+         case CLASS_DRUID:
+    if (killer->HasSpell(33917))             //ферал друид
+             {   
+                 killer->AddItem(FROST_2H_STUFF, 1);
+        }
+          else
+         killer->AddItem(FROST_SPD_MACE, 1);
+         case CLASS_WARRIOR:
+    if (killer->HasSpell(20243))          //протовар
+             {   
+                 killer->AddItem(FROST_AP_MIGHT, 1);
+        }
+    else
+     killer->AddItem(FROST_2H_AXE, 1);
+        }   
+     lichGUID = killer->GetGUID();   
+     }   
+    
       EventPlayerDroppedFlag(player);
     
       Battleground::HandleKillPlayer(player, killer);
    


Маленькая загвоздочка только.... Неработает нихрена)))

Что делать..?
Ищу, в где могут быть ошибки; ну, кроме гуглоперевода...
Сообщение # 54 отредактировано Ma_aelKoT - Пятница, 14.09.2012, 12:05
_dm666
<3 Death Metal
А в кейсы прописать брейк? Бред полный же. Почитай Шилдта для начала, сделаешь потом всё так, как надо.
Сообщение # 55 написано 14.09.2012 в 17:43
Silvanalol
Скаут
Dimitro, А можешь сделать, что бы при киле тебе давался бафф, а пуха не давалась, ну и морф тоже давался
Сообщение # 56 отредактировано Silvanalol - Четверг, 11.09.2014, 18:54
yurra
Скаут
Silvanalol,
Код

diff -r 53648bd13f2f src/server/game/Battlegrounds/Battleground.cpp  
--- a/src/server/game/Battlegrounds/Battleground.cpp    Wed Aug 24 12:21:26 2011 +0300  
+++ b/src/server/game/Battlegrounds/Battleground.cpp    Fri Aug 26 23:58:55 2011 +0300  
@@ -784,6 +784,9 @@  
              if (plr->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION))  
                  plr->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT);  
           
+  plr->DeMorph();   
+  
              if (!plr->isAlive())  
              {  
                  plr->ResurrectPlayer(1.0f);  
diff -r 53648bd13f2f src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp  
--- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp    Wed Aug 24 12:21:26 2011 +0300  
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp    Fri Aug 26 23:58:55 2011 +0300  
@@ -28,6 +28,10 @@  
      #include "World.h"  
      #include "WorldPacket.h"  
           
   
+uint64 lichGUID;  
+bool lich_exists = false;  
+  
      // these variables aren't used outside of this file, so declare them only here  
      enum BG_WSG_Rewards  
      {  
@@ -209,6 +214,16 @@  
          BattlegroundWGScore* sc = new BattlegroundWGScore;  
           
          m_PlayerScores[plr->GetGUID()] = sc;  
+  
+    if (!lich_exists)  
+    {  
+  plr->SetDisplayId(24191);//Lich King  
+  plr->Whisper("Король-Лич должен существовать всегда...", LANG_UNIVERSAL, plr->GetGUID());  
+  lichGUID = plr->GetGUID();  
+  lich_exists = true;  
+    }  
      }  
           
      void BattlegroundWS::RespawnFlag(uint32 Team, bool captured)  
@@ -748,6 +763,17 @@  
      {  
          if (GetStatus() != STATUS_IN_PROGRESS)  
              return;  
+      
+    if (player->GetGUID() == lichGUID)  
+    {  
+  player->DeMorph();   
+  player->Whisper("Король-Лич должен существовать всегда...", LANG_UNIVERSAL, killer->GetGUID());   
+  killer->SetDisplayId(24191);//Lich King  
+  lichGUID = killer->GetGUID();  
+    }  
           
          EventPlayerDroppedFlag(player);
  
Помогаю в силу своих возможностей, если что-то не понимаю, то извините.
Сообщение # 57 написано 27.02.2015 в 00:31
anonymous33rus
Сержант
Цитата Silvanalol ()
Дата: Четверг, 11.09.2014, 18:39


yurra, Почти пол года прошло.
Сообщение # 58 написано 27.02.2015 в 00:53
Форум » TrinityCore » Патчи / Моды / Фиксы для Trinity » C++ fun script - Король лич должен существовать всегда
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: