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

lokin135

Пользователи
  • Публикации

    58
  • Зарегистрирован

  • Посещение

  • Победитель дней

    4

Все публикации пользователя lokin135

  1. Снова привет! Когда-то давным-давно увидел я дома у Fingercomp'a очень интересную хреновину на мониторе, которая показывала расход/прирост энергии в системе. И вот тогда я захотел накодить нечто подобное. НО! Был я тогда еще тем говнокодером, по этому подобное я не мог сделать. Но время шло, учился кодить и вдруг внезапно вспомнил я о той штуке. Закодил, поставил и забыл. Но вот еще время прошло! И снова смотрев на свою папочку с программами наткнулся на свой теперешний говнокод. Ну и переписал с новыми фичами (в виде поддержки полупиксилов, что принесло более красивый вид и точность графика) и адекватным кодом (хотя в некоторых моментах я все-же не знал как лучше поступить, и возможно сделал не совсем правильно) : Слева - старая версия проги, а справа - новая. График показывает процент энергии от объема, выделяя цветом разницу доступной энергии прошлой точки графика: Point.Y = math.ceil((energy / capacity) * ((ResY-BarY) * 2)) Пройдемся по настройкам: ​Цвета настраиваются ровно так-же, как и в прошлой проги. local ResX, ResY = 100, 50 local TimeSleep = 2 local BarY = 3/1.5 local lastX = -1 local drawBar = true local nameComponent = "mfsu" Первые переменные ResX и ResY - разрешение экрана. Можно спокойно настраивать, но только отключив бар сверху. TimeSleep​ - время ожидания после прорисовки столбца. В общем скорость движения графика. BarY​ и lastX лучше не трогать) drawBar​ - отвечает за отображение графика сверху. nameComponent​ - а вот эта переменная позволяет подключить не только MFSU'шки (да-да, можно подключить хоть 60 их к серверу), но и другие энергохранилища из IC2. Ссылочки на программу: https://lokin135server.ru/PublicRepository/mfsuDrawerEU/mfsu4M.lua (да да, я так и не разобрался с кодировкой) pastebin get XygafBBK Прошлые версии можете глянуть на сервере, но сразу предупреждаю: вы можете получить психическую травму от моего старого кода ​ лучше не смотрите :P Жду конструктивной критики. Не, ну идеального кода не бывает, верно?
  2. Там мои прожки валяются, но далеко не все) Основную массу стоит переписать - кол-во говнокода многовато относительно последних прог))
  3. В сетевых технологиях я конечно нуб, по этому могу совсем чутка дать конструктивной критики: 1. В некоторых местах нужно использовать Логические выражения. (51 строка) 2. Почему переменные для настройки не локальные? 3. Я бы сделал отдельные функции "init" и "main", а не вызывал функции где попало. 4. Ну и обработка ошибок тоже сделана не в лучшем виде. Я бы предпочел занести все ошибки в массив, пробегался по ошибкам через for и предпринимал действия исходя от порядкового номера ошибки. (Хотя... думаю есть способ лучше)
  4. Хелло computercraft! Хочу поделится своей программой по мониторингу состояния 54 (максимум) реакторов (6 блоков по 9 реакторов), которую меня попросили закодить. Вот как все это выгдядит (немного промахнулся с разрешением, по этому по краям не симметрично, но вроде не так сильно в глаза бросается): Цвет напряжения который выдает реактор и текст "Реактор №1" выделяется красным или зеленым, в зависимости от состояния активности: если реактор выдает 1 и больше EU/t (другими словами - он работает) - цвет зеленый, в противном случае - красный. Так-же в другом углу окна отображается нагрев: если он больше 50% - цвет текста становится оранжевым, но если менее - зеленый. Стоит сказать, что вся программа работает без дополнительных библиотек (я имею в виду библиотеку от ECS, например. т.е. сторонние), т.к. я ну прям очень не люблю таскать с собой не нужный хлам. Да и еще нужен будет установщик для всего этого. Обошелся только тремя requir'ами: component, term и event. Так-же я сделал отдельный массив для удобного редактирования цветов: ИМХО это лучший вариант для хранения цветов программы. (Дал название переменной color для более логичного кода: "color.UpBar" лучше выглядит чем "colors.UpBar". Но опять-же, ИМХО) С этой штукой будет не проблема сделать графику программы под цвет стены, например. Да и я не дизайнер или художник, что-бы идеально подбирать цвета)) Теперь счет настройки программы. Для коннекта реактора нужно поставить вплотную адаптер к нему и ввести 3 (можно больше или меньше, но мне по душе именно так) первых символа адреса адаптера (нужно тыкнуть по нему анализатором, что-бы узнать полный адрес) в спец. массив с этими адресами. Можно было-бы автоматически распределять реакторы по блокам, но заказчику нужно было индексировать самому. Ну, вроде все рассказал. В коде (и в сообщении, ага) могут быть грамматические (не давно узнал, что английское слово "адрес" пишется как "address", а не "adress"... я раньше постоянно так писал и допускал ошибку), так и логические ошибки (имею в виду бесполезную проверку на nil, например). Помидорами не кидайтесь, но советами и конструктивной критики я буду очень рад. Ну и код выложил на свой сервак и на пастебин: https://lokin135server.ru/PublicRepository/ReactorStatusAndMFSU/ReactorStatus.lua https://pastebin.com/JUKJXK97 Команда для загрузки: pastebin get JUKJXK97 MonitReactors.lua На основе этой проги я еще сделал рендеринг состояния MFSU'шек, но эта совсем другая история.. (код там-же найдете)
  5. Открою секрет... Товарищ BlackBurn кодит прямо на сайте пастебина (уже было сказано, что нужно кодить в ST3)
  6. Дану, чем ближе к реальному OC - тем лучше.
  7. Слушай... а как на счет белых IP? У тебя он ванишом стиран? Мой провайдер говнюГ, у роутера и конечного пользователя (меня) апишки не совпадают, и по этому мне открыть сервачек на прямую, так скажем, никак((((((((((
  8. все-же другим новичкам будет полезно.
  9. Не совсем с тобой согласен (зачем так?!) Да, все через pcall() делать совсем убого, но подключать библиотеки ​Я считаю ​нужно вот так: local computer = require("computer") Хоть программа может быть и в дроне, но local никогда не крашила проги
  10. Ну что-ж, все мы с чего-то начинали. Давай я тебе подскажу твои ошибки: 1. Объявляй локальные ​переменные и давай им четкие названия: c = require'component' gpu = require'component'.gpu -> local comp = require("component") local gpu = comp.gpu ​2. Используй локальные функции. При программировании больших программ (я например: 200+ строк) это очень сильно поможет: local function Draw() gpu.setBackground(0xFFFF00) gpu.fill(1,1,24,5," ") gpu.setBackground(0xBDBDBD) gpu.set(5,3," ") gpu.setForeground(0xFFFF00) gpu.set(5,3,"Проведите карту.") end ​3.Используй отступления (пример не очень, т.к. лучше использовать логические выражения. кто-то писал на форуме): ... if type == "magData" then h = 1 else h = 0 end ... -> if type == "magData" then h = 1 else h = 0 end Ну и на последок: лучше избегать бесконечные циклы. Так-же лучше выносить в отдельную переменную числа, строки и т.п. (в данной программе, пароль, т.е. string) в начало кода программы, что-бы конечному пользователю было проще ее настроить.
  11. не актуально, вот полу-рабочий вариант (часы/минуты подкоректировать нужно) https://pastebin.com/vCihbKm1
  12. нашел api_post.php. не понял что за что отвечает. (разжуй мне и подай на блюдце)
  13. ого а там даже комменты есть
  14. Ребята, нужна помощь с заливкой логов на pastebin. можно просто отрывок кода-примера заливки файла (лог-файл) на определенный ID. Возился с internet API, но ничего не получилось, т.к. с всякими HTTP протоколами и прочим никогда не возился. А вообще можно реализовать вышеописанное?
  15. и кодь в sublime text 3, а не в редакторе текста OpenOS'ки. http://www.sublimetext.com/3
  16. такое чувство, что ты не знаешь что нужно компоненты подключать... require('component').redstone.setOutput​(2,15) а не или же: local com = require('component') local rs = com.redstone rs.setOutput​(2,15)
  17. Прикольно получилось. Графонистая такая, все на высшим уровне) но чет мне не зашло. Лично мне, проще написать код в Sublim'е, чем разбираться в детской 'поигрульке'. Хотя для новичков - будет полезно. Win10 64-bit, java: Version 8, Update 111. - робит.
  18. ВОТ! где ты был когда я на дне электросети был? угарнул
  19. хм... на счет звуков не знаю, но тебе еще работать и работать . http://imgur.com/a/mcT8p
  20. lokin135

    А что такое EEPROM и где оно живет?

    name, _, sender, _, _, message = computer.pullSignal(2) А зачем нам 'отправитель'? Он-же нигде не используется...
  21. Спасибо вам друзья! все, понял. Многое исправил. Но что сделать мне с этим постом-то? или Администраторы сами эту бяку удалят?
  22. Все-же, я выложил сюда потомучто все "это", как я считаю, нужно доработать. Хотя стоило в раздел библеотек выкладывать... ну даладно)
×
×
  • Создать...