Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Принятые патчи (http://mangos.ytdb.ru/forumdisplay.php?f=5)
-   -   Add support for CONDITION_QUEST_NONE (http://mangos.ytdb.ru/showthread.php?t=32)

tempura 06.03.2010 14:36

Add support for CONDITION_QUEST_NONE
 
NeatElves

Цитата:

Поясняю для чего, пример - на офф сервере заканчивается лунный фестиваль, у предков есть госсипы с подсказками - где искать других, когда находиш и сдаеш квест - строчка подсказки, указывающая на конкретного из меню исчезает. Посмотрел тут и перенес к нам, проверил, работает..))
Автор коммита - Brian
Код:

diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
index b1540da..0ea938d 100644
--- a/src/game/ObjectMgr.cpp
+++ b/src/game/ObjectMgr.cpp
@@ -7409,6 +7409,11 @@ bool PlayerCondition::Meets(Player const * player) const
            QuestStatus status = player->GetQuestStatus(value1);
            return (status == QUEST_STATUS_INCOMPLETE);
        }
+        case CONDITION_QUEST_NONE:
+        {
+            QuestStatus status = player->GetQuestStatus(value1);
+            return (status == QUEST_STATUS_NONE);
+        }
        case CONDITION_AD_COMMISSION_AURA:
        {
            Unit::AuraMap const& auras = player->GetAuras();
diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h
index 4442f56..dd85ab7 100644
--- a/src/game/ObjectMgr.h
+++ b/src/game/ObjectMgr.h
@@ -313,9 +313,10 @@ enum ConditionType
    CONDITION_RACE_CLASS            = 14,                  // race_mask    class_mask
    CONDITION_LEVEL                = 15,                  // player_level 0, 1 or 2 (0: equal to, 1: equal or higher than, 2: equal or less than)
    CONDITION_NOITEM                = 16,                  // item_id      count
+    CONDITION_QUEST_NONE            = 17,                  // quest_id    0
 };
 
-#define MAX_CONDITION                17                    // maximum value in ConditionType enum
+#define MAX_CONDITION                18                    // maximum value in ConditionType enum
 
 struct PlayerCondition
 {

Как бы Нофантази показать...)

Vladimir 07.03.2010 16:59

QUEST_STATUS_NONE и для неначатого квеста тоже, для сданного надо еще rewarded проверять

timmit 07.03.2010 18:00

(status == QUEST_STATUS_NONE && status == QUEST_STATUS_COMPLETE)

?

Vladimir 07.03.2010 18:13

QUEST_STATUS_COMPLETE = квест у которого готовы все цели но который не сдан

QUEST_STATUS_NONE = квест не активен, или не начинался иди сдан уже
QUEST_STATUS_NONE && rewarded = квест сдан (для повторяемых, сдан хотябы один раз)

virusav 21.09.2010 21:53

Меню должно отображаться, если квест не на руках и никогда не сдавался:
Код:

diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
index c8681f9..98efb7c 100644
--- a/src/game/ObjectMgr.cpp
+++ b/src/game/ObjectMgr.cpp
@@ -8108,6 +8108,12 @@ bool PlayerCondition::Meets(Player const * player) const
            }
            return false;
        }
+        case CONDITION_QUEST_NONE:
+        {
+            if (!player->IsCurrentQuest(value1) && !player->GetQuestRewardStatus(value1))
+                return true;
+            return false;
+        }
        default:
            return false;
    }
@@ -8219,6 +8225,7 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
        case CONDITION_QUESTREWARDED:
        case CONDITION_QUESTTAKEN:
        case CONDITION_QUESTAVAILABLE:
+        case CONDITION_QUEST_NONE:
        {
            Quest const *Quest = sObjectMgr.GetQuestTemplate(value1);
            if (!Quest)
diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h
index a3e5e65..83bd582 100644
--- a/src/game/ObjectMgr.h
+++ b/src/game/ObjectMgr.h
@@ -607,9 +607,10 @@ 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)
 };
 
-#define MAX_CONDITION                22                    // maximum value in ConditionType enum
+#define MAX_CONDITION                23                    // maximum value in ConditionType enum
 
 struct PlayerCondition
 {



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

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