Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Модификации ядра

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

Модификации ядра Пересмотр и обсуждение текущего кода, реализация новых или отсутствующих возможностей ядра

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.06.2011, 17:52   #1
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию MO_Transport

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

Хотелось бы довести эту реализацию до ума и сделать транспорт как карту. Но увы тут мы зашли в тупик. Как я понял карты в сервере имеются. И даже Вмапсы подключаются как не странно по карте к транспорту. Но сервер видимо не хочет ее обрабатывать. Если кто поможет сниффами или идеями будем рады
MaxXx2021 вне форума   Ответить с цитированием
Старый 22.06.2011, 18:13   #2
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

Цитата:
Сообщение от MaxXx2021 Посмотреть сообщение
... и сделать транспорт как карту.
Цитата:
Сообщение от MaxXx2021 Посмотреть сообщение
... Но увы тут мы зашли в тупик.
Цитата:
Сообщение от MaxXx2021 Посмотреть сообщение
... Но сервер видимо не хочет ее обрабатывать. Если кто поможет сниффами или идеями будем рады
мыши плакали, кололись, но продолжали жрать кактус
RomanRom2 вне форума   Ответить с цитированием
Старый 22.06.2011, 18:22   #3
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от RomanRom2 Посмотреть сообщение
мыши плакали, кололись, но продолжали жрать кактус
И чему этот цирк?
MaxXx2021 вне форума   Ответить с цитированием
Старый 22.06.2011, 18:38   #4
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Цитата:
Сообщение от MaxXx2021 Посмотреть сообщение
сделать транспорт как карту
В мангосе карты очень обособлены друг от друга. А, находясь на транспорте, можно получать пакеты с "родительской" карты и кастовать на тех кто "вне" (и даже на другом транспорте, ref. бой на кораблях). Я не уверен, что это правильный подход.
zergtmn вне форума   Ответить с цитированием
Старый 22.06.2011, 18:58   #5
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от zergtmn Посмотреть сообщение
В мангосе карты очень обособлены друг от друга. А, находясь на транспорте, можно получать пакеты с "родительской" карты и кастовать на тех кто "вне" (и даже на другом транспорте, ref. бой на кораблях). Я не уверен, что это правильный подход.
Ну в клиенте есть карты, которые называются Transport197347, Transport197348, Transport197349 и тд. Можно ли их как то задействовать?
MaxXx2021 вне форума   Ответить с цитированием
Старый 22.06.2011, 20:15   #6
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

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

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

Последний раз редактировалось HuntsMan; 22.06.2011 в 20:26.
HuntsMan вне форума   Ответить с цитированием
Старый 22.06.2011, 20:35   #7
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

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

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

Последний раз редактировалось MaxXx2021; 22.06.2011 в 20:37.
MaxXx2021 вне форума   Ответить с цитированием
Старый 22.06.2011, 20:40   #8
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Некоторый прототип реализации этого добра я таки сделал. работает он скажем так хреновенько, но работает. для внешней ("родительской") карты танспорт - это точка (ГО точнее), по которой шляются юниты с относительными смещениями. пришлось сделать спец. вариант instanceable map. однако боюсь доделать до рабочего состояния - не хватит данных о механике... все наличные сниффы прошерстил, кое-чего нужного так и нету...
rsa вне форума   Ответить с цитированием
Старый 22.06.2011, 20:43   #9
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

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

Последний раз редактировалось MaxXx2021; 22.06.2011 в 20:45.
MaxXx2021 вне форума   Ответить с цитированием
Старый 22.06.2011, 22:38   #10
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

В любом случае вам придется эмулировать "движение" так сказать этих карт. Просто поскольку на офе взаимодействие между ними идет, то удобнее было б перегонять все координаты относительно родительской карты.
HuntsMan вне форума   Ответить с цитированием
Старый 23.06.2011, 03:39   #11
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Нашел вчера статью по реализацию таких вещей в других играх, да там идет эмуляция сетки. Пойду пробовать.
MaxXx2021 вне форума   Ответить с цитированием
Старый 23.06.2011, 19:24   #12
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от HuntsMan Посмотреть сообщение
В любом случае вам придется эмулировать "движение" так сказать этих карт. Просто поскольку на офе взаимодействие между ними идет, то удобнее было б перегонять все координаты относительно родительской карты.
зачем его эмулировать если оно и так поисходит - точка отсчета карты привязана к позиции ГО, а тот летает сам по себе.
rsa вне форума   Ответить с цитированием
Старый 23.06.2011, 20:26   #13
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

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

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

