1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Изменение пинга игрока в Tab-List

Тема в разделе "Разработка плагинов для новичков", создана пользователем Leshatopoviy, 21 июн 2018.

  1. Автор темы
    Leshatopoviy

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

    Баллы:
    66
    Имя в Minecraft:
    Lyooxa
    Всем привет, хотел бы у вас спросить, как можно отловить пакет пинга игрока и подменять его? Допустим в табе у кого-то плохой пинг и у него 1-2 палочки. Это не красиво смотрится и допустим я хочу сделать все палочки
    (Это возможно, на 1 сервере уже такое есть)
     
  2. GoogleKiller

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

    Баллы:
    66
    Имя в Minecraft:
    Google_Killer
  3. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Перехватываешь отправку пакета таблиста, ставишь всем пинг в 0
     
  4. Автор темы
    Leshatopoviy

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

    Баллы:
    66
    Имя в Minecraft:
    Lyooxa
    можна кодом пж я тупой
     
  5. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    что тебе из выше написанного не понятно? попробуй сам реализовать, по-ходу реализовывания задавай вопросы
     
  6. Автор темы
    Leshatopoviy

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

    Баллы:
    66
    Имя в Minecraft:
    Lyooxa
    ну я крч начал разработку и вопрос у меня во 1) что такое пакеты?
     
  7. l_Slime_l

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

    Баллы:
    76
    Это какие-то данные, отсылаемые от сервера к клиенту (игроку, играющему на сервере). Ответ взят в bukkit org
     
  8. alexandrage

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

    Баллы:
    173
  9. alexandrage

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

    Баллы:
    173
    +1 Не знать что такое сетевые пакеты в 2к18 году.
     
  10. ImperatorBuzz

    ImperatorBuzz Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    ImperatorBuzov
    пакеты это когда покупаешь товар в магазине тебя спрашивают надо пакет говоришь да тебе дают туда складываешь продукты и идёшь домой
     
  11. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    А подмена пакета, это когда ты тихо забираешь у кого-то пакет и меняешь содержимое на своё.
     
  12. Exception_Prototype

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

    Баллы:
    96
    ору
     
  13. alexandrage

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

    Баллы:
    173
    +1
     
  14. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Недавно делал подобное, только прятал игрока полностью:
    ProtocolLib + PacketWrapper (WrapperPlayServerPlayerInfo.java):

    PHP:
            Player player//Твой игрок.
            
    WrapperPlayServerPlayerInfo wrappingPacket = new WrapperPlayServerPlayerInfo();                           //9999 - уровень пинга.
            
    List<PlayerInfoDataplayerData Arrays.asList(new PlayerInfoData(WrappedGameProfile.fromPlayer(player), 9999,
                    
    NativeGameMode.fromBukkit(player.getGameMode()),
                    
    WrappedChatComponent.fromText(player.getDisplayName())));
            
    wrappingPacket.setData(data);
            
    wrappingPacket.setAction(PlayerInfoAction.UPDATE_LATENCY);
            
    wrappingPacket.broadcastPacket();
    Это пример для одного игрока. В твоем случае лучше обьявить List<PlayerInfoData>, в цикле перебрать всех игроков и засовывать туда по игроку, создавая экземпляры PlayerInfoData (пример выше). Загружаешь потом готовый лист в wrappingPacket через метод setData(...), устанавливаешь экшн wrappingPacket.setAction(PlayerInfoAction.UPDATE_LATENCY) и броадкастишь пакет.
     
    Последнее редактирование: 22 июн 2018
  15. alexandrage

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

    Баллы:
    173
    Чет дичь. Есть же ивенты. Останется только поправить пинг.
    Код:
        public void onPacketSending(PacketEvent event) {
            WrapperPlayServerPlayerInfo packet = new WrapperPlayServerPlayerInfo(event.getPacket());
        }
     
  16. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Да, так короче. И чтобы поправить пинг, нужно опять же делать коллекцию PlayerInfoData, и пихать туда измененную дату, создавая ее из event.getPlayer(), и после сетать дату.
    Все верно? Или есть вариант получше?
     
  17. alexandrage

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

    Баллы:
    173
    Можно снять дату с пакета не?
     
  18. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    В таком случае нахера пинг показывать? Ты совсем поехавший?
     
  19. Автор темы
    Leshatopoviy

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

    Баллы:
    66
    Имя в Minecraft:
    Lyooxa
    я в том, чтоб сделать у всех в табе пинг нормаьлный, мне так нужно, ты свой выпендрёж по типу "нахера тебе это" выброси.
     
  20. Автор темы
    Leshatopoviy

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

    Баллы:
    66
    Имя в Minecraft:
    Lyooxa
    У WrapperPlayServerPlayerInfo нет такого метода. Есть только метод setPing(short) , я сделал, и он выдает мне No field with type int exists in class PacketPlayOutPlayerInfo
     

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