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


Фотография

Управление роботом в фоне

Робот

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

#1 Оффлайн   BrightYC

BrightYC
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 04 Август 2018 - 07:41

Всем привет.Решил наконец-то написать свою первую программу.

На байт я не претендую,но всё же.

Установка:

UPD: Очень прошу,не гриферить очень часто,иначе из-за вас роботов везде запретят

Создаём файл со скрытым расширением(Перед названием файла прописываем точку) и запихиваем ее в /bin(Так надёжнее)

Редактируем файл .shrc и вписываем туда название вашего файла(К примеру .robot) 

Всё!Вы великолепны-программа сама запускается и никогда не закроется.Если робот начал исполнять сразу 2 команды-перезагрузите робота командой R.А открыть Управление можно открыть клавишей T,закрытие программы-V.Всё остальное найдете уже в программе.

Видео:

https://youtu.be/PKBDCgEQeH8

 

UPD:Забыл сказать,если в программе которая работает как основная нету os.sleep или какого-нибудь таймера простоя - программа будет работать только после завершения.

UsICF38.png


Сообщение отредактировал BrightYC: 07 Август 2018 - 12:37


#2 Оффлайн   Asior

Asior
  • Пользователи
  • Сообщений: 184
  • Уровень сигнала: 60,66%
  • В игре: 520 час. 47 мин.

Награды

                          

Отправлено 04 Август 2018 - 09:14

Офигенно, поздравляю с первой программой. Теперь парочку советов и идей. Фоновая программа это конечно круто, но роботом то нам хочется управлять секретно. Поэтому добавь проверку на то, есть ли модем на роботе, тогда это будет своего рода скрытый вирус. Дальше, добавь передачу данных инвентаря, чтобы видеть, чего там сперли. Также добавь опцию смены инструмента с выбором слота для его замены



#3 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 04 Август 2018 - 09:21

Офигенно, поздравляю с первой программой. Теперь парочку советов и идей. Фоновая программа это конечно круто, но роботом то нам хочется управлять секретно. Поэтому добавь проверку на то, есть ли модем на роботе, тогда это будет своего рода скрытый вирус. Дальше, добавь передачу данных инвентаря, чтобы видеть, чего там сперли. Также добавь опцию смены инструмента с выбором слота для его замены

Да,спасибо.Вообще я хотел сделать копипасту управления робота Алекса,но после вчерашнего бага с картой у меня начала происходить всякая ерунда,я даже гуишку начал делать тогда.Ещё хотел сделать эмуляцию модема через интернет карту или по возможности использовать туннельную карту.Чтобы наверняка им управлять.Либо если нету модема то начать двигаться прямо вперед если нету игрока(useradd'ом проверять) и потом уже добавить модем и вернуть робота на место.На счёт смены инструментов-я совсем забыл что так можно,ибо в апи с роботом не было этого,а это контроллер инвентаря).Передачу данных не думаю что сложно прикрутить.Кстати-главная проблема передачи-у меня почему-то передавалось сразу 2 сообщения,из-за этого я выпилил прочность предмета в руке и заряд батареи.Как-нибудь переделаю.Кстати,вроде пока писал уже примерно знаю как передавать данные и принтить их.Но главная проблема пожалуй,это какие-то баги на карте-OpenComputers начинает передавать данные с модемов по 2 раза.Не знаю из-за чего это происходит.

 

UPD:Это лишь начало гуишки,когда я доделывал был заряд,управление,прочность

WDsJpqK.png


Сообщение отредактировал BrightYC: 04 Август 2018 - 09:24


#4 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 04 Август 2018 - 09:27

роботом то нам хочется управлять секретно.

Хм,а разве я и так им не управляю секретно?Никаких команд в терминале нет,ничего вроде нет,переменных глобальных тоже нет.Всё скрытно,если игрок не какой-нибудь задрот и не будет проверять .shrc

 

UPD:Дошло,чтобы не было никаких ошибок с работой,сейчас запилю)


Сообщение отредактировал BrightYC: 04 Август 2018 - 09:42

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

#5 Оффлайн   Asior

Asior
  • Пользователи
  • Сообщений: 184
  • Уровень сигнала: 60,66%
  • В игре: 520 час. 47 мин.

Награды

                          

Отправлено 04 Август 2018 - 10:42

И еще одно улучшение, добавь в начало программы переменную содержащую номер порта. Это позволит управлять конкретным роботом, а то если программа установлена на 2-более роботах, то начинается парад роботов на 400 метров от оператора. Ну и в программу для планшета так-же добавь возможность запуска с указанным портом, думаю разберешься как это сделать.

> Tablet.lua 45

И еще одна фишка, почитай вот эту тему, Как включить компьютер если заняты руки можно добавить разрешение на удаленный запуск.
Так-же совсем забыли про редстоун, а как робот будет хозяина то запускать в дом?
Вообще, как я думаю надо собрать своего рода универсальную программу, тоесть в роботе будет полная база по подключению тех или иных устройств, а на планшете доступ к ним. Например, в роботе есть красная плата, он передает данные на планшет, что такая карта есть и на планшете появляются опции разрешающие работу с ней. Или наоборот, красной платы нет, значит и опции для работы с ней вообще не нужны, следовательно не показываем их пользователю и все.
Это конечно сложно, придется пересмотреть всю систему приема/передачи данных, но в разы удобнее.
Далее рекомендую ознакомиться с темами:
http://computercraft...m-mostom-klien/
http://computercraft...nos-cherez-irc/
Это должно помочь в управлении роботом не только через wifi.
Может добавить еще опцию управления роботом через шелл? Вот один из вариантов реализации такого
http://computercraft...vlenie-robotom/
Или вот, можно вытащить из управления дроном, там вообще чисто на шелле управление
https://hastebin.com/etulijoyox.cs
P.S. Не обновляй код на пастебине, просто под описанием темы добавь список версий, в спойлеры внеси, что добавил/пофиксил. Так будет интереснее наблюдать за прогрессом развития программы.


Сообщение отредактировал Asior: 04 Август 2018 - 11:46

  • eu_tomat и vx13 это нравится

#6 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 04 Август 2018 - 13:39

И еще одно улучшение, добавь в начало программы переменную содержащую номер порта. Это позволит управлять конкретным роботом, а то если программа установлена на 2-более роботах, то начинается парад роботов на 400 метров от оператора. Ну и в программу для планшета так-же добавь возможность запуска с указанным портом, думаю разберешься как это сделать.

> Tablet.lua 45

И еще одна фишка, почитай вот эту тему, Как включить компьютер если заняты руки можно добавить разрешение на удаленный запуск.
Может добавить еще опцию управления роботом через шелл? Вот один из вариантов реализации такого

П.с всё что ты сказал-постараюсь сделать.Порт хотел сделать,да забыл.И зачем управление с шелла?Так вот,к сути.Чтобы реализовать всё что ты сказал-мне нужно принимать данные не как данные,а как переменные с комментариями.К примеру я отсылаю modem.broadcast(port,data1,data2,data3) и принять нужно как data1,data2,data3, а не как одно сообщение.В этом главная проблема и я не знаю как это реализовать.Подкиньте идею.


Сообщение отредактировал BrightYC: 04 Август 2018 - 13:43


#7 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 04 Август 2018 - 14:18

П.с пока не умею пользоваться таблицами,но кажется уже понял как избавиться от куча if и elseif 



#8 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 935
  • Уровень сигнала: 5,93%
  • В игре: 50 час. 55 мин.

Награды

                          

Отправлено 04 Август 2018 - 15:46

Мои впечатления от кода:

Отступы расставлены как попало, что затрудняет чтение кода и поиск ошибок.

Функции drop(), dropUp() и dropDown() вряд ли работают так как это было задумано:
local function drop()
    for i = 1, size do
        robot.drop()
        robot.select(i)
    end
robot.select(i)
robot.drop()
robot.select(1)
end
Бессмысленно пищать динамиком о недостатке энергии при удаленном управлении:
    if energy <= 1500 then
    computer.beep()
end
Нужно сообщать эту информацию на планшет, а уже он сможет издавать звук или сигнализировать о проблеме иным путём.

Не ясно, что делает эта одиноко стоящая конструкция: math.floor(energy)
 

П.с пока не умею пользоваться таблицами,но кажется уже понял как избавиться от куча if и elseif

Длинная конструкция типа этой:
    if code == 17 then
robot.forward()
    elseif code == 30 then
robot.turnLeft()
    elseif code == 32 then
robot.turnRight()
...
перемещается в таблицу примерно таким образом:
local cmd = {
	[17] = robot.forward,
	[32] = robot.turnRight,
...
}
...
if cmd[code] then
  cmd[code]()
end


#9 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 04 Август 2018 - 15:56

Мои впечатления от кода:

Отступы расставлены как попало, что затрудняет чтение кода и поиск ошибок.

Функции drop(), dropUp() и dropDown() вряд ли работают так как это было задумано:

Бессмысленно пищать динамиком о недостатке энергии при удаленном управлении:
if energy <= 1500 then
    computer.beep()
end

Упс,я у себя этот код обновил,а на пастебине-нет.

