Totoro
-
Публикации
1 950 -
Зарегистрирован
-
Посещение
-
Победитель дней
289
Сообщения, опубликованные пользователем Totoro
-
-
Я тоже за первый вариант. Дополнительные офисы и коммуникации на сервере будут выглядеть прикольно. Плюс, система будет более надежна - от ДДОС даже ebay падал.
Кстати, забыл сказать, что терминал телепорта выглядит шикарно. Черный матрасик, огромный понятный текст на мониторе и цветные буковки. У тебя очень хорошо получается.Like
Спасибо

Адреса длинные только, вводить долго. Зато безопасно. Уже делаю. Программа-менеджер телепортов пока будет консольной. Она будет слушать эфир и передавать команды подконтрольным телепортам. В новых версиях OpenComputers должен появиться компьютер-планшетник (будет собираться из запчастей в ассемблере). Тогда и офис строить не надо - ходи себе с планшетом и обновляй данные =)
А во втором варианте мне особенно нравятся криптографические блоки от Immibis (на скриншоте сверху - похожие на стойки дата-центра).
-
-
У меня вопрос, по удаленному администрированию телепортов. А точнее по безопасности.
Я придумал два варианта, обеспечивающих безопасность данный от перехвата и подделки:
1) Сделать таблицу адресов всех телепортов, и передавать не broadcast'ом, а точными сигналами по адресам. Тогда хакер просто не сможет получить данные. (Если конечно не будет пытать администратора, и вызнавать таблицу адресов. Перебором адреса получить нереально)
Проблема: радиус беспроводной связи ограничен. Надо делать либо несколько "офисов" для управления, на локальную группу телепортов. И менять таблицы поочереди в каждом "офисе". Либо, сделать сеть ретрансляторов, каждый из которых будет знать только адреса ретрансляторов более низкого уровня. Тогда можно будет дать сигнал с "главного" ретраснлятора, и он разбежится по дереву передающих станций, и дойдет до каждого телепорта.
Безопасно, но требует точной ручной настройки.
2) Шифровать передаваемые данные асинхронным шифрованием. Администратор посылает вызов, телепорт его принимает и высылает одноразовый ключ для шифрования. Администратор шифрует данные и посылает телепорту. Тот принимает данные и выполняет действия.
Проблема: хакер может перехватить первоначальный вызов и начать "ДДОС-атаку" посылая вызов снова и снова. Формата необходимой команды он не знает, поэтому послать свои данные не сможет. Однако телепорт будет вынужден постоянно генерировать ключи и посылать их в ответ.
Можно сделать ограничение и проверять сигнал только раз в секунду, к примеру. Но хакер все-равно может забить эфир и помешать настоящему администратору передать данные.
И опять стоит вопрос централизации управления.
Я склоняюсь к первому варианту. Что думаете по этому поводу?
https://lh3.googleusercontent.com/WUtrSIdSnGOQ8oq2YjmABHOmrz6BjuNiPJZWFk1FUyE=w925-h530-no
-
1
-
-
Спустя некоторе время, можно будет писать специального робота-мародера, который будет собирать зависших, сбившихся с пути и разрядившихся роботов и черепах снаружи и приносить хозяину, вместе с добытыми ими ресурсами.
А кто-то вообще будет делать робота, который караулит других у шлюза снаружи и в последний момент срубает их киркой.

