Перейти к публикации
Форум - ComputerCraft
BrightYC

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

Рекомендованные сообщения

Установка:

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

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

Видео:

https://youtu.be/PKBDCgEQeH8

 

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

UsICF38.png

Изменено пользователем BrightYC
  • Like 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
04.08.2018 в 09:14, Asior сказал:

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

Да,спасибо

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

Изменено пользователем BrightYC
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

> Tablet.lua 45

И еще одна фишка, почитай вот эту тему, Как включить компьютер если заняты руки можно добавить разрешение на удаленный запуск.
Так-же совсем забыли про редстоун, а как робот будет хозяина то запускать в дом?
Вообще, как я думаю надо собрать своего рода универсальную программу, тоесть в роботе будет полная база по подключению тех или иных устройств, а на планшете доступ к ним. Например, в роботе есть красная плата, он передает данные на планшет, что такая карта есть и на планшете появляются опции разрешающие работу с ней. Или наоборот, красной платы нет, значит и опции для работы с ней вообще не нужны, следовательно не показываем их пользователю и все.
Это конечно сложно, придется пересмотреть всю систему приема/передачи данных, но в разы удобнее.
Далее рекомендую ознакомиться с темами:
http://computercraft.ru/topic/982-biblioteka-dlia-raboty-s-mobilnym-mostom-klien/
http://computercraft.ru/topic/2028-internet-modem-dlia-openos-cherez-irc/
Это должно помочь в управлении роботом не только через wifi.
Может добавить еще опцию управления роботом через шелл? Вот один из вариантов реализации такого
http://computercraft.ru/topic/744-planshetnoe-upravlenie-robotom/
Или вот, можно вытащить из управления дроном, там вообще чисто на шелле управление
https://hastebin.com/etulijoyox.cs
P.S. Не обновляй код на пастебине, просто под описанием темы добавь список версий, в спойлеры внеси, что добавил/пофиксил. Так будет интереснее наблюдать за прогрессом развития программы.

Изменено пользователем Asior
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

-

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

-

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

 

Функции 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

 

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

Бессмысленно пищать динамиком о недостатке энергии при удаленном управлении:

if energy <= 1500 then
    computer.beep()
end

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

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

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

Изменено пользователем Alex

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

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

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

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

1) безопасно выполнить принятый код и отослать результат на пульт;

2) добавить принятый код как постоянную команду с назначенным номером;

3) удалить команду с определенным номером или сразу все для очистки памяти;

4) безопасно выполнить команду с определенным номером (что отчасти реализовано) и отослать результат выполнения на пульт.

 

А можно вообще обойтись только первым пунктом.

Помнится, форумчане даже соревновались в написании наикомпактнейшего загрузчика кода:

http://computercraft.ru/topic/833-bios-net-dlia-tcentralizovannogo-upravleniia-setiu-kont/

Он, конечно, не в фоне работал, но тут важен принцип функционирования.

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
04.08.2018 в 21:05, Asior сказал:

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

-

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
04.08.2018 в 22:03, eu_tomat сказал:

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

1) безопасно выполнить принятый код и отослать результат на пульт;

2) добавить принятый код как постоянную команду с назначенным номером;

3) удалить команду с определенным номером или сразу все для очистки памяти;

4) безопасно выполнить команду с определенным номером (что отчасти реализовано) и отослать результат выполнения на пульт.

 

А можно вообще обойтись только первым пунктом.

Помнится, форумчане даже соревновались в написании наикомпактнейшего загрузчика кода:

http://computercraft.ru/topic/833-bios-net-dlia-tcentralizovannogo-upravleniia-setiu-kont/

Он, конечно, не в фоне работал, но тут важен принцип функционирования.

-

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

-

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@@Asior

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

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

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

 

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

05.08.2018 в 09:04, Asior сказал:

 

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

 

 

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

 

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

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

-

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

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

 

 

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

 

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

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Очистил.

Изменено пользователем BrightYC
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
07.08.2018 в 10:01, Elyn1tex сказал:

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

Нет,пока что выполняй то что написано в начале.

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

.

Изменено пользователем Elyn1tex

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Очистил

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Очистил.

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×