Всё остальное-да,спасибо

math.floor округляет,но это я делал не для этого.Тоже забыл


Сообщение отредактировал Alex: 06 Август 2018 - 01:34


#10 Оффлайн   Asior

Asior
  • Пользователи
  • Сообщений: 184
  • Уровень сигнала: 60,66%
  • В игре: 520 час. 47 мин.

Награды

                          

Отправлено 04 Август 2018 - 21:05

И зачем управление с шелла?

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


  • eu_tomat и Kartze это нравится

#11 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 935
  • Уровень сигнала: 5,93%
  • В игре: 50 час. 55 мин.

Награды

                          

Отправлено 04 Август 2018 - 22:03

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

Да. Во-первых, все случаи предусмотреть невозможно. Во-вторых, чтобы вызывать меньше подозрений, программа изначально должна занимать минимум памяти. Поэтому нужны всего четыре базовые команды:
1) безопасно выполнить принятый код и отослать результат на пульт;
2) добавить принятый код как постоянную команду с назначенным номером;
3) удалить команду с определенным номером или сразу все для очистки памяти;
4) безопасно выполнить команду с определенным номером (что отчасти реализовано) и отослать результат выполнения на пульт.

А можно вообще обойтись только первым пунктом.
Помнится, форумчане даже соревновались в написании наикомпактнейшего загрузчика кода:
http://computercraft...iia-setiu-kont/
Он, конечно, не в фоне работал, но тут важен принцип функционирования.
  • Alex и davial это нравится

#12 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 04 Август 2018 - 22:12

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

Я же в ирке обсуждал,значит уже начал делать))



#13 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 04 Август 2018 - 22:14

Да. Во-первых, все случаи предусмотреть невозможно. Во-вторых, чтобы вызывать меньше подозрений, программа изначально должна занимать минимум памяти. Поэтому нужны всего четыре базовые команды:
1) безопасно выполнить принятый код и отослать результат на пульт;
2) добавить принятый код как постоянную команду с назначенным номером;
3) удалить команду с определенным номером или сразу все для очистки памяти;
4) безопасно выполнить команду с определенным номером (что отчасти реализовано) и отослать результат выполнения на пульт.

А можно вообще обойтись только первым пунктом.
Помнится, форумчане даже соревновались в написании наикомпактнейшего загрузчика кода:
http://computercraft...iia-setiu-kont/
Он, конечно, не в фоне работал, но тут важен принцип функционирования.

Пожалуйста,хватит,мой todo лист уже рвётся,а я еще не начинал делать:D



#14 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 05 Август 2018 - 08:04

Кхм,засорять свою тему можно вопросами-или нет?Так вот,у меня дилемма,что делать если нет модема и интернет карты?В принципе не сложно еще добавить и туннельную,но это к сути.Я придумал только так чтобы робот ломал всё до потолка если он это может,долетал сколько может вверх и останавливался.



#15 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 05 Август 2018 - 08:08

@Asior

Ты говорил что у тебя на робокрафте были роботы заражённые подобной программой.Если не секрет-как работала кнопка "ямка вместо дома"
 



#16 Оффлайн   Asior

Asior
  • Пользователи
  • Сообщений: 184
  • Уровень сигнала: 60,66%
  • В игре: 520 час. 47 мин.

Награды

                          

Отправлено 05 Август 2018 - 09:04

кнопка "ямка вместо дома"
 

код программы загружался через шелл и дальше робот пер крушить все и складывать в сундук, ну что за приватом. Как я уже говорил "ямка вместо дома" не запускалась, она так и осталась в планах ушедшего в небытиё сервера. Хотя в сингле все работало как надо.

Так вот,у меня дилемма,что делать если нет модема и интернет карты?

Добавляй туннельную. Но уже украсть робота не выйдет, карты то делаются парными, а я как-то не уверен что игрок сам отдаст её тебе.



#17 Оффлайн   kaka888

kaka888
  • Пользователи
  • Сообщений: 14
  • Уровень сигнала: 1,73%
  • В игре: 14 час. 50 мин.
  • ГородМинск

Отправлено 05 Август 2018 - 21:19

Просто красавчик. Нечего сказать.



#18 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 05 Август 2018 - 23:30

Короче,почти добавил кастомные команды по аналогии с интерпретатором.Работает пока через раз,но работает(Позволяет исполнять команды в интерпретаторе от лица робота,не шелл)

И да,

 

 

код программы загружался через шелл и дальше робот пер крушить все и складывать в сундук, ну что за приватом. Как я уже говорил "ямка вместо дома" не запускалась, она так и осталась в планах ушедшего в небытиё сервера. Хотя в сингле все работало как надо.

 

 