Последний раз редактировалось HuntsMan; 23.06.2011 в 20:30.
HuntsMan вне форума   Ответить с цитированием
Старый 23.06.2011, 21:02   #14
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

RomanRom2 вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Amaru (24.06.2011)
Старый 23.06.2011, 21:14   #15
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Цитата:
Сообщение от RomanRom2 Посмотреть сообщение
Каким образом вы предлагаете взаимодействовать игроку с нормальной карты, и движущегося транспорта?

Или возьмем простой пример: Остров Завоеваний. Там при захвате ангара начинает летать корабль вокруг базы врага, с которого ведется обстрел. Есть го, которое портирует игрока на корабль. Как вы будете определять координаты где находится наш корабль в текущий момент времени, и портировать игрока на него?
HuntsMan вне форума   Ответить с цитированием
Старый 24.06.2011, 09:39   #16
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Цитата:
Сообщение от HuntsMan
Как вы будете определять координаты где находится наш корабль в текущий момент времени, и портировать игрока на него?
Насколько я понимаю - по локальным координатам "карты транспорта", который уже, в свою очередь, движется на общей карте.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Lordronn (24.06.2011)
Старый 24.06.2011, 14:29   #17
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Цитата:
Сообщение от tempura Посмотреть сообщение
Насколько я понимаю - по локальным координатам "карты транспорта", который уже, в свою очередь, движется на общей карте.
Но вам же нужно как-то двигаться заставить на стороне сервера, верно?
HuntsMan вне форума   Ответить с цитированием
Старый 24.06.2011, 14:51   #18
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

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

Также и с координатами игрока. Игрок имеет координаты на карте Y - они не меняются, игрок стоит. Карта прикреплена к ГО - ГО движется -> карта тоже движется. Относительно карты Y игрок не движется, но относительно игроков на карте X(по этой карте бродит ГО с картой Y) он двигается -> меняет свои координаты
Lordronn вне форума   Ответить с цитированием
Старый 24.06.2011, 15:07   #19
Deamon
WowCore Dev
 
Регистрация: 11.03.2010
Сообщений: 112
Сказал(а) спасибо: 10
Поблагодарили 51 раз(а) в 25 сообщениях
Deamon Скоро придёт к известности
По умолчанию

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

Ну и на последок:
Цитата:
Сообщение от HuntsMan Посмотреть сообщение
Как вы будете определять координаты где находится наш корабль в текущий момент времени, и портировать игрока на него?
Вы АБСОЛЮТНО не понимаете механику транспорта. Клиент сам определяет текущее месторасположение транспорта. Т.е. фиксирование текущих координат транспорта на клиенте ведется независимо от сервера.

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

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

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

Последний раз редактировалось Deamon; 24.06.2011 в 15:22.
Deamon вне форума   Ответить с цитированием
6 пользователя(ей) сказали cпасибо:
Amaru (24.06.2011), Gerald (25.06.2011), KiriX (24.06.2011), Konctantin (24.06.2011), RomanRom2 (24.06.2011), Viste (14.08.2011)
Старый 24.06.2011, 16:58   #20
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Цитата:
Вы АБСОЛЮТНО не понимаете механику транспорта. Клиент сам определяет текущее месторасположение транспорта. Т.е. фиксирование текущих координат транспорта на клиенте ведется независимо от сервера.
Код:
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) Как заставить расчет расстояния между пассажирами на корабле производится не от глобальных координат, а от относительных координат(относительно центра корабля).
Игрок может пролетать мимо корабля (не входя на него) и вражеские нпц вполне свободно агряцо на него, и начинают стрелять (стреляли по мне орки с дирижабля из Брилла, когда я просто мимо пролетал). Я не думаю что сервер меня тут же привязал к кораблю, и расчитывал дистанцию для стрельбы орков по мне по относительным координатам.
HuntsMan вне форума   Ответить с цитированием
Старый 24.06.2011, 17:25   #21
Deamon
WowCore Dev
 
