Показать сообщение отдельно
Старый 11.06.2012, 15:00   #1
NeatElves
YTDB Dev
 
Аватар для NeatElves
 
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
NeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранита
По умолчанию [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)
будет грораздо проще и работоспособней.))
NeatElves вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
KiriX (13.06.2012), schmoozerd (15.06.2012)