Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Устаревшие темы и разработки > MaNGOS 0.12 (2.4.3)

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

MaNGOS 0.12 (2.4.3) Любителям олд-скула =) Всё для клиента 2.4.3

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.03.2010, 13:41   #1
Osa
Новичок
 
Аватар для Osa
 
Регистрация: 07.03.2010
Сообщений: 20
Сказал(а) спасибо: 3
Поблагодарили 7 раз(а) в 6 сообщениях
Osa На верном пути
По умолчанию Клон(dup)

Врпрос к гуру...я верно думаю..что это патч от бага?

Код:
--- trunk/src/game/Player.cpp	2008/09/08 19:40:19	6564
+++ trunk/src/game/Player.cpp	2008/09/08 22:40:58	6565
@@ -8420,8 +8420,12 @@
     if(need_space > count)
         need_space = count;
 
-    dest.push_back(ItemPosCount((bag << 8) | slot,need_space));
-    count -= need_space;
+    ItemPosCount newPosition = ItemPosCount((bag << 8) | slot, need_space);
+    if(!newPosition.isContainedIn(dest))
+    {
+        dest.push_back(newPosition);
+        count -= need_space;
+    }
     return EQUIP_ERR_OK;
 }
 
@@ -8470,11 +8474,15 @@
                 if(need_space > count)
                     need_space = count;
 
-                dest.push_back(ItemPosCount((bag << 8) | j,need_space));
-                count -= need_space;
+                ItemPosCount newPosition = ItemPosCount((bag << 8) | j, need_space);
+                if(!newPosition.isContainedIn(dest))
+                {
+                    dest.push_back(newPosition);
+                    count -= need_space;
 
-                if(count==0)
-                    return EQUIP_ERR_OK;
+                    if(count==0)
+                        return EQUIP_ERR_OK;
+                }
             }
         }
         else
@@ -8483,11 +8491,15 @@
             if(need_space > count)
                 need_space = count;
 
-            dest.push_back(ItemPosCount((bag << 8) | j,need_space));
-            count -= need_space;
+            ItemPosCount newPosition = ItemPosCount((bag << 8) | j, need_space);
+            if(!newPosition.isContainedIn(dest))
+            {
+                dest.push_back(newPosition);
+                count -= need_space;
 
-            if(count==0)
-                return EQUIP_ERR_OK;
+                if(count==0)
+                    return EQUIP_ERR_OK;
+            }
         }
     }
     return EQUIP_ERR_OK;
@@ -8518,12 +8530,15 @@
                 uint32 need_space = pProto->Stackable - pItem2->GetCount();
                 if(need_space > count)
                     need_space = count;
+                ItemPosCount newPosition = ItemPosCount((INVENTORY_SLOT_BAG_0 << 8) | j, need_space);
+                if(!newPosition.isContainedIn(dest))
+                {
+                    dest.push_back(newPosition);
+                    count -= need_space;
 
-                dest.push_back(ItemPosCount((INVENTORY_SLOT_BAG_0 << 8) | j, need_space));
-                count -= need_space;
-
-                if(count==0)
-                    return EQUIP_ERR_OK;
+                    if(count==0)
+                        return EQUIP_ERR_OK;
+                }
             }
         }
         else
@@ -8532,11 +8547,15 @@
             if(need_space > count)
                 need_space = count;
 
-            dest.push_back(ItemPosCount((INVENTORY_SLOT_BAG_0 << 8) | j,need_space));
-            count -= need_space;
+            ItemPosCount newPosition = ItemPosCount((INVENTORY_SLOT_BAG_0 << 8) | j, need_space);
+            if(!newPosition.isContainedIn(dest))
+            {
+                dest.push_back(newPosition);
+                count -= need_space;
 
-            if(count==0)
-                return EQUIP_ERR_OK;
+                if(count==0)
+                    return EQUIP_ERR_OK;
+            }
         }
     }
     return EQUIP_ERR_OK;
@@ -17829,3 +17848,16 @@
     if ((height_z <= INVALID_HEIGHT || z < (height_z - 0)) && (flag1 == 0x00) && IsInWater())
         m_isunderwater |= 0x80;
 }
+
+bool ItemPosCount::isContainedIn(ItemPosCountVec &vec)
+{
+    for(ItemPosCountVec::const_iterator itr = vec.begin(); itr != vec.end();++itr)
+    {
+        if(itr->pos == this->pos/* && itr->count == this.count*/)
+        {
+            return true;
+        }
+    }
+    return false;
+}
+

Взято тут http://mangos.svn.sourceforge.net/vi...4&pathrev=6565

Последний раз редактировалось Konctantin; 09.03.2010 в 14:52. Причина: Используйте теги кода
Osa вне форума   Ответить с цитированием
 


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дюп-клон Osa Баг-репорты 0 18.03.2010 14:21


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


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