Ru-MaNGOS

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

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

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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.03.2011, 19:12   #1
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию [11650] Visibility of ghosts in group

В разделе новичков, как-то глухо... http://ru-mangos.ru/showthread.php?t=3624
Хочется услышать комментарий от разработчиков.

PHP код:
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index d187d68
..1f9509e 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -19564,+19564,20 @@ bool Player::IsVisibleInGridForPlayerPlayerpl ) const
         return 
true;
     }
 
+    
// live player see dead player only in this group
+    if (const GrouppGroup GetGroup())
+    {
+        if (
pGroup)
+        {
+            
Unittarget = ((Player*)pl);
+            if (
target->GetTypeId() == TYPEID_PLAYER && pGroup->IsMember(((Player*)target)->GetObjectGuid()))
+            {
+                if (!(
isAlive() || m_deathTimer 0) && IsFriendlyTo(pl))
+                    return 
true;
+            }
+        }
+    }
+
     
// Live player see live player or dead player with not realized corpse
     
if(pl->isAlive() || pl->m_deathTimer 0)
     { 
Den вне форума  
2 пользователя(ей) сказали cпасибо:
Vladimir (19.06.2011), xex (23.03.2011)
Старый 18.03.2011, 02:25   #2
Ambal
MaNGOS Dev
 
Аватар для Ambal
 
Регистрация: 22.06.2010
Сообщений: 78
Сказал(а) спасибо: 24
Поблагодарили 71 раз(а) в 25 сообщениях
Ambal Скоро придёт к известности
По умолчанию

Код:
 if (pGroup)
- явно лишняя проверка, равно как и конвертирование указателя на Player в Unit:
Код:
 Unit* target = ((Player*)pl);

Последний раз редактировалось Ambal; 18.03.2011 в 02:27.
Ambal вне форума  
Пользователь сказал cпасибо:
Den (18.03.2011)
Старый 18.03.2011, 20:05   #3
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Ambal Посмотреть сообщение
конвертирование указателя на Player в Unit:
Код:
 Unit* target = ((Player*)pl);
Вот так правильно?
Код:
Player* target = ((Player*)pl)
Den вне форума  
Старый 18.03.2011, 20:56   #4
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Возможно, так:
Код:
+    if (const Group* pGroup = GetGroup())
+        if (pl->GetTypeId() == TYPEID_PLAYER && pGroup->IsMember(pl->GetObjectGuid()))
+            if (!(isAlive() || m_deathTimer > 0) && IsFriendlyTo(pl))
+                return true;
При необходимости можно использовать (Player*)pl.
virusav вне форума  
Пользователь сказал cпасибо:
Den (18.06.2011)
Старый 19.03.2011, 09:27   #5
Vipertv
Гость
 
Сообщений: n/a
По умолчанию

Еще одна лишняя проверка, так как pl и так уже является типа Player:
Код:
pl->GetTypeId() == TYPEID_PLAYER
 
Пользователь сказал cпасибо:
Den (18.06.2011)
Старый 18.06.2011, 14:51   #6
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

Скриншот делался три месяца назад: http://www.imagepost.ru/?v=wowscrnsh...311_133918.jpg
Патч обновлен 11642.
Код:
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 71495a4..de3541f 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -19848,6 +19848,14 @@ bool Player::IsVisibleInGridForPlayer( Player* pl ) const
         return true;
     }
 
+    // live player see dead player only in this group
+    if (const Group* pGroup = GetGroup())
+    {
+        if (pGroup->IsMember(pl->GetObjectGuid()))
+            if (!(isAlive() || m_deathTimer > 0) && IsFriendlyTo(pl))
+                return true;
+    }
+
     // Live player see live player or dead player with not realized corpse
     if(pl->isAlive() || pl->m_deathTimer > 0)
     {
Den вне форума  
Старый 19.06.2011, 02:47   #7
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

есть специальная функция IsInSameRaidWith (IsInSameGroupWith учитывает тоько подгруппу в случае рейда)

не думаю что IsFriendlyTo нужно - так как члены группы по определению friendly в смысле людей - а наличие всяких charm-ов не влияет на отношение человека управляющего чаров.

зачем if (!(isAlive() || m_deathTimer > 0)) я не понял. Делаю небольшое предположение что духи тоже друг друга видят из той-же группы.

тогда просто:
Код:
    if (IsInSameRaidWith(pl))
        return true;
и if (InBattleGround()) можно дропнуть как частный случай того-же
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума  
Старый 19.06.2011, 02:59   #8
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

В такой упрощенной форме добавлено в [11650]. Спасибо.
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума  
 


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[11206] Move visibility self/around to new function and use it. newsbot CMaNGOS Commits 0 27.02.2011 18:30
[11183] Use map type dependent visibility distance for gameobject, dynamicobject and corpse visibili newsbot CMaNGOS Commits 0 18.02.2011 02:10
[10805] Remove code duplication in visibility distance check. newsbot CMaNGOS Commits 0 02.12.2010 00:12
[9921] In case player who tap creature in group leave group it must anyway rewarded with group. newsbot CMaNGOS Commits 0 18.05.2010 04:11
[9578] Use ObjectGuid in visibility sets newsbot CMaNGOS Commits 0 12.03.2010 22:00


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


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