Ru-MaNGOS

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

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

Принятые патчи Иногда выкладывают патчи, которые потом в итоге все-таки принимают в ядро.

Повод для гордости.

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.03.2010, 09:33   #1
timmit
YTDB Dev
 
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
timmit На верном пути
По умолчанию [9544] support CONDITION_NOITEM

копия патча на getmangos.com
http://getmangos.com/community/showt...NDITION_NOITEM
Код:
diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
index b887961..f8b041d 100644
--- a/src/game/ObjectMgr.cpp
+++ b/src/game/ObjectMgr.cpp
@@ -7389,6 +7389,8 @@ bool PlayerCondition::Meets(Player const * player) const
             return player->HasAura(value1, SpellEffectIndex(value2));
         case CONDITION_ITEM:
             return player->HasItemCount(value1, value2);
+        case CONDITION_NOITEM:
+            return player->!HasItemCount(value1, 1);
         case CONDITION_ITEM_EQUIPPED:
             return player->HasItemOrGemWithIdEquipped(value1,1);
         case CONDITION_ZONEID:
@@ -7484,6 +7486,16 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
             }
             break;
         }
+        case CONDITION_NOITEM:
+        {
+            ItemPrototype const *proto = ObjectMgr::GetItemPrototype(value1);
+            if(!proto)
+            {
+                sLog.outErrorDb("Item condition requires to have non existing item (%u), skipped", value1);
+                return false;
+            }
+            break;
+        }
         case CONDITION_ITEM_EQUIPPED:
         {
             ItemPrototype const *proto = ObjectMgr::GetItemPrototype(value1);
diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h
index 4442f56..d0fb9c5 100644
--- a/src/game/ObjectMgr.h
+++ b/src/game/ObjectMgr.h
@@ -301,6 +301,7 @@ enum ConditionType
     CONDITION_AURA                  = 1,                    // spell_id     effindex
     CONDITION_ITEM                  = 2,                    // item_id      count
     CONDITION_ITEM_EQUIPPED         = 3,                    // item_id      0
+    CONDITION_NOITEM                = 16,                   // item_id      count
     CONDITION_ZONEID                = 4,                    // zone_id      0
     CONDITION_REPUTATION_RANK       = 5,                    // faction_id   min_rank
     CONDITION_TEAM                  = 6,                    // player_team  0,      (469 - Alliance 67 - Horde)
@@ -315,7 +316,7 @@ enum ConditionType
     CONDITION_LEVEL                 = 15,                   // player_level 0, 1 or 2 (0: equal to, 1: equal or higher than, 2: equal or less than)
 };
 