Добавляй туннельную. Но уже украсть робота не выйдет, карты то делаются парными, а я как-то не уверен что игрок сам отдаст её тебе.

 

Как он определял где дом?Мне интересен алгоритм того как он ломал всё,или там по аналогии с карьером?



#19 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 06 Август 2018 - 01:40

Еще проблема есть.Если во время работы робота убрать какое-то средство связи - программа перестанет работать.Решить я эту не могу,потому что в программе нет while true do.Программа работает на доверии того что робот принимает сообщения.Но я думаю это не критично,потому что модем/интернет карту ставят во внутренний слот,так что вроде всё ок.


Сообщение отредактировал BrightYC: 12 Август 2018 - 22:19


#20 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 06 Август 2018 - 05:30

 

код программы загружался через шелл и дальше робот пер крушить все и складывать в сундук, ну что за приватом. Как я уже говорил "ямка вместо дома" не запускалась, она так и осталась в планах ушедшего в небытиё сервера. Хотя в сингле все работало как надо.

 

 

Добавляй туннельную. Но уже украсть робота не выйдет, карты то делаются парными, а я как-то не уверен что игрок сам отдаст её тебе.

 

Ну,тогда туннельную не буду добавлять.Хотя это самый безопасный метод передачи данных,потому что event.pull(UPD:А вроде и нет..)работает без порта,я пока думаю что с этим можно сделать


Сообщение отредактировал BrightYC: 06 Август 2018 - 08:49


#21 Оффлайн   Asior

Asior
  • Пользователи
  • Сообщений: 184
  • Уровень сигнала: 60,66%
  • В игре: 520 час. 47 мин.

Награды

                          

Отправлено 06 Август 2018 - 08:41

Как он определял где дом?Мне интересен алгоритм того как он ломал всё,или там по аналогии с карьером?

Да как карьер он работет. Выведи к крайней угловой точке за приватом, заставь его слопать пару алмазных сундуков и поставить их (чтобы админ не засек тебя по логам), далее разворот и самый базовый карьер с указанием размера ямки, длины и ширины  



#22 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 06 Август 2018 - 08:50

Да как карьер он работет. Выведи к крайней угловой точке за приватом, заставь его слопать пару алмазных сундуков и поставить их (чтобы админ не засек тебя по логам), далее разворот и самый базовый карьер с указанием размера ямки, длины и ширины  

Хм,ну тогда ладно.Не очень удобно,если честно.



#23 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 07 Август 2018 - 09:15

Очистил.


Сообщение отредактировал BrightYC: 12 Август 2018 - 23:15

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

#24 Оффлайн   Elyn1tex

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

Отправлено 07 Август 2018 - 10:01

Как я понял, программа требует одного запуска, далее просто нужно включать робота после демонтажа?

#25 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 07 Август 2018 - 10:12

Как я понял, программа требует одного запуска, далее просто нужно включать робота после демонтажа?

Нет,пока что выполняй то что написано в начале.Это просто анонс того что будет)

Сначала создаёшь любой файл,со скрытым расширением-к примеру .robot (Не забудь точку,это важно)

потом редактируешь файл .shrc и вставляешь туда .robot 

И всё,ты можешь управлять роботом


Сообщение отредактировал BrightYC: 07 Август 2018 - 10:12


#26 Оффлайн   Elyn1tex

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

Отправлено 07 Август 2018 - 10:56

.

Сообщение отредактировал Elyn1tex: 07 Август 2018 - 12:31


#27 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 07 Август 2018 - 13:28

Кстати,где-то видел эмулятор связанной карты,думаю можно попробовать.

UPD:Нашёл,возможно буду пробовать после обновления.


Сообщение отредактировал BrightYC: 07 Август 2018 - 13:32


#28 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 09 Август 2018 - 19:44

Очистил


Сообщение отредактировал BrightYC: 12 Август 2018 - 23:15


#29 Оффлайн   NEO

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

Награды

   3                        

Отправлено 09 Август 2018 - 20:50

нет защиты от перехвата



#30 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 89
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Награды

        

Отправлено 09 Август 2018 - 21:02

нет защиты от перехвата

Ну,я сделал проверку порта,то есть просто так не удастся.А так да,не плохо было бы шифрование какое-нибудь.Но мне кажется это уже усложнение.Все программы на модеме уязвимы,кроме Алекса,которая на туннельной.

UPD:А вообще - и так немного лаги заметно.И трёхзначного порта хватит,не такая это уж и проблема.


Сообщение отредактировал BrightYC: 09 Август 2018 - 21:18






Темы с аналогичным тегами Робот

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

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