Регистрация: 11.03.2010
Сообщений: 112
Сказал(а) спасибо: 10
Поблагодарили 51 раз(а) в 25 сообщениях
Deamon Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от HuntsMan Посмотреть сообщение
...
Вот поэтому я и говорю, что вы не знаете механики транспорта на клиенте и пытаетесь делать какие-то выводы.

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

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

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

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

Последний раз редактировалось Deamon; 24.06.2011 в 17:30.
Deamon вне форума   Ответить с цитированием
Старый 24.06.2011, 17:40   #22
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

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

Цитата:
1) Клиент считает, что НПС\Плеер находится на корабле, если в структуре MovementData в поле GUID'а транспорта стоит собственно GUID соответствующего транспорта. И когда NPC или Player стоит на транспорте - клиент сам апдейтит НА СВОЕЙ СТОРОНЕ их координаты, если транспорт совершает движение. На сервак он ничего при этом не посылает
Знаю, поэтому у нас если мимо идущего корабля пролетать вы не увидите его обитателей, т.к. их в этом месте на сервере просто не существует.
HuntsMan вне форума   Ответить с цитированием
Старый 24.06.2011, 18:02   #23
Forgotten
Новичок
 
Регистрация: 07.04.2010
Сообщений: 25
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
Forgotten На верном пути
По умолчанию

Также не вижу смысла считать расстояния относительно локальных - зачем усложнять?
Единственное для чего нужны локальные координаты - для перемещение юнита по сетке транспорта с последующим переводом координат в глобальные.
Forgotten вне форума   Ответить с цитированием
Старый 24.06.2011, 18:08   #24
Deamon
WowCore Dev
 
Регистрация: 11.03.2010
Сообщений: 112
Сказал(а) спасибо: 10
Поблагодарили 51 раз(а) в 25 сообщениях
Deamon Скоро придёт к известности
По умолчанию

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

BTW, клиент при движении игрока на транспорте - сам посылает относительные координаты. И делает он это, как подсказывает здравая логика, отнюдь не случайно.
Deamon вне форума   Ответить с цитированием
Старый 24.06.2011, 18:25   #25
Forgotten
Новичок
 
Регистрация: 07.04.2010
Сообщений: 25
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
Forgotten На верном пути
По умолчанию

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

Последний раз редактировалось Forgotten; 24.06.2011 в 18:51.
Forgotten вне форума   Ответить с цитированием
Старый 24.06.2011, 19:18   #26
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

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

Добавлено через 3 минуты
Цитата:
Сообщение от Deamon Посмотреть сообщение
Т.е:
а) Если A и B находяться на одном и том же транспорте - то считать расстояние по относительным координатам.
б) Иначе - считать по относительным координатам.

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

1) А вот и нет. Совсем не моментально. Если взлететь не высоко - будешь двигаться вместе с транспортом, но действительно есть какие-то пределы, когда флаг сбрасывается. (если меня очень сильно не подводит память по опыту игры на оффе).
KiriX вне форума   Ответить с цитированием
Старый 25.06.2011, 00:00   #27
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

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

BTW, клиент при движении игрока на транспорте - сам посылает относительные координаты. И делает он это, как подсказывает здравая логика, отнюдь не случайно.
Тогда как вариант использовать готовые координаты как для MMaps. Нпц для кораблей не очень много, и я думаю что их координаты в каждый тик транспорта можно сгененировать, и использовать по мере необходимости. Использованием относительных координат мы решим только часть проблемы, взаимодействие с транспорта и карты пойдет лесом.
HuntsMan вне форума   Ответить с цитированием
Старый 25.06.2011, 00:10   #28
Forgotten
Новичок
 
Регистрация: 07.04.2010
Сообщений: 25
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
Forgotten На верном пути
По умолчанию

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

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

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

Последний раз редактировалось Forgotten; 25.06.2011 в 00:46.
Forgotten вне форума   Ответить с цитированием
Старый 25.06.2011, 03:44   #29
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Deamon Посмотреть сообщение

