Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Патчи > Патчи на рассмотрении

Важная информация

Патчи на рассмотрении Рассматриваемые к принятию патчи

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 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)
Старый 13.06.2012, 14:40   #2
schmoozerd
MaNGOS Dev
 
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
schmoozerd Скоро придёт к известности
По умолчанию

hmm - maybe change all the quest-conditions to one condition?
like condition-quest-status value1=mask(possible-states) ?
schmoozerd вне форума   Ответить с цитированием
Старый 29.06.2012, 14:55   #3
NeatElves
YTDB Dev
 
Аватар для NeatElves
 
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
NeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранита
По умолчанию

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

А вот если кондиции прикрутьте к npc_vendor и возможно еще к *_script .)))
NeatElves вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
virusav (29.06.2012)
Старый 06.08.2012, 11:00   #4
NeatElves
YTDB Dev
 
Аватар для NeatElves
 
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
NeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранита
По умолчанию

После [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);

Последний раз редактировалось NeatElves; 06.08.2012 в 11:03.
NeatElves вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[10520] Implement CONDITION_QUEST_NONE newsbot CMaNGOS Commits 0 23.09.2010 11:50
Add support for CONDITION_QUEST_NONE tempura Принятые патчи 4 21.09.2010 21:53
модификация ядра. FreeBSD Запросы 7 21.03.2010 08:07


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


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot