Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Увеличение TimeOut игрока.

Тема в разделе "Помощь", создана пользователем MOR_IV, 4 ноя 2016.

  1. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Попробуй во время подгрузки текстур создавать локальное число. И когда оно скажем ровно 20 - посылай пакет и сбрасывай его. (скорее всего не сработает).[DOUBLEPOST=1478939883,1478939670][/DOUBLEPOST]Нашел. Дело в классе TCPConnection,
    Вот именно там игрока и дисконнектит.
    Код:
        /**
         * Checks timeouts and processes all pending read packets.
         */
        public void processReadPackets()
        {
            if (this.sendQueueByteLength > 2097152)
            {
                this.networkShutdown("disconnect.overflow", new Object[0]);
            }
    
            if (this.readPackets.isEmpty())
            {
                if (this.field_74490_x++ == 1200)
                {
                     ////////////////////////////////////////////////////////
                    this.networkShutdown("disconnect.timeout", new Object[0]);
                     ////////////////////////////////////////////////////////
                }
            }
            else
            {
                this.field_74490_x = 0;
            }
    
            int var1 = 1000;
    
            while (!this.readPackets.isEmpty() && var1-- >= 0)
            {
                Packet var2 = (Packet)this.readPackets.remove(0);
                var2.processPacket(this.theNetHandler);
            }
    
            this.wakeThreads();
    
            if (this.isTerminating && this.readPackets.isEmpty())
            {
                this.theNetHandler.handleErrorMessage(this.terminationReason, this.field_74480_w);
            }
        }
    Код:
        /**
         * Shuts down the network with the specified reason. Closes all streams and sockets, spawns NetworkMasterThread to
         * stop reading and writing threads.
         */
        public void networkShutdown(String par1Str, Object ... par2ArrayOfObj)
        {
            if (this.isRunning)
            {
                this.isTerminating = true;
                this.terminationReason = par1Str;
                this.field_74480_w = par2ArrayOfObj;
                this.isRunning = false;
                (new TcpMasterThread(this)).start();
    
                try
                {
                    this.socketInputStream.close();
                }
                catch (Throwable var6)
                {
                    ;
                }
    
                try
                {
                    this.socketOutputStream.close();
                }
                catch (Throwable var5)
                {
                    ;
                }
    
                try
                {
                    this.networkSocket.close();
                }
                catch (Throwable var4)
                {
                    ;
                }
    
                this.socketInputStream = null;
                this.socketOutputStream = null;
                this.networkSocket = null;
            }
        }
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    MOR_IV

    MOR_IV Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Ан нет. Строго больше.
    Я так и делаю. Я храню данные после входа игрока и слежу за id в пакете от сервера, и по прошествии 25 секунд если клиент не отвечает, отсылаю пакет от имени клиента на сервер последним id(пробовал и все сразу слать).
     
  4. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Так что ты должен от клиента послать пакет, либо клиенту, поиграйся с этим.
     
  5. Автор темы
    MOR_IV

    MOR_IV Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Это на клиенте как я понял?
     
  6. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Да.
    Он закрывает поток если не поступает никаких пакетов.
     
  7. Автор темы
    MOR_IV

    MOR_IV Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Клиенту летят пакеты постоянно. А он думает о текстурах.
    Проблема в том, что клиент идет не через лаунчер и я не могу с ним ничего сделать. Хоть бери и покупай всем игрокам компы нормальные, что бы текстуры в 30 мб применять успевали меньше чем за 30 секунд :nerd:
     
  8. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Вообщем, все печально на данный момент... :c
    И не 30 секунд, меньше - 20.
     
  9. Автор темы
    MOR_IV

    MOR_IV Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Напарник сидел с таймером и говорит рубит по 30
     
  10. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Ну хз, в клиенте 20 :c Может я конечно старую версию 1.8 смотрел, хз как в 1.10 и т.д.
     
  11. Автор темы
    MOR_IV

    MOR_IV Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    сервер 1.8.8
    клиент 1.10.2
     
  12. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Попробуй с 1.8 зайти.
     
  13. Автор темы
    MOR_IV

    MOR_IV Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    1.8 с сервером 1.8.8 30 сек Timed out
    клинет провисел больше минуты, а сервер его отключил.
    тесты на старом ноуте.[DOUBLEPOST=1478942403,1478942330][/DOUBLEPOST]я вот думаю помониторить надо бы эти id.... Может там и пинг заодно.Просто прослушать все пакеты на вход/выход
     
  14. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Я как понял у тебя банджи есть?
    Там вроде в банджи есть функция в конфиге timeout. и вроде значение ее 30000 а это 30 секунд.
     
  15. Автор темы
    MOR_IV

    MOR_IV Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Не помогло.[DOUBLEPOST=1478945498,1478944416][/DOUBLEPOST]
    Снимок.PNG 1234.jpg
    Чёрный, это просто рабочий сервер - видно идёт обмен.
    синий, это висячий игрок.[DOUBLEPOST=1478946399][/DOUBLEPOST]Я так полагаю, что в ProtocolLib пакет отменяется event.setCancelled(true);
    Так вот, я прописал на вход и на выход:
    Код:
    private void packetListener(){
        protocolManager.addPacketListener(
                  new PacketAdapter(this, ListenerPriority.NORMAL,
                          PacketType.Play.Client.KEEP_ALIVE) {
                    @Override
                    public void onPacketReceiving(PacketEvent event) {
                        if (event.getPacketType() == PacketType.Play.Client.KEEP_ALIVE) {
                            event.setCancelled(true);
                        }
                    }
                });
        protocolManager.addPacketListener(
                  new PacketAdapter(this, ListenerPriority.NORMAL,
                          PacketType.Play.Server.KEEP_ALIVE) {
                    @Override
                    public void onPacketSending(PacketEvent event) {
                        if (event.getPacketType() == PacketType.Play.Server.KEEP_ALIVE) {
                            event.setCancelled(true);
                        }
                    }
                });
      
        }
    Прикол в том, что на 1.10.2 меня не выкидывает. Просидел 3 минуты, так и не выкинуло.

    Загадка.
     
  16. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    А я говорил...
    Получение или отмена этого пакета никак не повлияет на вермя таймаута на сервере. Смотрите внимательно из каких элементов состоит пайплайн канала, может поймёте.
     
  17. Автор темы
    MOR_IV

    MOR_IV Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Хорошо, спасибо за наводку. Пошёл.....
     

Поделиться этой страницей