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

Krutoy

Гуру
  • Публикации

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

  • Посещение

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

    72

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


  1. Дописал установщик до работоспособного состояния. Теперь подключиться к opennet можно одной командой!

     

    Установка:

    1. Установите на компьютер\планшет беспроводной модем. Зайдите в lua
    2. Скопируйте [CTRL+C] строку установки отсюда, и вставьте [iNSERT].
      rq=require;c=rq"component";e=rq"event";if c.isAvailable"tunnel" then;on=c.tunnel;send=function(...)on.send(...)end;br=send;else;on=c.modem;on.open(1);send=function(...)on.send(r[3],1,...)end;br=function(...)on.broadcast(1,...)end;end;br("","","getip");function m()r={e.pull(6,"modem_message")}end;m();ip=r[6];send("update",ip,"update","getFile","installer.lua");m();load(r[8],"=installer",_,_ENV)()
      
    3. Opennet готов к работе!

      JKrVyHU.png

    Теперь у вас на компьютере есть:

    • Файлы необходимые для подключения к ON (opennet.lua), а так же утилиты в роде ping.lua, позволяющие пинговать сервера (например, ping dns)
    • Браузер в папке /on/onBrowser.lua
    • Виртуальная интернет-карта и программы wget и pastebin


     

    А теперь как это работает.

    Строка установки подключается к прокси-серверу и получает от него свой IP. Затем, она посылает запрос списка клиентских файлов на сервер обновлений и ждет ответа.

    Сервер обновлений пока в ручную (а потом сделаю и автоматически) загружает новые версии файлов прямо с облака https://ide.c9.io/krutoy242/opennet

    По запросу списка, он выдает список всех файлов в папке client. Это значит, что для того, что бы добавить новый файл всем клиентам, достаточно просто перетащить файл в папку на облаке.

    Далее, клиент посылает запрос по одному для каждого из файлов. Сервер загружает их и кидает по сети.

    Замечу, что в этих файлах есть так же загрузочные файлы, которые помещаются в папку boot. Это позволит в дальнейшем реализовать проверку новой версии при перезагрузке клиента. Установив опеннет один раз вам не придется что то докачивать в последующем, или перекачивать устаревшие протоколы.

     


     

    Я уже говорил Зеро, но с Opennet складывается анекдотичная ситуация.

    О нем говорят "Ваааау", "Восхитительно", "Класс!!". Ставят лайки. Накомментировали целых 4 страницы.

    Но при этом, оказалось, что сервера не работали пока Зеро не в сети, а его не было 2 недели. И никто даже не заметил!

    Успешный проект такой успешный.

    • Нравится 2

  2. Итак, вот результат небольшого теста.

     

    Как известно, у нас на сервере есть PIM из OpenPeripheral, который может управлять инвентарем, включая выдергивание предметов из инвентаря игроков.

    C помощью Asummonster, я установил несколько PIMов по своему дому.

     

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

    fUoTeyql.png

     

    И люди попадаются! Новички и про, обыватели и админы. Даже Алекс упал в ловушку и разделся.

     

    Я считаю что это даже более нечестно чем робогриф. Нужно запретить функцию раздевания из пимов, либо если это не возможно, запретить пимы вообще.

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

     

    Кто считает так же?

    • Нравится 2

  3.  

    Решил, дописать, что бы не создавали темы, на подобие моей? =) 

    Ага. Еще потому, что появились пользователи. Ты например.

     

     

    Кстати, ты где-то намудрил. черные сегменты не определяет вообще.

    Может и намудрил. Покажи скрин модели и результат конвертирования.


  4. Пиво пенное для украшения стола:

     

     

    {  
      label = "Пиво",
      tooltip = "Крутое, светлое",
      shapes = {
        { 0,0,2,7,1,5,texture = "log_spruce" },
        { 1,0,1,6,1,6,texture = "log_spruce" },
        { 2,0,0,5,1,7,texture = "log_spruce" },
        { 0,1,2,1,7,5,texture = "log_spruce" },
        { 1,1,1,2,7,2,texture = "log_spruce" },
        { 1,1,5,2,7,6,texture = "log_spruce" },
        { 2,1,0,5,7,1,texture = "log_spruce" },
        { 2,1,6,5,7,7,texture = "log_spruce" },
        { 5,1,1,6,7,2,texture = "log_spruce" },
        { 5,1,5,6,7,6,texture = "log_spruce" },
        { 6,1,2,7,7,5,texture = "log_spruce" },
        { 7,1,3,9,2,4,texture = "stone" },
        { 5,2,0,6,8,1,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 6,2,1,7,8,2,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 8,2,3,9,6,4,texture = "stone" },
        { 7,5,3,9,6,4,texture = "stone" },
        { 1,6,2,6,7,5,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 2,6,1,5,8,5,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 2,6,5,5,7,6,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 3,7,0,6,8,5,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 3,8,1,6,9,4,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
      }
    }

     

     

     

    5Y3mIAy.png

     

    А так же, пиво здоровенное, для держания в руке:

     

     

    {
      label = "Пиво огромное",
      tooltip = "Крутое, темное",
      shapes = {
        { 0,0,4,12,11,10,texture = "log_spruce" },
        { 1,0,2,11,11,12,texture = "log_spruce" },
        { 3,0,1,9,11,13,texture = "log_spruce" },
        { 12,2,6,16,4,8,texture = "stone" },
        { 9,3,1,11,13,2,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 11,3,2,12,13,4,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 14,4,6,16,12,8,texture = "stone" },
        { 12,10,6,16,12,8,texture = "stone" },
        { 0,11,4,1,13,10,texture = "log_spruce" },
        { 1,11,2,3,13,4,texture = "log_spruce" },
        { 1,11,4,11,13,10,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 1,11,10,3,13,12,texture = "log_spruce" },
        { 3,11,1,9,13,2,texture = "log_spruce" },
        { 3,11,2,9,15,10,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 3,11,10,9,13,12,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 3,11,12,9,13,13,texture = "log_spruce" },
        { 9,11,2,11,13,4,texture = "log_spruce" },
        { 9,11,10,11,13,12,texture = "log_spruce" },
        { 11,11,4,12,13,10,texture = "log_spruce" },
        { 5,13,1,10,14,10,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 10,13,2,11,15,10,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 9,14,2,11,15,10,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
        { 6,15,3,10,16,7,texture = "ic2:cf/blockFoam:2", tint = 0xffeaa5 },
      }
    }

     

     

    sSYZOsv.png

     

     

    Пили небольшой компанией, заедая инфопанелями, которые снимались ключом.

     

    HoOmkd2.png

    • Нравится 6

  5. Конвертер обновлен!

    • Лишние поля со стандартными значениями теперь не выводятся.
    • Теперь цвета выводятся верно, загружаясь прямо из редактора. Ориентироваться где какие текстуры намного легче.

    mivoe3X.png

    • Нравится 4

  6.  

     

    Loadfile не поможет. Мой код выполняется из eeprom когда loadfile еще не существует. Я сегодня пол дня потратил на исследования и поиски решения )

     

    Да увлекся lua и играю с кодом. Пишу пока непонятно что, и в этом непонятно чём есть обработка событий от клавиатуры.

    Lua позволяет сделать это красивее и компактней, поэтому обработчик был переписан:

    local k = {
      [41] = function () computer.shutdown(true) end; 
      [208] = function () cy=cy+1 end; 
      [200] = function () cy=cy-1 end; 
      [28] = function () cls(); t=t["os"] end;
    }
     
    local e = {computer.pullSignal()}
    if e[1] == 'key_down' and k[e[4]] then k[e[4]]() end
    

    Ух ты, мне нравится твой склад ума! Тоже обожаю всякие нетривиальные изменения кода в пользу компактности и эстетической красоты строк. Как картину рисовать.

     

    Попробуй посмотреть moonscript. Это извращение как раз для таких как мы. Там есть оператор switch!

    Но естественно, для EEPROM это не подойдет, так как нужно грузить кучу файлов.

     

    В твоем случае подойдет парсинг кода.

    Заменяем все ключевые слова на юникодовские символы, а потом просто пробегаем субстрингом и загружаем код. Так как Луа - это сплошь и рядом ключевые слова, можно сэкономить до 40% объема.

    Замену можно сделать на макросах в каком нибудь редакторе типа Sublime, а загрузку прямо в EEPROM примерно так:

    s=" [Весь сжатый исполняющий код] "
    s=s:sub("₣","function("):sub("€","end\n")
    load(s)()
    

    Тема очень интересная, я даже хотел как то провести соревнование на форуме на самый плотный сжиматель.


  7. Я вижу что ты делал в MagicaVoxel, и использовал мой конвертер.

    Твоя ошибка в слишком большом количестве шейпов - максимум 23 шейпа на всю модель, включая стейты. Это значит, что включенный и отключенный вид должны быть по 12-11 формочек.

    Плюс, как я говорил, конвертер еще не умеет определять цвета, поэтому все модели будут в оттенках синего, и цвета нужно менять ручками, например поиском и заменой в каком нибудь текстовом редакторе.

     

    Модель прикольная, но тебе нужно оставить только 1 стержень, что бы влез в ограничения. После конвертации замени цвета

    0x0000f5 на 0x111111
    0x0000e2 на 0x00ff00
    0x0000f6 на 0xffffff
    0x0000d9 на 0xff0000
    

    Сделаешь, и всё получится!

    • Нравится 1

  8. как сделать, чтобы функция f видела локальную переменную ?

     

    upd: это в OpenComputers, т.е. Lua 5.2

     

    upd2:

    теоретически нужно при загрузке чанка указать окружение, что-то вроде: local f = load('return a, b', '', 't', _ENV)

    но трабла в том, что _ENV это ни разу не локальное окружение. print(_ENV==_G) дает true 

     

    У меня был точно такой же вопрос где то месяц назад, когда я хотел сделать точки останова в коде.

     

    Я долго рылся в интернете, расспрашивал всех знакомых программеров. Смог только выяснить, что все локальные переменные являются так называемыми upvalue. Но функции получения upvalue доступны только из стандартных функций луа debug, которые в ОС отключены.

     

    Так что ответ - никак.

    • Нравится 1

  9.  

    • изменена рецептура хама - http://puu.sh/hY9UF/cfa04ef595.png   Кремневая основа SiO2, энергопыль, как связующее звено и Ред основа,глоу для характеристик света и углепластик. В целом крафт доступен каждому. (игроки, хоть и жаловались на дорогой крафт, но от ванильного большинство отказалось)

    Are_you_serious.png

     

    Какие то полумеры.


  10. Позволяют прыгать в высоту на 4 блока, гасят одну треть урона при падении с высоты, а также позволяют бегать по местности не обращая внимания на повышения рельефа в один блок (игрок автоматически заскакивает на возвышенности в один блок).

    Плагиат у Mekanism'а


  11. Не надо,Алекс!Держи себя в руках=)Пусть ноют всякие dangranos и тому подобные, этот же и матерится как сапожник!Дронов вводит из пластин иридия, а хамелиум не делай проще!Просто тут половина игроков хотят за 1 день уже гравик иметь, что там говорить о каких-то домах из cb!

    Алекс, не слушай его. У него даже Аватарки нет  :)


  12. Вообще, эти ребята что там живут - парни толковые. Они - настоящее наследие стараний всех, поддерживающих этот проект. Их попытки и идеи в использовании компьютеров стоят похвал.

     

    Но всё же, считаю что гриферов, таких как MyOnAsSalat должно быть больше, что бы люди подвергались грабежу уже на начальных стадиях игры, и понимали что тут сервер такой.

    Еще, плюс Салату, что он после грифа всё описал как и что сделал.

     

    А вот минус за насмешки над жертвами вроде "быдлокодеры". Нужно быть приличным пиратом.

    • Одобряю 1

  13. Могу подсобить и распечатать ограничительную доску в нужный размер . Если сделать размер ровно в высоту, то пролететь физически будет возможно только со скоростью света, иначе гравитация за пол блока все равно притянет на пару вокселей. Плюс порожики принтануть можно чтобы удобнее ходить было.

    Ага, я уже испытал. Нужен ограничитель, начинающийся с высоты 4, например {0,4,0,16,16,16}


  14. Так же будет введено ванильные рецепты на печать принтера из ОС. Теперь себе каждый сможет напечатать небоскреб из принтов.  

    HTPGVJh.png

     

     

    Игрок Крутой назначается ответственным за поселения игроков и лично отвечает за то, чтобы 3Д принтерщики и печатальщики лаго-небоскребов селились на координатах 2000+  2000+, помогает им переносить вещи при переезде и держит на постоянном  контроле этот вопрос. Ему помагают в этом игроки Netins, Fingercomp и dangranos, которые радостно эту идею отлайкали.

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

    Так же, нужно не забывать, что даже сейчас фпс просидает рядом с банком - нагружают рендер не только принты.


  15. <@Sangar> yeah. a wall of chamelium *blocks* is pretty much exactly as laggy as a wall of stone. even a wall of dirt would be laggier because of grass growth! 

     

    На основании этого заявления создателя мода считаю Алексовские запреты на принты безосновательными, и рецепты нужно сменить обратно на ванильные.

     

    Хорошо, клиент лагает - пусть живут там в +2000 +2000 координатах, это не затронет никого. Клиент даже от обычного редстоуна или поршней лагает, это нормально для МС. Но сервер то при этом не нагружается, а это главное.

    • Нравится 3

  16. О, отлично! Стержни зачет!

    Я так понял, можно светящиеся колонны делать. А что там lightLevel  = 15,  а Санги запихал в конфиг по дефолту макс. вроде 8 только. Может есть смысл выйти на ванила уровень по светимости в конфиге? Или это не влияет?

    8 по дефолту, но можно апгрейдить светимость глоустоуном до 15ти.

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