maxutka99 26 Опубликовано: 18 августа, 2019 За пару минут написал вот такую вот программу: local component = require("component") local mfsu = require("component").mfsu local sign = require("component").sign print("MFSU Monitoring for OC") print("Using sign I/O Upgrade") os.sleep(2) print("Look at sign! :)") while true do energy = mfsu.getStored()..' EU' sign.setValue(1, energy) os.sleep(2) end Не судите строго т.к. это была программа которую я написал одной из первых для OC Для создания вам понадобиться: 1.Компьютер 2.Адаптер(x2) 3.MFSU 4.Табличка 5.Улучшение Sign I/O(которое надо установить в адаптер) Табличка должна быть установлена на адаптер(есть возможность настройки в коде программы путём изменения числа 1 на другое в строке sign.setValue(1, energy) 5 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Romanok2805 16 Опубликовано: 18 августа, 2019 (изменено) За пару часов написал вот такую программу. Позволяет подключить любое количество мфэх и табличек. Возможность горячего добавления или убирания мфэх или табличек во время работы программы. Вывод в процентах. Программа сама находит сторону, где находится табличка. Работает в фоне. Также если мфэх больше 4 штук, то на табличке идёт прокрутка по очереди всех мфэх. Обычная версия: Скрытый текст local component = require("component") local event = require("event") local mfsu local sign local count = 0 --с какой строки начинается отсчёт для расчёта строки на таблички local arg = {...} local isStarted local MfsuSpeed = 1 --частота обновения энергии мфэх в сек local SignSpeed = 0.5 --табличек в сек local function init() --поиск всех мфэх mfsu = {} for i, k in pairs(component.list("mfsu")) do table.insert(mfsu, {address = i, stored = 0}) --добавляем все адреса мфэх end if mfsu == {} then print("MFSU not found.") os.exit() end --поиск табличек sign = {} for i, k in pairs(component.list("sign")) do local side for ii = 0, 5 do if component.proxy(i).getValue(ii) then --получаем сторону где есть табличка side = ii break end end if side then table.insert(sign, {address = i, side = side}) --добавляем все адреса табличек end end if #sign == 0 then print("Sign not found.") os.exit() end end local function updateMFSU() for i, k in pairs(mfsu) do --Проверяем и записываем все значения в массив local buffer = math.floor(component.proxy(mfsu[i].address).getStored()) --для оптимизации if buffer ~= 0 then mfsu[i].stored = i..":"..buffer.."eu "..math.floor(buffer/40000000*100).."%" if string.len(mfsu[i].stored) > 15 then mfsu[i].stored = i..":"..buffer.." "..math.floor(buffer/40000000*100).."%" --если не влазиет строка в табличку можно укоротить end else mfsu[i].stored = i..":0eu 0%" end end end local function updateSigns() local strInt = {} if #mfsu > 4 then --если меньше 4 мфэх то прокрутка не нужна for i = 1 + count, 4 + count do --получаем нужные строки для обновления if i > #mfsu then strInt[i - count] = i - #mfsu else strInt[i - count] = i end end count = count + 1 if count > #mfsu - 1 then count = 0 end else strInt = {1, 2, 3, 4} end local str = "" for i = 1, math.min(4, #mfsu) do str = str..mfsu[strInt[i]].stored.."\n" end for i = 1, #sign do component.proxy(sign[i].address).setValue(sign[i].side, str) end end local function start() init() updateMFSU() updateSigns() idTimerMfsu = event.timer(MfsuSpeed, updateMFSU, math.huge) idTimerSigns = event.timer(SignSpeed, updateSigns, math.huge) event.listen("component_removed", init) event.listen("component_added", init) started = true end local function stop() event.ignore("component_removed", init) event.ignore("component_added", init) event.cancel(idTimerMfsu) event.cancel(idTimerSigns) started = false end if isStarted then if arg[1] == "setSpeed" then stop() arg[2] = string.lower(arg[2]) arg[3] = tonumber(arg[3]) if arg[2] == "mfsu" then MfsuSpeed = arg[3] elseif arg[2] == "sign" then SignSpeed = arg[3] else io.stderr:write("Error in the parameters") end start() elseif arg[1] == "stop" then if not isStarted then stop() end else io.stderr:write("Error in the parameters") end else start() print("Found:") print(#sign.." sign") print(#mfsu.." MFSU") end Скачать: pastebin get mjF0Qw4x mfsu.lua Команды: mfsu - Запустить программу mfsu setSpeed mfsu/sign [количество] - Указать скорость Пример: mfsu setSpeed sign 2 - Данные на табличках будут обновляться каждые 2 секунды mfsu stop - Остановить обновление Версия для rc: Скрытый текст local component = require("component") local event = require("event") local mfsu local sign local count = 0 --с какой строки начинается отсчёт для расчёта строки на таблички local arg = {...} local isStarted local MfsuSpeed = 1 --частота обновения энергии мфэх в сек local SignSpeed = 0.5 --табличек в сек local isRestart = false local function init() --поиск всех мфэх mfsu = {} for i, k in pairs(component.list("mfsu")) do table.insert(mfsu, {address = i, stored = 0}) --добавляем все адреса мфэх end if mfsu == {} then print("MFSU not found.") os.exit() end --поиск табличек sign = {} for i, k in pairs(component.list("sign")) do local side for ii = 0, 5 do if component.proxy(i).getValue(ii) then --получаем сторону где есть табличка side = ii break end end if side then table.insert(sign, {address = i, side = side}) --добавляем все адреса табличек end end if #sign == 0 then print("Sign not found.") os.exit() end end local function updateMFSU() for i, k in pairs(mfsu) do --Проверяем и записываем все значения в массив local buffer = math.floor(component.proxy(mfsu[i].address).getStored()) --для оптимизации if buffer ~= 0 then mfsu[i].stored = i..":"..buffer.."eu "..math.floor(buffer/40000000*100).."%" if string.len(mfsu[i].stored) > 15 then mfsu[i].stored = i..":"..buffer.." "..math.floor(buffer/40000000*100).."%" --если не влазиет строка в табличку можно укоротить end else mfsu[i].stored = i..":0eu 0%" end end end local function updateSigns() local strInt = {} if #mfsu > 4 then --если меньше 4 мфэх то прокрутка не нужна for i = 1 + count, 4 + count do --получаем нужные строки для обновления if i > #mfsu then strInt[i - count] = i - #mfsu else strInt[i - count] = i end end count = count + 1 if count > #mfsu - 1 then count = 0 end else strInt = {1, 2, 3, 4} end local str = "" for i = 1, math.min(4, #mfsu) do str = str..mfsu[strInt[i]].stored.."\n" end for i = 1, #sign do component.proxy(sign[i].address).setValue(sign[i].side, str) end end function start() if isStarted then io.stderr:write("MFSU is now running") end init() updateMFSU() updateSigns() if not isRestart then print("Found:") print(#sign.." sign") print(#mfsu.." MFSU") end idTimerMfsu = event.timer(MfsuSpeed, updateMFSU, math.huge) idTimerSigns = event.timer(SignSpeed, updateSigns, math.huge) event.listen("component_removed", init) event.listen("component_added", init) started = true end function stop() if not isStarted then io.stderr:write("MFSU is now stop") end event.ignore("component_removed", init) event.ignore("component_added", init) event.cancel(idTimerMfsu) event.cancel(idTimerSigns) started = false end function setSpeed(from, num) isRestart = true stop() from = string.lower(from) if from == "mfsu" then MfsuSpeed = num elseif from == "sign" then SignSpeed = num else io.stderr:write("Error in the parameters") end start() isRestart = false end Скачать: pastebin get mcvBWAfH /etc/rc.d/mfsu.lua Команды: rc mfsu start - Запустить программу rc mfsu setSpeed mfsu/sign [количество] - Указать скорость Пример: rc mfsu setSpeed sign 2 - Данные на табличках будут обновляться каждые 2 секунды rc mfsu stop - Остановить обновление и закрыть программу Изменено 18 августа, 2019 пользователем Romanok2805 Убрал лишний код (остался случайно). 6 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya 415 Опубликовано: 18 августа, 2019 >Мелкие таблички, на которых ничего не видно уже с 5-6 блоков Есть же мониторы, зачем так изощряться? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
maxutka99 Автор темы 26 Опубликовано: 20 августа, 2019 В 18.08.2019 в 13:45, BrightYC сказал: >Мелкие таблички, на которых ничего не видно уже с 5-6 блоков Есть же мониторы, зачем так изощряться? Надо было использовать что-то технологичней дорогих мониторов, например таблички. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya 415 Опубликовано: 20 августа, 2019 14 минуты назад, maxutka99 сказал: Надо было использовать что-то технологичней дорогих мониторов, например таблички. Хоть это и , но мониторить МФСУ(! делается из алмазов - следовательно на 2-3 тир монитор/пк ресурсы есть) на табличках - мазахизм в чистом виде. А если ресурсов нету - иди в шахту, мониторить тебе явно нечего=d Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 20 августа, 2019 7 минут назад, BrightYC сказал: Хоть это и , но мониторить МФСУ(! делается из алмазов - следовательно на 2-3 тир монитор/пк ресурсы есть) на табличках - мазахизм в чистом виде. А если ресурсов нету - иди в шахту, мониторить тебе явно нечего=d А если аргументов нету, просто скажи — да иди ты в шахту! В песочницу каждый имеет право играть так, как ему нравится. И что является большим мазохизмом: мониторинг на табличках или же поход в шахту, учёные пока ещё не выяснили. Но радость может приносить и то и другое. 5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya 415 Опубликовано: 20 августа, 2019 1 минуту назад, eu_tomat сказал: В песочницу каждый имеет право играть так, как ему нравится. И что является большим мазохизмом: мониторинг на табличках или же поход в шахту, учёные пока ещё не выяснили. Но радость может приносить и то и другое. Разумеется, в песочницу волен играть каждый как хочет. Но ведь мы здесь не в ридонли пришли Холивары то поддерживать надо. Кто-то же должен это делать, верно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 20 августа, 2019 1 минуту назад, BrightYC сказал: Холивары то поддерживать надо. Кто-то же должен это делать, верно? Интересный холивар можно и поддержать. Но большинство холиваров уходит в мусорку. Вот, например, какой смысл в аргументации вида "выброси таблички, иди в шахту"? Разве этот аргумент как-то изменит ценность опубликованной программы? 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya 415 Опубликовано: 20 августа, 2019 Только что, eu_tomat сказал: Вот, например, какой смысл в аргументации вида "выброси таблички, иди в шахту"? Это уже передёргивание фактов. Я такого не говорил. Но раз уж на то пошло - намного лучше посидеть в шахте пол часика и сделать клёвую мониторилку, которую видно хоть из окна соседа 6 минут назад, eu_tomat сказал: Разве этот аргумент как-то изменит ценность опубликованной программы? Это не аргумент, а лишь придирка. Программа у @Romanok2805 крутая, но пользоваться или нет решает игрок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 20 августа, 2019 8 минут назад, BrightYC сказал: Но раз уж на то пошло - намного лучше посидеть в шахте пол часика и сделать клёвую мониторилку, которую видно хоть из окна соседа А лучше для кого? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya 415 Опубликовано: 20 августа, 2019 2 минуты назад, eu_tomat сказал: А лучше для кого? Думаю, для того кто мониторит. Я же никого насильно с дулом пистолет не заставляю использовать мониторы, а не таблички=d Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 20 августа, 2019 6 минут назад, BrightYC сказал: Думаю, для того кто мониторит. Разные игроки мониторят. Это лучше для всех игроков? 7 минут назад, BrightYC сказал: Я же никого насильно с дулом пистолет не заставляю использовать мониторы, а не таблички=d Предположим, не заставляешь. Тогда почему составляешь фразу в форме приказа, выраженного в категоричной форме? 1 час назад, BrightYC сказал: иди в шахту, мониторить тебе явно нечего=d Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya 415 Опубликовано: 21 августа, 2019 10 часов назад, eu_tomat сказал: Разные игроки мониторят. Это лучше для всех игроковв? Нет. Кто-то вообще может играть на ванилле, и ему до мфс'у как до лампочки. 10 часов назад, eu_tomat сказал: Предположим, не заставляешь. Тогда почему составляешь фразу в форме приказа, выраженного в категоричной форме? Составлять "приказ" я не хотел. А текстовым смайлом хотел смягчить, чтобы не вышло как-то грубо. Но если всё таки так получилось - извиняюсь. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 24 февраля, 2020 В 20.08.2019 в 20:03, eu_tomat сказал: Вот, например, какой смысл в аргументации вида "выброси таблички, иди в шахту"? Разве этот аргумент как-то изменит ценность опубликованной программы? а вот что интересно, а если попробовать принтить сайгн-апгрейдом на табличке какие-то команды сервера (например плагины многие позволяют создать команд. табличку). Будет ли оно работать? Например на спавне сделать динамические инфо-таблички, киты периодически появляются, телепорты и тп. То есть не перманентно табличка создана админом и висит годами, а что-то там динамически программно меняется. Может даже где-то кому-то понадобится в создании квестовых карт и пр, где и радар можно к пк прикрутить и прочее. Надо будет когда-то попробовать, работает ли оно с плагинами Может так можно и сервер любой крякнуть или получить какие-то фишечки полезные и призы? Скриэйтится ли командная табличка без пермишенов и без человека? Или оно так не работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya 415 Опубликовано: 24 февраля, 2020 23 минуты назад, Alex сказал: Может так можно и сервер любой крякнуть или получить какие-то фишечки полезные и призы? Скриэйтится ли командная табличка без пермишенов и без человека? Или оно так не работает? Спустя пару лет кто-то об этом додумался =D Да, например магазин из ChestShop, или Essentials фичи с табличками спокойно работают. Просто делать табличку например с шопом, и покупаешь тонну чанклодеров или еще чего. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 24 февраля, 2020 2 минуты назад, BrightYC сказал: Просто делать табличку например с шопом, и покупаешь тонну чанклодеров или еще чего. Это при условии, что есть пермишен у игрока на интеракт с такими табличками? И что они разрешены вообще на сервере? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya 415 Опубликовано: 24 февраля, 2020 Только что, Alex сказал: Это при условии, что есть пермишен у игрока на интеракт с такими табличками? И что они разрешены вообще на сервере? Это да, само собой. Но если таблички включены в плагине - табличка будет работать, но только у тех, у кого есть права. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах