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

Totoro

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

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

  • Посещение

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

    289

Все публикации пользователя Totoro

  1. Тем временем репозиторий потихоньку подбирается к релизу. Пофикшена куча багов, и добавлено много плюшек. Сделаю подробный чейндж-лист к релизу. А пока - самое наверное заметное нововведение за последнее время: мы добавили локализацию репы. Теперь, если у вас есть зарегистрированный аккаунт вы можете зайти в профиль и переключить язык на русский (или на английский обратно). После этого все надписи во всех интерфейсах поменяются на русские (или английские). Но это ещё не все! Теперь стали доступны специальные языковые теги, которые можно использовать в любом поле с описанием (подпись к скрину, или описание пакета, или список изменений версии). Выглядит это так (на примере краткого описания к голографическому редактору): <en>Hologram editor tool <ru>Редактор голограмм Если в список пакетов зайдёт пользователь, у которого в настройках включена английская локаль - он увидит только первую строку. Если пользователь с русской локалью - только вторую строку. Работает это так: весь текст после такого тега становится видимым только тем пользователям, у которых включена указанная локаль. Весь текст после тега <--> будет виден всем (с любой локалью). С такого тега неявно начинаются все описания. Проверить как это работает вы можете на двух моих пакетах (остальные пока не локализованы). https://hel.fomalhaut.me/#packages/holo https://hel.fomalhaut.me/#packages/toremi Попробуйте позаходить на эти странички и попереключать язык в профиле. Вот в общем и всё. Локализация ещё сыровата. Если попадётся какой-то глюк - смело пишите сюда (или в личку, IRC, issues на Github). Сейчас параметр выбранного языка сейвится в local storage, поэтому в каждом браузере у вас может быть выбран свой язык.
  2. Вопрос на самом деле стоит по другому: "Может найдём кодеров? А возродить OpenNet сисадминами уже не проблема." :P
  3. Можно в общем-то и в два-три уровня. Чтобы роботы разъехаться могли. Но тут надо иметь ввиду, что одноэтажная карта - это по сути 2D геймплей. А ещё пара уровней уже сделают бой пространственным.
  4. Вообще я согласен с первым постом Кверти. Дезматч должен быть активным и зрелищным. Бомбы должны взрываться и разбивать роботов. Лазеры - их сбивать. Может сделать два вида оружия? Лазерная винтовка и бомбы. Изначально у роботов есть допустим одна бомба. Остальное надо подбирать посреди боя в появляющихся сундуках. Как в настоящем шутере. =) Разные виды оружия позволят разнообразить тактику. Периметр полигона можно сделать неразрушимым, а в его пределах пусть хоть всё поразносят. Условие победы - у кого останется больше боеспособных роботов к концу матча. Проверить легко - после гонга посылаем от сервера запрос - "кто жив?" и собираем адреса сетевух которые ответили. А в тексте сообщений должно быть название команды. Также, можно вместе с синхронизацией такое сообщение посылать, периодически. Чтобы задетектить бой, который кончился быстрее раунда. Все. Схитрить не получится, ну только если подыграть сопернику. =)
  5. Забавно, но ты прав. Я провёл эксперимент на обычном компьютере: local gpu = component.proxy(component.list("gpu")()) local screen = component.list("screen")() local eeprom = component.proxy(component.list("eeprom")()) gpu.bind(screen) gpu.set(1,1, '.') local code = eeprom.get() local dots = "'" .. string.match(code, "'(%.+)'") .. ".'" local code = string.gsub(code, "'(%.+)'", dots) eeprom.set(code) computer.shutdown(true) Если прошить чип этим кодом, вставить в компьютер и включить, то на экране отобразится точка. Потом компьютер ребутнется и покажет две точки. Потом ребутнется и покажет три точки. И т.п.
  6. К слову, есть подозрение, что перепрошить самого себя EEPROM не умеет.
  7. Прочитав теги, я боюсь даже представить, зачем тебе мог понадобиться дистанционно управляемый дрон.
  8. Заказ поиска по форуму? Оригинально. Кто-то выводит свою лень на новые горизонты.
  9. Totoro

    Запускаем дронов!

    "Дата: 20 Май 2015". Хорошо получить ответ на свой вопрос. Пусть и два года спустя XD
  10. Вот то что оно эксепшнами спамит - это нехорошо. Уже какой-то говнокод там у автора мода.
  11. По идее, компонент написан на уровне мода. А мод должен без подгрузки чанков знать, где у него и сколько миров по каким адресам. Хз как на самом деле оно там сделано.
  12. Totoro

    Zn: строим простой ретранслятор

    Согласен с Фингером. Надо соблюдать принципы KISS.
  13. Totoro

    Zn: строим простой ретранслятор

    Zn не занимается безопасностью. Он отвечает за "сетевой уровень". Все данные идут свободно и открыто через все узлы сети. (То что ты принял за пароли - это хеши для подавления дубликации. Они не секретны.) Внедрение шифрования сообщений на таком низком уровне приведёт к многократно возросшей нагрузке на игровой сервер. В модели Zn оптимальная модель шифрования, если клиентам нужна безопасность - это end-to-end шифрование. Производительно и безопасно. :3
  14. Если для новичков - тогда не имеет смысла запихивать на таблички много кода. Это будет ещё менее наглядно чем простыня кода в хорошем редакторе с подсветкой синтаксиса.
  15. Очевидно, на табличках надо писать не на Луа, а на специальном бинарном языке для роботов. Тогда влезет больше.
  16. Слип который я показал выше - это практически каноничная его реализация. Каждый раз когда вы пишете os.sleep(x) вызывается очень похожая функция.
  17. Totoro

    Zn: строим простой ретранслятор

    Не разрушай иллюзии :P Если есть конкретные предложения, охотно обсужу здесь, на форуме, или в IRC.
  18. Небольшой гайд, который показывает вариант практического применения библиотеки: Zn: строим простой ретранслятор
  19. Иногда случается такое, что ваши компьютеры расположены на расстоянии большем, чем стандартные 400 блоков. Wi-Fi отказал, а вам надо связать компьютеры по сети. Какие тут есть варианты? 1) Повысить лимит в конфиге. Это просто, но не всегда возможно. 2) Использовать linked карту. С её помощью можно пробить любое расстояние, да. Но тут есть несколько своих проблем. Она связывает компьютеры только попарно. Для связи нескольких компьютеров надо уже делать сложную систему проброса сообщений. Она занимает дополнительный слот. И т.п. 3) Использовать цепочку Wi-Fi карт Казалось бы, чем это проще второго варианта? А проще оно тем, что тут есть уже готовые библиотеки. =) Интермедия Когда-то в стародавние времена, когда трава была зеленее и птички пели громче, собралась на нашем сервере компания крутых парней и написала OpenNet. Это была полноценная компьютерная сеть. Этакий местный интернет. Она обладала своей строгой и надёжной топологией. Каждый узел - своим местом и адресом в сети. Никакой анархии. Хочешь - в чатике общайся. Хочешь - сайты строй. К сожалению, исходники и гайды до сих пор разбросаны по частям по всему форуму. Чтобы собрать это снова вместе, потребуется немало усилий. Да и зачем нам поднимать полноценный "интернет", если всё, чего мы хотим - это пробросить парочку сообщений туда-сюда? Поэтому в более новые и не такие добрые времена (птички потише, трава потускнее), некто Totoro и fingercomp придумали систему попроще и погибче. И назвали её Zn. Приступаем к решению Итак, как нам связать Васю и Олю, которые живут на противоположных краях Земного Блина? 1) Через микроконтроллёр Самое дешёвое в плане ресурсов решение - собрать микроконтроллёр, прошить его и закопать где-нибудь в лесу на полпути между Васей и Олей. Сначала нам потребуется код прошивки. Он идёт в комплекте с Zn библиотекой. Как цивилизованные современные люди, мы скачаем её с Hel-репозитория: hpm install zn Теперь в папке /usr/share/zn/ у нас есть файлик eeprom.lua. Который мы и прошиваем на чистый EEPROM: flash -q /usr/share/zn/eeprom.lua "Zn node" Всё. Осталось вставить чип в контроллер, включить его и закопать. Сеть создана! 2) Через компьютер Более солидное и основательное решение. Строим в лесу будку. В будке ставим компьютер. На компьютер устанавливаем OpenOS и HPM (если он не идёт в комплекте). Снова качаем библиотеку: hpm install zn Создаём мини скрипт: edit node.lua Пишем в нём такой код: (require ('zn')).connect() Сохраняем, выходим, запускаем его: node Всё! Скрипт выполнится и завершится, а в фоновом режиме останется работать демон Zn-сети, который будет пробрасывать сообщения. По желанию можно сделать скрипт более сложным - например выводить на экран сетевой трафик и другую полезную инфу. Также можно добавить скрипт в автозапуск компьютера, чтобы даже неожиданные сбои питания (белка залезла в трансформатор) не смогли повалить сеть. Эти два варианта обладают некоторыми недостатком, конечно. Чтобы ретранслятор работал автономно, надо ставить чанклодер и источник энергии. Однако, в силу своей гибкости, Zn сеть можно организовать и по другому. Поднять, так сказать, "лайт версию" ретранслятора. 3) Через планшет Устанавливаем на планшет OpenOS и ставим библиотеку и скрипт по методике #2. Далее, вручаем планшет соседу Пете и забиваем ему стрелку в том самом лесу. На протяжении X минут (где X зависит от терпения Пети) у вас будет полноценная сеть! Игрок будет служить чанклодером, а батарея планшета источником питания. 4) Через робота Строим робота, устанавливаем скрипт по методике #2. Затем ставим робота где-нибудь в незаметном месте (можно спрятать в кроне дерева, так чтобы свет солнца падал на солнечную батарею). Всё, мобильный ретранслятор готов. Если чанклодеры к роботам разрешены, он может существовать автономно долгое время, питаясь солнечной энергией. 5) Через дрон Прошиваете EEPROM как для микроконтроллёра, заряжаете в дрона. Дрона запускаете в свободный полёт над лесом. Готово! Хотя чанклодер всё равно нужен. Так что вам наверное придётся пастись где-то рядом. Этот вариант самый сложный, потому что если вы хотите управлять дроном (например, с планшета) то вам потребуется модифицировать прошивку и добавить блок управления. Зато запустив 1000 дронов, вы можете почувствовать себя Илоном Маском, или Цукербергом, раздающим Интернет папуасам. А как теперь этой сетью пользоваться? Все просто. Это делается почти как с обычным модемом. Только вместо модема вы используете библиотеку Zn. Если вы знаете адрес модема адресата - можете послать сообщение прямо на него. И не важно, через сколько промежуточных узлов оно должно будет пройти. До тех пор пока адресат в радиусе досягаемости хотя бы одного узла вашей сети - он ваше сообщение получит. -- подключаем библиотекуlocal zn = require('zn')-- коннектимся к сетиzn.connect()-- посылаем Оле сообщениеzn.send("адрес модема Оли", "сообщение для Оли")-- при завершении программы не забываем закрыть коннект-- (можно и не закрывать, но зачем тратить ресурсы компа зазря)zn.disconnect() Ну а если адресат неизвестен, можно кинуть сообщение бродкастом. Тогда его получат все, кто подключен к сети. И адресат, конечно тоже. local zn = require('zn')zn.connect()-- посылаем сообщение всем, кто подключён к сети (Оле в том числе)zn.broadcast("сообщение для Оли")zn.disconnect() Удачи в построении своих сетей. Enjoy Zn!
  20. local gpu = component.proxy(component.list("gpu")()) local screen = component.list("screen")() function sleep(timeout) local deadline = computer.uptime() + (timeout or 0) repeat computer.pullSignal(deadline - computer.uptime()) until computer.uptime() >= deadline end gpu.bind(screen) gpu.setForeground(0xFFFFFF) gpu.setBackground(0x000000) while true do gpu.set(1, 1, tostring(computer.energy())) sleep(10) end
  21. Образцовый гайд это хорошо, да. Особенно когда можно взглянуть на разработку через плечо, и наметить правильный путь, вместо той изивилистой тропинки через все овраги и грабли, по которой шёл сам. =)
  22. А мне вот кажется Алекс предельно ясно описал причины запрета.
  23. Totoro

    FARM Ферма латекса

    А ты их копирайтом подписать ведь не забыл, когда в чат писал?
  24. Думаю тут надо больше деталей. Вряд ли ты найдёшь какой-нибудь ещё способ обработки событий, поэтому задачу надо решать теми средствами, что есть.
×
×
  • Создать...