Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Игровой клиент (https://forum.zone-game.info/forumdisplay.php?f=54)
-   -   HighFive жуть страшная (https://forum.zone-game.info/showthread.php?t=40567)

Aleksey 26.04.2016 16:50

HighFive жуть страшная
 
Клиент ХФ. Сделали тут бафера, бафнули набор, офигели. Клиент зависает сильно. Делаем тред слип 80, лучше не стало. Делаем тред слип 140 - сами понимаете. Собственно клиент подвисает при каждом баффе, даже не на наборах.
Вопрос таков: это у нас такой плохой клиент или проблема общая? Есть ли патчи на эту тему? Платные тоже интересуют

GGteam 26.04.2016 16:52

Re: HighFive жуть страшная
 
Цитата:

Сообщение от Aleksey (Сообщение 410908)
Клиент ХФ. Сделали тут бафера, бафнули набор, офигели. Клиент зависает сильно. Делаем тред слип 80, лучше не стало. Делаем тред слип 140 - сами понимаете. Собственно клиент подвисает при каждом баффе, даже не на наборах.
Вопрос таков: это у нас такой плохой клиент или проблема общая? Есть ли патчи на эту тему? Платные тоже интересуют

Можете проверить это, скачав чистый патч и клиент. Скорее всего дело в утечке памяти.

Aleksey 26.04.2016 16:56

Re: HighFive жуть страшная
 
Цитата:

Сообщение от GGteam (Сообщение 410909)
Можете проверить это, скачав чистый патч и клиент. Скорее всего дело в утечке памяти.

Сомневаюсь, он же не полностью зависает, я говорю примерно про *секундные подвисания

Zubastic 26.04.2016 17:15

Re: HighFive жуть страшная
 
Какой протокол? Нужны пакеты сервера, снифай с помощью пакетхака.

krisadr 30.04.2016 19:44

Re: HighFive жуть страшная
 
каким методом накладывается бафф? Зависания проявляются только при накладывании набора или даже при единичном баффе тоже?

Hack 30.04.2016 20:39

Re: HighFive жуть страшная
 
Посмотри пакеткой что происходит. Почти уверен, что какой-то флуд

Aleksey 30.04.2016 21:39

Re: HighFive жуть страшная
 
Ну вот восстановление набора например
Код HTML:

                      else if (command.startsWith("_bbsbuffer;restore"))
345                                {
346                                        String name = (command.split(" ").length >= 2) ? command.split(" ")[1] : "";
347                                        String WHO = (command.split(" ").length >= 3) ? command.split(" ")[2] : "Player";
348                                        if (name.length() < 1)
349                                        {
350                                                MsgPacket msg = new MsgPacket("У Вас нет сохранённых бафов.", false);
351                                                activeChar.sendPacket(msg);
352                                        }
353                                        else
354                                        {
355                                                try (Connection conn = ConnectionFactory.getInstance().getConnection();
356                                                        PreparedStatement statement = conn.prepareStatement("SELECT * FROM  cb_buffer WHERE charId=? AND buff_name=?"))
357                                                {
358                                                        statement.setInt(1, activeChar.getObjectId());
359                                                        statement.setString(2, name);
360                                                        try (ResultSet rcln = statement.executeQuery())
361                                                        {
362                                                                while (rcln.next())
363                                                                {
364                                                                        String[] buffs = rcln.getString("buff_save").split(";");
365                                                                        for (String bu : buffs)
366                                                                        {
367                                                                                Integer[] buffData = BufferData.getInstance().getBuffById(Integer.parseInt(bu));
368                                                                             
369                                                                                if (buffData != null)
370                                                                                {
371                                                                                        if (buffData[2] != 0)
372                                                                                        {
373                                                                                                if (activeChar.destroyItemByItemId("BufferService", buffData[2], buffData[3], null, true))
374                                                                                                {
375                                                                                                        Thread.sleep(80);
376                                                                                                        Skill bf = SkillData.getInstance().getSkill(buffData[0], buffData[1]);
377                                                                                                        if (WHO.equals("Player"))
378                                                                                                        {
379                                                                                                                bf.applyEffects(activeChar, activeChar);
380                                                                                                        }
381                                                                                                        else
382                                                                                                        {
383                                                                                                                bf.applyEffects(activeChar, activeChar.getSummon());
384                                                                                                        }
385                                                                                                }
386                                                                                        }
387                                                                                        else
388                                                                                        {
389                                                                                                Thread.sleep(80);
390                                                                                                Skill bf = SkillData.getInstance().getSkill(buffData[0], buffData[1]);
391                                                                                                if (WHO.equals("Player"))
392                                                                                                {
393                                                                                                        bf.applyEffects(activeChar, activeChar);
394                                                                                                }
395                                                                                                else
396                                                                                                {
397                                                                                                        bf.applyEffects(activeChar, activeChar.getSummon());
398                                                                                                }
399                                                                                        }
400                                                                                }
401                                                                        }
402                                                                }
403                                                                rcln.close();
404                                                        }
405                                                        statement.close();
406                                                        conn.close();
407                                                }
408                                                catch (Exception e)
409                                                {
410                                                        _log.log(Level.WARNING, "Could not restore buff info: " + e.getMessage(), e);
411                                                }
412                                        }


afford 30.04.2016 21:50

Re: HighFive жуть страшная
 
Давненько было такое на опен тим сборке но решил Ден данную проблему.
Напиши ему вдруг что подскажет

Aleksey 30.04.2016 21:54

Re: HighFive жуть страшная
 
Цитата:

Сообщение от afford (Сообщение 411384)
Давненько было такое на опен тим сборке но решил Ден данную проблему.
Напиши ему вдруг что подскажет

Ссылку можно на него?

ANZO 30.04.2016 21:58

Re: HighFive жуть страшная
 
Что за жесть.
Вы чуть что слипаете весь основной поток своим sleep() + чтение каждый раз и базы.
В любом случае: запускаете сервер с профайлером, бафаетесь и смотрите в профайлере что в этот момент сьело больше всего CPU.


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

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot