Ru-MaNGOS

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

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

Отвергнутые патчи Патчи, отвергнутые от приёма в GIT

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.06.2011, 09:30   #1
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию Снятие аур 96 и 111 по прокфлагам

Сабж. У них для этого есть все необходимые атрибуты, ничего хакать не надо. К тому же достаточно сильно неверный выбор доступных целей для перенаправления.
https://github.com/mangosR2/mangos/c...ddd15ca1bf9f30
Часть коммита в spell.cpp и метод определения доступных спеллов для перенаправления - дискуссионны, возможно требуют дополнительной корректировки (не предлагается к принятию в текущем виде).
rsa вне форума   Ответить с цитированием
Старый 10.08.2011, 22:14   #2
Laise
MaNGOS Dev
 
Аватар для Laise
 
Регистрация: 09.03.2010
Сообщений: 33
Сказал(а) спасибо: 27
Поблагодарили 26 раз(а) в 11 сообщениях
Laise На верном пути
По умолчанию

Код:
if (tmpUnitMap.size() == 1 && *tmpUnitMap.begin() == m_caster->getVictim())
может все таки по типам целей ?
Код:
if (pMagnetTarget != *tmpUnitMap.begin())
targets.getUnitTarget не ок?
Цитата:
SpellAuraHolder *holder = triggeredByAura->GetHolder()
у аур всегда есть холдер
Цитата:
if (holder->DropAuraCharge())
RemoveSpellAuraHolder(holder);
омфг хак, потому что в прок системе есть уже нормальное снятие зарядов
-
https://github.com/mangos/mangos/com...c3b6637b2fd995 альтернатива
Laise вне форума   Ответить с цитированием
Старый 10.08.2011, 22:59   #3
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Laise Посмотреть сообщение
Код:
if (tmpUnitMap.size() == 1 && *tmpUnitMap.begin() == m_caster->getVictim())
может все таки по типам целей ?
Код:
if (pMagnetTarget != *tmpUnitMap.begin())
targets.getUnitTarget не ок?
возможно, я же написал не предлагаются.
Цитата:
Сообщение от Laise Посмотреть сообщение
у аур всегда есть холдер
а вот тут уж хрен, извиняюсь. прекращайте жить в однопоточном мире. блокированные холдеры в коде удаляются на 2 строчки выше аур - при нагруженном сервере с многопоточными картами имеем пачки крашей с холдер=NULL и аура !=NULL. могу переслать.
кстати, как к их автору, меня вообще удивляет название. раз уж делать холдер - так холдер (двухуровневый курсор с подсчетом ссылок), а тут громким именем назван обычный объект с обычными ссылками... блокировки надо изобретать
Цитата:
Сообщение от Laise Посмотреть сообщение
омфг хак, потому что в прок системе есть уже нормальное снятие зарядов
-
https://github.com/mangos/mangos/com...c3b6637b2fd995 альтернатива
теперь - есть. на дату патча внимание обратите... тогда ничего не снималось. кроме того, аура 111 пока так и висит в воздухе.
rsa вне форума   Ответить с цитированием
Старый 11.08.2011, 05:17   #4
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Цитата:
а вот тут уж хрен, извиняюсь. прекращайте жить в однопоточном мире. блокированные холдеры в коде удаляются на 2 строчки выше аур - при нагруженном сервере с многопоточными картами
Ауры обрабатываются в контексте потока карты и соответствеено не может быть в _нормальной_ реализации каких-то конкурирующих потоков для одной карты. Мы все-таки говорим о мангосе в даном случае и мы давно приняли решение о поддерживаемой модели многопоточности и менять ее не собираемся.
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 11.08.2011, 10:32   #5
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Vladimir Посмотреть сообщение
Ауры обрабатываются в контексте потока карты и соответствеено не может быть в _нормальной_ реализации каких-то конкурирующих потоков для одной карты. Мы все-таки говорим о мангосе в даном случае и мы давно приняли решение о поддерживаемой модели многопоточности и менять ее не собираемся.
никто не говорит о возможности обработки одной ауры в разных потоках. но вот возможность ее удаления из конкурирующего потока в текущем коде присутствует. насколько мне известно, это именно поддерживаемая вами модель.
А, да еще. Запрашивать _информацию_ об аурах с юнита, обрабатываемого в другом потоке, никакая реализация конкурирующих потоков не запретит. а в текущей ситуации основная масса проблем - юнит1 запросил список думмиаур с юнита2, а пока он его проверял, юнит2 в другом потоке одну ауру дропнул. у юнита1 указатель на конец списка стал показывать в небо (ну или еще хуже) - краш.

