Chebuya
-
Публикации
609 -
Зарегистрирован
-
Посещение
-
Победитель дней
72
Сообщения, опубликованные пользователем Chebuya
-
-
54 минуты назад, aMax сказал:...
Что за extra_reboot? Это какой-то кастомный ивент? Ты делаешь где-то computer.pushSignal("extra_reboot")?
Ты такую программу в цикле должен гонять, чтобы что-то сделать. event.listten лишь создаёт слушателя, который реагирует на какие-то события.
P.S По поводу кода - если редстоун-сигнал принимает какая-либо из редстоун-плат, то есть сигнал redstone_changed. По быстрому написал код, не проверял, но работать должен.
local event = require("event") local computer = require("computer") local redstone = require("component").redstone local rebootSide = 2 --Сторона с которой идёт приём сигнала https://minecraft-ru.gamepedia.com/OpenComputers/Sides_API local function reboot(address, side) if side == reboootSide then if redstone.getInput(reboootSide) > 0 then computer.shutdown(true) --Перезагружаем компьютер P.S true означает перезагрузку, computer.shutdown() - просто выключение. end end end event.listen("redstone_changed", reboot)
-
1
-
-
5 минут назад, NEO сказал:Опка есть?
С дебаг-картой опка не обязательна.
debug.getWorld().insertItem(id:string, count:number, damage:number, nbt:string, x:number, y:number, z:number, side:number):boolean
как-то так.
-
Небольшое обновление
Программа переделана на EEPROM. Минимальный билд робота:
Добавил пару функций:
- eject
- addpoint
Eject извлекает бумагу/настройщик по его имени. Addpoint добавляет предмет, который лежит рядом с роботом. Если это настройщик или бумага - предмет остаётся в роботе. Если остальное - выплёвывает под себя.
Прошивка робота(одной командой):
wget https://github.com/BrightYC/Other/blob/master/telepad.lua telepad.lua && flash -q telepad.lua telepad.luaПо поводу конфига - ejectSide - сторона, с которой выплёвывается предмет при извлечении.
-
1
-
Всем привет.
Написал небольшую программу для автоматизации телепорта из EnderIO.
В роботе должны присутствовать:
- Улучшение "Чат"
- Улучшение "Контроллер инвентаря"
- Улучшение "Инвентарь"(Больше - лучше, с 4 инвентарями будет доступно 64 точки)
- Плата на красном камне(Любой уровень)
Собственно, сама программа: https://github.com/BrightYC/Other/blob/master/telepad.lua
В программе можно настроить
- symbol(Префикс команд)
- whiteList(Другие игроки не смогут использовать телепорт)
- side(Сторона телепорта - верх, низ, спереди)
- bufferSide(Нужно только для версий выше 1.7, там вместо настройщиков нужно класть в инвентарь телепорта распечатку, а достать оттуда распечатку невозможно, хотя получить имя предмета - можно, поэтому ставим буфер/сундук с трубой)
- version(Версия работы - selector для 1.7, paper - для версий выше)
Текстовая инструкция, как сделать точку телепортации:
- Берём настройщик координат(Если у вас версия выше 1.7 - нужно будет прихватить бумагу)
- Тыкаете(пкм) в то место, где хотите поставить точку. Если у вас 1.7 - можете идти домой(P.S для назначения уникального имени на 1.7 нужно переименовать настройщик в наковальне). Если нет - у вас открывается интерфейс, где можно назначить имя точки.
- Кладём в робота.
- Пишем в чате ?update
- Пишем ?list и проверяем наличие точки.
Итог - копия плагина MyWarp(чат-команды практически заимствованы оттуда), доступно до 64 "варпов", немного дописав можно приделать доп. инвентарь, тогда количество точек стремится к бесконечности.
Видеодемонстрация:
Скрытый текст-
7
-
1
-
27 минут назад, eu_tomat сказал:Например, есть свидетельства о самопроизвольном отключении роботов в незагруженных чанках...
1 час назад, BrightYC сказал:А для чего вообще вейкапы нужны в штатной работе?
Робот, упавший с TLWY - нештатная ситуация. Тут вполне хватит 2 команд
>lua >component.modem.broadcast(1, '')И всё. Робот пробужен.
-
1 час назад, eu_tomat сказал:...
А для чего вообще вейкапы нужны в штатной работе? Выключать робота, который например собирает кактусы, и из-за этих грошей городить целую инфраструктуру? Да любой самый простой механизм кушает намного больше, чем робот, который будет собирать кактусы. Не проще просто поставить на все модемы одно сообщение, и будить всё сразу?
-
9 минут назад, Totoro сказал:Ты можешь воспользоваться Serialization API чтобы распечатать табличку в читаемом виде.
local s = require('serialization') local x = { a = 10, b = "hello" } print(s.serialize(x))
А если сделать так - print(s.serialize(x, true)), тогда таблица выйдет в более читаемом виде, как в интерпретаторе. Но конечно там контент урежется немного.
-
1
-
-
Только что, Doob сказал:Было бы здорово если все было так просто. На одном сервере я прочитал исходники админского магазина и нашел их на пастбине.
Сервер многое не сообщает клиентам, но протокол открытый. Немного покопавшись, можно заставить сервер делать удивительные вещи.
Какого магазина? В смысле моего? Там же без ключа в любом случае не получится ничего сделать. Да и магаз же лежит в открытую на гитхабе, зачем искать где-то на пастебине?
-
8 минут назад, Doob сказал:Никакой дыры нет. Все очевидно, если примерно понимать, как работает компьютер.
Что-то OBS после обновы стал туго писать несколько окон, но общий принцип, думаю ясен.
Это же одиночная игра. С какой стати серверу посылать состояние компов? Нужно только клавиатуру/монитор.
-
15 минут назад, Doob сказал:Содержимое сервера общедоступно, любой игрок может прочитать из памяти ключ и использовать его, чтобы управлять базой данных.
Есть один способ защититься. Надо сделать шлюз для связи с интернетом в отдельном мире, куда не имеет доступ ни один игрок. Туда от магазина прокинуть мост туннельными картами. Хотя, я не уверен, что из персонального измерения нельзя вытащить информацию.
Каким образом из памяти игры прочитать ключ? @vx13 призываю тебя, @NEO так же обсуждали эту тему
-
2 часа назад, Doob сказал:В плане безопасности ничего не изменилось, хацкер может спокойно модифицировать свой счет и выкупить все товары.
Самый надежный способ хранить информацию - на жестком диске в игровом сервере.
Каким образом? Я не понимаю о чём ты. Как он модифицирует свой счёт?
P.S Приведи реальный пример, я не в курсе каким образом можно достать данные с жёсткого диска не имея к нему прямого доступа. Ключ хранится на жёстком диске - каким образом игрок может вытащить ключ? Есть реальный метод, или это теория?
P.P.S Был у меня сервер в игровом мире, это неудобно. Всякие отзывы и прочее при вайпе потом фиг достанешь, это не практично.
-
4 часа назад, lLoki сказал:ну она както работает у игроков в магазинах
"както" - либо у них там чанклодер стоит, либо счёт идет только при прогруженном чанке. Ну или у кого-нибудь там доступ к админке, не знаю.
-
-
5 часов назад, hohserg сказал:Еще нужна фича автоматического стирания соглашения всем игрокам при обновлении соглашения
а, да это я сам вручную делаю просто. Утилита есть небольшая.
-
Ну, надеюсь точно доделал.
Доделал почти всё что хотел. Из новинок:
- Возможность выбрать режим поиска(весь инвентарь/1 слот)
- Запуск с EEPROM(никаких зависимостей, программа целиком и полностью на голом HDD)
- Админ-панель. Ну, чтож, теперь "админы" в программе указываются в EEPROM, ибо для обновления/запуска программы требуется знать, кто же администратор. В админ-панели можно банить игроков, обновлять базу данных предметов, вводить терминал в режим тех-работ, удалить ключ с диска.
- Небольшая переделка интерфейса, так же теперь игроки при первом логине ОБЯЗАНЫ прочитать "помощь"(Это отсеивает игроков, которые не понимают что это вообще такое)
- Ключ не указывается в программе, его теперь нужно вставлять через буфер обмена. Сохраняется на жёстком диске по пути в корне диска key.lua
- Немного адекватнее стал конфиг.
- Добавил openperipheral selector, позволяет показывать предмет, который пользователь выбрал.
И еще куча всяких вещей, вроде того что скроллбар работает с мышью.
К слову, теперь установить программу можно вроде как проще. Прошиваем EEPROM, и она автоматически скачивает программу с репозитория. Обновить можно будет комбинацией клавиш CTRL+D.
Появилась утилита автоматического экспорта. Позволяет автоматически экспортировать предметы, если в таблице items указать параметр needed. Будет поддерживать это кол-во в мэ сети, но нужен мост между основной мэ-сетью и сетью магазина. Buffer - это сколько предметов должно быть в сети, чтобы можно было экспортировать предмет(Необязательный параметр). Для работы этого экспорта нужна деревянная мотыга в сети. Даже не спрашивайте зачем
Пачка скриншотов:
Скрытый текст
-
5
-
1
-
6 часов назад, Kingdom сказал:Здравствуйте.
Такой вот вопрос. Есть механизм из мода IndustrialCraft 2 experimental, в нём делаются формы для алмазного бура и шахтёрного лазера. Можно ли автоматизировать крафт этих форм, благодаря роботам из OpenComputers?
Не-а. Никак. Увы. Пробовал адаптером подцепить, не работает. А роботы по гуишкам не умеют лазить.
-
15 минут назад, eu_tomat сказал:В конечном итоге всё равно может остаться очень тонкая рамка, от неё не всегда возможно полностью избавиться.
От неё можно избавится?
Ну разве что чёрный фон
-
16 часов назад, 8urton сказал:gpu.out(x,y,*строка*)
что за gpu.out? Может, set?
-
1
-
-
4 часа назад, eu_tomat сказал:Такой код по идее должен жрать очень мало ресурсов.
Мне непонятно зачем гнаться за "должен жрать очень мало ресурсов". Ибо дефолтная сейчас заставка MineOS лагодромит в разы больше, чем если какой-то микроконтроллер будет дёргать фс раз в полторы секунды.
-
52 минуты назад, eu_tomat сказал:Как вам идея в качестве лагомерки использовать замеры computer.uptime() при циклическом выполнении этого кода?
for i=1,3 do computer.pullSignal(0) end computer.pullSignal(0.01) t = computer.uptime()
Такой код по идее должен жрать очень мало ресурсов.
Проблема в том, что os.time, что computer.uptime возвращает майновское время. Во время низкого тпс'а тикать начнёт медленнее - соответственно computer.uptime при стабильных 20 тиках в секунду и 10-15 тпс будет одинаков. Нужно сравнивать реальное время, только так можно определить тпс.
-
1 минуту назад, eu_tomat сказал:Да, код немного кривоват, склонен к завышению TPS, имеет неконтролируемое дрожание
Давно его делал, что поделать.
1 минуту назад, eu_tomat сказал:Всё же это не мой путь на данном этапе. Сейчас я буду пытаться держать реакторы включенными до последнего и, по возможности, улучшать алгоритмы поддержания их живучести. А момент отключения я буду выбирать, скорее всего, измерением не TPS сервера, а запаса времени между действиями, необходимыми для управления реактором.
Ну тут увы дороги расходятся. Я бы не стал дожимать до последнего.
-
8 часов назад, NEO сказал:Конечно неинтересен. Майн выдохся что ясно всем, чего в реакторе нового можно найти спустя кучу лет после выхода мода?
3 минуты назад, NEO сказал:Предлагаю написать продвинутый симулятор реактора.
-
1 минуту назад, eu_tomat сказал:Реактор должен продолжать работу не смотря ни на что. Насколько мне это удастся в той или иной схеме, это другой вопрос. Часть из обсуждённых схем не будет стабильной даже при 20 TPS.
Моё мнение - вырубать реактор при ТПС ниже допустимого. Нашёл старенький код, позволяющий определить кол-во тиков в секунду.
local c, fs = require("component"), require("filesystem") local gpu = c.gpu local TC, RO, RN, RD, TPS = 2, 0, 0, 0 gpu.setForeground(0x99b2f2) gpu.set(1, 2, "TPS Сервера:") local function time() local f = io.open("/tmp/TF", "w") f:write("test") f:close() return(fs.lastModified("/tmp/TF")) end while true do RO = time() os.sleep(TC) RN = time() RD = RN - RO TPS = 20000 * TC / RD TPS = string.sub(TPS, 1, 5) nTPS = tonumber(TPS) gpu.set(13, 2, " ") if nTPS <= 10 then gpu.setForeground(0xcc4c4c) elseif nTPS <= 15 then gpu.setForeground(0xf2b233) elseif nTPS > 15 then gpu.setForeground(0x7fcc19) end gpu.set(13, 2, TPS) end
Когда тпс в норме - включаем реактор. На лаги майна лучше не надеяться.
-
11 минуту назад, eu_tomat сказал:Но при использовании беспроводной сети возникает вопрос: кто включит погасший микроконтроллер?
Плюс надо учесть, что реактор у нас высокоэффективный, т.е контроль за ним нужен соответствующий. Тут уж с нагрузкой ничего не поделать. Можно, конечно, постоянно в цикле гонять пинг-понг, но всё же мне кажется, что если микроконтроллер не отвечает - либо он сгорел, либо реактор выдохся.

Автоматизация получения подарков OpenComputers
в Инфраструктура
Опубликовано:
Сейчас можно раскрафчивать EEPROM, делая из него EEPROM, потом копируя с другим.