1Ridav
-
Публикации
218 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем 1Ridav
-
-
На нашем форуме уже не мало программ, есть программы для защиты дома, программы для контроля. карьеры на черепахах и роботах. Однако у всех одна и та же проблема - требуется быть в игре для того, чтобы контролировать их работу или запускать что либо. Запускать игру дело не быстрое, ведь нужен компьютер, а он не у всех под рукой. Другое дело - мобильный телефон или планшет. Почти всегда рядом, компактный, легко носить. Это уже так вплелось в нашу жизнь, что мы и не замечаем ничего сверх естественного в этом.
Возвращаясь к вопросу об управлении своими компьютерными системами не заходя в игру. Я решил сделать андроид приложение для этих целей. Все очень просто - запустил приложение - получил данные от своих компьютеров и дал им новые задания не заходя в игру. Так это должно быть в идеале.
Для соединения требуется лишь запустить программу-клиент на OC компьютере и запустить андроид приложение. Для соединения андроида и игрового компьютера используется некий "ключ", который требуется ввести в оба клиента.
Для примера используем ключ "abc789"
Соединяться будем с нашим собственным сервером моста(Выложу его потом в общий доступ)
После нажатия на Готово или кнопку Connect ниже поля ввода ключа - произойдет попытка соединиться на указанный сервер с заданным ключом. Если соединение успешно - нас перебросит в окно консоли, между окнами можно переключаться путем свайпов или перелистывания справа налево или наоборот.
Окно консоли показывает то, что вы принимаете из сети, чуть ниже поле ввода для ввода текста
Перелистываем обратно в окно авторизации и видим, что индикатор показывает то, что мы подсоединены к мосту(подробнее об этом можно узнать изучая статью по клиентской части ОС. Ссылка выше.)
Попробуем для теста написать что либо и отправить