Кстати, общаться с роботом можно через связанные платы. Тогда робот после добычи подойдет к шлюзу и вызовет хозяина сам. Или сообщит свои координаты в случае аварии, чтобы робот-спасатель смог его снаружи забрать =)
-
1
-
-
Я уверен, что и с ванильным сундуком робот будет работать аналогично.... Просто не на всех серверах стоят ЭндерСтореджи и т.п., а точнее почти нигде их нет, например на новый сервер я его не ставил.
Обновил программу для горизонтального копания:
Теперь формат вызова выглядит так:
mine <length> [width] [return]
Где return принимает значение true или false.
Если true - робот после работы возвращается в исходную точку.
По умолчнию - не возвращается.
-
Круто! То есть, как я понял, робот проверяет с каждой новой выкопанной позиции все 5 новых направлений, и если там ничего нет, возвращается на предыдущую позицию - и так, пока не завершит все цепочки проверок по всем возможным ветвлениям и направлениям жилы? А дальше едет по основному направлению копания. Единственное, возможно, что некоторые не полезные блоки проверяются повторно с разных сторон или это учитывается в массиве?
Именно так.
А один и тот же блок он не проверяет detect()'ом дважды. Если от пометил блок как false - пустая руда, то, когда он подойдет к нему с другой стороны, и начнет проверку сначала по массиву - блок, отмеченный false (пустая порода) или true (уже выкопан), отсеется сразу.
Потому робот не будет тратить время и поворачиваться к блоку, который он уже обследовал. Он повернется к первому неизвестному (который в таблицу не занесен - nil).
... А что за сундук, обычный ванильный эндеровский, робот умеет в него класть вещи уже, а то черепашки его не видели? В лаве еще остается? Нет фунции возврата еще что ли на начальную стартовую точку работы? Если не использовать карту, может тогда ввести просто локальные программные координаты, и вернуть робота в начало по окончании работы?...
На обычном не пробовал, т.к. я обкатывал программу у нас на сервере. Он возит с собой сундук из Ender Storage, настроенный на одну цветовую комбинацию с другим сундуком, из которого выкачивает ресурсы ME Import Bus.
Что касается лавы - он у меня сейчас остается в точке, пригодной для того, чтобы сразу продолжить копать. А если там (случайно) лавовое озеро, его это естественно не смущает. Локальные координаты от сохраняет (блок NAVIGATION). В принципе - можно сделать чтобы он проверял окрестности на жидкость. А если вокруг лава (или вода) - пятился бы назад до сухого места =)
...Плюс сундук, чанклоадер, навигация, расширение инвентаря(кстати, какой сейчас максимально возможный инвентарь у робота, 24 слота?) Черепах можно будет использовать на начальной стадии развития.
Каждый апгрейд на инвентарь - плюс 16 ячеек. Мой робот-дровосек имеет четыре апгрейда - инвентарь на 64 ячейки (хотя ему столько не нужно =))
В коде 24 я написал, чтобы оставить небольшой буфер, на случай, если проверку пройдет слишком поздно и часть добытого начнет высыпаться. Вообще у робота-шахтера - 32 ячейки.
-
Это очень просто. OpenComponents позволяет через адаптер обращаться к ME Controller'у. Я при запуске запрашиваю количество алмазов в сети и сохраняю его.
Раз в секунду происходит обновление программы. Она проверяет количество алмазов в ME сети. Если значение изменилось - вычисляет разницу. Если разницы хватает на выбранный телепорт - хватает игрока и телепортирует.

-
У меня сделано очень похоже на это.
Я делал так:
1) Завел переменную MAX, куда записал максимальный размер стороны куба, который может содержать жилу. У меня это 1024 блока. Размер просто нереальный, даже для черного гранита =)
2) При обнаружении чего-то интересного - вызывается функция go(). Она записывает, куда смотрел мордой робот, чтобы вернуть его в правильное положение, когда он закончит выкапывать жилу. Затем объявляется пустая таблица lode (жила). Элемент с любым индексом в новой таблице будет всегда nil. Этим и пользуюсь. Элемент nil означает, что этот блок робот еще не исследовал. И наконец - вызов рекурсивной функции mine. Ей передается сторона, с которой надо начать.
3) Первая часть mine: функция получила параметр - сторону, которую надо копать. Она ее копает (добавлены циклы, на случай гравия. И все равно ведь где-то сбивается :confused:)
4) Вторая часть: команда lode[loc.x*MAX*MAX + loc.y*MAX + loc.z] = true
Чтобы не заморачиваться с 3D массивом, я генерирую на основе трех координат уникальный индекс. И делаю запись в таблице - true: значит текущий блок пройден.
5) Третья часть. Робот начинает проверять соседние блоки. Он вычисляет их координаты (прибавляет или отнимает от нужной оси по 1) и смотрит массив lode. Если в ячейке - nil, значит робот еще не был в этом блоке, и не проверял его.
Если там пустая порода, робот записывает false в таблицу и проверяет следующий блок. Если там руда - вызывает функцию mine с параметром - стороной где обнаружена руда. Получается - функция mine вызывает сама себя. (Рекурсия. Откуда название программы =))
6) Завершающая часть. Робот вспоминает, какую сторону ему передали в начале, и делает движение обратно. Если он копал вниз - он поднимается. Если копал вперед - разворачиваеся назад и делает шаг.
Таким образом, вложенные вызовы mine завершаются поочереди, начиная с самого последнего, и получается, что робот возвращается точно по своим следам в исходную точку.
Там к работе возвращается функция go(), которая поворачивает робот в исходное положение.
-
2
-
-
1.8? Я думал, что 1.7... Вот что значит год ждать 1.8. Я разочарован.
Точно, 1.8. Вот пруф: ссылка.Русифицировать кстати реально. Я просто ленюсь раскладку туда-сюда переключать, когда код пишу. Машинально все на своем "пиджин-инглишь" пишу.
-
Вау! Звучит здорово!

В АЕ 2 добавили систему безопасности. Теперь там нужно будет в терминале биологическую карту вставить, чтобы настроить игроку доступ. Но на 1.7.10 переходить Дэн200 не собирается, так что придётся обходиться без новых плюшек
. Кстати, воронки принимают предметы через полублоки, так что можно над хоппером поставить плиты из Абиссального камня — получится такая же красивая штука. А если поиграться с командой Партиклес, то вообще будет зашибенчик
.OpenComputers зато обновляется, можно программу и на 1.7.10 запустить. =) Хотя без ComputerCraft будет печально.
А команда /particles же совсем недавно добавлена. В версии 1.8, вроде. Под нее еще даже Forge исходные коды не расковыряли =)
-
Вчера читал форум, и внезапно меня посетила мысль написать менеджер телепортов для нового сервера на OpenComputers.
Так появилась программа Quantum Link.
Фичи (+ - готово, - - в планах):
+ Терминал с интерфейсом выбора телепорта.
+ Возможность телепортироваться в выбранное место.
+ Бесплатные и платные телепорты. Платные телепорты могут иметь разную стоимость. Оплата наличными (пока - алмазами).
+ Промежуток между телепортами - 30 сек. При этом телепорт на экране меняется на рандомный (анти-шпион =)
+ Возможность временной блокировка телепортов (тех обслуживание и т.д.)
+ Добавление/обновление списка телепортов через удаленный доступ (беспроводная сеть).
- Безналичный расчет через RFID карту игрока.
- "Избранная" станция телепорта. Если игрок из этой локации часто перемещается в одну определенную, он может телепортироваться не выбирая ее из списка, просто одним кликом. (Либо вообще просто встав на платформу телепорта. При этом пригодится безналичный расчет.)





Техническая часть - это компьютер OC с алмазным экраном на два блока (можно и золотой) и два адаптера, на командный блок и ME Controller. Платные телепорты принимают валюту через площадку из Transition Plane. Во первых, это быстрее чем через воронку, во вторых эстетичнее и со спецэффектами =) (В принципе - можно сделать и воронку. Или вообще - сундук.) В-третьих, такую систему будет трудно сломать, к примеру набив приемник до отказа булыжником. Да и инкассатору удобно - забрал картридж (диск из ME Drive), вставил новый, пошел дальше. Или вообще дистанцинно переслать все добытое.
Я знаю, что сеть AE не приватится, и эти плейны можно будет свернуть и унести. Но. Во-первых - сервер хардкорный. Скоммуниздили телепорт - летайте бесплатными маршрутами =) Во-вторых, можно изменить конструкцию и сделать ее безопаснее.
В планах - сделать безналичный рассчет. Дополнение Immibis добавляет такую интересную штуку, как RFID карты. Карта хранит 80 символов. Запись - одноразовая. Если записать на нее уникальный ключ, и хранить в базе пары "Ник игрока" - "Ключ карты", получится удобная система идентификационных карт. Осталось только сделать сеть, где хранится количество финансов для каждой карты и автоматы, которые материальные ценности меняют на виртуальные.
Карточки читаются прямо из инвентаря игрока, на расстоянии 5 блоков от ридера. Игрок кликает платный телепорт, система отправляет запрос в банк и снимает со счета стоимость телепорта.
P.S. Исходники не выкладываю, могу скинуть, кому интересно. Они еще не дописаны, с ошибками и багами, комплект фич - не полон.
-
3
-
-
Писал код на локальной сборке, заметил еще одно обновление:
- Новое: во встроенном редакторе кода (edit) появился поиск по тексту (Ctrl+F).
-
Небольшая (90 строк =)) программа, написанная развлечения ради.
К примеру, вы ждете новую партию стали. Загрузили домну углем и железом - делать временно нечего. Моя программа выводит на экран компьютера случайные цитаты с Баша. Понравившиеся цитаты можно распечатать на листке бумаги, с помощью принтера из ComputerCraft.
Для работы нужен компьютер OC с интернет-платой, адаптер и принтер из CC. В принтер положите краситель (в левый слот) и стопку бумаги (в верхние слоты).
P.S. Не работал раньше с интернетом. Возможно в Lua есть более человеческий способ вытащить из JavaScript текст, но я его не знаю. Поэтому просто поотрезал лишнее gsub'ами =)
-
1
-
-
Спасибо =)Тоторо, хорошая идея и реализация. Понравилась простота кода. Даже нет строчек больше 30-40 символов.
Сделал версию с горизонтальным "срезом". Программа стала проще и короче (теперь умещается в 256 строк - как раз один буфер обмена OC). Робот работает быстрее, при той же эффективности. Правда "шахта" выглядит немного странно

