Перейти к содержимому

Taruu

Пользователи
  • Публикации

    62
  • Зарегистрирован

  • Посещение

  • Победитель дней

    4

Сообщения, опубликованные пользователем Taruu


  1.  

    В 03.01.2021 в 12:53, Doob сказал:

     

    Имена предметов хранятся в двойном словаре, это позволяет не хранить в базе полное имя предмета, а только ссылку. Полное имя выглядит так: мод:имя_предмета:мета.

    
    предметы = {
      [1] = идентификатор_1, [идентификатор_1] = 1,
      [2] = идентификатор_2, [идентификатор_2] = 2,
      [3] = идентификатор_3, [идентификатор_3] = 3,
      ...
    }

     

     

    Можно ли это заменить на Database upgrade?

    Или фича с computerHash тут не применима? 
     


  2. А можно ли лаги сервера ловить при помощи реального времени?
    Или же там тоже будут жуткие неточности? 

    Просто программа може проверять TPS после сна, перед выполнением программы.
    Запросить текущее реальное время, поспать N число тиков и посмотреть сколько времени прошло и сравнить с ожидаемым результатом.


  3. 3 минуты назад, Bs0Dd сказал:

    Я пытался это сделать еще на этапе написания кода, но увы, ужать все нужные функции (библиотек то у нас нету без OpenOS) + код самого замка до 4Кб не вышло. Может конкретный садо-мазо и смог бы

    Да и в любом случае, где-то нужно хранить настройки и список доверенных пользователей (которые могут войти по отпечатку), а области в 256 байт у биоса для этого будет маловато

     

    Вообще, если туго с жесткими дисками, никто не мешает записать кодовый замок на дискету и грузиться с нее. Но тогда при доступе к диску, дисковод, конечно же, будет жужжать.

    Если проблема с дисками,

    то можно вообще твою шнягу с сетевыми дисками взять.

    И будет прям едина сеть терминалов доступа.
    Не пробовал так?
    И еще наверно можно написать порогу инициализатор которая работает тупо с дискеты или же хранить на дискете список пользователей(тогда не будет проблем с местом и можно ставить только биос). Ну фич можно много сделать при желании...
    Хотя в итоге дешевле жесткий диск сделать :/


  4. @Asior В доках дискорда все описано. Читаешь раздел где написано про ботов ихмо API у юзера и у бота одна и та же, главное сказать что ты якобы через браузер ихмо дискорд не любит самописанные клиенты.
    https://discord.com/developers/docs/intro


  5. [23:43:29] [Server thread/ERROR] [org.tlauncher.skin.cape.util.PreparedProfileManager]: couldn't calculate size of the cape
    java.lang.NoClassDefFoundError: net/minecraft/client/renderer/texture/DynamicTexture

    Так что вопрос откуда ты взял моды если тут явно мод для клиента... Который лаунчер скорее всего сам и впихнул
    "TLSkinCapeHookLoader (tlskincape1.12.2-1.4.jar)" Попробуй его удалить


  6. 1 час назад, Totoro сказал:

     

    Спасибо за отзыв!

    Добавлять компоненты можно уже и сейчас.

     

    Дело в том, что ядро эмулятора - это Scala-библиотека. (Теоретически можно подключить и к Java-проекту.)

    Как раз в ядре компоненты и определены.

    Подключаете ядро к своему проекту, как обычную библиотеку, и пишете любые компоненты какие хотите.

    Там довольно простая система классов и можно брать как пример уже готовые компоненты (лежат в пакете entity).

     

    Разумеется для этого придётся знать Java или Scala.

    Я не уверен что имеет смысл делать какой-то другой механизм, так как помимо ядра вам в любом случае понадобятся и какие-то интерфейсы к вашему компоненту, то есть надо ещё и специальную разметку придумывать... Так что "моддинг" эмулятора без использования Java или Scala грозит быть слишком сложным.

    Я кстати несколько багов нашел только я не проверял на Linux и на 11 жабе. Как проверю кину на gitlab.


  7. В коде OpenOS Есть вообще упоротый парсер для аргументов :/
     

    Скрытый текст
    
    function internet.request(url, data, headers, method)
      checkArg(1, url, "string")
      checkArg(2, data, "string", "table", "nil")
      checkArg(3, headers, "table", "nil")
      checkArg(4, method, "string", "nil")
    
      if not component.isAvailable("internet") then
        error("no primary internet card found", 2)
      end
      local inet = component.internet
    
      local post
      if type(data) == "string" then
        post = data
      elseif type(data) == "table" then
        for k, v in pairs(data) do
          post = post and (post .. "&") or ""
          post = post .. tostring(k) .. "=" .. tostring(v)
        end
      end
    
      local request, reason = inet.request(url, post, headers, method)
      if not request then
        error(reason, 2)
      end
    
      return setmetatable(
      {
        ["()"] = "function():string -- Tries to read data from the socket stream and return the read byte array.",
        close = setmetatable({},
        {
          __call = request.close,
          __tostring = function() return "function() -- closes the connection" end
        })
      },
      {
        __call = function()
          while true do
            local data, reason = request.read()
            if not data then
              request.close()
              if reason then
                error(reason, 2)
              else
                return nil -- eof
              end
            elseif #data > 0 then
              return data
            end
            -- else: no data, block
            os.sleep(0)
          end
        end,
        __index = request,
      })
    end

     

    Но Headers вообще никто не трогает ...

    Так то еще есть выбор метода вот может его нужно и указать.

     


  8. В 29.08.2020 в 09:23, ov3rwrite сказал:

    И как же вы проверяли?Лично у меня возник код 400(Bad Request) при отправке запроса, и я ТОЧНО знаю что дело именно в Content-Type.Тем более, я отправлял одни и те же данные с программы на Python и на Lua, где питон возвращал все корректно, а луа опять же возвращал 400(проверял на ocelot desktop).

     

    инфа из непроверенных источников:

      Скрыть содержимое

    image.png.c6071f07a9ec1d9885e65131f4e55d59.png

     

    В коде самого мода есть строка на тему что headers выкл или вкл.
    Может дело в настройках?
     

    @Callback(doc = """function(url:string[, postData:string[, headers:table]]):userdata -- Starts an HTTP request. If this returns true, further results will be pushed using `http_response` signals.""")
      def request(context: Context, args: Arguments): Array[AnyRef] = this.synchronized {
        checkOwner(context)
        val address = args.checkString(0)
        if (!Settings.get.httpEnabled) {
          return result(Unit, "http requests are unavailable")
        }
        if (connections.size >= Settings.get.maxConnections) {
          throw new IOException("too many open connections")
        }
        val post = if (args.isString(1)) Option(args.checkString(1)) else None
        val headers = if (args.isTable(2)) args.checkTable(2).collect {
          case (key: String, value: AnyRef) => (key, value.toString)
        }.toMap
        else Map.empty[String, String]
        if (!Settings.get.httpHeadersEnabled && headers.nonEmpty) {
          return result(Unit, "http request headers are unavailable")
        }
        val request = new InternetCard.HTTPRequest(this, checkAddress(address), post, headers)
        connections += request
        result(request)
      }

    Хотя в таком случае он должен сказать фи... и не делать запрос...
    Стоит прочекать...


  9. 10 часов назад, ArtHacker сказал:

    Могу попробовать реверс инженеринг магазина и переписать сервер (с открытым исходным кодом. Хотя хост мне оплачивать трудно, так что понадобится помощь коммунити.

    Могу захостить если много не кушает. Ибо для себя держу веб сервер и явно будет не жалко поднять.

    • Нравится 2
    • Одобряю 1

  10. Мне одному кажется что можно просто взять либу на XML to tables написанную на Lua.

    Засунуть ее в компы и после тупо сделать браузер по типу Lynx. Он и JS не могет и вроде CSS тоже не особо читает

    (хотя кто то к компам прикрутил JS).

    Зато просто открыть и попытаться прочитать текст уже можно будет. Что явно лучше чем читать голый html.
    Так то если сделать такую основу то можно и до уровня Elinks допилить.

    • Нравится 1

  11. 8 часов назад, eu_tomat сказал:

    Сервер можно положить с помощью как CC, так и OC. CC немного облегчает задачу, но и OC тоже имеет достаточный потенциал. Для этого не нужны даже 8 человек, достаточно и одного игрока, если тот поставит перед собой такую задачу. И проблема не столько в количестве самих компов, сколько в количестве и качестве лагодромав, запущенных на компах.

    Те из разряда те ошибки которые я со своими часами делал?


  12. Вопрос прост. Что лучше ставить на сборку на Майн 1.12.2 версии? Ибо идёт вопрос может ли нормально сервер терпеть кучу компов на OC? Ибо друг узнавал и ему сказал что 8 человек взяло и убило серв очень быстро. Буду рад узнать опыт от админов.


  13. 39 минут назад, Teen_Romance сказал:

    А вот второй метод request возвращает объект у которого есть метод isDone который говорит готов ли предмет и в моем случае он говорит, что не готово и причину(нет ресурсов), но каких именно, не говорит

    сейчас сам гляну... надо AE2 поставить 


  14. 3 часа назад, eu_tomat сказал:

    В программе присутствует ошибка. Из-за неё 96% попыток обновлений времени являются холостыми, и поэтому фактические обновления происходят со средней частотой примерно 4 раза в секунду. При этом интервалы обновления неравномерны, они заданы случайными факторами.

     

    Если не закрывать открытый файл, то последующие попытки его открытия будут безуспешными до тех пор, пока файл не будет закрыт сборщиком мусора.

     

    Закрытие файла + задержка между обновлениями в 1/4 секунды дадут гораздо более приятный глазу эффект. И нагрузка на сервер снизится раз в 30.

    Когда освобожусь поправлю.


  15. 2 минуты назад, eu_tomat сказал:

    Без задержки эти часы будут пытаться обновить показания с частотой около 120 раз в секунду. А сервер сможет обновить картинку на мониторе с частотой не более 20 раз в секунду. Значит, добавив задержку всего в один тик, можно без заметного ухудшения снизить нагрузку на сервер в 6 раз. Да и 20 раз в секунду нет особого смысла обновлять часы. Уже при частоте около 4 раз в секунду обновление перестаёт играть заметную роль.

    У меня есть код где один экран и его обновление на миллисекунды работает нормально...
    Можно мне умный текст где все эти механики описаны? Буду очень признателен.

×
×
  • Создать...