Фриз при переодевании некоторых видов оружия HF5

Rolo

Верховньій Интерлюд Викинг
Викинги Рулона
Победитель в номинации 2023
Старожил I степени
Признанный автор
Знаток Lineage2
Разработчик
За знание датапака
За знание ядра
Просветитель
Медаль Благодарности
За заслуги перед форумом
Преподаватель
За веру и верность форуму
Веселый флудер
Медаль за активность на Форуме
Клиент разработчик
Магистр реакций
Стальной Визионер
Знаток письма
Архивариус
Победитель в номинации 2022
Победитель в номинации 2021
Мастер реакций
Стратег Данных
Любитель реакций
Куратор Данных
Неукротимое пламя
Победитель в номинации 2020
Сообщения
899
Розыгрыши
6
Решения
28
Репутация
1 960
Реакции
2 253
Баллы
1 063
Здравствуйте! Столкнулся с интересной ситуацией, если персонажу забить список скиллов всяким мусором (на момент тестов у меня было >500 скиллов), и переодевать оружие (руками или при аугментации/заточке), то с некоторыми видами оружия все хорошо, а с другими фризит знатно.
Тестил на дефолтных анимациях, дефолтном клиенте, интерфейсе и в разных вариациях - проблема сохраняется. Прям интересно что там происходит почему коробит именно с дуалами, пиками (возможно и с некоторыми другими типами оружия - не колупал дальше).

Может кто-то разбирался в чем дело, или есть предположения куда еще можно заглянуть? Буду рад любым версиям. )
 
Решение
default_npc, похоже таки не умею, ибо удалось только взаимосвязь со скиллами найти. :cautious:
Скиллами? это функции компуте чёто там всё руинят. Возьми эвент с которого они вызываются и повесь перед его выполнением проверку на открытость окна скиллов.

Это древний баг с 1925 года.
пакеты мэжикскиллвнд?

IsShow на OnEvent повесь и повтори
Или тоже самое на инвентарь

И сужай круг пока не найдёшь место
 
  • Мне нравится
Реакции: Rolo
default_npc, да, это бесспорно, ибо если обновлять нечего то и лагов нет. Но почему с двуручем-то все хорошо при том же наборе скиллов? )
 
default_npc, да, это бесспорно, ибо если обновлять нечего то и лагов нет. Но почему с двуручем-то все хорошо при том же наборе скиллов? )
ну и в чём проблема сужать круг поиска пока не упрёшься в лагающее место? дебажить что ли не умеешь?

Сначала отключил всё - проверил, потом поочерёдно пакеты - нашел лагающий, потом пошел по функции этого пакета и так далее и т.п.

Есть вероятность упереться в свои косяки или косяки взаимодействия с элементом от корейцев. Ну или от твоего сервера подарки в виде спама в инвентарь.
 
  • Мне нравится
Реакции: Rolo
default_npc, похоже таки не умею, ибо удалось только взаимосвязь со скиллами найти. :cautious:
 
default_npc, похоже таки не умею, ибо удалось только взаимосвязь со скиллами найти. :cautious:
Скиллами? это функции компуте чёто там всё руинят. Возьми эвент с которого они вызываются и повесь перед его выполнением проверку на открытость окна скиллов.

Это древний баг с 1925 года.
 
  • Мне нравится
Реакции: Rolo
Решение
default_npc, блин, это ж гениально. Спасибо больше, мозга викинга тут было недостаточно! :ROFLMAO:
 
Этому багу как уже сказали 100 лет в обед - клиент на какой-то хрен перерисовывает всегда окно скиллов при прилете SkillList, даже если это окно в данный момент не отображается.
А при смене эквипа со скиллами клиенту вполне может прилететь целая пачка этих пакетов разом, вот и ловишь тормоза.

Я в свое время починил, так сказать, это на стороне сервера тем же принципом, по кторому нельзя флудить CharInfo и т.п. - задал минимальную периодичность с которым пакет можно отправить и саму отправку делаю через таск, т.е. флудить пакетом не получится - если пришел еще один запрос на отправку, то предыдущая задача просто отменится и создастся новая, т.е. предыдущий пакет не уйдет клиенту.
Таким образом, даже если быстро менять кучу эквипа, ну теми же макросами, флуда пакетом, а значит и кучи попыток обновить содержимое окна скиллов не будет - один раз перерисует и все.
 
Последнее редактирование:
Gaikotsu, по-моему. тут лучше таки в клиенте проверок докинуть, чтобы не оскорбить чувства ИЛ бойцов, которые любят зажимать альт+л.

А если серьезно, то пресечь еще и спам пакетами таким образом - отличная идея, спасибо большое!
 
  • Ха-ха-ха
Реакции: kick
Извините что не по теме, но где взять такой интерфейс для ХФ как на видео?
 
*** Скрытый текст не может быть процитирован. ***
;)
Код:
   public void sendSkillList(boolean withAcquireList, boolean force)
    {
        if (_sendSkillListTask != null)
        {
            _sendSkillListTask.cancel(false);
            _sendSkillListTask = null;
        }
    if (ServerConfig.SKILL_LIST_INTERVAL == 0) {
        sendSkillListImpl(withAcquireList);        
    } else {
            _sendSkillListTask = ThreadPoolManager.getInstance().schedule(new SendSkillListTask(withAcquireList), ServerConfig.SKILL_LIST_INTERVAL);
    }
  }
 
  • Мне нравится
Реакции: Rolo
Оффтоп:

GameLife, похожий есть здесь на форуме, поищите в ресурсах.
 
Оффтоп:

GameLife, похожий есть здесь на форуме, поищите в ресурсах.
Оффтоп:

А как ваш достать где можно?)

Ещё довольно интересные анимации, при беге ( возможно ещё их не мало новых анимации )
 
Оффтоп:

Abnormal, заказать у кого-то сделать такой же. :D И анимации тоже продавали здесь на форуме, поищите в темах. Так не такие, как у меня, но думаю под заказ Вам сделают. )
 
по-моему. тут лучше таки в клиенте проверок докинуть
а ещё лучше переписать ту блевоту, которая там наворочена

оно лагает не потому, что пакетов летит много или мало, а потому, что писал это какой то корейский душевнобольной, который не понимал, что некоторые вещи можно использовать вне тела цикла, а не дёргать апи на каждую итерацию

отсюда и лаги, потому что вместо одной математики - там нагородили сразу же и работу с элементами
а всё потому, что захотели сделать эти складывающиеся блоки скиллов, но доверили шизофренику, а не человеку, у которого IQ выше 50 и понимание, что такое влияние на производительность
 
Кстати быстрое и частое открытие/закрытие инвентаря, если он тоже забит хотя бы сотней предметов, тоже жестко просаживает фпс клиента. Ну по крайней мере в относительно свежих хрониках, не знаю как там в интерлюдах.
У нас игроки, так дурью маясь, даже умудрялись крит клиента вызвать из-за того что там видимо одна отрисовка инвентаря не успевала закончиться и пыталась начаться новая.
И тут увы не сделать отправку через таск, т.к. список предметов с сервера должен приходить без каких либо задержек при открытии инвентаря.

Скиллами? это функции компуте чёто там всё руинят. Возьми эвент с которого они вызываются и повесь перед его выполнением проверку на открытость окна скиллов.

Это древний баг с 1925 года.
ну тут еще надо тщательно разобраться куда там втыкать проверки
я конечно интерфейс не копаю, но там ведь может параллельно с отрисовкой еще и заполнять просто список известных персонажу скиллов, с которым могут сверяться какие нибудь другие части клиента. и поставив отсечку обновлений не туда, можно добиться того что не будут вовремя добавляться/удаляться скиллы в этом списке.
 
  • Мне нравится
Реакции: Rolo
Кстати быстрое и частое открытие/закрытие инвентаря, если он тоже забит хотя бы сотней предметов, тоже жестко просаживает фпс клиента. Ну по крайней мере в относительно свежих хрониках, не знаю как там в интерлюдах.
У нас игроки, так дурью маясь, даже умудрялись крит клиента вызвать из-за того что там видимо одна отрисовка инвентаря не успевала закончиться и пыталась начаться новая.
И тут увы не сделать отправку через таск, т.к. список предметов с сервера должен приходить без каких либо задержек при открытии инвентаря.
а еще в новых клиентах при продаже кучи предметов зависание клиента происходит
 
быстрое и частое открытие/закрытие инвентаря, если он тоже забит хотя бы сотней предметов, тоже жестко просаживает фпс клиента
Теоретически, можно сделать некий механизм антифлуда, чтоб на 3-5й запрос за секунду подряд выдавать ActionFailed. примерно как защиту от залипания клавиш.
 
ну тут еще надо тщательно разобраться куда там втыкать проверки
я конечно интерфейс не копаю, но там ведь может параллельно с отрисовкой еще и заполнять просто список известных персонажу скиллов, с которым могут сверяться какие нибудь другие части клиента. и поставив отсечку обновлений не туда, можно добиться того что не будут вовремя добавляться/удаляться скиллы в этом списке.
клиент по нормальному всё с пакетов берёт, ты можешь в любом классе регнуть эвент скиллов и получить информацию напрямую

что конкретно по этому случаю с скиллами - не, можно свободно хоть всё проверками IsShowWindow увешать, а переоткрытии он сам кольнет в сервер, что нужно заслать обновление для листа, у него для этого нативка есть:
native function RequestSkillList();
 
  • Мне нравится
Реакции: Rolo
Теоретически, можно сделать некий механизм антифлуда, чтоб на 3-5й запрос за секунду подряд выдавать ActionFailed. примерно как защиту от залипания клавиш.
угу, сейчас бы пихать ActionFailed везде где только можно не зная для чего этот пакет нужен
клиент по нормальному всё с пакетов берёт, ты можешь в любом классе регнуть эвент скиллов и получить информацию напрямую

что конкретно по этому случаю с скиллами - не, можно свободно хоть всё проверками IsShowWindow увешать, а переоткрытии он сам кольнет в сервер, что нужно заслать обновление для листа, у него для этого нативка есть:
native function RequestSkillList();
не, тут и правда есть ряд нюансов, не помню точно, но когда исправляли это у себя - сталкивались, хотя может это было связано с AbnormalStatusWnd :)
 
  • Мне нравится
Реакции: Rolo
Назад
Сверху Снизу