-#define MAX_CONDITION                 16                    // maximum value in ConditionType enum
+#define MAX_CONDITION                 17                    // maximum value in ConditionType enum
 
 struct PlayerCondition
 {

Последний раз редактировалось timmit; 07.03.2010 в 14:26.
timmit вне форума  
2 пользователя(ей) сказали cпасибо:
PSZ (07.03.2010), Vladimir (07.03.2010)
Старый 07.03.2010, 11:40   #2
`win
Новичок
 
Регистрация: 07.03.2010
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 3 сообщениях
`win На верном пути
По умолчанию

эм... возможно покажусь занудой, но не могу не спросить.... а что правит/добавляет патч?
читая последнее предложение вообще не понял о чём речь :\

Последний раз редактировалось `win; 07.03.2010 в 11:56.
`win вне форума  
Старый 07.03.2010, 12:02   #3
Destros
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от timmit Посмотреть сообщение
Баг функции HasItemCount, что даже при 0 предметах она всегда будет true, поэтому когда мы в условии CONDITION_ITEM ставить 0 предметов, то при наличии оных у нас будет показываться госсип, что в корне не верно 0 это не 1
можно было бы попробовать использовать с !, тобишь
Код:
!HasItemCount(pItem, 1, false);

Последний раз редактировалось Destros; 07.03.2010 в 12:04.
 
Старый 07.03.2010, 12:04   #4
timmit
YTDB Dev
 
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
timmit На верном пути
По умолчанию

Патч добавляет функционал для gossip системы, когда мы показывается меню только при отсутствии предмета в инвентаре.

Последнее предложение к тому, что если value2 Для HasItemCount=0, как бы наличие 0 предметов, то при обращении к функции с проверкой твоего инвентаря, при наличии даже 1 предмета будет true ,что вообще неправильно вот я и говорю 0 это не 1.. 0 это ноль
timmit вне форума  
Старый 07.03.2010, 12:07   #5
PSZ
Ученый
 
Регистрация: 07.03.2010
Сообщений: 138
Сказал(а) спасибо: 200
Поблагодарили 143 раз(а) в 49 сообщениях
PSZ Обладатель прекрасной аурыPSZ Обладатель прекрасной ауры
По умолчанию

А можно пример, когда это нужно? У какого НПЦ какой госсип должен показываться только когда у персонажа отсутствует определенный предмет?
PSZ вне форума  
Старый 07.03.2010, 12:15   #6
Foks
just a lazy user
 
Регистрация: 07.03.2010
Адрес: Киев
Сообщений: 31
Сказал(а) спасибо: 48
Поблагодарили 31 раз(а) в 11 сообщениях
Foks На верном пути
По умолчанию

А !HasItemCount(..., 1, ...) разве не даст нам true когда у игрока отсутствует данный предмет? А если он есть хотя бы один, то даст false.
Foks вне форума  
Старый 07.03.2010, 12:18   #7
Destros
Гость
 
Сообщений: n/a
По умолчанию

оно даст false, на сколько я понял, это и надо.
Поэтому выше в посте и предлагал
 
Старый 07.03.2010, 12:39   #8
timmit
YTDB Dev
 
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
timmit На верном пути
По умолчанию

А если у меня таких 2 предмета? проверка даст труе итого false
timmit вне форума  
Старый 07.03.2010, 12:56   #9
Foks
just a lazy user
 
Регистрация: 07.03.2010
Адрес: Киев
Сообщений: 31
Сказал(а) спасибо: 48
Поблагодарили 31 раз(а) в 11 сообщениях
Foks На верном пути
По умолчанию

Но ведь это и нужно? В итоге условие даст true ТОЛЬКО если нету ни одного такого предмета.
Foks вне форума  
Старый 07.03.2010, 13:10   #10
timmit
YTDB Dev
 
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
timmit На верном пути
По умолчанию

Переписал, так правильно?
timmit вне форума  
Старый 07.03.2010, 14:12   #11
Destros
Гость
 
Сообщений: n/a
По умолчанию

Да, всё правильно.
 
Старый 07.03.2010, 14:17   #12
timmit
YTDB Dev
 
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
timmit На верном пути
По умолчанию

Цитата:
Сообщение от PSZ Посмотреть сообщение
А можно пример, когда это нужно? У какого НПЦ какой госсип должен показываться только когда у персонажа отсутствует определенный предмет?
Ой, щас не скажу вам, это нужно в 70% случаев госсипов, когда касается квестов, и когда вам говорят - если вдруг пропадет, я вам дам еще.
Пока вся работа с таким ведется без этого условия (обычно все такие предметы уникальны), но это не совсем правильно для отображения и т.д
timmit вне форума  
3 пользователя(ей) сказали cпасибо:
Lightunit (12.03.2010), LordJZ (07.03.2010), PSZ (07.03.2010)
Старый 07.03.2010, 15:50   #13
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

В [9544] с добавленной поддержкой количества. Спасибо
Vladimir вне форума  
7 пользователя(ей) сказали cпасибо:
Foks (08.03.2010), StinK (08.03.2010), YuruY (07.03.2010)
 


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кондиция 16(CONDITION_NOITEM) NeatElves Отвергнутые патчи 2 01.11.2010 05:36
Add support for CONDITION_QUEST_NONE tempura Принятые патчи 4 21.09.2010 21:53
[9544] Implement CONDITION_NOITEM. newsbot CMaNGOS Commits 0 07.03.2010 15:50


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


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