Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Патчи на рассмотрении (http://mangos.ytdb.ru/forumdisplay.php?f=49)
-   -   [patch] Модификация CONDITION_QUEST_NONE (http://mangos.ytdb.ru/showthread.php?t=5491)

NeatElves 11.06.2012 15:00

[patch] Модификация CONDITION_QUEST_NONE
 
Возможный патч:
Код:

diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
index 180142b..762372c 100644
--- a/src/game/ObjectMgr.cpp
+++ b/src/game/ObjectMgr.cpp
@@ -7605,8 +7605,12 @@ bool PlayerCondition::Meets(Player const * player) const
        }
        case CONDITION_QUEST_NONE:
        {
-            if (!player->IsCurrentQuest(m_value1) && !player->GetQuestRewardStatus(m_value1))
-                return true;
+            switch(m_value2)
+            {
+                case 0: return !player->IsCurrentQuest(m_value1) && !player->GetQuestRewardStatus(m_value1);
+                case 1: return !player->IsCurrentQuest(m_value1);
+                case 2: return !player->GetQuestRewardStatus(m_value1);
+            }
            return false;
        }
        case CONDITION_ITEM_WITH_BANK:
@@ -7819,7 +7823,7 @@ bool PlayerCondition::IsValid(uint16 entry, ConditionType condition, uint32 valu
                return false;
            }
 
-            if (value2 && condition != CONDITION_QUESTTAKEN)
+            if (value2 && (condition == CONDITION_QUESTREWARDED || condition == CONDITION_QUESTAVAILABLE))
                sLog.outErrorDb("Quest condition (entry %u, type %u) has useless data in value2 (%u)!", entry, condition, value2);
            break;
        }
diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h
index 229d9b2..d719c10 100644
--- a/src/game/ObjectMgr.h
+++ b/src/game/ObjectMgr.h
@@ -362,7 +362,7 @@ enum ConditionType
    CONDITION_QUESTAVAILABLE        = 19,                  // quest_id    0      for case when loot/gossip possible only if player can start quest
    CONDITION_ACHIEVEMENT          = 20,                  // ach_id      0, 1 (0: has achievement, 1: hasn't achievement) for player
    CONDITION_ACHIEVEMENT_REALM    = 21,                  // ach_id      0, 1 (0: has achievement, 1: hasn't achievement) for server
-    CONDITION_QUEST_NONE            = 22,                  // quest_id    0 (quest did not take and not rewarded)
+    CONDITION_QUEST_NONE            = 22,                  // quest_id    0, 1 or 2 (0: quest did not take and not rewarded, 1: quest did not take, 2: quest did not rewarded)
    CONDITION_ITEM_WITH_BANK        = 23,                  // item_id      count  check present req. amount items in inventory or bank
    CONDITION_NOITEM_WITH_BANK      = 24,                  // item_id      count  check not present req. amount items in inventory or bank
    CONDITION_NOT_ACTIVE_GAME_EVENT = 25,                  // event_id    0

Зачем:
Чтобы можно было создавать цепочки в госсипах, пример:
Цепочка
если игрок сдал(8 кондиция) 11248 и у него нет предмета(24) и он не брал, не выполнял квест 11250(22) или он взял квест 11250(9) и у него нет предмета(24), то
госсип должен быть, но сразу всплыла загадка - если игрок взял квест 11250 и от него отказался то первое условие уже не сработает, а второе еще не сработает.))
поэтому вижу путь проще, модифицировать кондицию так, чтобы получилось:
если игрок сдал(8 кондиция) 11248 и у него нет предмета(24) и он не брал вознаграждение за квест 11250(22-2)
будет грораздо проще и работоспособней.))

schmoozerd 13.06.2012 14:40

hmm - maybe change all the quest-conditions to one condition?
like condition-quest-status value1=mask(possible-states) ?

NeatElves 29.06.2012 14:55

Думаю усложнять не надо(как сказал Владимир - легче добавить новое условие), ведь кондиции идут не только к госсипам...

А вот если кондиции прикрутьте к npc_vendor и возможно еще к *_script .)))

NeatElves 06.08.2012 11:00

После [12044] Add CONDITION_NOT (-3) to conditions system
если правильно понял, то можно комбинировать, правда на одну запись больше выходит.)))
Цитата:

если игрок сдал(8 кондиция) 11248 и у него нет предмета(24) и он не выполнял квест 11250(1-я 8 кондиция, вторая -3 кондиция)
Пример из ЮТДБ:

Цитата:

(`condition_entry`, `type`, `value1`, `value2`)
(1576, 8, 11248, 0),
(1578, 24, 33311, 1),
(1579, 8, 11250, 0),
(1580, -1, 1576, 1578),
(1581, -3, 1579, 0),
(1582, -1, 1580, 1581);


Текущее время: 00:56. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS