Fingercomp
-
Публикации
1 629 -
Зарегистрирован
-
Посещение
-
Победитель дней
283
Сообщения, опубликованные пользователем Fingercomp
-
-
Тотора же сказал. Нельзя. Принимающие тёплые ванны с роботами пусть винят самих себя.
А дроптайм лучше увеличить (вроде как уже). Я тинкер-печку просто переставить даже не смог: пока залезал и ломал стенки, половина блоков уже исчезала. Это уже гемор, а не хардкор.
-
У них там своя либа со свистелками, к формочкам отношения не имеющая.
-
А почему первый фон от Тоторы не поставить? В самый раз же.
-
А почему нельзя просто залить в репозиторий и не париться?
-
- Перечитай ещё раз (и потом ещё раз), что ты написал. Пока это жестокий поток мыслей, в котором ничегошеньки не понятно.
Используй репозиторий https://hel.fomalhaut.me/ вместо пасты миллиона ссылок с wget. -
Ничего там гнетущего нет. Под покровом ночи Стивы на хрякокоптерах везут ресы с роботов.
А Квертик... То на красивой пикче суицидников нашёл, то дом у него похож на всякие органы. Кто-то всё ещё считает, что к нему нужно прислушиваться? :P
-
Шикарно. Такому 100% нужно быть.
-
Когда ты энтер жмёшь (или кликаешь за пределами поля), обработчик вызывается.
-
Робот 0.4 секунды передвигается на клетку и 0.2 (вроде) секунды копает блок. Кобла генерится каждые 0.8 секунд. Вот и думай, нужен тут геолайзер?
-
1
-
-
А ты луа код тоже на русском пишешь? Как бы, весь интерфейс в луа ренедрится, и абсолютно логично, что ты не можешь их по-русски назвать. Да и незачем.
-
Убьёт. Как я и говорил, нужна хэшировалка.
-
Сейчас эту сетку можно захацкерить очумелыми ручками. Требуется неисправный узел Дзена. Это мы решим, когда найдём нормальную хэшировалку. А вообще, сейчас циклов никаких быть не должно. Дубликаты отсеиваются.
-
Обновил прогу до 1.3.0. Программа, как ни странно, стала ещё полезнее. Теперь можно сниффать сообщения со связанной карты (Linked Card) :P
Поэтому если вы занимаетесь написанием программы, юзающую связанные карточки, жизнь ваша должна несколько облегчиться.
-
2
-
-
Вы же помните OpenNet? Сетка такая была для OpenComputers. Хорошая вещь, только непонятно, как она работает, как её обслуживать, а ещё она централизованная. И огромная. В общем, неудобно.
Поэтому предлагаем вам решение. Удобное и простое.
Вкратце
Zn (читать как "дзен") — это очень простая (код без комментов занимает меньше четырёх килобайт) децентрализованная (нет центрального сервера, все узлы сети равны) неструктурированная (отсутствует какая-либо структуризация клиентов) сетка для OpenComputers, созданная мною и @Totoro.
Сеть абсолютно не защищена от какого-либо вмешательства: все в радиусе рестранслятора могут получить исходное сообщение и подменить его. Поэтому если требуется что-то более надёжное, нужно сделать систему шифрования.
Из-за того, что мы выбросили защиту от подмены и структуризацию, к сети подключиться может любой хост: как сервер, планшет, робот и компьютер, так и дрон или микроконтроллер. Для последних двух хостов есть специальный билд.
Каждый подключённый к сети клиент является её узлом: он может ретранслировать, отсылать, броадкастить, принимать сообщения и пинговать соседей.
Кроме того, при отправке сообщения можно запросить подтверждение его получения.
API
Функции
-
zn.connect(): boolean
Подключиться к сети.
Аргументы
Нет.
Возврат
true, если всё ок.
false, если клиент уже подключён.
-
zn.disconnect(): boolean
Отключиться от сети.
Аргументы
Нет.
Возврат
true при успешном отключении.
false, если уже отключён.
-
zn.send(address: string, message: string): boolean
Отправить сообщение какому-либо узлу.
Аргументы
address — адрес модема конечного узла.
message — сообщение для отправки.
Возврат
true — сообщение отправлено (не обязательно успешно доставлено).
-
zn.broadcast(message: string): boolean
Послать сообщение для всех узлов сети.
Аргументы
message — сообщение для отправки.
Возврат
true.
-
zn.ping()
Пингануть соседние узлы.
Аргументы
Нет.
Возврат
Нет.
События
-
zn_message(message: string, receiverAddr: string, senderAddr: string)
Получено сообщения от узла сети.
Аргументы
message — сообщение.
receiverAddr — адрес модема, поймавшего сообщение.
senderAddr — адрес модема отправителя.
-
zn_ping(senderAddr: string, distance: number)
Получен запрос на пинг.
Аргументы
senderAddr — адрес модема отправителя.
distance — расстояние до узла.
-
zn_pong(senderAddr: string, distance: number)
Получен ответ на пинг.
Аргументы
senderAddr — адрес модема отправителя.
distance — расстояние до узла.
Пример кода
local event = require('event') local zn = require('zn') zn.connect() zn.broadcast("Hello Zn members!") while true do local _, message = event.pull("zn_message") if message == "bye" then break else print(message) end end zn.disconnect()Установка
- Качаем hpm: http://computercraft.ru/topic/1855-repozitorii-programm-hel/?do=findComment&comment=27287
- Ставим пакет: hpm install zn.
Версия для EEPROM хранится в /usr/share/zn/eeprom.lua. Чтобы записать его, вставьте чистый EEPROM в комп и пропишите
$ flash -q /usr/share/zn/eeprom.lua "Zn node"
А затем вставьте EEPROM в дрона, µC или куда-либо ещё.
-
8
-
zn.connect(): boolean
-
Хей! Так как я сейчас пилю с одним человеком одну штуку, связанную с сетью в OpenComputers, мне потребовалась программа, которая могла бы показывать, какие пакеты посылаются, причём мониторить хотелось как исходящий трафик, так и входящий. Собственно, именно это я и напилил на формочках @Zer0Galaxy:

Работает предельно просто: запускаем, шлём сообщения, смотрим. В верхней части находится список сообщений, снизу написана инфа о нём. Ещё ниже находится поле с данными, которые были посланы в пакете. Переключаться между разными частями пакета можно с помощью списка справа (не забывайте про скролл). Под списком справа находится количество всех частей пакета.
Установка:
- Качаем hpm: http://computercraft.ru/topic/1855-repozitorii-programm-hel/?p=27287
- Ставим прогу: hpm install sniff.
-
5
-
-
Первое место: @Seryoga.
Второе место: @FluttyProger.
Третьи места: @electronic_steve, @astral17.
Организаторы: @Totoro, @Fingercomp.
-
Это всё Quake Pro. Привык и отвыкнуть не могу.
-
1
-
-
Обновление от 21 января 2017 года. Последнее
Благодарности
ОГРОМНОЕ спасибо @Seryoga, @FluttyProger, @astral17 и @electronic_steve за участие! Благодаря ним и была та эпическая кровавая резня между роботами. Пусть @astral17 написал прогу за 3 часа до старта, а у @electronic_steve на жестоком поле боя все роботы заглохли, — главное, что был безумный фан.
@astral17 заслуживает ещё одной благодарности: он написал половину сервера — ядра всего ивента. Без него ничего бы не состоялось. За что огромное спасибо тоже.
@Totoro — автор этой охрененной идеи. Моральная поддержка и очень умные мысли, связь с админами для сервера.
@Fingercomp, т.е. я. Отстроил с нуля на чистом поле арену, написал этот крутой интерфейс для очков, писал обновления и отвечал на тонны вопросов тут, в ЛС и в ирке. Написал прикладной софт для UT типа переодевалок и активно толкал идею до сегодняшнего дня.
Спасибо админам за хост и админку на нём.
И, конечно, благодарю всех зрителей, которые пришли посмотреть на это титанское сражение.
Планы
На эту часть мы потратили почти 2 месяца (точнее, 55 дней), начав 28 ноября 2016 года. И сегодня, наконец, был завершён первый этап в рамках гигантского проекта UT. В будущем предстоит ещё несколько этапов с принципиально новыми условиями. Уже через пару недель мы начнём подготовку следующей части нашего марафона, а потому просим подключиться в обсуждение и высказать сюда свои идеи.
Как это было
За полчаса до официального старта ивента был открыт мир с ареной, и мы ждали игроков. В 12 часов все участники (как мы тогда считали; @Seryoga, @electronic_steve и @FluttyProger) прибыли на сервер, и я распихал их в кабинки для переодевания. Затем мы переместили участников к роботам. Тогда же к нам подключился @astral17 и сказал, что желает участвовать.


Мы дождались Тотору:

Как часто вы видели Тотору в игре? :P


Тем временем онлайн поднялся до 14 человек.
Первый раунд!



Завершился со счётом 00/10/02/00. Но у зелёных было куда больше монеток, чем на табло:

Пошёл второй раунд:



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

Поэтому мы заново заставили участников ставить свои программы. И второй раунд начался вновь, теперь уже длиною в 10 минут.

Роботы @electronic_steve попросту заглохли.

Робот @FluttyProger и робот @Seryoga внезапно столкнулись и так тупили до конца раунда.
Раунд завершился со счётом 00/63/01/00. Поэтому @electronic_steve и @astral17, роботы которых не притащили ни одной монетки, выбыли из гонки.

На сервере было чуть более, чем дофига народу, поэтому он очень сильно тормозил.
Третий раунд, где должен был определиться победитель, начался не без казусов. Если вы взглянете на первые скрины, где участники настраивали роботов, то можете заметить, что они заперты внутри небольшой "комнатки", а отгорожены от остальной части арены были барьером из стекла EnderIO. Так что после старта этого раунда я забыл убрать этот барьер, из-за чего роботы уткнулись в него и не смогли пройти вперёд.
Поэтому мы перезапустили раунд, где уже точно проверили отсутствие этой преграды. И раунд начался!



Онлайн поднялся до рекордных 22 человек.
И, наконец, раунд завершился со счётом 73:04 в пользу фаворита — @Seryoga.
Отныне Серёга — самый настоящий бог, повелитель роботов.
В ближайшее время @Totoro, надеюсь, нарисует медальки участникам за старания. Победителю лично обещаю выдать какой-нибудь очень крутой приз. Думаю, в этот раз мы доживём до момента, когда он будет вручен. Но, думаю, если он будет играть на сервере, то вполне может претендовать на какие-нибудь привилегии и ресурсы.
Удачи! Продолжим эпопею уже во втором этапе UT. :P
P. S. Если у кого-то есть видео с ивента, просьба выложить его куда-нибудь и кинуть сюда ссылки. В скриншотах трудно передать события.
-
6
-
-
Выбирай ёмкие, но в то же время отражающие суть названия тем. Искать что-то на форуме, где всё заспамлено топиками "ААА ПАМАГИТЕ ПАЖАЛУСТА", невозможно.
- Тебе уже в прошлых топиках сказали, как. Юзай os.execute("команда").
- Единственный правильный способ автозапуска: пропиши в конец .shrc путь к программе (/home/bin/program.lua, например).
- Оно сетит по определённым координатам текст. Первый аргумент - значение по горизонтали, второй аргумент - значение по вертикали, третий аргумент - текст, который вывести нужно. Например, gpu.set(1, 1, "Hello, world") засетит в левом верхнем углу текст "Hello, world". А вообще, читай вики: https://ocd.cil.li/
- Обрабатывай ивент "touch". Отловить событие можно при помощи event.pull("имя ивента"). Оно будет посылаться при любом клике, так что нужно будет проверять координаты. Но лучше использовать специальную библиотеку для графического интерфейса. Я лично рекомендую для этого либу от @Zer0Galaxy: вот она.
-
2
-
Оно, по идее, должно работать со всеми цистернами, с которыми может взаимодействовать апгрейд. С билдкрафтом, с EnderIO, что вспомнил навскидку.
-
- Замени local inet = com.internet на local inet = require("internet"). Тогда заработает.
Чтобы досрочно прекратить цикл, используй break. Он выйдет из внутреннего цикла.
Чтобы досрочно прекратить работу программы, пиши os.exit(). -
Заранее опишу, как что с чем едят на UT, потому что может быть это непонятным и неочевидным.
Как зайти на арену
- Перейдите на спаун. Используйте для этого команду /spawn.
- Спуститесь до лестницы, где на дереве будет такая табличка:
- Нажмите по табличке внизу. Вас телепортирует в мир с ареной.
- По краям арены будут вот такие пимки:

Наступите на них, чтобы получить комплект очков и беспроводной клавиатуры.
Использование очков
- Для того чтобы кликнуть по элементам очков, нужно захватить управление. Для этого нажмите ПКМ, держа беспроводную клавиатуру:
. - Имеется 9 точек быстрой телепортации по арене. Справа сверху находится вот такая карта:
.
Вы можете кликнуть на чёрные квадратики
, чтобы переместиться на соответствующую точку. - Если вам мешают полоски игроков сверху:
,
то вы можете их скрыть, нажав на прямоугольник слева:
- Слева сверху находится блок информации о текущем матче:
.
В верхних квадратиках написан текущий счёт команды, под квадратиками полоска показывает соотношение очков команды: чем длиннее полоска, тем больше счёт. Ниже находится блок с временем: оставшимся, прошедшем и общей длительностью матча. Ниже находится прогресс-бар времени.
Цвета кожаной брони
- Розовый: организаторы.
- Синий, красный, зелёный, жёлтый: цвета команды.
- Чёрный: зрители.
-
3
-
Обновление от 20 января 2017 года.
Первый раунд Unreal Tournament состоится:
- завтра, 21 января 2017 / 2017-01-21;
- в 12:00 по UTC (полдень): 14 часов по восточному европейскому времени / EET, 15 часов по Москве, 19 часов по Новосибирску;
- на сервере SkyTech.
На спауне будет плита для телепортации в мир с ареной.
Вот предполагаемое расписание:
- В 12:00 UTC станет доступным мир с ареной.
- В 12:15 UTC запустим участников для конфигурации роботов.
- В 12:30 UTC начнётся сама игра.
Раундов будет несколько, их длину и количество определим по ходу комедии.
Сегодня, пока я буду онлайн на Скае, чтобы доделывать арену, вы можете зайти с прогой и потестировать её на финальной арене.
Если будет только один участник, будем проводить раунд с одним и дадим ему победу. Но я знаю как минимум двух человек, которые могут уже участвовать.
Так что ждём каждого, кто хоть немного интересуется программированием и Кубачом. Желаю удачи себе, участникам и зрителям.
-
2

Вопросы по серверу Robocraft
в RoboCraft [ откл. ]
Опубликовано:
А бан-лист где-то остался? И есть ли он вообще тут?