|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Баг-репорты Описываем проблемы и ошибки работы ядра |
|
Опции темы | Поиск в этой теме | Опции просмотра |
14.05.2010, 10:15 | #1 |
Администратор
|
Скорость полета на такси
Как-то сравнивал скорость полета на такси на мангосе и на офе (по видео) по квестам и пришел к выводу, что скорость разная: на мангосе квестовые маунты летают быстрее.
Наткнулся на этот косяк при попытке реализовать квесты http://ru.wowhead.com/quest=9718 и http://ru.wowhead.com/quest=12028. По квесту 12028 на игрока вешается баф 47189 продолжительностью 2:40, время полета на такси чуть меньше (на офе), а на мангосе время полета 1:40, т.е. на минуту меньше. По окончании действия спелла квест должен комплититься, но из-за разности в минуту квест будет работать неправильно. Спелл 47190 запускает такси 811, у которого во время полета есть 6 эвентов, в каждом из которых прописал определенную фразу, которую нпц должен говорить игроку в личку. Засекал время в каждой точке со стартом эвента от начала полета на офе и мангосе. Путем деления соответствующих отрезков времени пришел к выводу, что скорость на мангосе должна быть в 1.6 раза меньше. В базе нашел нпц по двум указанным квестам, которые выступают в роли маунтов с невидимой моделью. Код:
17972 - Invisible Mount Speed 30 21396 - Invisible Mount Speed 20 Код:
#define PLAYER_FLIGHT_SPEED 32.0f Если принять во внимание, что в названии заложена скорость полета на этом маунте для такси, то найдем коэффициент замедления: 32 / 20 = 1.6, что совпадает с расчетным значением. Внес изменения в ядро: Код:
inline float Traveller<Player>::Speed() { if (i_traveller.isInFlight()) { float PlayerFlightSpeed = PLAYER_FLIGHT_SPEED; if (!i_traveller.m_taxi.empty()){ switch (i_traveller.m_taxi.GetCurrentTaxiPath()){ case 512: // Stormcrow Amulet - spell 31606 PlayerFlightSpeed = 30.0f; break; case 811: // Toalu'u's Spiritual Incense - spell 47190 PlayerFlightSpeed = 20.0f; break; } } return PlayerFlightSpeed; } else return i_traveller.GetSpeed(i_traveller.m_movementInfo.HasMovementFlag(MOVEFLAG_WALK_MODE) ? MOVE_WALK : MOVE_RUN); } Это продолжается примерно минуту. Эвенты запускаются, как и положено. Получается, что меняется реальный полет игрока, а визуальное отображение осталось прежним. 1. Возможно, надо послать клиенту какой-нибудь пакет об изменении скорости, например, MSG_MOVE_SET_FLIGHT_SPEED и т.д.? 2. Можно ли менять скорость полета не в Traveller<Player>::Speed(), а в описании эффекта спелла, который накладывается на игрока в начале полета? 3. Кто-нибудь встречал еще такси без маунтов или со скоростью, отличающейся от офа? 4. Есть ли возможность заставить нпц говорить фразу в личку игроку независимо от расстояния, например, по гуиду нпц? В квесте 12028 игрок улетает далеко, поэтому бОльшую часть фраз он говорит сам. |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
SCRIPT_COMMAND_QUEST_EXPLORED для эвентов такси | virusav | Принятые патчи | 0 | 05.05.2010 21:04 |