Appo
-
Публикации
72 -
Зарегистрирован
-
Посещение
-
Победитель дней
8
Сообщения, опубликованные пользователем Appo
-
-
чекни, может поможет
бочка - https://www.geogebra.org/3d/q2u2qt98
конус - https://www.geogebra.org/3d/ry8begsr
утолщение конуса (наращение высоты и радиуса) вывел через подобие треугольников
Пояснения:каждый график это отношение:
(объем материала)/(объем вместительности бочки)
и нахождение этого отношения через x, y (R, h соответственно) -

Download:
pastebin get j9kBudRV paint
Перед первым запуском сломайте проектор если он у Вас есть
Условия:
- Наличие Sensor
из мода OpenPeripheral и его подключение через адаптер .png?version=107b8a523f140cb8c7fe8374139cfb4f)
Использование:
- Наличие меча в руке ( или любого предмета способного блокировать на ПКМ )
- Поставить блок ПКМ + Shift
- Удалить блок ПКМ
-- TODO модеры переделайте если не удобно обьяснил, если прочли стерите)
Значение кнопок снизу вверх ⯅
- Смена цвета
- Установка блока перед глазами
- Режим кисти "линия"
- Увеличить голограмму
- Уменьшить голограмму
- Стереть всё
- Скрытие кнопок (эта кнопка тоже скроется, но нажать всё равно будет можно)
От себя:Вдохновился, когда испробовал Tilt Brush (Рисование в пространстве) в VR шлеме на технофоруме своего города)
Вообщем-то я этим не ограничивался и начал делать библиотеку для использования в других идеях, например:
http://computercraft.ru/user/20667-appo/ можно улучшить эту программу, подключив не дописанную библиотеку, и после того как нарисуешь клеточки можно запустить алгоритм убирав меч из рук.
Так же можно будет делать тиры, кнопки, печатать модельки, использовать палитру до 27 цветов, строить роботами нарисованное, делать анимации, игры, и всё остальное на что способна ваша больная фантазия))0)
Скрин наработок

Библиотека до приемлемого использования готова примерно на 30%
После осознания что OpenComputers теряет популярность, и не перспективный, почти спало желание допиливать библиотеку
Т.е. всего несколько топовых проектов юзают OpenComputers
Предлагаю другим топовым проектамнавязатьпредложить его
Можно собрать людей на этих сервере, показать чо этот мод может, и направить их на местные форумы бунтовать в предложение модов))
По поводу этой программы.. Авторское право и всё такое я за собой не хочу закреплять, поэтому любой кто хочет может улучшать и дорабатывать эту идею как только может)
"Развитию нет предела"
Новых знаний Вам, удачи)-
9
-
-

download
pastebin get gZLj7Y7v holo
Использование:
holo <правило>
*** Правила, при которых клетки "рождаются" и "умирают"
Если просто ввести holo, тогда запустится правило по умолчанию, тоже самое что и:
holo 5 6 7 8
5 - это число при котором клетка "рождается"
6,7,8 - это числа при котором клетка остаётся "жить" (не умирает)
Статья с правилами где были обнаружены планеры (смещающиеся, повторяющееся фигура):
http://www.complex-systems.com/pdf/16-4-7.pdf
Так правило программы выглядит в статье 6,7,8/5
Краткий принцип при правиле 6,7,8/5:
*** Для каждой живой клетки, вокруг проверяются ячейки, в 3-х мерном пространстве их 26 шт. и если вокруг клетки 6 или 7 или 8 клеток, она остается жить. Для каждой "пустой" клетки вокруг "живых" проверяется 26 ячеек, и если есть ровно 5 "живых", то эта "пустая" клетка становится "живой"
Game of life в 2D
Планер
-
9
-
-
Какая у тебя версия OpenOS?
OpenOS 1.6.7-
1
-
-
- Не работает вставка из буфера обмена в консоль (колёсиком мыши)
- Не запускает команды

Прочитав пост полностью, оказалось что нужно было инициализатор OS запустить командой /WinOS/init.lua , вбив ручками и запустив, появилось окно что и на скрине ниже, только было всё чёрное, ну я немного потыкал по клаве и нажав enter, отобразился красный текст (часики в углу работают норм)
-
еще есть игрулька: TIS-100 , может кому понравится
-
Кто нибудь тестить будет? (построить будку из которой управлять роботом)
Или всем продолжать трепаться не основываясь ни на чём? -
Кто-нибудь тестил или собирается тестить?
Думаю без данных, не опираясь не на что, более сложно прийти к списку благоприятных начальных условий, списку целей игры, списку знаний без которых нельзя в это играть, что и где нужно упрощать/запрещать и т.д.
Предлагаю всё же кому-то протестить и отписаться о полученных данных тут (даже если они не удачные), иначе, как по мне, дальнейшее обсуждение бессмысленно. -
-
Если мне нужно будет перебрать массив, как мне вытащить координаты из номера ячейки массива?
я придумал иной способ
local function r(xx,yy,zz) return zz+yy*256+xx*65536 end -- Получаем 16-ричный код из координат для использования одномерного массива с целью экономии памяти local function toXYZ(id) -- Получаем координаты из 16-го кода local f, g = ("%X"):format(id), "0x" f = string.rep("0",6-#f)..f return tonumber(g..f:sub(1,2)), tonumber(g..f:sub(3,4)), tonumber(g..f:sub(5,6)) end local h = {} h[r(1,2,3)] = "XXX" -- координаты x = 1, y = 2, z = 3 print( h[66051] ) -- Выведет: "XXX" print( toXYZ(66051) ) -- Выведет 1,2,3Но он не совсем подходит, так как большой размер, а именно = 256*256*256 . в следствии чего, ячейки массива занимают много места в файле.
Как сократить размер до 80x64x80 ? -
Один человек попросил написать программу, предназначенную для отображения моделей в формате .3dm, используемом программой print3d (и подобных ей).
Думаю программа достойна публикации
pastebin get pTAFxX5K holo
Запуск:
holo <Файл модели> <Номер блока>
скрины

Минусы:
- максимум 3 цвета (если их больше, в месте не достающего цвета ставится случайный, уже использованный цвет)
- модель для 3d принтера должна содержать цвета. а не только одну текстуру
Строка содержащая цвет:
{ 0,0,0,16,16,16,texture = "iron_block", tint = 0x00ee00 },
Строка не содержащая цвет
{ 0,0,0,16,16,16,texture = "iron_block"},
Но я всё-таки думаю что этот сайт получше будет использовать http://f0x.me/OpenComputers-3D-Designer/ (если не ошибаюсь, автор Крутой)-
4
-
-
local h = {} function add(x,y,z,f) h[x] = h[x] or {} h[x][y] = h[x][y] or {} h[x][y][z] = f end add(1,2,3,"xxx") print( h[1][2][3] ) --> xxxЕсть ли способ делать то же самое, но по короче?
И как можно написать эту функцию для добавления значений в разные массивы? (с использованием ооп и без)
-
@@eu_tomat , думаю улучшить всё-таки можно, например ни кто не отменял апгрейд чата из conputronics
Претензий у меня нету, я лишь хотел по подробнее узнать о ваших предложениях и обсудить их

Вы и так много полезного сказали, я вам благодарен)
P.s.
Ах да.. и интерес угасает, из за не надобности этого робота ( как оказалось на сервере, где я играю, костыльная защита от грифа роботом из за чего робот не может получать данные об инвентарях) T_T
-
испортилась сама схема.
Что именно испортилось? Всё осталось прежним, я лишь добавил возможность сканирования инвентаря робота, вдруг игрок в него захотел положить компоненты.
1) Отображение на мониторе списка недостающих компонентов поможет игроку быстро принять верное решение.
Ставь монитор, кто тебе мешает? Я разве говорил "не ставьте монитор" ? Я сделал и так и так, для удобства, позже попробую сделать отображение на экране через использование биоса
2) Перемещение в первые слоты инвентаря всего лишнего хлама, который игрок закинул в робота по ошибке, избавит его от необходимости пользоваться скроллингом.
Тогда придётся сканировать бд, а потом каждый слот отсеивать на основе данных из бд, куча времени, но реализуемо, хотя я не вижу в этом смысла, если игрок может и одно улучшение инвентаря засунуть, тогда скролить не надо будет.
Если вы считаете что это действительно необходимо, пожалуйста упомните об этом еще раз.
3) Обработка события inventory_changed позволит оперативно отслеживать, что игрок положил, а что забрал из инвентаря робота, сделав ненужными повторные сканирования инвентаря.
Как это реализовать? Разве ивенты не будут путатся в очереди? А если я в определенный момент не успею проверить ивент и он проигнорится?
При дополнении новыми возможностями не изменяя прежний принцип работы, типо это регресс? окда
И, да, ты же в курсе, что у робота максимум 64 слота инвентаря может быть (= 4 апгрейда)?
Спасибо) Не знал..
-
Вновь обновил
(ссылка в первом сообщении темы)
Теперь сундук над роботом не обязателен, можно во внутренние слоты робота пихать.
(При перемещении предметов шифтом в робота, сначала предмет попадёт в его лапки, только потом в инвентарь)
Вот такой комп можно собрать, используя EEPROM ( Без запуска OpenOS и без монитора )
Кому интересно как я изменял программу по мере критики, то вот старая версия, а вот еще старее старой -
-
Обслуживает только один реактор ....
Он не должен их обслуживать, лишь заполняет схему из бд.. Например если реакторов много, а теплообменники не стакаются..
По поводу замечаний и критики, огромное спасибо) Не знал как это по другому делается, делал как умел)
Обязательно всё учту и переделаю)
-
А зачем всё через pcall?
Эта прога универсальная. Как на биосе, так и на OpenOS работает
-
1
-
-

