|
Принятые патчи Иногда выкладывают патчи, которые потом в итоге все-таки принимают в ядро.
Повод для гордости. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
07.03.2010, 09:33 | #1 |
YTDB Dev
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
|
[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. |
07.03.2010, 11:40 | #2 |
Новичок
Регистрация: 07.03.2010
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 3 сообщениях
|
эм... возможно покажусь занудой, но не могу не спросить.... а что правит/добавляет патч?
читая последнее предложение вообще не понял о чём речь :\ Последний раз редактировалось `win; 07.03.2010 в 11:56. |
07.03.2010, 12:02 | #3 | |
Гость
Сообщений: n/a
|
Цитата:
Код:
!HasItemCount(pItem, 1, false); Последний раз редактировалось Destros; 07.03.2010 в 12:04. |
|
07.03.2010, 12:04 | #4 |
YTDB Dev
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
|
Патч добавляет функционал для gossip системы, когда мы показывается меню только при отсутствии предмета в инвентаре.
Последнее предложение к тому, что если value2 Для HasItemCount=0, как бы наличие 0 предметов, то при обращении к функции с проверкой твоего инвентаря, при наличии даже 1 предмета будет true ,что вообще неправильно вот я и говорю 0 это не 1.. 0 это ноль |
07.03.2010, 12:07 | #5 |
Ученый
Регистрация: 07.03.2010
Сообщений: 138
Сказал(а) спасибо: 200
Поблагодарили 143 раз(а) в 49 сообщениях
|
А можно пример, когда это нужно? У какого НПЦ какой госсип должен показываться только когда у персонажа отсутствует определенный предмет?
|
07.03.2010, 12:15 | #6 |
just a lazy user
Регистрация: 07.03.2010
Адрес: Киев
Сообщений: 31
Сказал(а) спасибо: 48
Поблагодарили 31 раз(а) в 11 сообщениях
|
А !HasItemCount(..., 1, ...) разве не даст нам true когда у игрока отсутствует данный предмет? А если он есть хотя бы один, то даст false.
|
07.03.2010, 12:18 | #7 |
Гость
Сообщений: n/a
|
оно даст false, на сколько я понял, это и надо.
Поэтому выше в посте и предлагал |
07.03.2010, 12:39 | #8 |
YTDB Dev
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
|
А если у меня таких 2 предмета? проверка даст труе итого false
|
07.03.2010, 12:56 | #9 |
just a lazy user
Регистрация: 07.03.2010
Адрес: Киев
Сообщений: 31
Сказал(а) спасибо: 48
Поблагодарили 31 раз(а) в 11 сообщениях
|
Но ведь это и нужно? В итоге условие даст true ТОЛЬКО если нету ни одного такого предмета.
|
07.03.2010, 13:10 | #10 |
YTDB Dev
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
|
Переписал, так правильно?
|
07.03.2010, 14:12 | #11 |
Гость
Сообщений: n/a
|
Да, всё правильно.
|
07.03.2010, 14:17 | #12 | |
YTDB Dev
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
|
Цитата:
Пока вся работа с таким ведется без этого условия (обычно все такие предметы уникальны), но это не совсем правильно для отображения и т.д |
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кондиция 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 |