man_cubus 28 Опубликовано: 3 июля, 2018 (изменено) Пришло время для моей собственной первой темы. Когда-то я наткнулся на возможность менять цвет индикатора у роботов и чуть погодя, реализовал отображение заряда робота с помощью изменения этого самого индикатора. Сейчас всего 4 градации Синий для заряженного больше чем на 75%, сине-зеленый для заряженного больше чем наполовину, оранжевый для заряда больше 25% и тускло-красный для заряда меньше 25% Распространяется через hpm, он же hel package manager любезно предоставленный Totoro доступный вот в этой теме. Для установки нужно установить hpm с помощью pastebin run vf6upeANи затем hpm install bluesдля установки файла blues.lua в /etc/rc.d/blues.lua, после чего нужно выполнить регистрацию нового rc модуля командой rc blues enableИ перезагрузить робота. Вот так примерно выглядит робот с индикацией, которая обновляется раз в пять секунд и позволяет с первого взгляда определить робота, у которого низкий заряд. Дополнительные ссылки: Пакет на hel.fomalhaut.me Код на gitlab.com Изменено 8 июля, 2018 пользователем eu_tomat коррекция ссылки на код 5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zed 133 Опубликовано: 3 июля, 2018 Это же лишний затрат энергии, к тому же на сервере щас роботы работают с зарядником(имею ввиду что где они стоят то там всегда зарядник). И в основном работа у них в компе коблы( а это стоять на месте). Мой вердикт, лишняя затрата ресурсов робота. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
man_cubus Автор темы 28 Опубликовано: 3 июля, 2018 Предлагаю зайти в эвил и посмотреть что делает робот со скрина на варпе cubus Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zed 133 Опубликовано: 3 июля, 2018 Предлагаю зайти в эвил и посмотреть что делает робот со скрина на варпе cubus Увидел, статическое действие, стоит на месте и бездомным ведром забирает воду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
man_cubus Автор темы 28 Опубликовано: 3 июля, 2018 (изменено) Однако он получает энергию от встроенной солнечной панели. Если Алекс вернёт еще и дождь в Улей, то индикатор может пригодиться. Возможно, станет актуальным зарядить робота опытом и таки еще понизить энергопотребление. И увеличить интервал опроса до минуты, например. Так что, мне думается, проблема с энергией куда менее значима, чем ты считаешь. Изменено 3 июля, 2018 пользователем man_cubus Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zed 133 Опубликовано: 3 июля, 2018 Однако он получает энергию от встроенной солнечной панели. Если Алекс вернёт еще и дождь в Улей, то индикатор может пригодиться. Возможно, станет актуальным зарядить робота опытом и таки еще понизить энергопотребление. И увеличить интервал опроса до минуты, например. Так что, мне думается, проблема с энергией куда менее значима, чем ты считаешь. Ну в таких ситуациях думаю ты прав Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 4 июля, 2018 (изменено) Сообщать игроку состояние робота цветом полосы в ряде случаев бывает очень удобным. Как правило, это стационарные роботы с неполной автоматизацией процесса: либо программа ещё недописана, либо недостроены части всей системы, либо полная автоматизация вообще не подразумевается, например, в зонах, не защищённых приватом. При таком способе передачи информации игроку достаточно одного взгляда, чтобы понять, требует ли робот внимания по любой из причин: низкий уровень заряда, недостаток топлива или материалов, переполнение инвентаря, износ или разряд инструмента. А чтобы эта индикация не жрала много энергии, для начала следует оптимизировать код. Например, не вычислять в цикле то, что легко вычисляется и без цикла. Изменено 8 июля, 2018 пользователем eu_tomat чистка устаревшего комментария Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 8 июля, 2018 Первый (в порядке появления, а не по важности) совет: освоить шестнадцатеричную запись цветов. Записиь вида robot.setLightColor(0xFF8080) сегодня понятна не только программистам, но и многим дизайнерам. Даже они, далёкие от тонкостей систем счисления, оценили удобство такой записи. В результате промежуточная функция colorRGB() становится ненужной, а запись выглядит компактнее. Впрочем, для кого-то запись из трёх десятичных чисел более понятна, и потому имеет право на существование. Следующий участок кода можно и записать короче, и сделать более понятным, и даже поднять его быстродействие: local powerSteps = #cl local e = tonumber(pc.maxEnergy()) local pStep = math.floor((e / powerSteps)) local function currentPowerStep() e = pc.energy() local result = powerSteps local process = true for i = 1, powerSteps-1 do if (e < (pStep*i)) and process then result = i break end end return result endЗдесь используется цикл и проверка условия внутри него. В зависимости от текущего состояния робота выполняется соответствующее количество итераций. Но это вычисление можно всегда выполнить за одну итерацию. local idx = math.ceil(computer.energy() / computer.maxEnergy() * #colors) robot.setLightColor(colors[ idx>0 and idx or 1 ]) Такой код записывается короче, выглядит проще, а работает быстрее. И памяти меньше требует. 5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
man_cubus Автор темы 28 Опубликовано: 9 июля, 2018 (изменено) Такой код записывается короче, выглядит проще, а работает быстрее. И памяти меньше требует. Можно даже еще короче и быстрее если цвета пронумеровать с нуля. Закоммитил. Пока не тестировал, но сегодня вечером погоняю на своих роботах. Изменено 9 июля, 2018 пользователем man_cubus Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах