• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Персонажи не телепортируютя
creative87rus
Скаут
Здравствуйте, персонажа не телепортирует в инсты. Такая проблема только у 2-х персонажей на сервере. Персонажи просто проходят мимо порталов без сообщений об ошибке. Остальные спокойно заходят в инст зоны. Так же у них не работает портал в выжженных землях в запределье. Связанно это как либо с фазой? И как это пофиксить?
Сообщение # 1 написано 15.01.2019 в 17:57
pak3935
Чемпион
Сдамни себе их чаров и проверь, может проблема в их клиенте.
Сообщение # 2 написано 15.01.2019 в 18:13
Autotunage
Скаут
Попробуй снять все ауры .un all , вдруг что висит и не отображается в клиенте.
Сообщение # 3 написано 15.01.2019 в 18:49
p620
Маршал
Цитата pak3935 ()
Сдамни себе их чаров и проверь, может проблема в их клиенте.

Проблема скорее всего в клиенте и есть. За проверку на нахождение в нужной зоне отвечает, насколько я помню, именно клиент, сервер лишь указывает целевые позиции (в случае с телепортацией). Если в клиентах испорчена AreaTrigger.dbc (а испортить ее можно не только полным удалением) - все порталы, работающие на этой технологии, работать перестанут.
Цитата Autotunage ()
Попробуй снять все ауры .un all , вдруг что висит и не отображается в клиенте.

Аур, воспрещающих подобные телепортации, не существует. Кроме того, можно просматривать их список командой ".list aur".
Сообщение # 4 написано 15.01.2019 в 19:11
creative87rus
Скаут
Сбросить все ауры помогло. Спасибо. Проблемы в клиенте нет т.к. играем с одного клиента, да и перетаскивал персонажей к себе на аккаунт.
Сообщение # 5 написано 15.01.2019 в 22:09
p620
Маршал
Цитата creative87rus ()
Сбросить все ауры помогло. Спасибо. Проблемы в клиенте нет т.к. играем с одного клиента, да и перетаскивал персонажей к себе на аккаунт.

Любопытно. Если такая проблема еще возникнет - не сочтите за труд представить список активных аур здесь (.list aur), при условии, что последующее их снятие снова решит проблему.
Сообщение # 6 написано 16.01.2019 в 00:42
Autotunage
Скаут
Цитата p620 ()
Аур, воспрещающих подобные телепортации, не существует.
Возможно, что аур, конкретно напрямую блокирующих такие телепортации, не существует. Но в игре великое множество различных заклинаний, имеющих совершенно разные атрибуты (многие из которых неизвестны), которые не отображаются в клиенте и могут как раз таки блокировать подобные действия. Допускаю такую возможность, что некоторые моменты блокировок  могут быть описаны в ядре, дабы исключить какие-то негативные последствия (баги, дюпы и тому подобное) от телепортации с определенными заклинаниями, висящими на игроке. Теоретически игроки могли "подцепить" эти заклинания при выполнении квестов, прохождении какой-либо зоны, либо просто при разговоре с каким-то из npc. Все это на уровне догадок и этот момент надо проверять, но я уверен, что так оно и есть.
Сообщение # 7 написано 16.01.2019 в 12:33
p620
Маршал
Цитата Autotunage ()
Возможно, что аур, конкретно напрямую блокирующих такие телепортации, не существует. Но в игре великое множество различных заклинаний, имеющих совершенно разные атрибуты (многие из которых неизвестны), которые не отображаются в клиенте и могут как раз таки блокировать подобные действия.


Почти все известны:
https://wowdev.wiki/Spell.dbc/Effect
https://wowdev.wiki/Spell.dbc/EffectApplyAuraName
Эффектом способности это быть не может, потому как действие должно быть пролонгированным, а не единоразовым, отражать характер некоторого состояния (невозможность пользоваться AreaTrigger'ами). Следовательно, если исключить маловероятные сценарии грязных хаков, остаются только ауры (перечень их типов по второй ссылке, если рассматривать WotLK).

Код
Это вместо горизонтального разделителя текста на абзацы.


Цитата Autotunage ()
Допускаю такую возможность, что некоторые моменты блокировок могут быть описаны в ядре, дабы исключить какие-то негативные последствия (баги, дюпы и тому подобное) от телепортации с определенными заклинаниями, висящими на игроке.


Правдоподобная версия, проверяем.
Код
/*0x0B4*/ DEFINE_HANDLER(CMSG_AREATRIGGER,                             STATUS_LOGGEDIN, PROCESS_INPLACE,      &WorldSession::HandleAreaTriggerOpcode         );


Назначение обработчика для соответствующего клиентского сигнала.



1) 
Код
player->IsInFlight()


Насколько я вижу, устанавливается только в случае использования "такси". В норме никакие ауры в core-механики движка лезть не должны, отметаем этот вариант как маловероятный.
2) Следующая пара вариантов обрабатывает случаи поломанных .dbc, которые не исправляются снятием всех аур.
3) Возврат из-за сценария выглядит многообещающе, проверяем.



Разворачиваем макрос GET_SCRIPT_RET. Теперь третья инструкция тела принимает вид:

