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

Лидеры


Популярный контент

Показан контент с высокой репутацией 01.05.2020 во всех областях

  1. 1 балл
    Карта приватов для роботов. Добавил возможность роботам на нашем сервере в удобном виде получить все приваты. Новичку может это и не пригодится, так как новичок, как правило, копает чанк "змейкой" в своем привате, или рядышком, где и специальным "визуализатором приватов" (плагин) можно эти приваты и так глянуть. Их видно. "Упереться" роботом в чужой приват очень не велик шанс. А вот более опытным игрокам, которые любят "гонять" робота по всему миру в поисках урана или алмазов, эти данные, возможно и пригодятся. В общем, если у вас робот с персональным чанклодером, ультимейт-геолайзером, ультимейт-навигатором, с квантовой панелькой, с тессерактом АЕ, связанной платой... и прочее прочее, а программа работает так, что ваш робот не ковыряется в кубике земли 2 на 2 чанка, а "бороздит" автономно просторы сервера чанк за чанком биом за биомом и т.п., в поисках конкретного ресурса, то вы можете вашего робота сделать еще "умнее". Теперь ваш робот(или ПК) может в любой момент времени при наличии интернет платы получить карту приватов сервера и с легкостью их обходить, если вы, конечно, в своей программе реализуете эту проверку. Таблица имеет абсолютно все необходимые и достаточные данные о приватах сервера. Мини-пример программки, которая демонстрирует подключение к "карте приватов" сервера TechnoCraft: Для работы вам понадобится любая библиотечка для работы с JSON. Я использовал вот эту библиотечку. Сырые данные приватов в json: ссылка Если нужны какие-то др. данные, или хотите параметр передавать в php, например параметр мира для получения выборки: robot_rg.php?world=miner , пишите в комментариях. И да, если вы не видите овнера в регионе, не пугайтесь, это скорее всего админ приват, созданный при помощи /rg define <name_region> На сайте админ приваты не выводятся. Но для роботов это тоже "преграда". И еще раз, как памятку, оставлю здесь информацию о том, как добавить робота в приват(часто кто-то спрашивает на сервере об этом): /rg addmember имя_региона -n [OpenComputers] - ваши транспозеры работают с инвентарями в вашем регионе /rg addmember имя_региона -n ваш_ник.robot - ваши роботы копают в вашем привате и работают с инвентарями Пример: /rg addmember myhome -n bob99.robot - для игрока с ником bob99 для региона myhome Вроде так, если ничего не забыл. Поправьте, если что, в комментариях.
  2. 1 балл
    Ну были же эти врата на робике (сервер с космическим кораблем и магазом в энде) Не было такого дня, чтобы кто-то не стонал, а почему нет команды спавн, варп и т.п. Хотя там на том корабле вообще ничего не было, ни квестов, ни банкоматов ни админшопов, вообще ничего. Бесполезный кусок какашки. Просто кусок шерсти летал в вакууме. Я не буду никакие врата строить и вязать на них перемещение и инфраструктуру сервера. Ни один админ в мире в здравом рассудке не страдает такой ерундой. Проще варп поинты раскидать. Тем более голый стив появился на сервере, например, новичок. Откуда ему эти врата высосать и построить? из пальца? Телепортироваться звездными вратами в твоем примере есть смысл только к своему другу или в свой коровник, чтобы овец постричь. Хотя какой в этом смысл, если есть хомки, инвайты, тпа-шки и варпы, которых миллиард штук. Проще уже ИК телепорт кинуть в коровник, там хоть микросекунду занимает процесс, чем ждать 45 секунд, пока врата шевроны активируют. Про набор адресов и возню со всем этим я уже молчу. В вратах есть смысл, когда сборка под них заточена. п.с. Особенно прекрасны были моменты, когда комп отрубался или глюкнулся и игрок застревал на том корабле космическом из шерсти и кукарекал там, пока админ в игру не зайдет и не пнет комп. Это было просто великолепно, яркий пример "удовольствия". Так что в топку их. Одни беды от них только неописуемые, имхо. Может когда-то позже их установим.
  3. 1 балл
    Попробовал написать что-то такое. Сам файл лежит в онлайн-эмуляторе (ocelot.fomalhaut.me) по пути /home/.mt.lua . Вкратце результат: Ocelot Online гораздо лучше соответствует таймингам Minecraft, чем OCEmu. Но в обоих эмуляторах есть баги. Тесты: тест 1 - генерация 10 тысяч псевдослучайных чисел тесты 2-4 - отрисовка случайного текста на экране тест 5 - испытание гуделки случайными звуками (computer.beep) тест 6 - проверка, все ли компоненты имеют методы по документации тест 7 - проверка файловой системы на чтение-запись тест 8 - проверка Интернета тесты 9,10 - проверка сетевой и соединённой карты соответственно тест 11 - проверка EEPROM на чтение-запись Результаты: Minecraft 1.7.10 (компьютер tier 3) тест 1 - 0,05 с тест 2 - 1,3 с (рендер идёт постоянно) тест 3 - 1,8 с тест 4 - 2,5 с тест 5 - 13,5 с тест 6 - без предупреждений тест 7 - предупреждение, что временная файловая система не найдена тест 8 - без предупреждений тест 9 - 1,15 с; предупреждение, что никто на пинг не ответил тест 10 - не проводился (не хватило места для соединённой карточки) тест 11 - 2,2 с Ocelot Online тест 1 - 0,05 с тест 2 - 1,9 с (рендер кусками) тест 3 - 2,65 с тест 4 - 3,7 с тест 5 - 13,5 с тест 6 - без предупреждений тест 7 - предупреждение, что временная файловая система не найдена; (баг эмулятора) на unmanaged диск ничего не записывается тест 8 - без предупреждений тест 9, 10 - не проводились тест 11 - 2,2 с OCEmu тест 1 - 0,02 с тест 2 - 0,37 с (рендер после coroutine.yield) тест 3 - 0,43 с тест 4 - 0,91 с тест 5 - 4,58 с тест 6 - без предупреждений тест 7 - предупреждение, что временная файловая система не найдена тест 8 - без предупреждений тест 9 - 1 с; (баг OCEmu) модем поймал своё сообщение тест 10 - не проводился тест 11 - 0,001 с Награду попрошу отдать на дальнейшую разработку Ocelot и фиксы багов.
  4. 1 балл
    Привет, это моя первая программа для робота. Автоферма пшеницы. local args = {...} local io = require("io") local robot = require("robot") local comp = require("computer") local filesystem = require("filesystem") local r_forward = robot.forward local arg1 = args[1] local arg2 = args[2] function robot.forward() repeat os.sleep(0) until r_forward() return true end if (arg1 == "size") then if (arg2 == nil) then return print("Не указан размер") end local farmsize = io.open("/home/farm.cfg", "w") farmsize:write(arg2) farmsize:flush() farmsize:close() return print("Позиция установлена") end if (filesystem.exists("/home/farm.cfg") == false) then return print("Файл конфигурации не создан! пожалуйста используйте аргумент size *Размер поля*") end local farmsize = io.open("/home/farm.cfg") local size = farmsize:read() farmsize:close() function farm() robot.forward() for y = 1, size do -- собрать 1 линию robot.swingDown() robot.useDown() robot.placeDown() for x = 1, (size - 1) do robot.forward() robot.swingDown() robot.useDown() robot.placeDown() end -- поворот if y % 2 == 1 then robot.turnLeft() robot.forward() robot.turnLeft() else robot.turnRight() robot.forward() robot.turnRight() end end if(size%2 == 0) then robot.turnLeft() robot.turnLeft() robot.turnLeft() -- возвращение на базу for y = 1, (size - 1) do robot.forward() end robot.turnRight() robot.turnLeft() robot.forward() robot.turnRight() robot.forward() robot.turnAround() else for y = 1, (size - 1) do robot.forward() end robot.turnLeft() for y = 1, (size) do robot.forward() end robot.turnRight() robot.forward() robot.turnAround() end end function dropitem() robot.turnAround() for c = 2, 16 do robot.select(c) if robot.count() > 0 then robot.drop() else robot.select(1) break end end robot.turnAround() end if arg1 == "primary" then farm() if robot.count(2) == 64 then dropitem() end end local primary = nil while true do -- таймер(1час) for i = 1, 10 do os.sleep(370) print((10 * i) .. '%') end farm() if robot.count(2) == 64 then dropitem() end end Пару слов об аргументах *name*.lua primary(принудительный запуск сбора) *name*.lua size *size*(установка размера фермы) Также о настройке 1.Ферма должна быть одинаковая по размерам. т.е. 15x15 или 9x9 и т.д. 2.Робот должен быть установлен следующим образом(см.ниже) 3.(по желанию) дать роботу мотыгу чтобы он сам вспахал землю(в принципе просто можно задать ему размеры и дать семена и он сам вспашет землю и посадит семена) Просьба не судить строго так как это моя первая программа и вообще первая программа на языке LUA Жду адекватной критики и предложений. Спасибо за помощь игроку Asummonster
  5. 1 балл
    Маловероятно, что сейчас кто либо продолжает использовать компьютеркрафт, но вдруг. В процессе игры мне понадобилось осуществлять связь между компьютером OC и CC. Так как я не нашёл адекватного способа передачи данных, то придумал костыль. Костыль заключается в передаче данных (на данный момент — строк, если нужно будет передавать что-то другое, то допишу) через... установку и чтение цвета золотого монитора. Код: Использование: Демонстрация: Надеюсь, что кому-то это может пригодиться.
  6. 1 балл
    Я недавно выложил IRC-либу, которую я делал, чтобы собирать IRC-мост. Теперь я собрал и мост. Установка Соберите компьютер с интернет-платой, кучей памяти (на всякий случай), админ-чатбоксом из OpenTechnology и дебаг-картой (через неё онлайн получает прога). Поставьте на него OpenOS. Пропишите следующие команды: mkdir -p /home/bin wget https://gist.githubusercontent.com/Fingercomp/df483bc2cefa13e0422d656ae82495ac/raw/c8617e01b7baa0e47936300fd9e783afa36601cb/irc-bridge.lua /home/bin/irc-bridge.lua Скачайте и установите IRC-либу. Например, так: mkdir -p /home/lib/irc /home/lib/irc/client /home/lib/irc/event /home/lib/irc/protocol cd /home/lib/irc set ADDR=https://gitlab.com/cc-ru/irc-oc/-/raw/v1.1.0/irc wget $ADDR/init.lua init.lua wget $ADDR/enum.lua enum.lua wget $ADDR/state.lua state.lua wget $ADDR/throttlingScheduler.lua throttlingScheduler.lua wget $ADDR/client/init.lua client/init.lua wget $ADDR/client/handlers.lua client/handlers.lua wget $ADDR/event/init.lua event/init.lua wget $ADDR/event/bus.lua event/bus.lua wget $ADDR/protocol/init.lua protocol/init.lua wget $ADDR/protocol/isupport.lua protocol/isupport.lua wget $ADDR/protocol/capabilities.lua protocol/capabilities.lua wget $ADDR/protocol/splitter.lua protocol/splitter.lua Запустите мост, чтобы он создал конфиг-файл: irc-bridge Откройте файл /etc/conversationalist.cfg. Там будет сериализованная Lua-таблица (не самый лучший формат конфига, согласен). Найдите и поменяйте следующие настройки: channel — канал, к которому подключаться nickname — ник бота в ирке account — имя аккаунта бота в ирке (можно в nil поставить, если нет) accountPassword — пароль от акка (также в nil поставить, если нет) gameAdmins или ircAdmins — в таблицу впишите себя, чтобы можно было конфигать Всё. Мост поставлен. Команды Мост воспринимает команды. Чтобы выполнить команду, например pm on: Пропишите в игре: #IRC: pm on Пропишите в ирке: /notice @<имя канала> pm on (например, /notice @#cc.ru-server1 pm on). Список команд: online — показать онлайн на другом конце моста. pm on — разрешить с другого конца моста слать вам ЛС. pm off — запретить слать вам ЛС. pm — показать, могут ли вам послать ЛС (в ирке включено по умолчанию, а в игре выключено и надо включать самому). msg <имя> <сообщение>: отправить ЛС юзеру на другом конце моста. pm ignore list — показать список игнорируемых юзеров. pm ignore add <имя> — добавить кого-то в этот список. pm ignore del <имя> — вытащить кого-то из него. Админы могут выполнять ещё такие команды: irc admin list — показать список админов в ирке. irc admin add <имя> — добавить кого-то в этот список. irc admin del <имя> — убрать кого-то из него. mc admin list, mc admin add <имя> и mc admin del <имя> — аналогично, но работает со списком админов в игре. irc whitelist list — показать список юзеров, которые могут слать сообщения в игру. irc whiltelist add <имя> — добавить кого-то в список. irc whiltelist del <имя> — убрать кого-то из него. mc blacklist list, mc blacklist add <имя>, mc blacklist del <имя> — аналогично, но работает со списоком тех, чьи сообщения не будут слаться в ирку. irc alias set <имя> <алиас> — установить алиас юзеру. Когда он будет писать сообщения в игру, его имя будет заменено на алиас. irc alias get <имя> — показать алиас для юзера. debug on — включить режим дебага. Мост будет писать весь трафик с IRC на экран. Полезно, чтобы узнать, почему тупит мост. Пароли будут показаны плейнтекстом, поэтому лучше оставить выключенным, хотя бы во время подключения. debug off — выключить этот режим. debug — показать, включён ли дебаг. Как это выглядит На мониторе будет рисоваться вот такое: Как можно догадаться, чтобы мост остановить, нужно нажать Ctrl-C. Ссылки Код на гисте: https://gist.github.com/Fingercomp/df483bc2cefa13e0422d656ae82495ac/
  7. 1 балл
    Такая генерация не многим лучше DeepDark Зачем вообще визуально уродовать овер? Лучше баланс хардкорности подправить, например, уменьшить спавн животных и увеличить спавн опасных мобов
  8. 1 балл
    Всем иногда приходится получать реальное время в OC. Обычно я использую такой код: local fs = require("filesystem") local function getTime() local f = io.open("/tmp/time", "w") f:write("time") f:close() local timestamp = fs.lastModified("/tmp/time") / 1000 + 3600 * 3 --Умножаем на часовой пояс, в моём случае GMT +3 return os.date("%d.%m.%Y %H:%M:%S", timestamp) --Реальное время в формате День.Месяц.Год Час:Минута:Секунда end print(getTime) Тут всё просто и понятно. Открываем файл в (Это важно!) /tmpfs, записываем любое значение, и получаем метку времени последнего изменения файла. Про этот способ, наверное, уже все знают, и тем не менее. И тут недавно меня осенило. Я всегда знал, что эта файловая система есть и на голых компьютерах без ЖД, дронах. Но если /tmpfs есть даже у микроконтроллеров, зачем тянуть время с интернета? Предлагаю вот такой код: local filesystem = component.proxy(computer.tmpAddress()) local function getTime() local handle = filesystem.open("/time", "w") filesystem.write(handle, "time") filesystem.close(handle) local timestamp = filesystem.lastModified("/time") / 1000 + 3600 * 3 return os.date("%d.%m.%Y %H:%M:%S", timestamp) end Этот код будет работать на любом компьютере. Вывод - тянуть время с интернета не нужно - например так сделано у @Asior в теме с бинарными часами: Всё гениальное - просто. @Fingercomp предлагаю добавить этот код сюда https://fingercomp.gitbooks.io/oc-cookbook/content/lua/real-time.html Возможно, это я такой идиот, а все остальные использовали /tmpfs. Но надеюсь кому-то поможет.
  9. 1 балл
    Метка "tmpfs" не обязательно указывает на временную файловую систему. Верное решение: local tmpfs = component.proxy(computer.tmpAddress())
  10. 1 балл
    Очень забавно поднимать тему 3-летней давности. Так вот, написал на обычном модеме или туннельная карта. Сервер - Клиент - Управление почти тоже самое: Тильда(Ё) - выход из программы на локальном компьютере F1 - выход из программы на удалённом компьютере F5 - обновление экрана. У сервера и клиента есть 2 параметра - tunnelMode и port. Первый параметр отвечает за использование туннельной карты(если она есть) или использование модема. (true - использовать туннельную карту/false - не использовать) Второй сам за себя говорит - за порт. (Картинка чёрно-белая, само собой) Очень важные картинки:
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...