С lua-скриптами из последнего обновления клиент неправильно рассчитывает время действия Adrenalin Rush, Weapon Perfection, etc, поскольку "забыл" о влиянии на них Hilt Binding-а. Впрочем, насчёт скриптов я погорячился... Полазил по ним, там пришли только таблицы идентификаторов. Хотя кто знает...
Плюсую,проблема имеет место быть. Все,кого проблемы кузнецов не колебут - заранее пошли отсюда наkranik быстро и решительно. Икс,исправь баг же,ну.
Похоже, в первую очередь проблемы кузнецов не колеблют самого икса. Вон, у хантов отпал их читерский стопрейт, так он рысью метнулся его чинить, забив даже на приоритетный бг...
Порылся в транке еАфины. Там всё нормально, клиенту высылается такая же длительность статуса, которая закладывается в таймер на сервере. А у нас высылается одна длительность, а в таймер закладывается другая. Так что либо исходники попорчены шаловливыми ручками Икса и Ко, либо использованный компилятор имеет довольно забавный баг...
Поясните на практике, в чём выражается "неправильность" времени? Как есть, и как должно быть? Хотя бы с одним из скиллов. Кхм, я бы попросил.
Неправильность заключается в том, что полоски справа от статуса ползут вниз быстрее чем следует. И время в хинте уходит в минус. Хотя, возможно, что для такого эффекта и не надо корёжить исходники, а достаточно зачем-то отключить в конфиге display_status_timers. Мало ли как современные клиенты реагируют на пакет 0x0196... ЗЫ: А чтобы не приходилось просить, достаточно сделать общедоступными именно те исходники и конфиг, на которых работает текущий сервер. Среди игроков ведь не только школота, но и старые Сишники попадаются...
http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=4366 Проблема возникла ещё до старта нового сервера, и она не имеет ничего общего с lua-скриптами. В них не изменялись показатели этих умений, как и время кастов на стороне сервера. Как и отправка статуса клиенту. Как и параметр display_status_timers. Я полагаю, что проблема связана непосредственно с бонусом от Hilt Binding, который добавляет 10% к продолжительности Adrenaline Rush, Over Thrust и Weapon Perfection. Об этом бонусе знает сервер, но не знает клиент. Как следствие, сервер прекращает действие умений на 10% позже от их продолжительности, а клиент продолжает показывать время без учёта этих 10% процентов. Доходя до нуля, он начинает считать в обратном порядке, поскольку сервер ещё не оповестил клиент о том, что статус закончился. Статус и таймер прекращают своё действие сразу, как только сервер оповещает клиент о завершении статуса, т.е. спустя положенные 10% от изначального времени, в соответствии с бонусом Hilt Binding. На данном этапе не ясно, каким образом, и кем будет разрешаться эта проблема. Также не ясна практика официальных серверов в этом вопросе - присутствует ли на них подобный феномен? Если отключить этот параметр, таймер перестанет отображаться в принципе. Клиент перестанет получать время статуса от сервера. Вы ведь должны понимать, что это звучит абсурдно. Мы не можем этого сделать, как минимум, по соображениям безопасности пользователей. Мы не вносим модификации в стандартный функционал без какой-либо на то причины. Исходный код оригинального эмулятора доступен здесь: http://eathena-project.googlecode.com/svn/ Мне не понятно, с чего у Вас возникло такое оппозиционное настроение по отношению к моей деятельности. Речь шла об исчезновении стопрейта у всех монстров, не только у MVP, что отразилось практически на всех методах партийного кача. На официальных серверах у обычных монстров стопрейт присутствует. Хоть я и согласен с его "читерностью". К сожалению, таким был Ragnarok Online для всех нас, на протяжении всего его существования. Что касаемо приоритетов - я думаю, что разница в таймерах каких-то конкретных умений не должна сильно влиять на игровой процесс. Тем более, пока не было подтверждено, что это касается каких-то других умений - в большинстве случаев таймер работает корректно, т.к. обрабатывает оригинальное время умения, без каких-либо бонусов.
Однако, клиент знает длительность статуса с учётом этого бонуса. Сервер сообщает ему её в пакете 0x043f. Код в skill.c:skill_castend_nodamage_id() получает стандартную длительность с помощью вызова skill_get_time() и передаёт её в status_change_start(). Там проверяется наличие Hilt Binding и к параметру tick добавляется 10%. Потом это время передаётся в clif_status_change(), который и отправляет это время на клиента. Если в конфиге не сказано иначе. А далее можно только гадать, поскольку поковыряться в коде клиента не получится. Клиент для совместимости со старыми серверами может, получая пакет 0x0196 (в котором времени нет), брать время действия статуса из собственных таблиц (если знает, что этот статус имеет определённое время действия). К сожалению, Hysteria не позволит использовать сниффер для проверки этой гипотезы... А по ссылке написан бред: 1 в приведённом вызове это не время действия, а флаг. Время передаётся последним параметром.
Я не нашёл в коде status_change_start() увеличения времени каких-либо других умений. А заметить ошибку при уменьшении длительности эффекта гораздо труднее, не так ли?.. И, не обижайтесь, но чтобы оценить влияние неверной работы конкретных умений на игровой процесс, надо как минимум играть персонажем, использующим эти умения... Есть у Вас боевой кузнец?