Исходный код:
Робота необходимо ставить в правый угол предполагаемого тоннеля, передней стороной - на левый угол. (Сэкономил на навигации =))
Остальное (образцы пустой породы, ender chest) - так же как и в первом варианте.
-
2
-
-
Сделал тестовый "заезд" с Супер Киркой. Задал тоннель 100х10. Робот выкопал 1387 блоков, из них - 451 блок полезный. Совершил 1411 движений.
Я тут подумал - моя программа делает тоннель в вертикальной плоскости. А что если перенести этот процесс в горизонтальную?
При это должна увеличиться скорость - отпадают лишние повороты.
Тогда получится, что мой алгоритм спопоставим по скорости с копанием "через два на третий". Только в "разложенном" в одну длинную ленту виде.
Жилу мой алгоритм довольно шустро выбирает.
Где будет больше руды - в кубе или в вытянутом горизонтальном слое такого же объема?
-
1
-
-
В глубине шахтерского мира, у самых лавовых озер можно часто встретить параллельно идущие узкие тоннели - игроки фармят алмазы и редкую руду. Моя программа реализует тот же принцип добычи - минимум булыжника, максимум руды.
Программа копает узкий длинный тоннель. Каждую найденную жилу руды, робот выбирает полностью, используя специальный рекурсивный алгоритм. После того, как жила выработана полностью, робот возвращается обратно, и продолжает копать тоннель.
Робот использует для подзарядки добытый уголь. Когда инвентарь переполняется - он ставит Ender Chest и складывает добытое в него. Затем забирает его и двигается дальше.
Использование
Totoro Recursive Miner:
http://pastebin.com/sN8hJBFH (версия 0.2)http://pastebin.com/L21VMm7S (версия 0.5H, последняя на текущий момент. Обновленные инструкции по установке и использованию тут)
Робот должен иметь чанклодер, генератор и хотя бы один (лучше два или три) апгрейд на инвентарь. Также желательно иметь большой объем оперативной памяти.
В начале программы записаны две константы:INV_SIZE = 24 TECH_SLOTS = 8
INV_SIZE - общее количество слотов в инвентаре
TECH_SLOTS - технические слоты (от начала инвентаря)
В технические слоты кладутся образцы пустой породы, которую не надо добывать. Слотов 8, так как GregTech добавляет цветной гранит, а RailCraft - abyssal stone. Обычно в первых слотах лежит: камень, земля, гравий, булыжник, красный гранит, черный гранит, abyssal stone.
В последний, восьмой слот, кладется Ender Chest.
Программа принимает два параметра:mine [len] [height]
len - длина тоннеля (по умолчанию - 10)
height - высота (по умолчанию - 4)
P.S. Бета версия. =) Может сбиваться гравием, может закончить работу на дне лавового озера. Если не положите образец земли с травой, а робот будет копать близко к поверхности - есть риск что он поедет обдирать дерн со всего "майнерс"-мира.-
5
-
-
Всех, кому разрешен доступ, просто надо добавить в вайт лист. Кнопка W чтобы окрыть его, и кнопка A чтобы добавить нового игрока в список.
Система игнорирует тех, кто обозначен в этом списке.
-
Как известно, жить у нас на сервере бывает опасно. Убийцы в плащах невидимках рыскают в поисках жертв, а табуны гриферов разоряют дома прямо на глазах у офигевающих владельцев.
Моя программа не сможет предотвратить злодеяние, но запомнит негодяя и запишет его имя, дабы пострадавший знал, на кого направить свой гнев (кроме админа и модераторов, конечно).
Суть
Система защиты SpiderEye - это сеть motion sensor'ов в стратегически важных местах, которые соединены кабелями с компьютером.

Помните, что сенсор - не радар. Он срабатывает только на существ в области прямой видимости. Сектор должен просматриваться и простреливаться, не создавайте укрытий гриферу! =)
Сборка железа
Конкретные параметры системы сильно зависят от того, сколько именно сенсоров вы присобачите к компьютеру. Процессор может обработать ограниченное количество компонентов. А именно:- 1 уровень - 8 компонентов
- 2 уровень - 12 компонентов
- 3 уровень - 16 компонентов
Сюда кроме сенсоров входит: монитор, клавиатура (?), красная плата/красный контроллер, видеокарта.
Если вам потребуется больше компонентов - переносите программу на сервер (Server Rack и Server). Туда можно установить сразу несколько процессоров.
Моя машина:- Корпус 3 lvl.
- Процессор 3 lvl.
- Красная плата
- Видеокарта 2 lvl
- Две планки памяти 2 lvl
- Жесткий диск 1 lvl
- Монитор 2 lvl
- Клавиатура
- а также Датчики движения и Кабели
Вы можете установить красную плату в компьютер, или подключить красный контроллер к сети. Тогда при сигнале тревоги компьютер (или контроллер) будет испускать сигнал редстоуна (примерно 10 секунд).
Устанавливаем, подключаем, подаем питание и включаем.
Софт
Первым делом - установите на жесткий диск операционную систему (кто не знает как это сделать, тут есть инструкция: ссылка)
Теперь программа.
Ссылка на SpiderEye Terminal:
pastebin.com/bTc7tJKv
Сохраняем программу на жесткий под именем terminal.
Настройка программы на владельца производится методом пилы и лома - открываем исходники и смотрим на первые строчки:-- Parameters -- owner = "Totoro" monsterlist = {"Spider", "Zombie", "Creeper", "Skeleton", "Enderman", "Sheep", "Cow", "Chicken"} howlerside = sides.back cooldown = 100 -- Colors -- backcolor = 0x000000 forecolor = 0xFFFFFF infocolor = 0x0066FF errorcolor = 0xFF0000 truecolor = 0x00FF00 -- **** --Параметр owner - это ник владельца. Поменяйте на свой.
Параметр monsterlist - это список животных, ради которых вы не хотите подрываться и бежать на улицу с мечом в руке. Я внес в него основную живность, которая шатается вокруг моего дома. В зависимости от области своего обитания, добавьте свои названия (гастов, например, или спрутов).
Параметр howlerside - это сторона, на которую по тревоге компьютер начинает давать сигнал редстоуна. Если у вас плата - сторона дается относительно передней стороны компьютера. Если у вас блок-контроллер - сторона дается относительно сторон света. Если у вас нет ничего - забейте.
Параметр cooldown - продолжительность тревоги в десятых секунды (примерно). По дефолту - десять секунд.
Ниже - таблица цветов, которая хранит цветовую гамму программы. Вы можете поменять их на свои по желанию.
Сохраняем и закрываем (Ctrl+S, затем Ctrl+W).
Запускаем программу, набрав в консоли ее название.
Использование
Программа управляется с клавиатуры.
Хоткеи:H - открывает/закрывает окно справки. В справке - кратко перечислены эти хоткеи.
L - открывает/закрывает лог событий. В логе указаны дата, время и место засеченных движений.
W - открывает/закрывает вайтлист. Вайтлист - список тех, на кого система не реагирует. По дефолту в этом списке только хозяин.
A - добавляет новый сенсор или нового пользователя в вайтлист. Это зависит от того, какой именно список вы открыли.
D - удаляет сенсор из таблицы или пользователя из вайтлиста. Тоже зависит от того, какой список вы смотрите.
R - обновляет таблицу сенсоров. Если вы меняли сенсоры (они при этом сменяют адрес) или просто поудаляли половину сети слежения - обновите таблицу, нажав R. Программа автоматически удалит из таблицы все недействительные адреса. Также обновление происходит при перезапуске программы.
М - включает/выключает обнаружение монстров. Когда включено - в левом-нижнем углу нарисована маленькая буква "M". Если вас достал паук, скребущий лапами по крыше, вы можете включить этот режим, и система начнет реагировать на монстров из списка тоже. По дефолту - отключено.
Q - культурный выход из программы. В отличии от некультурного - например если питание вырубится, или вы нажмете Alt+Ctrl+C, все изменения в списках сохраняются, и вам не придется править их при следующем запуске.
К логам это не относится. Они сохраняются всегда.Добавление сенсоров
В начале экран терминала пуст. Все срабатывания сенсоров отмечены как Unknown и не записываются в логи.
Вам необходимо добавить в таблицу все сенсоры, и подписать их. Нажмите "A".
Сначала необходимо внести адрес сенсора. Его можно узнать с помощью анализатора - ПКМ на сенсоре. Впишите первые четыре буквы-цифры адреса. Например - "5bec"
Затем программа потребует ввести навание. Обозначьте сенсор так, чтобы было понятно, где он.
Например - "Secret Diamond Storage", или "Neighbor House".
Итог
У вас есть система, способная обнаружить живое существо (теоретически работает и на роботах) на подступах к вашей территории (и внутри нее). При обнаружении существа не внесенного в вайт лист или список монстров - подается сигнал редстоуна, на экран выводится мессейдж и делается запись в файл с логами на диске.
Файлы логов расположены в той же папке, что и сама программа SpiderEye, в подкаталоге logs. Каждое событие хранится в файле помеченым датой, когда оно произошло. Например: "05_17_85.log".
P.S. Это бета-версия программы. При обнаружении глюков, багов или шпионских закладок - сразу сообщайте мне! Спасибо за внимание.-
9
-
Предлагаю обновить версию OpenComputers в сборке до 1.3.4.
https://github.com/MightyPirates/OpenComputers/releases/
Список изменений:
- Новое: кабели теперь можно красить. Кабели разных цветов не соединяются, светло-серые (цвет по-умолчанию) соединяются со всеми.
- Новое: голографические проекторы теперь можно поворачивать в вертикальной оси (Y) гаечным ключем.
- Новое: подсветка в интерфейсе механизмов, которая показывает, какой предмет в какой слот можно поставить.
- Изменено: максимальная сложность конструкции робота теперь определяется уровнем его корпуса и процессора.
- Изменено: немного улучшена "пропускная способность" монитора при обновлении изображения.
- Изменено: немного изменились рецепты красного контроллера (стал дороже) и апгрейда-навигации (стал дешевле).
- Фикс: порча мира при покидании игры в сингл-плеер.
- Фикс: поведение адаптера в некоторых особых случаях.
- Фикс: утечки памяти OpenOS внутри игрового компьютера.
- Фикс: некоторые рецепты не совместимы с ore dictionary (часть Forge, которая в частности отвечает за совместимость руд из разных модов).
- Фикс: еще множество мелочей.
-
1
-
Хорошая идея насчет уровней доступа. Попробую реализовать.
-
Программа позволяет осуществлять удаленный контроль. Где бы ни находился хозяин - он знает кто к нему пришел и может его впустить.
Плюс программа работает независимо от привата. Если человек добавлен в белый список - он может пройти. Если не добавлен - на усмотрение хозяина.
-
2
-
-
Замок - сенсорный экран. Он посылает ник того кто "звонит в дверь" на терминал, а тот присылает ответную команду, если звонивший - хозяин, или есть в вайтлисте.
Короче - очки нужны только чтобы редактировать списки и видеть лог событий.
А входить/выходить можно и без них.
Команда open нужна в том случае, если звонит кто-то неизвестный. Или отсутствующий с списке доступа. Тогда хозяин решает - впускать или не впускать и дает команду.
-
Если потерял очки - не беда. Замок впустит в дом и без очков, просто не будет видно приветствие =)
Можно будет скрафтить новые очки, синхронизировать с Google Bridge и пользоваться дальше.
А вот если сопрут - беда. Придется блок Google Bridge наверное сломать/поставить, чтобы прервать связь злоумышленника с "сервером" =)
-
* * *
Новая версия SmartLock 0.4 в этом посте: ссылка.
* * *
Простая реализация дверного замка на Google Glass из OpenPeripherals и компьютерах из OpenComputers. Образец торчит в дверях моего дома на сервере Computer&Science. Наверняка некоторые уже подходили (знаю всех поименно
) и пытались понять, работает мой замок или он просто завис.
Так вот, замок работает. Для того чтобы в дом вошел посторонний человек, хозяин должен находиться на сервере и дать соответствующую команду (при этом он может быть где угодно, хоть в Аду). Кроме того программа ведет два списка: черный и белый. Тем, кто занесен в белый список разрешение на вход не нужно. Они могут войти в любое время, даже если хозяин отсутствует (даже если они не добавлены в приват). Тем, кто внесен в черный список программа мигнет красным сигналом, и отправит уведомление хозяину.
Интерфейс замка выводится на очки "Google Glass" хозяина дома. Его можно упростить, я оставил место под другие фичи. Основной элемент - лог. Программа выводит туда сообщения и предупреждения.
Управление идет командами в чат.
Программа клиент:
http://pastebin.com/9X3u2Z9g
Программа терминал:
http://pastebin.com/KbSmQrcH
Терминал - программа, которая работает с блоком Google Glass Bridge. Она запускается на отдельном компьютере, к которому подключен вышеуказанный блок.
Клиент - программа которая работает на небольшом компьютере дверного замка. Он управляет дисплеем (который по совместительству служит кнопкой звонка) и блоком красного контроллера, который отпирает дверь. Одновременно может быть запущено несколько компьютеров клиентов (если в дом ведет несколько дверей/люков), каждый клиент идентифицируется номером порта (по дефолту - 27) в первой строке кода.
Команды управления (пишутся в чат):
$$show - показать интерфейс замка
$$hide - скрыть интерфейс (он будет показан автоматически, если произойдет какое-нибудь событие)
$$open [port] - команда отпирает дверь. Если указан параметр port - она отопрет указанную дверь. Если не указан - ту дверь с которой связано последнее событие (кто-то позвонил, например в нее).
$$deny <port> - замок указанной двери подает красный сигнал (запрет на вход =)) Чисто косметическая команда.
$$add <port> - команда добавляет в систему новую дверь по указанному порту.
$$whitelist [name] - если указан ник - команда добавляет его в белый список. Если ник не указан, программа выводит белый список в лог.
$$blacklist [name] - если указан ник - команда заносит его в черный список. Если не указан - выводит черный список в лог.
$$remove <name> - удаляет ник из списка (В какой список он внесен - из того и удаляет).
P.S. Забыл написать - терминал ведет лог, и пишет, кто, когда и куда звонил, кого пропустили, кто на улице остался =) Можно почитать его на жестком, в той же папке где сам терминал лежит.-
4
-

Телепорты Quantum Link
в Инфраструктура
Опубликовано:
Теоретически - удачливый хакер получает доступ к командному блоку. Ого-го стимул.
Согласен, я слегка увлекся =)
С OC телепорты придется снабжать энергией. Получится, что содержать телепорт может позволить себе достаточно крупный клан/поселение, который может круглосуточно его поддерживать. Тогда часть оплаты может уходить на его поддержку, тем кто генерит энергию. Суровый реализм (капитализм, и частное предпринимательство =))
В принципе действительно достаточно трубы и гейта. А если поставить флаг в файле конфигурации OpenComponents, который позволит адаптеру работать с ID блоков в инвентарях - можно сократить все до воронки и пустотной трубы.
Мне показалась интересной система, когда платные телепорты имеют разную стоимость. Телепортироваться на дачу к админу, или на соседнюю улицу - совсем разные вещи. Для этого нужен был более тонкий контроль.
В принципе, можно (если поставить вышеупомянутый флаг) подсчитывать предметы прямо в воронке, а затем (после телепортации, пока идет cooldown) врубать сигнал редстоуна на деревянную трубу и редстоун-двиг из BuildCraft'а и вынимать предметы в ту же пустотную трубу.
Однако может появиться проблема переполнения, когда злоумышленник вывалит over9000 булыжника в приемник. Это тоже придется отслеживать и включать процедуру очистки (телепорт будет уходить в cooldown).
P.S. Насчет того, что снимается - я предположил =) У меня еще не снимали, а я сам не пробовал.