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

Rolo

Верховньій Интерлюд Викинг
Викинги Рулона
Сообщения
906
Розыгрыши
6
Решения
28
Репутация
1 960
Реакции
2 265
Баллы
1 063
Здравствуйте! Столкнулся с интересной ситуацией, если персонажу забить список скиллов всяким мусором (на момент тестов у меня было >500 скиллов), и переодевать оружие (руками или при аугментации/заточке), то с некоторыми видами оружия все хорошо, а с другими фризит знатно.
Тестил на дефолтных анимациях, дефолтном клиенте, интерфейсе и в разных вариациях - проблема сохраняется. Прям интересно что там происходит почему коробит именно с дуалами, пиками (возможно и с некоторыми другими типами оружия - не колупал дальше).

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

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

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

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

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

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

Это древний баг с 1925 года.
 
Реакции: Rolo
Решение
default_npc, блин, это ж гениально. Спасибо больше, мозга викинга тут было недостаточно!
 
Этому багу как уже сказали 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, заказать у кого-то сделать такой же. И анимации тоже продавали здесь на форуме, поищите в темах. Так не такие, как у меня, но думаю под заказ Вам сделают. )
 
по-моему. тут лучше таки в клиенте проверок докинуть
а ещё лучше переписать ту блевоту, которая там наворочена

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

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

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

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