ОС клиент не подключен к сети моста, поэтому мост уведомляет нас о том, что пересылать отправленное нами сообщение некому.Подключаем наш игровой компьютер с интернет платой к мосту ()
Android приложение получило уведомление о том, что ОС клиент подключен и можно обмениваться данными в виде строк(string)
Отправим несколько тестовых строк, в том числе и команды среди них. Затем отключим для демонстрации программу ОС и запустим её снова. Связь восстанавливается, уведомления об этом получаются корректно
Вот так выглядит тестовая программка, которая обрабатывает команды set N.
ok означает, что команда set N распознана успешно, true - это успешно ли было отослано слово "pong"(true означает, что до моста дошло успешно).
Обновление 1:
Добавлена кнопка Disconnect&Close - отключает соединение и закрывает фоновый сервис.
Добавлен визуальный индикатор состояния подключения(Шкала прогресса ProgressBar и текст), который показывает как на данный момент работает система.
Добавлено автоматическое переключение в окно консоли при подключении
Исправлен баг в поле ввода ключа. Кнопка Done выглядела не корректно.
Обновление 2:
Добавлена автоматическая прокрутка в логах консоли
Изменен алгоритм обработки сообщений и системных кодов, так что старые версии приложения и ОС части не работают с обновленным мостом, обновляйте библиотеку и приложение.
Немного увеличено потребление оперативной памяти в угоду отмены некоторых ограничений.
Уменьшен сетевой DATA трафик в режиме ожидания на 28,67%
Обновление 3:
Добавлена возможность получать Toast и Push нотификации по команде с ОС
Исправлена синтаксическая ошибка, которая приводила к невозможности установить приложение на устройство.
-
11
-
-
Нам удалось найти и договориться с хостинг компаниями о предоставлении нам пространства для сайта oxnull.net и VDS сервера foxcloud.net за их баннеры на нашем сайте. Проект существует с 2014 года, и мы все вместе добились определенных результатов. Разработали и продолжаем разрабатывать что-то новое и интересное.
Однако для поддержки проекта требуются денежные средства на:- оплату домена computercraft.ru
- продвижение нашего проекта на рейтинговых сайтах Minecraft.
- покупку исправлений для модов, плагинов и др. платных услуг
- приобретение лицензий McMyAdmin для администрирования серверов и др. ПО.
Откуда их взять? Платных услуг у нас нет ни в каком виде, мы не заставляем ни за что платить. Все, что можно - сделано доступным для игроков. Реклама на сайте - почти нулевая прибыль из-за небольшого объема посетителей.Если вам понравился наш проект, вы можете исключительно на добровольной основе помочь нам.
WebMoney
WMR - кошелёк R508463744808WMZ - кошелёк Z349748353724
WME - кошелёк E169563136502-
1
-
я в очередь =D
Вписал в базу brey@computercraft.ru
Первичный пароль скинул в личку
-
Так не считаю, но так как счётчик сообщений достиг аж 320 сообщений (кажется, я флудер), то попробовать ящичек заветный получить можно. Хотя у меня уже тонна их, но ящики, как известно, лишними не бывают.
я в очередь.
fingercomp@computercraft.ru
neo@computercraft.ru
созданы, первичные пароли скинул в личку. Не забудьте сменить.
-
Это на всегда, или пока на форуме?
Навсегда
-
Встаю в очередь!
duiiies@computercraft.ru зарегистрирован, первичный пароль скинул в личку
-
Желающим можно зарегистрировать почтовый ящик NICKNAME@computercraft.ru
Заявку на почту оставлять в топике. Почта будет выдана при выполнении любого хоть какого-то одного из перечисленных условий:- OR минимум 100 сообщ. на форуме
- OR 2 и более медальки Байта
- OR голосов за проект > 75
- OR репутация > 100 ед.
- OR материальная поддержка проекта в виде пожертвования средств (от 50 рубл.).
- OR наличие любой из перечисленных наград: "Победа в ивенте, конкурсе", Помощник администрации, Медаль "На крыльях славы", Знак "Техническая поддержка", Знак "Платиновый геймпад", Осквернитель багов I ст., "Золотая звезда", ТОП-1 в голосовании за месяц, "Орден Верности"
Если считаете, что достаточно активны на проекте, то оставьте в этой теме свою заявку.
На почту можно зайти через http://mail.computercraft.ru/
-
5
-
Надо будет в свободное время заценить сие чудо
-
Для этого я как раз и занимаюсь мостом и android приложением для полноценного управления компами с телефона в двухстороннем порядке
-
4
-
-
Внимательо изучил исходники. Написано просто и понятно. Из минусов надо отметить невозможность изменять os.pullEvent иначе эта библиотека меню попросту перестанет работать. Так же к сожалению не увидел возможность создавать несколко меню и использовать их в зависимости от текущего состояния программы пользователя
А так задумка очень даже полезная
-
Обновлена библиотека, добавлены функции
GUI.NO_EXIT()
GUI.EXIT()
А так же деструктор объектов
-
1
-
-
Как-то не прокатывает... Если использовать удочерение (например GUI.MainPanel:addCHILD(p1)) (без {}) вылетает ошибка GUI:105 (или 501...).
Кроме того, попробовал создать 4 кнопки вообще без функционала т.е. голые квадраты
b=GUI.NewButton()
и потом вручную прописал им х, у, высоту, ширину и текст. И та же хрень: верхняя жмется нормально, а остальные кое-как. Т.е. жму на 4 (нижняя) и получаю эффект нажатия 1, 2, 3 и только потом 4. Не понимаю пока...
Указанный пастбин устарел уже больше месяца назад. Используй эту версию: ZTM3Njm6
-
1
-
-
Доброго времени. Кейпад глючит: при лкм по любой отличной от 1 кнопке начинается странная беготня вызывающая странные ассоциации с поиском пути. Т.е. тыкаю на 16 и получаю на выходе последовательно нажатые 2, 6, 7,8,16 (к примеру. при следующем нажатии путь может пройти по другому). Вопрос: так и должно быть? =D

os.loadAPI("GUI") b={} f={} local p1 = GUI.NewPanel(21,4) for i=1,16 do b[i]=GUI.NewButton(nil,1,1,3,3,tostring(i),f[i]) f[i]=function(s) s=rednet.send(хххх,i) end p1:addCHILD({b[i]}) i=i+1 end for i=5,8 do b[i].x=6 i=i+1 end for i=9,12 do b[i].x=11 i=i+1 end for i=13,16 do b[i].x=16 i=i+1 end for i=2,14,4 do b[i].y=5 end for i=3,15,4 do b[i].y=9 end for i=4,16,4 do b[i].y=13 end GUI.MainPanel:addCHILD({p1}) GUI.MainPanel:draw()pastebin.com/ZyC0KXtxp1:addCHILD({b})
GUI.MainPanel:addCHILD({p1})
используй без кавычек {}
. То есть GUI.MainPanel:addCHILD(p1)
p1:addCHILD(b)
Так же функционал надежнее задать через постустановку.
b.func = function(s)
бла бла бла
end
Баг в задании функционала
-
На спавн эти голограммы надо поставить. Заходит игрок и видит аллею произведений искусства! Очень даже поднимет настроение и возможно подтолкнет учиться делать такие штуки
-
4
-
-
Мне тоже никто за свои программки и уроки ничего не дает... К сожалению...Всё хватит с меня писанины( а то труд хороший а оплаты не какой(
-
-
Добавил ссылку на Github, Все обновления будут происходить там
-
Мой вариант решения:Можно попробовать
s.target.setBackgroundColor( s.color_used ) for i=1,#temp do X = term.getCursorPos() if X > px + s.x + pos - 1 then s.target.setBackgroundColor( s.color_bg ) s.target.write(temp:sub(i)) break end s.target.write(temp:sub(i,i)) endвместоs.target.write(temp)
if cx > s.dynX + pos then s.target.setBackgroundColor(s.color_bg) s.target.write(temp) else s.target.write(string.sub(temp, 1, math.floor(s.dynX + pos - cx + 1) ) ) s.target.setBackgroundColor(s.color_bg) s.target.write(string.sub(temp, math.floor(s.dynX + pos - cx + 2), #temp)) endДля справки:
Изменено апи
_dynRefresh = function(s) px, py = 1, 1 if s._PARENT then px, py = s._PARENT.dynX, s._PARENT.dynY end s.dynX = s.x + px - 1 s.dynY = s.y + py - 1 end, -
Дополнил документацию
-
Необходимо сделать возможность добавления нескольких жильцов в доме.
-
Ну в принципе так и было задумано.Надо бы деструктор придумать. Кнопки продолжают работать даже после выхода из программы.
-
Разные концепции реализации.В чем преимущества перед Graffiti?
Технология построения интерфейса отличается, хотя и имеет одни и те же цели.
Задачей была гибкость и легкость разработки программ с использованием этой библиотеки. Разработчику достаточно лишь прилеиить куда нибудь объект и установить ему функционал. При использовании объекта он выполняет поставленную задачу сам , а как это все работает не должно тревожить разработчика
Про различия скоростей работы ничего сказать не могу, тк не замерял
Для сравнения создай на Graffiti две кнопки и прогрессбар. Одна кнопка пусть заполняет прогрессбар, а другая - очищает его.
На моей GUI библиотеке это будет выглядеть так:
os.loadAPI("GUI") local pb = GUI.NewProgressBar(nil, 10, 10, 14, 1) -- Создаем шкалу прогресса local f1 = function(s) -- Задаем функционал первой кнопки pb:stepIt() -- Заполняем шкалу на шаг end local f2 = function(s) -- задаем функционал второй кнопки pb:clear() -- Очищаем шкалу end local buttonFill = GUI.NewButton(nil, 1, 1, 5, 1, "fill ", f1) local buttonClear = GUI.NewButton(nil, 1, 3, 5, 1, "clear", f2) GUI.MainPanel:addCHILD({buttonFill, buttonClear, pb}) -- Добавляем на экран GUI.MainPanel:draw() -- Рисуем все объекты на экранеК тому же мой вариант GUI может работать с бесконечным количеством мониторов, любой объект может быть на любом мониторе, можно менять положение прямо во время работы программы, динамически
-
Резерв
-
Резерв
-
2
-








Android & OpenComputers
в За пределами Minecraft
Опубликовано:
Потом выложу кроссплатформенный клиент в jar формате. Можно будет с компьютера соединяться. Он в принципе есть, на нем тестировал и отрабатывал соединения с мостом перед тем, как перевести на андроид