|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Принятые патчи Иногда выкладывают патчи, которые потом в итоге все-таки принимают в ядро.
Повод для гордости. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
21.10.2010, 21:39 | #1 |
Пользователь
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
|
[10641][hack fix] Отображение характеристик heroic предметов.
Суть проблемы: Вещи с меткой "Heroic" не показывают вставленные камни, бонусы от камней, наложенные энчанты,
прочность. Идея: Оригинальный патч от Shauren. Суть в том , что в данный момент флаги от шаблона предмета копируются каждому экземпляру предмета. В итоге в экземпляре храниться сумма флагов предмета и шаблона. До появления ITEM_FLAGS_HEROIC = 0x00000008 проблема себя не проявляла. Предлагаемый патч требует дополнительной проверки, пока проблемы не выявлены. Код:
diff --git a/src/game/Bag.cpp b/src/game/Bag.cpp index c2d3b74..e929796 100644 --- a/src/game/Bag.cpp +++ b/src/game/Bag.cpp @@ -74,7 +74,7 @@ bool Bag::Create(uint32 guidlow, uint32 itemid, Player const* owner) SetUInt32Value(ITEM_FIELD_MAXDURABILITY, itemProto->MaxDurability); SetUInt32Value(ITEM_FIELD_DURABILITY, itemProto->MaxDurability); - SetUInt32Value(ITEM_FIELD_FLAGS, itemProto->Flags); + //SetUInt32Value(ITEM_FIELD_FLAGS, itemProto->Flags); SetUInt32Value(ITEM_FIELD_STACK_COUNT, 1); // Setting the number of Slots the Container has diff --git a/src/game/Item.cpp b/src/game/Item.cpp index 52e58a9..68049ce 100644 --- a/src/game/Item.cpp +++ b/src/game/Item.cpp @@ -266,7 +266,7 @@ bool Item::Create( uint32 guidlow, uint32 itemid, Player const* owner) for(int i = 0; i < MAX_ITEM_PROTO_SPELLS; ++i) SetSpellCharges(i,itemProto->Spells[i].SpellCharges); - SetUInt32Value(ITEM_FIELD_FLAGS, itemProto->Flags); + //SetUInt32Value(ITEM_FIELD_FLAGS, itemProto->Flags); SetUInt32Value(ITEM_FIELD_DURATION, itemProto->Duration); return true; diff --git a/src/game/Item.h b/src/game/Item.h index 33ac541..a64dbbd 100644 --- a/src/game/Item.h +++ b/src/game/Item.h @@ -240,7 +240,7 @@ class MANGOS_DLL_SPEC Item : public Object void SetBinding(bool val) { ApplyModFlag(ITEM_FIELD_FLAGS,ITEM_FLAGS_BINDED,val); } bool IsSoulBound() const { return HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_BINDED); } - bool IsBoundAccountWide() const { return HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_BOA); } + bool IsBoundAccountWide() const { return (GetProto()->Flags & ITEM_FLAGS_BOA); } bool IsBindedNotWith(Player const* player) const; bool IsBoundByEnchant() const; virtual void SaveToDB(); diff --git a/src/game/ItemHandler.cpp b/src/game/ItemHandler.cpp index 08b3386..bdb08ae 100644 --- a/src/game/ItemHandler.cpp +++ b/src/game/ItemHandler.cpp @@ -1111,7 +1111,7 @@ void WorldSession::HandleWrapItemOpcode(WorldPacket& recv_data) return; } - if (!gift->HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAGS_WRAPPER))// cheating: non-wrapper wrapper + if (!(gift->GetProto()->Flags & ITEM_FLAGS_WRAPPER))// cheating: non-wrapper wrapper { _player->SendEquipError( EQUIP_ERR_ITEM_NOT_FOUND, gift, NULL ); return; резервную копию базы characters. PHP код:
Последний раз редактировалось Warlord123; 22.10.2010 в 08:58. |
22.10.2010, 09:08 | #2 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Никаких неожиданных эфектов не замечено с вещами с этим патчем?
Флаги копировались в вещь вообщемто исторически - с древних времен и никто сильно не проводил иследование нужно ли это делать для чего либо. Пример с heroic вроде показывает что это не стоит делать по крайней мере для некоторых флагов точно. Моловероятно чтобы 2 поля флагов частично совпадали по флагам а частично были различны... поэтому возможно это и не хак, но нужна некоторая увеерность...
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
22.10.2010, 09:59 | #3 |
Пользователь
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
|
Неожиданные эффекты были. Когда я попробовал просто не копировать флаги возникли проблемы с обернутыми подарками и при проверке IsBoundAccountWide ;
После изменений проблем не замечено. Я чуть позже подниму изменения в патчах, мне говорили что можно пересылать AccountWide вещи на другую фракцию. |
22.10.2010, 10:15 | #4 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Я не имею ввиду проверки в коде - там конечно надо исправлять обращения раз мы статические флаги не копируем. Имеются ввиду неадекватность на стороне клинета.
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
24.10.2010, 17:09 | #6 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Так как мне все равно надо проверять все случаи с флагами то я не планирую использовать trinity версию. За подтверждение работоспособности для стандартных случаев при некопировании, спасибо.
SQL запрос добавлю отдельно за вашим авторством.
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
25.10.2010, 15:30 | #7 | |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
В [10641] добавлена моя версия патче.
Цитата:
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
|
Пользователь сказал cпасибо: | Warlord123 (25.10.2010) |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[10641] Fixed use item dynamic/item proto flags. | newsbot | CMaNGOS Commits | 0 | 25.10.2010 15:30 |
Фильтр отображения предметов у торговца. | alien | Баг-репорты | 12 | 08.06.2010 20:57 |
[10046][patch] Хранение GUIDов передаваемых предметов при обмене | zergtmn | Принятые патчи | 4 | 08.06.2010 19:50 |
Отображение сгруппированных квестов | timmit | Баг-репорты | 7 | 30.05.2010 12:59 |
[fixed][bug] Дублирование предметов. | Maximus | Баг-репорты | 12 | 23.04.2010 21:52 |