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

Помогите Система реплеев игры

Discussion in 'Разработка плагинов для новичков' started by CraftCoder, Sep 27, 2016.

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

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr


    @Shevchik ,@fromgate ,@alexandrage , у вас есть какие нибудь идеи по реализации такой штуки?

    Мои размышления: необходимо записывать не события, а непосредственно пакеты идущие от сервера к игрокам, но по идее если перехватывать пакеты идущие к какому-то одному игроку, то на реплее не будет видно действий самого игрока. Таким образом нужно для баккит эмулировать какого-то фейкового игрока, которому он будет пытаться отправить пакеты, но при этом игрок не будет учитывать как реальный игрок, в том числе в Bukkit.getOnlinePlayers() и т.п.
     
  2. Хостинг MineCraft
    <
  3. alexandrage

    alexandrage Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
    Не интересно.
     
  4. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Почему же? Для модерации как раз очень интересно.
     
  5. alexandrage

    alexandrage Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
    Твои модеры состарятся просматривать овер 500 игроков. А с мелким онли и так всех видно.
     
  6. CoolBoy

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

    Trophy Points:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Ох н*хера. Не представляю сколько на это было потрачено времени, но это что-то прекрасное. Не представляю как это работает, но раз релизнулось на gomme.hd, значит скоро будет и на spigotmc.org.
     
  7. Shevchik

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

    Trophy Points:
    173
    Имя в Minecraft:
    _Shevchik_
    Причём игрока нужно не просто эмулировать, но ещё и тракер действий для него не должен иметь ограничения по радиусу. (Хотя на само деле это относительно просто делается). А дальше просто записываем все пакеты и повторяем. Единственное что придётся немного попотеть с самой паузой, ибо игрокам надо полёт включать, и сбрасывать ускроение, а потом возвращать при отключении паузы.
     
  8. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    уже полгода прошло, на spigotmc до сих пор ничего нет[DOUBLEPOST=1475037945,1475037735][/DOUBLEPOST]
    Из ProtocolSupport видно, что ты хорошо умеешь инжектить всякое разное в ядро. Я пока не могу понять как сделать, чтобы эмулированный игрок не учитывался как обычный игрок.
     
  9. Shevchik

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

    Trophy Points:
    173
    Имя в Minecraft:
    _Shevchik_
    В каком смысле чтобы не учитывался как игрок? Как минимум наследника EntityPlayer придётся добавить в WorldServer и в EntityTracker. Так что где-то он точно вылезет как игрок. Сам баккит тащит всё из PlayerList, так что можно не добавлять игрока туда, но тогда нужно будет эмулировать изначальный заход игрока самому.

    Проще тупо забить и эмулировать настоящего игрока, (Можно даже не через nms, а реально сэмулировать заход игрока), просто писать плагины так чтобы они не учитывали его.
     
    Last edited: Sep 28, 2016
  10. Saharo4ek

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

    Trophy Points:
    76
    Имя в Minecraft:
    tin
  11. NulledCoder

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

    Trophy Points:
    36
    Имя в Minecraft:
    NulledCoder
    Знаете ребят - напоминает что-то необыкновенное.
    Невероятно крутая затея по поводу этого.

    Только у меня вопрос - это не будет нагружать сервер?
     
  12. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    По идее самая ресурсоемкая часть этой штуки это запись в файл, но по моим подсчетам файлы не будет весить очень много, так что грузить не должно.
     
  13. alexandrage

    alexandrage Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
    Зато весить такой файл станет пару сотен гиг через пару месфцев наверное, если онлайн большой.
     
  14. Saharo4ek

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

    Trophy Points:
    76
    Имя в Minecraft:
    tin
    А если очищать их каждую неделю , например.
     
  15. _EnderWorld_

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

    Trophy Points:
    78
    Имя в Minecraft:
    Steve
    Немцы знают как это делать, не только этот сервер сделал.
     
  16. Dereku

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Получать отправляемые пакеты от сервера, сохранять их. После изменять в пакетах UUID и EntityId записанных entity и посылать пакеты игрокам в радиусе видимости.
    Как вариант, но без понятия насколько трудно реализовать.
     
  17. _EnderWorld_

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

    Trophy Points:
    78
    Имя в Minecraft:
    Steve
    Вот еще нашел другой сервер с подобном фичей.
     
  18. Автор темы
    CraftCoder

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Я посчитал, что 1 часовой бой в игре bedwars будет весить около 50 метров.
     
  19. CoolBoy

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

    Trophy Points:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Тогда можно смело отбросить эту идею.
    По 50 мб на 1 час. Средняя катка - 10 мин.
    За целый день на 1 гб намотает точно.
     
  20. Dereku

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Сжатие, все дела. Потом архивация в tar.gz. Всеми правдами и неправдами можно сократить размер.
     
  21. _EnderWorld_

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

    Trophy Points:
    78
    Имя в Minecraft:
    Steve
    Можно сделать если кто-то из модераторов проверил это, или сам игрок. То можно удалить уже саму реплейную игру.
     

Share This Page