- Робот выставляет в реактор записанную Вами схему из базы данных
используя компоненты из сундука над ним или из внутреннего инвентаря
Установка:
pastebin get NAuav7sx q
Минимальная конфигурация робота:Версия с монитором (если Вы мажор)

- Системный блок 2 ур.
- Апгрейд "Контроллер инвентаря"
- Апгрейд "Инвентарь"
- Клавиатура
- Монитор 1 ур.
- Апгрейд "Контейнер" 3 ур.
- Дисковод
- Процессор с видеокартой 1 ур.
- Память 1.5 ур.
- Интернет карта
- EEPROM (Lua BIOS)
- Жёсткий диск 1 ур.
После создания робота делаем следующее:
- Вставляем дискету OpenOS
- Запускаем робота
- Пишем install
- Если будет выбор, то выбираем "OpenOS" и далее соглашаемся, вводя: "Y"
- Перезагружаем робота
- Скачиваем программу. Пишем pastebin get NAuav7sx q
- Запускаем программу. Пишем: q
Версия через биос (без монитора)
- Системный блок 2 ур.
- Апгрейд "Контроллер инвентаря"
- Апгрейд "Инвентарь"
- Апгрейд "Контейнер" 3 ур.
- Процессор 1 ур.
- Память 1 ур.
После создания робота делаем следующее:
- Открываем свой компьютер
- При наличии интернет карты, пишем: pastebin get NAuav7sx q
- Теперь перепрашиваем EEPROM (Желательно поставить пустой). Пишем flash -q q
- Вытаскиваем только что записанный EEPROM из компьютера
- Скрещиваем в окне крафта, робота и EEPROM

Так как у робота нету монитора, отсчёт об ошибках сделан на звуках.. Если он пищит, значит чего-то не хватает.
Повторяю еще раз. Это минимальная конфигурация. Вы можете добавить батарею или мощнее процессор
Процесс использования:- Либо ставим над роботом
любой сундук
с компонентами для схемы
(Рекомендую сейф из Thermal Expansion, т.к. если его сломать, предметы в нём останутся)
Либо будем использовать инвентарь робота как хранилище компонентов схемы
(В таком случае, на этапе крафта робота, рекомендую поставить больше улучшений инвентаря)Версия с использованием EEPROM

- Крафтим базу данных 3 ур.
- Держа её в руке, нажмите ПКМ, что бы открыть её и нарисовать в ней схему предметами.

Начинать выставлять схему, следует с верхнего левого угла (Если у вас маленький реактор)- Затем вставить базу данных
в робота
( Обязательно в слот улучшения, а не в лапки )

- И запускаем
-
6
- Робот выставляет в реактор записанную Вами схему из базы данных
-
Оставляю в качестве примера.
Вы предлагаете мне сжать код? Если так, то для какой цели? Размер программы 1698 байт.
У меня не стояло такой задачи, и я упёрся в функционал..
Ну а вашу тему я посмотрел в первую очередь перед созданием этой программы

-
Делав свой интерпретатор для EEPROM заметил что API computer отличается от его прокси.
То есть computer уже поключен. поэтому его прокси не обязательно получать, но если получить, тогда они отличаются.
Так вот, вопрос. можно ли из полученных прокси собрать например свой computer.pullSignal() ? или можно ли это как то использовать?
Скрин:
-
Функция os.sleep поймает один сигнал и завершится, а если поймает нужное сообщение, то упадёт замертво.
функция os.sleep() нужна для экстренного остонова в обработчике ошибок (который активируется после запуска программы).
Она срабатывает только после получания сообщения exit на порт.
Например вы создали программу "123" и засунули туда код:
while true do computer.beep(1000,0.2) os.sleep(1) end
и если вы запускаете код командой "get run 123" и попадаете в обработчик ошибок, где можно нажать 2 кнопки "q" и "w". Если вы нажмёте "w", тогда например дрон, в данном случае, выйдет из бесконечного цикла.
Максимальный размер пакета можно получить через maxPacketSize()
По поводу maxPacketSize(), в интерпретаторе реализована отправка по частям, например изменив переменную limit в интерпретаторе, например на 3, тогда Ваша программа будете передаваться по 3 символа, и собираться в кучку уже в EEPROM того устройства, которому вы послали сигнал.
Нужен протокол рукопожатий, чтобы можно было запускать несколько сетей. Защита от взлома тут самое важное. Связанная карта - не вариант, ест много энергии.
По поводу безопасности я согласен, но "рукопожатий" не достаточно, можно взять устройство со всеми открытыми портами и слушающими эти порты, узнав порт устройства можно просто зафлудить и EEPROM просто не будет успевать сортировать эту дрисню с нормальными сигналами.
Для безопасности предлагаю вам посылать программы с бесконечным циклом. Например "while true do drone.move(0,1,0) end".
На мой взгляд максимум безопасности я сделал, замазывая порты звёздочками

Неплохо бы иметь набор программ из коробки для работы с дронороботами.
Можно посылать на него любые программы которые когда то уже были написаны для EEPROM. например для дронов, но для роботов не все.
Вы можете подключится к роботу и ввести команду " components robot ", для EEPROM, там будет совершенно другое API
Так же, удобной возможностью является просмотр доступных компонентов устройств и их методов ( components )
-

Позволяет передавать выполняемый код, с одного устройства на другое.
Например можно дрону передать команду drone.move(0,1,0) и он подлетит вверх, но дроном этот интерпретатор не ограничивается
Установка:
pastebin get EQkw9cL7 dcp
Тем, кому интересен биос:
Необходимые платы для запуска:
- Беспроводная или связанная плата
- Интернет плата
Использование:
После скачивания программы, запустим ее:dcp
Нас попросит ввести dcp new для записи EEPROM:
dcp new
Если все платы в наличии, тогда нас попросит ввести порт (на Ваш выбор)
После, берем этот EEPROM и засовываем его в устройство. Можно совместить в верстаке этот EEPROM с устройством (дроном или микроконтроллером). И запускаем устройство.
Возвращаемся к компьютеру где установлена программа и запускаем консоль:dcp
Вводим порт, на который записывали EEPROM.
И если Вы всё сделали правильно, то в строке с онлайном будет цифра 1
Вы восхитительны)) Теперь можете передавать команды на устройства)
Например:computer.beep(1000,1)
Доступные команды в интерпретаторе:help components - Список компонентов components [<device>] - Список методов компонента online - Список онлайн устройств start - Запуск всех устройств = date - Вернуть дату записи EEPROM
Доступные команды при запуске программы:
dcp help dcp <port> - Запуск консоли dcp new <port> - Запись EEPROM dcp run <name programm> <port> - Запуск программы dcp pastebin <kode pastebin> <port> - Запуск программы c pastebin
Некоторые возможности использования:
- все компоненты уже подключены, т.е. не обязательно получать прокси компонентов
- в интерпретаторе работает знак "=" который пишется перед командой, что бы возвратить какое-то значение (написано жёлтым текстом)
- можно запускать программы прямо с компьютера (dcp run) где установлена программа или сразу с pastebin (dcp pastebin)
- добавил функцию os.sleep(). Если вы будете использовать ее как основной способ задержки, тогда можно будет экстренно завершать программу в обработчике ошибок (который активируется после запуска программы dcp run)
- получение ошибок с запущенных программ, для их удобной отладки (если что, ошибка приходит на порт+1 , т.е. если вы ввели порт 25, то ошибка вернётся на порт 26)
- создание стаи из дронов / роботов / планшетов ;D
- управление системным блоком (которому даже моник не нужен), что то типо микроконтроллера, только можно будет работать удалённо с периферией: адаптерами, голограммами и т.д.

-
9
-
-
Так реализован стандартный терминал openos.
Дело в том, что курсоры мигают при каждом уловленном событии. Можешь потестить постоянно посылая modem_message на какой-нибудь комп
Курсор начнет мигать, потому что комп уловил событие
Код выглядит примерно так:
while true do -- ... -- e = event.pull() if e then blinkCursor() end endПопробую сделать так, чтобы терминал мигал курсором только будучи в фокусе ( с красной рамкой )
Раз курсор мигает относительно уловленных событий, то нельзя ли сделать мигание относительно времени работы компьютера?
computer.uptime()

Sandbox игры в которых можно программировать
в Флудилка
Опубликовано: · Изменено пользователем eu_tomat
Еще 4 игры которые подталкивают вас программировать:
- From the depths: Lua
- Space Engineers: C#
- Kerbal Space Program: C#, C++, Java, Lua, Python, KerboScript
- Dual Universe: Lua
Подробнее:> From the depths [Lua]
From The Depths - мультиплеерная песочница, где игроки могут строить свои
собственные военные корабли, оружие для них, и воевать с другими игроками!
> Space Engineers [C#]
Space Engineers (Космические инженеры) - это песочница о конструировании,
создании и обслуживании космических объектов.
Вы можете создавать пилотировать космические корабли, строить
огромные космические станции, добывать ресурсы.
> Kerbal Space Program [C#, C++, Java, Lua, Python, KerboScript]
Kerbal Space Program - Игра в которой игроки создают и управляют своей
собственной космической программой.
Постройте космические корабли, управляйте ими и постарайтесь помочь Кербалам
выполнить их конечную миссию по покорению космоса.
Существует 2 мода на программирование:
- kOS (свой язык KerboScript) Скачать
Быстрый старт (Видео)
- kRPC (C#, C++, Java, Lua, Python) Скачать
> Dual Universe [Lua]
Dual Universe - Научно-фантастическая игра песочница на тему
космической колонизации и освоения других планет.
Dual Universe основана на технологии CSSC, при помощи которой можно
поддерживать одну вселенную с сотнями тысяч игроков без загрузочных экранов.
Игра будет использовать воксельный движок, позволяющий модифицировать все игровое пространство.
Финансирование игры частично поступает из Kickstarter.
Игра находится в закрытой альфе и активно развивается.
Необычная система программирования на Lua показана в офф. ролике .
Написанные программы выполняются на компьютере игроков, не нагружая сервер.
P.S.
> Буду благодарен если вы напишете о других играх (может с модами) в которых есть возможность программировать
кря