Последний раз редактировалось rsa; 11.08.2011 в 10:46.
rsa вне форума   Ответить с цитированием
Старый 11.08.2011, 11:18   #6
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
юнит1 запросил список думмиаур с юнита2
я извиняюсь что встреваю, но можно поинтересоваться зачем?
т.е. в каких сценариях?

я - думаю... я - думаю... я - ничего опять не придумаю (с)
RomanRom2 вне форума   Ответить с цитированием
Старый 11.08.2011, 11:34   #7
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от RomanRom2 Посмотреть сообщение
я извиняюсь что встреваю, но можно поинтересоваться зачем?
т.е. в каких сценариях?
я - думаю... я - думаю... я - ничего опять не придумаю (с)
игрок кинул дот (или много еще чего) на другого и портнулся на другую карту. дот на втором игроке (в одной карте) считает SP кастера (или проки), находящегося на другой карте, включая перебор его думмиаур... таких сценариев больше десятка.
rsa вне форума   Ответить с цитированием
Старый 11.08.2011, 12:28   #8
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

я чувствую себя дурачком я не знаю всех этих геймерских сокращений SP - это что? мне подсказывают что это возможно Spell Power?

в любом случае, что бы там не было, какой то странный дизайн.
у меня создается объект типа TAura, в котором все эти параметры заданы. и он работает сам себе независимо ни от чего. как отработает - снимается. он даже не линкуется к юниту. точнее у юнита нет линка на объект ауры. у ауры конечно же есть.

т.е. при создании ауры я кеширую все необходимые параметры для ее работы в данный экземпляр. кастер больше не нужен.

у вас же получается, что на каждый периодик эффект ауры код лезет в объект кастера и берет у него текущие на данный момент данные. по моему это неправильно по трем причинам:
1. расчеты данной ауры ведуться от значений на момент наложения этой ауры. по крайней мере мне казалось это логичным и косьвенно подтверждалось данными из снифов.
2. ваш HLD приводит к колизиям, что собственно отражено в данном топике.
3. трудности доставки данных на распределенной/кластерной архитектуре.
RomanRom2 вне форума   Ответить с цитированием
Старый 11.08.2011, 12:49   #9
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

да кто бы блин спорил... в мангосе объект aura входит в ссылочный бокс-объект spellauraholder, а оба эти объекта (независимо!) прямо прилинкованы к цели и косвенно - к кастеру. конечно она не лезет на каждый периодикэффект (из-за п.1), но вот при наложении и снятии, прокам дополнительных эффектов, связанных аур - лезет. коллизий - ... (причем ауры - это еще не самый вредный источник коллизий в текущей архитектуре).
кластеризация мангоса вообще отдельная песня... в общем прототип выделенного БГ-реалма я сделал, но если кому покажу - уржетесь. самому смешно...
rsa вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
RomanRom2 (11.08.2011)
Старый 11.08.2011, 18:22   #10
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Цитата:
никто не говорит о возможности обработки одной ауры в разных потоках. но вот возможность ее удаления из конкурирующего потока в текущем коде присутствует. насколько мне известно, это именно поддерживаемая вами модель.
Нормальным решением проблемы должно быть не возращение для играков кастера с другой карты. И разрешение проблем с этим связанных.
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 11.08.2011, 18:56   #11
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Vladimir Посмотреть сообщение
Нормальным решением проблемы должно быть не возращение для играков кастера с другой карты. И разрешение проблем с этим связанных.
так часть крашей происходит (ну у меня уже -ла) именно из-за невозвращения юнита с другой карты... впрочем и это, и наоборот глобализация списка юнитов, и блокировки и (что я сейчас в основном делаю) кэширование структур - это все костыли разной степени кривости.
rsa вне форума   Ответить с цитированием
Старый 12.08.2011, 00:21   #12
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

У аур всегда есть холдер _by design_. Ауры никак не могут создаться раньше холдера, следовательно он не может быть null. Если у вас не так - это не что иное, как про*б ваших кастомных пачтей на мультитрединг.
zergtmn вне форума   Ответить с цитированием
Старый 12.08.2011, 05:19   #13
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

