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


Фотография

Redcontrol - Удобное управление редстоуном

майнкрафт программирование lua луа редстоун схема управление крутость электричество развлечение

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 427
  • Уровень сигнала: 0,14%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 07 Май 2016 - 18:34

Добрый день, любители редстоун схем!
Сегодня, вашему вниманию представляется полноценный редстоун контроллер redcontrol (оригинальное название :) )
Но всё не так скучно как может показаться
 
В программе есть:
  • Возможность подавать обычный редстоун сигнал мощностью 15
  • Подавать цветной сигнал (16 цветов) мощностью 255
  • Принимать редстоун и цветной редстоун сигналы и видить их характеристики (цвет и значение)
  • Управлять всеми шестью сторонами редстоун блоков (компов)
  • Управлять всеми блоками редстоуна которые подключены в сеть
 
В программе нет:
Возможности задавать свою мощность генерации сигнала, кроме максимального (мне показалось это лишним)
 
Управление:
  • Красная кнопка справа сверху - выход
  • Жёлтые указатели там же в углу - переход на между блоками
  • Цветные кнопки - включение/отключение генерации выбранного сигнала
 
Индикаторы:
  • Буква G - генерация сигнала
  • Цифры - мощность полученного сигнала
  • Дробь в углу - текущий блок / число блоков в системе
Скрины:
Спойлер
 
Ссылка на код:
 
Рекомендации:
  • Можете использовать как блоки, так и редстоун карты 2 ур. Но не в коем случае не ставьте карту 1 ур.
  • Не ломайте редстоун блок на котором стоит прога - словите ошибку.
  • Словили ошибку - лучше перезагрузите комп (для очистки event.listen)
 
А с вами был qwertyMAN, удачной игры!
 
Обновлено до v1.1

Добавлено:
-Работа полностью на event (по идее теперь лагать не должно не у кого)
-Исправлен вылет при отключении компонентов. Теперь можно со включенной прогой подключать/отключать компоненты


Сообщение отредактировал qwertyMAN: 08 Май 2016 - 07:13

  • electronic_steve и davial это нравится

#2 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 878
  • Уровень сигнала: 6,16%
  • В игре: 46 час. 1 мин.

Награды

                          

Отправлено 07 Май 2016 - 19:40

Лагордром.
Зачем выполнять непрерывный опрос всех сторон, когда можно задействовать событие redstone_changed и обновлять информацию лишь об одном изменившемся входе?

#3 Оффлайн   qwertyMAN

qwertyMAN
  • Автор темы
  • Пользователи
  • Сообщений: 1 427
  • Уровень сигнала: 0,14%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 07 Май 2016 - 19:51

Лагордром.
Зачем выполнять непрерывный опрос всех сторон, когда можно задействовать событие redstone_changed и обновлять информацию лишь об одном изменившемся входе?

Не знаю, у меня ничего не тормозит. Да и если что timeout можно с 0 сменить на 1, хотя в этом нет необходимости. В любом случае это ОС, а не СС. Весь сервер не залагает даже если захочет  :)

 

Хотя, постойте ка, я брал инфу о redstone api вот отсюда http://minecraft-ru....ft/Redstone_API

А про "redstone_changed" впервые слышу, где ты её взял?



#4 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 878
  • Уровень сигнала: 6,16%
  • В игре: 46 час. 1 мин.

Награды

                          

Отправлено 07 Май 2016 - 20:08

Не знаю, у меня ничего не тормозит.

Из-за одной такой программы не затормозит. А как игроки на сервере понаставят кучу таких программ, так и узнаешь о лагах.
Не знаю, до какой степени OpenComputers бережно относится к ресурсам сервера. Если очень бережно, то TPS может и не снизиться, но программы OpenComputers начнут тормозить.

Хотя, постойте ка, я брал инфу о redstone api вот отсюда http://minecraft-ru....ft/Redstone_API А про "redstone_changed" впервые слышу, где ты её взял?

component:signals

#5 Оффлайн   Quant

Quant
  • Пользователи
  • Сообщений: 537
  • Уровень сигнала: 0,01%
  • В игре: 0 час. 4 мин.
  • Городinterface IQuant

Награды

     

Отправлено 07 Май 2016 - 21:50

Из-за одной такой программы не затормозит. А как игроки на сервере понаставят кучу таких программ, так и узнаешь о лагах.
Не знаю, до какой степени OpenComputers бережно относится к ресурсам сервера. Если очень бережно, то TPS может и не снизиться, но программы OpenComputers начнут тормозить.
component:signals

И event сюда же.Это делается так же,но вместо touch redstone_changed



#6 Оффлайн   qwertyMAN

qwertyMAN
  • Автор темы
  • Пользователи
  • Сообщений: 1 427
  • Уровень сигнала: 0,14%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 08 Май 2016 - 07:16

Из-за одной такой программы не затормозит. А как игроки на сервере понаставят кучу таких программ, так и узнаешь о лагах.
Не знаю, до какой степени OpenComputers бережно относится к ресурсам сервера. Если очень бережно, то TPS может и не снизиться, но программы OpenComputers начнут тормозить.
component:signals

Спасибо что напомнил о event'ах, теперь прога работает полностью на них. Уже обновил, надеюсь прога не наделает проблем на сервере, а то у меня и так FPS всегда слабый.



#7 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 878
  • Уровень сигнала: 6,16%
  • В игре: 46 час. 1 мин.

Награды

                          

Отправлено 08 Май 2016 - 13:17

Уже обновил, надеюсь прога не наделает проблем на сервере.

Да, так гораздо лучше. Теперь придерусь к менее значимым моментам.
Весь код не осилил, т. к. от методов GPU у меня в глазах рябит, но в двух местах глаз зацепился:
	while true do
		os.sleep(timeout)
		if exit then
			break
		end
	end
Меняй шаблон, как только он перестал решать возложенные на него задачи.
«while true do end» удобен, когда цикл действительно бесконечен, или условие выхода записывается слишком сложно.
Но если условие простое, то «while not exit do end» или «repeat until exit» – будут лучшим решением.

Т.к. программа поддерживает динамическое подключение/отключение контроллеров, то следует обрабатывать отсутствие доступных контроллеров, как при запуске программы, так и в процессе ее работы.
Кроме того, имеются странности в согласовании переменных redstone и my_address (комментарии мои):
-- назначение основного контроллера  рабочим (вывалится ошибка при отсутствии контроллеров)
local redstone = component.redstone
-- порядковый номер рабочего контроллера = 1 (возможно рассогласование с переменной redstone, но сейчас это неопасно)
local my_address = 1
	...
	-- зато после включения обработчиков событий рассогласование может привести к глюкам
	-- незаполненная таблица адресов тоже породит глюки в обработчиках
	event.listen("redstone_changed", changed)
	event.listen("component_added", added, nil,"redstone")
	event.listen("component_removed", removed, nil,"redstone")
	...
	-- заполнение таблицы адресов всех найденных контроллеров
	for add in component.list("redstone") do
		table.insert(address,add)
	end
	-- получение прокси рабочего контроллера по его номеру (и снова ошибка при отсутствии контроллеров)
	-- теперь redstone и my_address согласованы, и глюков быть не должно
	redstone = component.proxy(address[my_address])
	-- получение номера рабочего контроллера по его адресу
	-- еще одно согласование, но в другом направлении. Зачем?
	for i=1, #address do
		if address[i] == redstone.address then
			my_address = i
			break
		end
	end


#8 Оффлайн   FelixBanan

FelixBanan
  • Пользователи
  • Сообщений: 48
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

           

Отправлено 10 Февраль 2017 - 22:34

Если запустить эту программу более чем на 5 компьютерах начинает очень сильно лагать. Если это запустят на не очень хорошем сервере то будет все очень плохо :С



#9 Оффлайн   qwertyMAN

qwertyMAN
  • Автор темы
  • Пользователи
  • Сообщений: 1 427
  • Уровень сигнала: 0,14%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 10 Февраль 2017 - 23:09

Если запустить эту программу более чем на 5 компьютерах начинает очень сильно лагать. Если это запустят на не очень хорошем сервере то будет все очень плохо :С

Странно. В принципе одна такая прога может обслуживать огромное количество входов и выходов, по этому одной на человека хватит.

А вот насчёт теста запуска нескольких сразу надо будет проверить. Спасибо за отзыв.

 

Как вариант попробуй в начале программы в строке local timeout = 1 сменить 1 на 10 и выше. Более большая задержка может и сможет помочь.

Хотя есть шанс что проблемы происходят с твоей клиентской части, а на сервере всё норм. Но это не точно. Программа не тестировалась в мультиплеере.


Сообщение отредактировал qwertyMAN: 10 Февраль 2017 - 23:13

  • FelixBanan это нравится

#10 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 748
  • Уровень сигнала: 4,88%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 11 Февраль 2017 - 02:16

Вообще то можно ловить ошибки и при выходе чистить слушателей.





Темы с аналогичным тегами майнкрафт, программирование, lua, луа, редстоун, схема, управление, крутость, электричество, развлечение

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных