|
Принятые патчи Иногда выкладывают патчи, которые потом в итоге все-таки принимают в ядро.
Повод для гордости. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
15.05.2012, 18:29 | #1 | ||
YTDB Dev
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
|
[12007] Add CONDITION_REPUTATION_RANK_MAX
1. Rename CONDITION_REPUTATION_RANK->CONDITION_REPUTATION_RANK_MIN
2. Add CONDITION_REPUTATION_RANK_MAX Зачем: Есть нпц с госсипами, у которых текст для каждого ранга репутации, пример - охрана Черного ворона, властитель Крыльев пустоты, по старой системе мы получаем так(type,value1,value2): Цитата:
С новой системой поточнее: Цитата:
Код:
diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 180142b..47e46fe 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -7507,7 +7507,7 @@ bool PlayerCondition::Meets(Player const * player) const player->GetZoneAndAreaId(zone,area); return (zone == m_value1 || area == m_value1) == (m_value2 == 0); } - case CONDITION_REPUTATION_RANK: + case CONDITION_REPUTATION_RANK_MIN: { FactionEntry const* faction = sFactionStore.LookupEntry(m_value1); return faction && player->GetReputationMgr().GetRank(faction) >= ReputationRank(m_value2); @@ -7676,6 +7676,11 @@ bool PlayerCondition::Meets(Player const * player) const return !player->HasSkill(m_value1); else return player->HasSkill(m_value1) && player->GetBaseSkillValue(m_value1) < m_value2; + case CONDITION_REPUTATION_RANK_MAX: + { + FactionEntry const* faction = sFactionStore.LookupEntry(m_value1); + return faction && player->GetReputationMgr().GetRank(faction) < ReputationRank(m_value2); + } default: return false; } @@ -7772,7 +7777,8 @@ bool PlayerCondition::IsValid(uint16 entry, ConditionType condition, uint32 valu } break; } - case CONDITION_REPUTATION_RANK: + case CONDITION_REPUTATION_RANK_MIN: + case CONDITION_REPUTATION_RANK_MAX: { FactionEntry const* factionEntry = sFactionStore.LookupEntry(value1); if (!factionEntry) diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h index 229d9b2..81a7c26 100644 --- a/src/game/ObjectMgr.h +++ b/src/game/ObjectMgr.h @@ -345,7 +345,7 @@ enum ConditionType CONDITION_ITEM = 2, // item_id count check present req. amount items in inventory CONDITION_ITEM_EQUIPPED = 3, // item_id 0 CONDITION_AREAID = 4, // area_id 0, 1 (0: in (sub)area, 1: not in (sub)area) - CONDITION_REPUTATION_RANK = 5, // faction_id min_rank + CONDITION_REPUTATION_RANK_MIN = 5, // faction_id min_rank CONDITION_TEAM = 6, // player_team 0, (469 - Alliance 67 - Horde) CONDITION_SKILL = 7, // skill_id skill_value CONDITION_QUESTREWARDED = 8, // quest_id 0 @@ -375,6 +375,7 @@ enum ConditionType CONDITION_SKILL_BELOW = 29, // skill_id skill_value // True if player has skill skill_id and skill less than (and not equal) skill_value (for skill_value > 1) // If skill_value == 1, then true if player has not skill skill_id + CONDITION_REPUTATION_RANK_MAX = 30, // faction_id max_rank }; class PlayerCondition |
||
15.05.2012, 19:15 | #2 |
Администратор
|
Если для MIN стоит условие
Код:
return faction && player->GetReputationMgr().GetRank(faction) >= ReputationRank(m_value2); Код:
return faction && player->GetReputationMgr().GetRank(faction) <= ReputationRank(m_value2); |
15.05.2012, 19:20 | #3 | ||
YTDB Dev
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
|
Цитата:
И что тогда выйдет ? Какой текст отработает ? Цитата:
Последний раз редактировалось NeatElves; 15.05.2012 в 19:23. |
||
15.05.2012, 19:23 | #4 |
Администратор
|
Достаточно будет 5 349 3 и 30 349 4, т.к. будут выбираться ранги >=3 и <=4.
|
15.05.2012, 19:27 | #5 | |
YTDB Dev
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
|
Все равно не то, у нпц тексты для рангов
Цитата:
|
|
15.05.2012, 19:43 | #6 |
Администратор
|
В твоем варианте для первого ранга будет так: 5 349 3 и 30 349 4.
С моей поправкой для первого ранга будет так: 5 349 3 и 30 349 3. Вот и вся разница. Просто, используя MIN и MAX в кондициях, надо давать им похожую обработку: если для минимума включается равенство при сравнении, то то же самое надо делать и для максимума. |
15.05.2012, 19:47 | #7 | ||
YTDB Dev
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
|
У меня будет больше или равен 3 и меньше 4
У тебя будет больше или равен 3 и меньше или равен 3 Где логика ?)) Мой вариант Цитата:
Цитата:
Последний раз редактировалось NeatElves; 15.05.2012 в 19:55. |
||
15.05.2012, 20:01 | #8 |
Администратор
|
Работать будет в обоих вариантах, просто в твоем цифра будет на 1 больше.
Я привел правку, т.к. так будет логичнее, на мой взгляд. Код:
CONDITION_REPUTATION_RANK_MIN = 5, // faction_id min_rank CONDITION_REPUTATION_RANK_MAX = 30, // faction_id max_rank Глядя на названия переменных и их описание, этого не скажешь. |
15.05.2012, 20:33 | #9 |
YTDB Dev
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
|
Странно, допустим у игрока ранг 4, подходят оба варианта
Код:
больше или равен 3 и меньше или равен 4 больше или равен 4 и меньше или равен 5 |
15.05.2012, 20:39 | #10 |
Администратор
|
Если нужен только ранг Х, то для кондиций 5 и 30 `value2`=X.
|
15.05.2012, 20:54 | #11 | |
YTDB Dev
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
|
Распиши свое видение условий для
Цитата:
|
|
15.05.2012, 23:30 | #12 |
Администратор
|
Я уже писал для первого, для всех будет так:
Код:
5 349 3 и 30 349 3 5 349 4 и 30 349 4 5 349 5 и 30 349 5 5 349 6 и 30 349 6 5 349 7 и 30 349 7 |
13.06.2012, 16:54 | #13 |
MaNGOS Dev
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
|
I agree with virusav.
MAX value2 return true IF_AND_ONLY_IF rank <= value2 this is more natural way. for something named max (and dual to min). |
13.06.2012, 17:20 | #14 |
YTDB Dev
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
|
Не спорю) У вирусава логично математически, у меня логично по близзардовски.))
|
13.06.2012, 23:36 | #15 |
MaNGOS Dev
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
|
With <= in [12007]
Thank you for the patch and you both for discussion |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[12007] Add new CONDITION_REPUTATION_RANK_MAX (30) | newsbot | CMaNGOS Commits | 0 | 13.06.2012 23:40 |