Снятие аур 96 и 111 по прокфлагам
Сабж. У них для этого есть все необходимые атрибуты, ничего хакать не надо. К тому же достаточно сильно неверный выбор доступных целей для перенаправления.
https://github.com/mangosR2/mangos/c...ddd15ca1bf9f30 Часть коммита в spell.cpp и метод определения доступных спеллов для перенаправления - дискуссионны, возможно требуют дополнительной корректировки (не предлагается к принятию в текущем виде). |
Код:
if (tmpUnitMap.size() == 1 && *tmpUnitMap.begin() == m_caster->getVictim()) Код:
if (pMagnetTarget != *tmpUnitMap.begin()) Цитата:
Цитата:
- https://github.com/mangos/mangos/com...c3b6637b2fd995 альтернатива |
Цитата:
Цитата:
кстати, как к их автору, меня вообще удивляет название. раз уж делать холдер - так холдер (двухуровневый курсор с подсчетом ссылок), а тут громким именем назван обычный объект с обычными ссылками... блокировки надо изобретать :( Цитата:
|
Цитата:
|
Цитата:
А, да еще. Запрашивать _информацию_ об аурах с юнита, обрабатываемого в другом потоке, никакая реализация конкурирующих потоков не запретит. а в текущей ситуации основная масса проблем - юнит1 запросил список думмиаур с юнита2, а пока он его проверял, юнит2 в другом потоке одну ауру дропнул. у юнита1 указатель на конец списка стал показывать в небо (ну или еще хуже) - краш. |
Цитата:
т.е. в каких сценариях? я - думаю... я - думаю... я - ничего опять не придумаю (с) |
Цитата:
|
я чувствую себя дурачком =) я не знаю всех этих геймерских сокращений =( SP - это что? мне подсказывают что это возможно Spell Power?
в любом случае, что бы там не было, какой то странный дизайн. у меня создается объект типа TAura, в котором все эти параметры заданы. и он работает сам себе независимо ни от чего. как отработает - снимается. он даже не линкуется к юниту. точнее у юнита нет линка на объект ауры. у ауры конечно же есть. т.е. при создании ауры я кеширую все необходимые параметры для ее работы в данный экземпляр. кастер больше не нужен. у вас же получается, что на каждый периодик эффект ауры код лезет в объект кастера и берет у него текущие на данный момент данные. по моему это неправильно по трем причинам: 1. расчеты данной ауры ведуться от значений на момент наложения этой ауры. по крайней мере мне казалось это логичным и косьвенно подтверждалось данными из снифов. 2. ваш HLD приводит к колизиям, что собственно отражено в данном топике. 3. трудности доставки данных на распределенной/кластерной архитектуре. |
да кто бы блин спорил... в мангосе объект aura входит в ссылочный бокс-объект spellauraholder, а оба эти объекта (независимо!) прямо прилинкованы к цели и косвенно - к кастеру. конечно она не лезет на каждый периодикэффект (из-за п.1), но вот при наложении и снятии, прокам дополнительных эффектов, связанных аур - лезет. коллизий - ... (причем ауры - это еще не самый вредный источник коллизий в текущей архитектуре).
кластеризация мангоса вообще отдельная песня... в общем прототип выделенного БГ-реалма я сделал, но если кому покажу - уржетесь. самому смешно... :) |
Цитата:
|
Цитата:
|
У аур всегда есть холдер _by design_. Ауры никак не могут создаться раньше холдера, следовательно он не может быть null. Если у вас не так - это не что иное, как про*б ваших кастомных пачтей на мультитрединг.
|
rsa прав в том что мы можем получить на _неправильном_ коде обращения к аурам проблему доступа к ауре на игроке находящимся на дуругой карте.
Решения проблемы я выше изложил - запретить доступ к кастеру ауры находящемуся на другой карте. Цитата:
|
Цитата:
PS дыра с _removeAttacker(this) при мультитрединге кстати гораздо существеннее и я пока не вижу варианта ее решить кроме полной смены дизайна... Добавлено через 2 минуты Цитата:
|
Может вы просто приведете пример где кастер с другой карты в ауре нужен?
|
unstable affliction, immolate. вообще большинство спеллов, где основной эффект дот и дополнительный - по снятии.
PS залез в код чистого, сразу попались: fear, SW:P, freezing trap. можно и по остальным углам кода еще накопать, но эти прямо на поверхности... |
Цитата:
Возможно требуется более ограниченое получение указателя на кастера по данному guid - получит ли игрок на другой карте экспу если дополнительный спел убьет от его дота? |
Цитата:
по ограничению - это к игрокам вопрос, меня такие тонкости всегда в тупик ставили :) |
Цитата:
|
Текущее время: 11:29. Часовой пояс GMT +3. |
ru-mangos.ru - Русское сообщество MaNGOS