Ru-MaNGOS

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

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

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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.10.2010, 21:39   #1
Warlord123
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
Warlord123 Скоро придёт к известности
По умолчанию [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;
У существующих экземпляров предметов нужно сбросить флаг 0x8; Перед применением запроса необходимо сделать
резервную копию базы characters.
PHP код:
--
update item_instance character_inventory
set 
`data`=   CONCAT(SUBSTRING_INDEX( `data`, ' '21),' ',SUBSTRING_INDEX(SUBSTRING_INDEX(`data` , ' '22),' ',-1) & ~,' ',SUBSTRING_INDEX(`data`, ' ',-43)) 
where item_instance.guid item and item_template in (select entry from mangos.item_template where Flags 8) ;
-- 
В файле shauren.7z содержиться патч Shauren`а для Trinity. Там полностью разделены флаги прототипа и самого предмета.
Вложения
Тип файла: 7z heroic_patch_&_sql.7z (1.2 Кб, 4 просмотров)
Тип файла: 7z shauren.7z (8.9 Кб, 6 просмотров)

Последний раз редактировалось Warlord123; 22.10.2010 в 08:58.
Warlord123 вне форума  
2 пользователя(ей) сказали cпасибо:
tempura (22.10.2010), Vladimir (24.10.2010)
Старый 22.10.2010, 09:08   #2
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Никаких неожиданных эфектов не замечено с вещами с этим патчем?
Флаги копировались в вещь вообщемто исторически - с древних времен и никто сильно не проводил иследование нужно ли это делать для чего либо.
Пример с heroic вроде показывает что это не стоит делать по крайней мере для некоторых флагов точно. Моловероятно чтобы 2 поля флагов частично совпадали по флагам а частично были различны... поэтому возможно это и не хак, но нужна некоторая увеерность...
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума  
Старый 22.10.2010, 09:59   #3
Warlord123
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
Warlord123 Скоро придёт к известности
По умолчанию

Неожиданные эффекты были. Когда я попробовал просто не копировать флаги возникли проблемы с обернутыми подарками и при проверке IsBoundAccountWide ;
После изменений проблем не замечено. Я чуть позже подниму изменения в патчах, мне говорили что можно пересылать AccountWide вещи на другую фракцию.
Warlord123 вне форума  
Старый 22.10.2010, 10:15   #4
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Я не имею ввиду проверки в коде - там конечно надо исправлять обращения раз мы статические флаги не копируем. Имеются ввиду неадекватность на стороне клинета.
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума  
Старый 22.10.2010, 13:23   #5
Warlord123
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
Warlord123 Скоро придёт к известности
По умолчанию

После "очистки" флагов SQL-скриптом проблем в клиенте не было.
Warlord123 вне форума  
Пользователь сказал cпасибо:
Vladimir (25.10.2010)
Старый 24.10.2010, 17:09   #6
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Так как мне все равно надо проверять все случаи с флагами то я не планирую использовать trinity версию. За подтверждение работоспособности для стандартных случаев при некопировании, спасибо.

SQL запрос добавлю отдельно за вашим авторством.
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума  
Старый 25.10.2010, 15:30   #7
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

В [10641] добавлена моя версия патче.

Цитата:
SQL запрос добавлю отдельно за вашим авторством.
Я добавил проверку wrapped состояния при загрузке вешей поэтому sql update не требуется - флаг будет удален для некоректных случаев при первом логине после коммита.
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума  
Пользователь сказал cпасибо:
Warlord123 (25.10.2010)
 


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[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


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


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