rsa прав в том что мы можем получить на _неправильном_ коде обращения к аурам проблему доступа к ауре на игроке находящимся на дуругой карте.
Решения проблемы я выше изложил - запретить доступ к кастеру ауры находящемуся на другой карте.

Цитата:
так часть крашей происходит (ну у меня уже -ла) именно из-за невозвращения юнита с другой карты...
Невозвращение - как раз не костыль - при карте на другом сервер у вас нет объекта кастера как такового. Ранее это не работало для аур потому что Done/Taken части урона/лечения не были разделены. Сейчас этой проблемы благодаря Laise нету. Возможно где-то сохранились зависимости работы от наличия кастера ауры, но их не должно быть много и фатально неисправимых вариантов.
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 12.08.2011, 10:55   #14
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Vladimir Посмотреть сообщение
Решения проблемы я выше изложил - запретить доступ к кастеру ауры находящемуся на другой карте.
но мы же вроде стремимся к максимальному оффлайку? тогда этот путь пролетает, ибо не будем говорить где все эффекты полностью дощелкивают до конца, независимо от смены карты целью. если вы собираетесь кэшировать данные кастера для таких случаев (это то что я делаю сейчас) - то это тоже кривой и ненадежный костыль. другие варианты (кроме расстановки блокировок) есть?
PS дыра с _removeAttacker(this) при мультитрединге кстати гораздо существеннее и я пока не вижу варианта ее решить кроме полной смены дизайна...

Добавлено через 2 минуты
Цитата:
Сообщение от zergtmn Посмотреть сообщение
У аур всегда есть холдер _by design_. Ауры никак не могут создаться раньше холдера, следовательно он не может быть null. Если у вас не так - это не что иное, как про*б ваших кастомных пачтей на мультитрединг.
не такие уж они и кастомные, других вариантов все равно пока нету. ауры не могут создаваться раньше холдера, но вот холдер удаляться раньше аур - запросто. я вполне достаточно проковырялся с отладчиком чтобы это утверждать.
rsa вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Ranger (22.08.2011)
Старый 12.08.2011, 17:03   #15
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Может вы просто приведете пример где кастер с другой карты в ауре нужен?
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 12.08.2011, 18:04   #16
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

unstable affliction, immolate. вообще большинство спеллов, где основной эффект дот и дополнительный - по снятии.
PS залез в код чистого, сразу попались: fear, SW:P, freezing trap. можно и по остальным углам кода еще накопать, но эти прямо на поверхности...

Последний раз редактировалось rsa; 12.08.2011 в 18:19.
rsa вне форума   Ответить с цитированием
Старый 12.08.2011, 20:02   #17
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Цитата:
где основной эффект дот и дополнительный - по снятии.
Упс, теперь понял. но там должно идти originalcasterGuid.
Возможно требуется более ограниченое получение указателя на кастера
по данному guid - получит ли игрок на другой карте экспу если дополнительный спел убьет от его дота?
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Старый 12.08.2011, 22:18   #18
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Vladimir Посмотреть сообщение
Упс, теперь понял. но там должно идти originalcasterGuid.
Возможно требуется более ограниченое получение указателя на кастера
по данному guid - получит ли игрок на другой карте экспу если дополнительный спел убьет от его дота?
там и идет по originalCasterGuid (вроде почти везде). в текущей ситуации мы в 50% случаев обламываемся (безопасно) а в 10% обламываемся (опасно). 40% на нормальное получение ссылки.
по ограничению - это к игрокам вопрос, меня такие тонкости всегда в тупик ставили
rsa вне форума   Ответить с цитированием
Старый 15.08.2011, 13:44   #19
`win
Новичок
 
Регистрация: 07.03.2010
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 3 сообщениях
`win На верном пути
По умолчанию

Цитата:
Сообщение от Vladimir Посмотреть сообщение
Упс, теперь понял. но там должно идти originalcasterGuid.
Возможно требуется более ограниченое получение указателя на кастера
по данному guid - получит ли игрок на другой карте экспу если дополнительный спел убьет от его дота?
Не уверен насчёт экспы, но честь дают. Даже если игрока пару раз ударил и портанулся в шторм, и игрок когда-то потом умирает - в чат придёт сообщение "получено очков чести 3 шт"
`win вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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



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


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