Код
AreaTriggerScript* tmpscript = ScriptRegistry<AreaTriggerScript>::Instance()->GetScriptById(sObjectMgr->GetAreaTriggerScriptId(trigger->ID));
if(!tmpscript) /*соответствующий сценарий найден не был*/
    return false;


Понимаем, что обработчик запрашивает лишь сценарии, ассоциированные с конкретным AreaTrigger'ом и прекращаем расследование в этом направлении (для того, чтобы снятие всех аур помогло, необходимо, чтобы каждый перемещающий триггер имел свой сценарий, в котором, в свою очередь, прописан поиск по аурам и отказ в обработке при нахождении определенных совпадений, что есть чрезвычайно неэффективный бойлерплейт).
4) Нас не интересуют узкопрофильные ситуации с мировым PvP, полями боя и тавернами, поэтому их мы тоже игнорируем.
5) Входим в большой логический блок по справедливому для подавляющего большинства AreaTrigger'ов предположению, что
Код
player->GetMapId() != at->target_mapId


Три варианта возврата оттуда:
- с отладочным сообщением в консоль, все они так или иначе относятся к специфике целевой карты и к состояниям игрока, которые не могут (и в норме не должны) изменяться какими-либо аурами.
- с внутриигровым сообщением об ошибке, которого не было, согласно условию темы:
Цитата creative87rus ()
Персонажи просто проходят мимо порталов без сообщений об ошибке.


;
- без каких либо оповещений, если
Код
Map::EnterState MapManager::PlayerCannotEnter(uint32 mapid, Player* player, bool loginCheck)


вернет Map::CANNOT_ENTER_UNSPECIFIED_REASON (неприятный вариант, пока отложим его);
6) Безусловная телепортация в конце: либо в рамках группового мероприятия, либо одиночного.
Таким образом мы можем прийти к следующим возможным выводам:
1) Аура имеет клиентскую механику, запрещающую использование AreaTrigger'ов (например, их просчет просто отключается на клиенте, как следствие, пакеты с соответствующим опкодом, являющиеся инициатором последующей обработки (телепортации в нашем случае), не формируются и не отправляются).
2) Аура каким-то образом создает условия для возвращения того самого маловероятного Map::CANNOT_ENTER_UNSPECIFIED_REASON, который разбирать сейчас через браузер с GitHub'а откровенно лень.
3) Какой-то из других маловероятных вариантов оказался действительным.
К сожалению, мои возможности анализировать решение были существенно ограничены, т.к. я просматривал код через браузер прямо на GitHub'е, а поиск там, будем честны, такой себе, потому какие-то варианты могли от меня ускользнуть. Так или иначе, ситуация с починкой AreaTrigger'ов через избавление от всех аур все еще выглядит достаточно любопытно, а потому я повторюсь, creative87rus:
Цитата p620 ()
Если такая проблема еще возникнет - не сочтите за труд представить список активных аур здесь (.list aur), при условии, что последующее их снятие снова решит проблему.
Сообщение # 8 отредактировано p620 - Среда, 16.01.2019, 20:50
Autotunage
Скаут
Цитата p620 ()
Почти все известны:


Я не про это. Это spell effect, а существуют атрибуты (свойства) способностей (AttributesEx, ExB, ExC и т.д.), перечисленные в src\server\shared\SharedDefines.h И большинство из них действительно неизвестно.
Взглянуть можно здесь: https://wowdev.wiki/DB/Spell, но не факт, что здесь информация актуальна. Лучше брать информацию напрямую с исходников.

Предполагаю, что существует спелл, вещающийся на игрока при каком-то определенном действии (разговор с npc, квест, использовании вещи или любое другое) для неизвестных нам целей. Сам по себе спелл применяет любую из известных аур и висит бессрочно (вероятно, до определенного действия со стороны игрока) и при этом скрыт в клиенте, а так же в свойствах имеет параметр, который клиент воспринимает как блокировку телепортации в инст (или другую локацию через наземный телепорт) и не отправляет соответствующие пакеты данных на сервер.

Добавлено (16.01.2019, 22:31)
---------------------------------------------
Было бы крайне интересно узнать, какой именно параметр за это отвечает и сделать соответствующий комментарий в исходниках. Но, к великому сожалению, автор уже избавился от всех улик smile А повторение данной ситуации, с последующим постом на wowjp, вряд ли повторится sad

Сообщение # 9 отредактировано Autotunage - Среда, 16.01.2019, 22:27
p620
Маршал
Цитата Autotunage ()
Я не про это. Это spell effect, а существуют атрибуты (свойства) способностей (AttributesEx, ExB, ExC и т.д.), перечисленные в src\server\shared\SharedDefines.h И большинство из них действительно неизвестно.


Ну так если они неизвестны - они и не имплементированы. Мы же об эмуляторе сейчас говорим.
Цитата Autotunage ()
Было бы крайне интересно узнать, какой именно параметр за это отвечает и сделать соответствующий комментарий в исходниках. Но, к великому сожалению, автор уже избавился от всех улик А повторение данной ситуации, с последующим постом на wowjp, вряд ли повторится


Все равно можно выяснить, пусть и с бОльшими трудозатратами. Может посмотрю этот момент как-нибудь на грядущих неделях.
Сообщение # 10 написано 16.01.2019 в 23:28
  • Страница 1 из 1
  • 1
Поиск: