PDA

Просмотр полной версии : MO_Transport


MaxXx2021
22.06.2011, 17:52
Посидели мы ланцом сделали хаковую реализацию нпц на транспорте под Мангос, за основу взяли наработки Шаурена.
Все изменения вы можете найти вот здесь
https://github.com/KioM/mangos/commits/master

Хотелось бы довести эту реализацию до ума и сделать транспорт как карту. Но увы тут мы зашли в тупик. Как я понял карты в сервере имеются. И даже Вмапсы подключаются как не странно по карте к транспорту. Но сервер видимо не хочет ее обрабатывать. Если кто поможет сниффами или идеями будем рады :)

RomanRom2
22.06.2011, 18:13
... и сделать транспорт как карту.
... Но увы тут мы зашли в тупик.
... Но сервер видимо не хочет ее обрабатывать. Если кто поможет сниффами или идеями будем рады :)
мыши плакали, кололись, но продолжали жрать кактус :ireful2:

MaxXx2021
22.06.2011, 18:22
мыши плакали, кололись, но продолжали жрать кактус :ireful2:

И чему этот цирк?

zergtmn
22.06.2011, 18:38
сделать транспорт как карту
В мангосе карты очень обособлены друг от друга. А, находясь на транспорте, можно получать пакеты с "родительской" карты и кастовать на тех кто "вне" (и даже на другом транспорте, ref. бой на кораблях). Я не уверен, что это правильный подход.

MaxXx2021
22.06.2011, 18:58
В мангосе карты очень обособлены друг от друга. А, находясь на транспорте, можно получать пакеты с "родительской" карты и кастовать на тех кто "вне" (и даже на другом транспорте, ref. бой на кораблях). Я не уверен, что это правильный подход.

Ну в клиенте есть карты, которые называются Transport197347, Transport197348, Transport197349 и тд. Можно ли их как то задействовать?

HuntsMan
22.06.2011, 20:15
Я так понял по предвыдущему треду, нужно чисто решить проблему с взаимодействием плеера и юнитов на транспорте. Я представляю себе это так:
1. Проверяем есть ли на юните флаг на транспорте он или нет
2. Если есть флаг, то берем его координаты и координаты плеера относительно транспорта, по ним определяем вектор расстояния, ну а дальше уже, если расстояние приемлемое, то всякие взаимодействия (госсипы, атака, и т.п.). Если флага нет, то обработчик определения расстояния используем старый (по родительской карте).

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

MaxXx2021
22.06.2011, 20:35
Я так понял по предвыдущему треду, нужно чисто решить проблему с взаимодействием плеера и юнитов на транспорте. Я представляю себе это так:
1. Проверяем есть ли на юните флаг на транспорте он или нет
2. Если есть флаг, то берем его координаты и координаты плеера относительно транспорта, по ним определяем вектор расстояния, ну а дальше уже, если расстояние приемлемое, то всякие взаимодействия (госсипы, атака, и т.п.). Если флага нет, то обработчик определения расстояния используем старый (по родительской карте).

Но тут будет проблема с атакой например с родительской карты существа на траспорте. Катить не будет. Поэтому все-таки нужно заставлять двигаться транспорт не только у клиента, но и на сервере тоже. Тогда можно будет рулить относительно нормальных координат, а координаты относительно транспорта использовать чисто для определения новых координат. А вообще нужно на офе попробывать поагрить нпц на транспорте (они же будут в пределах транспорта бежать за плеером) и посмотреть по снифам какие координаты меняются (нормальные или относительные)
Эм дело в не относительности или что транспорт не так летает или плавает. Нужно прикрепить карту к обьекту. Для этого в клиенте есть карты. По сути должно выглядить примерно все так. UPDATE creature SET
map = ИД карты транспорта, x = х координата на транспорте, y = у координата на транспорте, z= z координата на транспорте и тд. и сервер сам загрузит моба куда нужно. Транспорт будет двигатся а для моба транспорт это его карта и с движением координаты на корабле не меняются.

rsa
22.06.2011, 20:40
Некоторый прототип реализации этого добра я таки сделал. работает он скажем так хреновенько, но работает. для внешней ("родительской") карты танспорт - это точка (ГО точнее), по которой шляются юниты с относительными смещениями. пришлось сделать спец. вариант instanceable map. однако боюсь доделать до рабочего состояния - не хватит данных о механике... все наличные сниффы прошерстил, кое-чего нужного так и нету...

MaxXx2021
22.06.2011, 20:43
Некоторый прототип реализации этого добра я таки сделал. работает он скажем так хреновенько, но работает. для внешней ("родительской") карты танспорт - это точка (ГО точнее), по которой шляются юниты с относительными смещениями. пришлось сделать спец. вариант instanceable map. однако боюсь доделать до рабочего состояния - не хватит данных о механике... все наличные сниффы прошерстил, кое-чего нужного так и нету...

Что именно работает и не работает? Я пока начал новый класс карты писать ObjectMap но не до конца в курил загрузки карт.

HuntsMan
22.06.2011, 22:38
В любом случае вам придется эмулировать "движение" так сказать этих карт. Просто поскольку на офе взаимодействие между ними идет, то удобнее было б перегонять все координаты относительно родительской карты.

MaxXx2021
23.06.2011, 03:39
Нашел вчера статью по реализацию таких вещей в других играх, да там идет эмуляция сетки. Пойду пробовать.

rsa
23.06.2011, 19:24
В любом случае вам придется эмулировать "движение" так сказать этих карт. Просто поскольку на офе взаимодействие между ними идет, то удобнее было б перегонять все координаты относительно родительской карты.
зачем его эмулировать если оно и так поисходит - точка отсчета карты привязана к позиции ГО, а тот летает сам по себе.

HuntsMan
23.06.2011, 20:26
У нас на сервере разве игрок перемещается во время движения го? (Ну кроме телепортации)
Это можно доказать простым способом: заходим на транспорт с петом, транспорт начинает двигаться, а пет останется на месте, т.к. на серверной стороне игрок не двигался. Для достижения высшей силы (возможность стрелять по игроку летящему рядом с го например) нужно так же на серверной стороне заставлять игрока двигаться вместе с транспортом.

А вообще у нас же есть метод
bool Transport::GenerateWaypoints(uint32 pathid, std::set<uint32> &mapids)
Почему бы его не использовать для генерирования вейпоинтов, по которым транспорт будет двигаться на серверной стороне?

RomanRom2
23.06.2011, 21:02
http://www.forum.trshady.com/images/smilies/facepalm.gif

HuntsMan
23.06.2011, 21:14
http://www.forum.trshady.com/images/smilies/facepalm.gif
Каким образом вы предлагаете взаимодействовать игроку с нормальной карты, и движущегося транспорта?

Или возьмем простой пример: Остров Завоеваний. Там при захвате ангара начинает летать корабль вокруг базы врага, с которого ведется обстрел. Есть го, которое портирует игрока на корабль. Как вы будете определять координаты где находится наш корабль в текущий момент времени, и портировать игрока на него?

tempura
24.06.2011, 09:39
Как вы будете определять координаты где находится наш корабль в текущий момент времени, и портировать игрока на него?

Насколько я понимаю - по локальным координатам "карты транспорта", который уже, в свою очередь, движется на общей карте.

HuntsMan
24.06.2011, 14:29
Насколько я понимаю - по локальным координатам "карты транспорта", который уже, в свою очередь, движется на общей карте.
Но вам же нужно как-то двигаться заставить на стороне сервера, верно?

Lordronn
24.06.2011, 14:51
Если я верно понял причину спора, то тут уже вступает физика. Вот простой пример из физики:
человек едет в машине со скоростью 100км в час. Относительно людей в не машины(стоящих на дороге) он двигается со скоростью в 100км в час, а относительно пассажиров этой машины - 0км в час

Также и с координатами игрока. Игрок имеет координаты на карте Y - они не меняются, игрок стоит. Карта прикреплена к ГО - ГО движется -> карта тоже движется. Относительно карты Y игрок не движется, но относительно игроков на карте X(по этой карте бродит ГО с картой Y) он двигается -> меняет свои координаты

Deamon
24.06.2011, 15:07
По пунктам:
1. Чтобы пет двигался вместе с кораблем - нужно, чтобы сервер для клиента указал в структуре мувмент_дата гуид этого корабля. Скорее всего это делается пакетом SMSG_MONSTER_MOVE.
2. Корабли на мангосе, если ничего не изменилось за последние 3 года, двигается по табличке, которую в свое время сделал andstan. А вот локальную сетку к кораблям никто так и не прикрутил.
3. Опять же, если ничего не поменялось за последние 3 года, корабль спавнится при старте сервера и не деспавнится никогда. Что не есть правильно. На оффе, когда корабль доходит до конечной точки маршрута - он деспавнится с карты, а на другой карте спавнится другой корабль со всеми пассажирами с первого.

Ну и на последок:
Как вы будете определять координаты где находится наш корабль в текущий момент времени, и портировать игрока на него?

Вы АБСОЛЮТНО не понимаете механику транспорта. Клиент сам определяет текущее месторасположение транспорта. Т.е. фиксирование текущих координат транспорта на клиенте ведется независимо от сервера.

Господи, это обсасывалось уже туеву хучу раз. Но каждый раз появляется умник, который считает, что он - Д'Артаньян, а все вокруг ... ну вы поняли.

Добавлено через 8 минут
...

Весь затык в том, что клиент сам управляет движением корабля. Года 3 назад не было собрано данных о том, как косвенно управлять кораблем: останавливать, менять косвенно текущее месторасположение корабля согласно маршруту и т.д. Поэтому корабль тупо спавнили при старте сервера и отправляли в свободное плавание. Сейчас, насколько мне известно, эти данные есть.

А проблем на самом деле 2:
1) С каким промежутком делать обновление координат для пассажиров корабля?(интервал дискретизации)
2) Как заставить расчет расстояния между пассажирами на корабле производится не от глобальных координат, а от относительных координат(относительно центра корабля).

HuntsMan
24.06.2011, 16:58
Вы АБСОЛЮТНО не понимаете механику транспорта. Клиент сам определяет текущее месторасположение транспорта. Т.е. фиксирование текущих координат транспорта на клиенте ведется независимо от сервера.

Creature* Player::GetNPCIfCanInteractWith(uint64 guid, uint32 npcflagmask)
{
// unit checks
if (!guid)
return NULL;

// тут дофига всяких не интересующих нас проверок.

// not too far
if (!creature->IsWithinDistInMap(this, INTERACTION_DISTANCE))
return NULL;

return creature;
}

Простой случай: игрок заходит на корабль, корабль начинает двигаться, на нем есть нпц, который визуально на клиенте движется (т.к. привязан к транспорту). Плеер перемещается к этому нпц (у него меняются координаты по пути движению корабля (на этом и прогарает множество античитов, т.к. получается прыжок из одной точки в другую со скоростью OVER 9000)), и пытается с ним поговорить. Естественно у него это не получается, т.к. на сервере дистанция от плеера до нпц ну не входит в INTERACTION_DISTANCE. Может конечно близы уже намутили, но я помню чтобы клиент отправлял серверу текущее положение нпц.

2) Как заставить расчет расстояния между пассажирами на корабле производится не от глобальных координат, а от относительных координат(относительно центра корабля).
Игрок может пролетать мимо корабля (не входя на него) и вражеские нпц вполне свободно агряцо на него, и начинают стрелять (стреляли по мне орки с дирижабля из Брилла, когда я просто мимо пролетал). Я не думаю что сервер меня тут же привязал к кораблю, и расчитывал дистанцию для стрельбы орков по мне по относительным координатам.

Deamon
24.06.2011, 17:25
...
Вот поэтому я и говорю, что вы не знаете механики транспорта на клиенте и пытаетесь делать какие-то выводы.

1) Клиент считает, что НПС\Плеер находится на корабле, если в структуре MovementData в поле GUID'а транспорта стоит собственно GUID соответствующего транспорта. И когда NPC или Player стоит на транспорте - клиент сам апдейтит НА СВОЕЙ СТОРОНЕ их координаты, если транспорт совершает движение. На сервак он ничего при этом не посылает

2) Насчет второго примера. Все правильно. Об этом я и говорил. Расстояние для двух объектов, находящихся на транспорте, должно расчитываться на основании их смещения относительно центра корабля. А для остальных объектов должна расстояние должно браться относительно глобальных координат.

Т.е:
а) Если A и B находяться на одном и том же транспорте - то считать расстояние по относительным координатам.
б) Иначе - считать по относительным координатам.

И предвидя следующий вопрос:
1) Когда плеер стоит на транспорте и на fly mount'е взлетает в воздух, признак нахождения на транспорте моментально сбрасывается.
2) Когда плеер на fly mount'е подлетает к транспорту, признак нахождения на транспорте установится только когда плеер прекратит полет и приземлится на корабль.

HuntsMan
24.06.2011, 17:40
А для остальных объектов должна расстояние должно браться относительно глобальных координат.
Про это я выше в каком-то посту и говорил. Но я тогда предложил не делать разделение на относительные и глобальные, а считать только по глобальным.

1) Клиент считает, что НПС\Плеер находится на корабле, если в структуре MovementData в поле GUID'а транспорта стоит собственно GUID соответствующего транспорта. И когда NPC или Player стоит на транспорте - клиент сам апдейтит НА СВОЕЙ СТОРОНЕ их координаты, если транспорт совершает движение. На сервак он ничего при этом не посылает
Знаю, поэтому у нас если мимо идущего корабля пролетать вы не увидите его обитателей, т.к. их в этом месте на сервере просто не существует.

Forgotten
24.06.2011, 18:02
Также не вижу смысла считать расстояния относительно локальных - зачем усложнять?
Единственное для чего нужны локальные координаты - для перемещение юнита по сетке транспорта с последующим переводом координат в глобальные.

Deamon
24.06.2011, 18:08
Про это я выше в каком-то посту и говорил. Но я тогда предложил не делать разделение на относительные и глобальные, а считать только по глобальным.

Только по глобальным считать плохо. Скорость движения у кораблей порой довольно большая - и из-за этого возникают противоречия на голом месте.
1. Постоянно обновлять глобальные координаты на сервере - накладно. Значит нужно обновлять с каким-то определенным промежутком.
2. Если координаты обновляются с каким-то промежутком, то при достаточно большой скорости корабля - произойдет ситуация, когда клиент послал свои новые координаты, а координаты НПСюка не обновились. И тогда произойдет, то о чем вы говорили.
3. Тогда следущим логичным шагом было бы - обновлять координаты глобальные координаты у НПС при любом виде взаимодействия. Но тогда если несколько игроков одновременно "щелкнут" на одного НПСюка - произойдет мгновенное повышение нагрузки на сервер. Что тоже не есть хорошо.

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

Forgotten
24.06.2011, 18:25
Другое решение проблемы: не использовать глобальные координаты вычисленные клиентом, а только локальные.
Тогда можно спокойно раз в N времени вычислять глобальные координаты как плееров так и нпс и го.
Правда могут появляться несоответствия между глобальными и локальными координатами.

KiriX
24.06.2011, 19:18
Уже обсуждалось, что в таком случае все рассчёты ведутся с учётом поправки отображения и координат игрока на корабле, как если бы он в самом деле был в той точке, где он сейчас находится на карте на корабле.
Понимаю, что кривовато объяснил. Объясняли лучше, но для этого надо найти ту тему и перечитать. Вам надо - вы и поищите. Тема лохматая, там всё было разжёвано от и до.

Добавлено через 3 минуты

Т.е:
а) Если A и B находяться на одном и том же транспорте - то считать расстояние по относительным координатам.
б) Иначе - считать по относительным координатам.

И предвидя следующий вопрос:
1) Когда плеер стоит на транспорте и на fly mount'е взлетает в воздух, признак нахождения на транспорте моментально сбрасывается.
2) Когда плеер на fly mount'е подлетает к транспорту, признак нахождения на транспорте установится только когда плеер прекратит полет и приземлится на корабль.
а) б) - в чём разница? В обоих случаях по относительным =)

1) А вот и нет. Совсем не моментально. Если взлететь не высоко - будешь двигаться вместе с транспортом, но действительно есть какие-то пределы, когда флаг сбрасывается. (если меня очень сильно не подводит память по опыту игры на оффе).

HuntsMan
25.06.2011, 00:00
Только по глобальным считать плохо. Скорость движения у кораблей порой довольно большая - и из-за этого возникают противоречия на голом месте.
1. Постоянно обновлять глобальные координаты на сервере - накладно. Значит нужно обновлять с каким-то определенным промежутком.
2. Если координаты обновляются с каким-то промежутком, то при достаточно большой скорости корабля - произойдет ситуация, когда клиент послал свои новые координаты, а координаты НПСюка не обновились. И тогда произойдет, то о чем вы говорили.
3. Тогда следущим логичным шагом было бы - обновлять координаты глобальные координаты у НПС при любом виде взаимодействия. Но тогда если несколько игроков одновременно "щелкнут" на одного НПСюка - произойдет мгновенное повышение нагрузки на сервер. Что тоже не есть хорошо.

BTW, клиент при движении игрока на транспорте - сам посылает относительные координаты. И делает он это, как подсказывает здравая логика, отнюдь не случайно.
Тогда как вариант использовать готовые координаты как для MMaps. Нпц для кораблей не очень много, и я думаю что их координаты в каждый тик транспорта можно сгененировать, и использовать по мере необходимости. Использованием относительных координат мы решим только часть проблемы, взаимодействие с транспорта и карты пойдет лесом.

Forgotten
25.06.2011, 00:10
Эм.. И сколько таких точек будет? А если нпц ходит по транспорту?

> Нпц для кораблей не очень много

Именно.. поэтому расчет глобальных позиций не так уж много съест. Не стоит заморачиваться

MaxXx2021
25.06.2011, 03:44
Весь затык в том, что клиент сам управляет движением корабля. Года 3 назад не было собрано данных о том, как косвенно управлять кораблем: останавливать, менять косвенно текущее месторасположение корабля согласно маршруту и т.д. Поэтому корабль тупо спавнили при старте сервера и отправляли в свободное плавание. Сейчас, насколько мне известно, эти данные есть.

Ну почему же? Мы с ланцов смогли сделать загрузку транспорта как в инсты, так и управление и спаун в любой точке маршрута через скрипты.
По поводу что как узнать в какой точке находится транспорт для телепортации на него или полета, есть понятие смена карты. Ну телепортировать игрока на транспорт легче простого, так как транспорт это карта. А вот с полетом надо подумать. Не даром полеты на транпорты осуществляется вехиклами, а не такси.

Йоха
25.06.2011, 14:12
1) А вот и нет. Совсем не моментально. Если взлететь не высоко - будешь двигаться вместе с транспортом, но действительно есть какие-то пределы, когда флаг сбрасывается. (если меня очень сильно не подводит память по опыту игры на оффе).

это верно, когда взлетаешь на флай-маунте с поверхности транспорта - продолжаешь находясь в воздухе перемещаться вместе с ним. Отрыв происходит когда взлетаешь вверх примерно метров на 30-40. А до этого можно даже летать в горизонтальном направлении над транспортом и перемещаться вместе с ним, если не вылетать за его пределы.

проверялось только что на летающем корабле альянса в подземье

Mayss
26.06.2011, 06:00
MaxXx2021, на вашем примере кода реализации транспорта возможно создать скрипт с Боями на Кораблях в ЦЛК?.

HuntsMan
26.06.2011, 11:49
MaxXx2021, на вашем примере кода реализации транспорта возможно создать скрипт с Боями на Кораблях в ЦЛК?.
Его можно и без дополнительных написаний реализовать, но это хак будет.

MaxXx2021
26.06.2011, 12:57
MaxXx2021, на вашем примере кода реализации транспорта возможно создать скрипт с Боями на Кораблях в ЦЛК?.
Можно реализовать полностью его уже. Но в связи с тем, что корабли не карта придется контролить мобов что бы они в комбате за пределы корабля не выбегали.

Попробую сейчас на основе создания карт Инстов, сделать создание карты транспорту.

MaxXx2021
07.07.2011, 09:19
Поправил визульные баги свзянные с инстант мапами и сделал микро движения, тестировать буду дня 2 потом скину все в репо KioM. Вопрос касательно нпц, есть у кого какие либо снифы?

Lordronn
07.07.2011, 12:15
У меня есть снифф с 4.0.3 и 4.0.6. Я как раз кв делал на ачивку в ледяной короне. На корабле движущемся тоже. Если надо, то скину

Йоха
07.07.2011, 15:05
Спросите у РоманРом2, я как-то присылал ему полный снифф ЦЛК 25, если не ошибаюсь еще версии 3.3.5. Я тогда с гильдией его чистил полностью.

Lordronn
07.07.2011, 15:13
А случаем в ледяную скорбь вы не попали? Если да, то я ради такого даже парсер и плагины под 3.3.5 перепишу

Йоха
07.07.2011, 15:36
Имеется в виду бой Лич 25ХМ ? и момент когда весь рейд закидывает внутрь фростморна ?

Нет, тогда мы чистили ЦЛК25 нормал плюс несколько ХМ. А в нормале все не так как в ХМ, там Лич просто целится в одного рейдера фростморном и медленно притягивает его к себе. Сам игрок в это время оказывается внутри комнаты, там находится дух отца Артаса и какой-то хрен враждебный, я там был всего пару раз, точно не рассмтотрел кто это. Суть происходящего такова: дух отца Артаса дерется с этим уродом, и для того что бы выйти из меча надо помочь ему убить этого кренделя. Для дд нужно просто хорошо вламывать и сбивать касты, он кастует какой-то хил на себя. А для хилеров нужно хилить духа отца Артаса и сбивать касты этому кексу, если сбить не получается то диспеить с него хилку (там хил типа друидского хота). При этом игрок снаружи получает некислый урон, и если его не хилить интенсивно то он умирает и Лич получает ацкий баф на +дмг. Собственно не отхиленный игрок от ледяной скорби = мертвый танк. Он так вламывать начинает что даже не всегда сейф абилки спасают.

Убийство Лича в 25ХМ было позже, но снифов к сожалению я не писал, не до этого было ...
Самый напряженный, необычный и интересный бой за всю историю ВоВ (имхо конечно).

Лич 25ХМ мне запомнился больше всего из всей истории варика. Хотя я чистил практически весь классик (кроме накса), фул БК контент (Привет Иллидан, наш ГМ собрал тогда за два кила обе части клинков азинота), а санвел мне не нравился, тупняк какой-то...

Ну и фул ВОТЛК в ХМ режиме, у меня даже есть конь "Непобедимый" с Лича, он тогда падал с 100% шансом. Убил лича 25ХМ - получи конягу.

[Добавлено]

Внутри фростморна в режиме 25ХМ ничего необычного нет, там весь рейд попадает в какую-то комнату, достаточно небольшую, на потолке висят кристалики и они начинают медленно падать на пол. Эти кристалики некоторе время лежат на полу, потом взрывают и исчезают, если на них наступить то это практически верная смерть. Каждая смерть игрока это плюс к урону Личу и он при этом увеличивается в размерах. На первых траях когда только стали доходить до этой фазы было прикольно - куча игроков помирала внутри фростморна, потом мы выходим, а там стоит Лич размером с ейфелеву башню и валит всех с одного удара, были скрины что по локу прошел урон примерно в 5 милионов.

У нас в рейде назначался один танк (медвед) наводчиком, на него вешали череп, он выбирал путь между этими кристаликами и весь рейд бегал за ним, хилеры всех хилили (там кажется еще есть аура которая наносит всем рейдерам урон постоянно), ну вот проходит какое-то время и всех выкидывет обратно, так повторяется несколько раз, пока хп Лича не снесется до 10%, ну а там стандартно ...
Он кладет инстантно весь рейд, начинает долго и нудно базарить мол какие вы все нубы и какой я красавчик, тут просыпается Фордринг в глыбе, молит свет о последнем шансе, разбивает глыбу, ломает Личу меч, из меча вылазит дух отца Артаса, делает массовое воскрешение, все встают и добивают Лича который как кукла вертится в струях из разбитого фростморна.
Потом дурацкий мувик, потом экран клинит от того что весь рейд получил ачиву "Сияние рассвета", дележ лута и все ролят в конце конягу.
Первого коня без рола отдали ГМу, а второго выролил я, выкинул 99, меня все тихо ненавидели потом -)))

RomanRom2
07.07.2011, 16:24
Спросите у РоманРом2, я как-то присылал ему полный снифф ЦЛК 25, если не ошибаюсь еще версии 3.3.5. Я тогда с гильдией его чистил полностью.
как снифф назывался помнишь?

впрочем не важно, они у меня называются так:

12340_[0512]_62.67.45.163.1119_4C2FE60A.PK
12340_[0512]_62.67.45.163.1119_4C365B21.PK
12340_[0512]_62.67.45.163.1119_4C379871.PK
12340_[0512]_62.67.45.174.6112_4C2F2DF0.PK
12340_[0512]_62.67.45.21.6112_4C2F2E30.PKT
12340_[0512]_62.67.45.28.6112_4C2BED53.PKT
12340_[0512]_62.67.45.41.4000_4C36588F.PKT
12340_[0512]_62.67.45.85.1119_4C2F7A3D.PKT
12340_[0512]_62.67.45.85.1119_4C307F41.PKT
12340_[0512]_62.67.45.85.4000_4C2BF2FB.PKT
12340_[0512]_62.67.45.85.4000_4C2CEB49.PKT
12340_[0512]_62.67.45.85.4000_4C2E40F2.PKT
12340_[0512]_62.67.45.85.4000_4C2E536C.PKT
12340_[0512]_62.67.45.85.4000_4C307FCF.PKT
12340_[0512]_62.67.45.85.4000_4C3101EE.PKT
12340_[0512]_62.67.45.85.6112_4C2F9917.PKT
12340_[0512]_62.67.45.85.6112_4C2FC7A9.PKT
12340_[0512]_62.67.45.85.6112_4C310210.PKT
12340_[0512]_62.67.45.88.1119_4C2BEDFE.PKT
12340_[0512]_62.67.45.88.1119_4C2E946A.PKT
12340_[0512]_62.67.45.88.1119_4C33A867.PKT
12340_[0512]_62.67.45.88.1119_4C363526.PKT
12340_[0512]_62.67.45.88.1119_4C365935.PKT
12340_[0512]_62.67.45.88.1119_4C366A24.PKT
12340_[0512]_62.67.45.88.1119_4C3676D5.PKT
12340_[0512]_62.67.45.88.1119_4C3776A5.PKT
12340_[0512]_62.67.45.88.1119_4C39B89C.PKT
12340_[0512]_62.67.45.88.1119_4C3A3389.PKT
12340_[0512]_62.67.45.88.1119_4C3A355D.PKT
12340_[0512]_62.67.45.88.1119_4C3B7BEB.PKT
12340_[0512]_62.67.45.88.1119_4C3B7CB2.PKT
12340_[0512]_62.67.45.9.1119_4C2FE646.PKT
12340_[0512]_62.67.45.9.1119_4C311DF8.PKT
12340_[0512]_62.67.45.9.1119_4C3395E6.PKT
12340_[0512]_62.67.45.9.1119_4C38285F.PKT
12340_[0512]_62.67.45.9.4000_4C3284F7.PKT
12340_[0512]_62.67.45.9.6112_4C2E9478.PKT
12340_[0512]_62.67.45.9.6112_4C2FEE27.PKT
195.12.246.212_1119.PKT
195.12.246.212_4000.PKT


и логи их парсинга.

а, вот еще есть файл ICC_PKT_3.3.5..rar (37 мегов), внутри

2010-08-08_00-12-50-0156.pkt
2010-08-08_00-12-52-5000.pkt
2010-08-08_15-51-29-9687.pkt
2010-08-08_15-51-33-1562.pkt
2010-08-08_17-08-49-4375.pkt
2010-08-08_17-08-52-7500.pkt
2010-08-08_17-10-10-0468.pkt
2010-08-08_17-10-12-0000.pkt
2010-08-08_17-24-30-4062.pkt
2010-08-08_17-24-32-5625.pkt
2010-08-08_18-14-26-9062.pkt
2010-08-08_18-14-28-0781.pkt
2010-08-08_18-18-13-7500.pkt
2010-08-08_18-18-14-8906.pkt
2010-08-08_18-19-42-1093.pkt
2010-08-08_18-19-43-3906.pkt
2010-08-08_18-21-13-2031.pkt
2010-08-08_18-21-14-5625.pkt
2010-08-08_18-27-08-5781.pkt
2010-08-08_18-27-09-7656.pkt
2010-08-08_18-44-33-0468.pkt
2010-08-08_18-44-35-1718.pkt
2010-08-08_21-13-31-9375.pkt
2010-08-08_21-13-34-5625.pkt
2010-08-08_22-28-48-9218.pkt
2010-08-08_22-28-50-1406.pkt
2010-08-08_23-09-58-6406.pkt
2010-08-08_23-09-59-8593.pkt


это все что 3.3.5 у меня имеется. остальное уже 4.0.3 и 4.0.6

MaxXx2021
07.07.2011, 16:39
Народ ну что тупим :( Комната фростморна не работает только потому что она не в зоне видимости :( Она часть платформы артаса и находится очень далеко. Портуясь туда платформа пропадает из зоны видимости и ее нет. Сделайте 33 типу дистанцию видимости как у транспорта и она будет работать. Вот что значит не знания органов клиента. :( Все это печально. Тут и сниффа то не надо что бы понять это...

Теперь по существу дела... Сниффы на мобов :)
П.С. сегодня постараюсь подобрать константу скорости корабля :) И останется только мобов реализовать :)

Deamon
07.07.2011, 17:35
...

Напомнает проблему пола в ИК, где пол - это Dectructiable Building и в некоторых случаях игрок заходя в инст провалиливался сквозь пол.

MaxXx2021
07.07.2011, 17:37
Напомнает проблему пола в ИК, где пол - это Dectructiable Building и в некоторых случаях игрок заходя в инст провалиливался сквозь пол.

тут другая проблема в видимости. Ставить в конфиге 500+ видимость в инстах не выход, нужен патч для 33 типа.

Deamon
07.07.2011, 17:41
тут другая проблема в видимости. Ставить в конфиге 500+ видимость в инстах не выход, нужен патч для 33 типа.

Там такая же проблема была. Платформа неуспевала спавниться и поэтому клиент "проваливал" игрока вниз.

MaxXx2021
07.07.2011, 18:09
Там такая же проблема была. Платформа неуспевала спавниться и поэтому клиент "проваливал" игрока вниз.

А тут ее вообще невидно. Она находится вне грида. растояние около 400 - 500 метров

Lordronn
07.07.2011, 18:19
Снифф нужен для другого. В комнате стоят мобы, вот ихний снифф и нужен. Ауры понацеплять + поставить их.

MaxXx2021
07.07.2011, 18:58
Снифф нужен для другого. В комнате стоят мобы, вот ихний снифф и нужен. Ауры понацеплять + поставить их.

А методом тыка найти не судьба? Дело 10 - 30 минут.

MaxXx2021
07.07.2011, 19:09
https://github.com/KioM/mangos/commit/ba5fce33447b4a2502f454109042336f8712b2a1

обновил транспорт.

GriffonHeart
09.07.2011, 13:57
Народ ну что тупим :( Комната фростморна не работает только потому что она не в зоне видимости :( Она часть платформы артаса и находится очень далеко. Портуясь туда платформа пропадает из зоны видимости и ее нет. Сделайте 33 типу дистанцию видимости как у транспорта и она будет работать. Вот что значит не знания органов клиента. :( Все это печально. Тут и сниффа то не надо что бы понять это...

Я попробовал сменить тип ГО на 11 (ГО с моделью 9256, world\wmo\dungeon\icecrownraid\icecrownraid_arthas _precipice.wmo), ГО стало видно, но платформы всё равно нет :(

rsa
09.07.2011, 16:02
это не зависит от типа ГО. для любого типа кроме транспорта (там захакано) надо к DEFAULT_VISIBILITY_DISTANCE добавлять что-то вроде половины его максимального размера...

MaxXx2021
09.07.2011, 18:09
Я попробовал сменить тип ГО на 11 (ГО с моделью 9256, world\wmo\dungeon\icecrownraid\icecrownraid_arthas _precipice.wmo), ГО стало видно, но платформы всё равно нет :(

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


--GameObject.cpp
bool GameObject::isVisibleForInState(Player const* u, WorldObject const* viewPoint, bool inVisibleList) const
{
// Not in world
if(!IsInWorld() || !u->IsInWorld())
return false;

// invisible at client always
if(!GetGOInfo()->displayId)
return false;

// Transport always visible at this step implementation
- if(IsTransport() && IsInMap(u))
+ if((GetGOInfo()->type == GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING || IsTransport()) && IsInMap(u))
return true;

// quick check visibility false cases for non-GM-mode
if(!u->isGameMaster())

GriffonHeart
10.07.2011, 06:05
это не зависит от типа ГО. для любого типа кроме транспорта (там захакано) надо к DEFAULT_VISIBILITY_DISTANCE добавлять что-то вроде половины его максимального размера...
Но, как уже писалось выше, тут проблема не только с видимостью. Если видимость пола в ИК можно было решить увеличением видимости ГО, то здесь ГО просто выгружается, так как платформа находится в соседнем гриде, а значит, как видимость не меняй, ГО всё равно выгрузится и платформы не будет.

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

Спасибо огромное! :) Наконец-то всё получилось.

rsa
10.07.2011, 07:58
ГО не выгружается если его видят.