Весь затык в том, что клиент сам управляет движением корабля. Года 3 назад не было собрано данных о том, как косвенно управлять кораблем: останавливать, менять косвенно текущее месторасположение корабля согласно маршруту и т.д. Поэтому корабль тупо спавнили при старте сервера и отправляли в свободное плавание. Сейчас, насколько мне известно, эти данные есть.
Ну почему же? Мы с ланцов смогли сделать загрузку транспорта как в инсты, так и управление и спаун в любой точке маршрута через скрипты.
По поводу что как узнать в какой точке находится транспорт для телепортации на него или полета, есть понятие смена карты. Ну телепортировать игрока на транспорт легче простого, так как транспорт это карта. А вот с полетом надо подумать. Не даром полеты на транпорты осуществляется вехиклами, а не такси.
MaxXx2021 вне форума   Ответить с цитированием
Старый 25.06.2011, 14:12   #30
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от KiriX Посмотреть сообщение
1) А вот и нет. Совсем не моментально. Если взлететь не высоко - будешь двигаться вместе с транспортом, но действительно есть какие-то пределы, когда флаг сбрасывается. (если меня очень сильно не подводит память по опыту игры на оффе).
это верно, когда взлетаешь на флай-маунте с поверхности транспорта - продолжаешь находясь в воздухе перемещаться вместе с ним. Отрыв происходит когда взлетаешь вверх примерно метров на 30-40. А до этого можно даже летать в горизонтальном направлении над транспортом и перемещаться вместе с ним, если не вылетать за его пределы.

проверялось только что на летающем корабле альянса в подземье
Йоха вне форума   Ответить с цитированием
Старый 26.06.2011, 06:00   #31
Mayss
Ученый
 
Аватар для Mayss
 
Регистрация: 08.03.2010
Адрес: Россия, Сибирь, Новокузнецк
Сообщений: 137
Сказал(а) спасибо: 194
Поблагодарили 19 раз(а) в 13 сообщениях
Mayss На лучшее можно только надеяться...
Отправить сообщение для Mayss с помощью Skype™
По умолчанию

MaxXx2021, на вашем примере кода реализации транспорта возможно создать скрипт с Боями на Кораблях в ЦЛК?.
Mayss вне форума   Ответить с цитированием
Старый 26.06.2011, 11:49   #32
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Цитата:
Сообщение от Mayss Посмотреть сообщение
MaxXx2021, на вашем примере кода реализации транспорта возможно создать скрипт с Боями на Кораблях в ЦЛК?.
Его можно и без дополнительных написаний реализовать, но это хак будет.
HuntsMan вне форума   Ответить с цитированием
Старый 26.06.2011, 12:57   #33
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

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

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

Последний раз редактировалось MaxXx2021; 26.06.2011 в 13:02.
MaxXx2021 вне форума   Ответить с цитированием
Старый 07.07.2011, 09:19   #34
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Поправил визульные баги свзянные с инстант мапами и сделал микро движения, тестировать буду дня 2 потом скину все в репо KioM. Вопрос касательно нпц, есть у кого какие либо снифы?
MaxXx2021 вне форума   Ответить с цитированием
Старый 07.07.2011, 12:15   #35
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

У меня есть снифф с 4.0.3 и 4.0.6. Я как раз кв делал на ачивку в ледяной короне. На корабле движущемся тоже. Если надо, то скину
Lordronn вне форума   Ответить с цитированием
Старый 07.07.2011, 15:05   #36
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Спросите у РоманРом2, я как-то присылал ему полный снифф ЦЛК 25, если не ошибаюсь еще версии 3.3.5. Я тогда с гильдией его чистил полностью.
Йоха вне форума   Ответить с цитированием
Старый 07.07.2011, 15:13   #37
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

А случаем в ледяную скорбь вы не попали? Если да, то я ради такого даже парсер и плагины под 3.3.5 перепишу
Lordronn вне форума   Ответить с цитированием
Старый 07.07.2011, 15:36   #38
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

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

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

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

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

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

[Добавлено]

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

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

Последний раз редактировалось Йоха; 07.07.2011 в 16:16.
Йоха вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Lordronn (07.07.2011), Ranger (20.08.2011)
Старый 07.07.2011, 16:24   #39
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

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

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


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

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


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

Последний раз редактировалось RomanRom2; 07.07.2011 в 16:37.
RomanRom2 вне форума   Ответить с цитированием
Старый 07.07.2011, 16:39   #40
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

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

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

Последний раз редактировалось MaxXx2021; 07.07.2011 в 16:46.
MaxXx2021 вне форума   Ответить с цитированием
Ответ

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

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

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

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



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


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