stripwire 0 Опубликовано: 24 августа, 2017 (изменено) как можно получить значения возвращаемые командой например getHealth() и записать их в таблицу, ну или в несколько переменных? и поподробнее пж Изменено 24 августа, 2017 пользователем stripwire Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 24 августа, 2017 как можно получить значения возвращаемые командой например getHealth() и записать их в таблицу, ну или в несколько переменных? и поподробнее пж local health = getHealth() local tab = {health} local health1 = health Я правильно тебя понял? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 24 августа, 2017 (изменено) Если функция возвращает несколько значений: function f() return 1, 2, 3, "Hello", "world" end То можно сохранить возвращаемые значения в несколько переменных, просто приравняв их к возвращаемому значению функции: local number1, number2, number3, greetings1, greetings2 = f() Или можно засунуть их в таблицу: local result = { f() } В таблице они расположатся по порядку под числовыми индексами, начиная с 1. То есть result[1] будет равен 1, result[4] будет равен "Hello" и т.п. Изменено 24 августа, 2017 пользователем Totoro Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stripwire Автор вопроса 0 Опубликовано: 24 августа, 2017 (изменено) по моему не так, вот кусок гайда getHealth():String,Number,Number. Значит, возвращает количество здоровья (текущее и максимальное). Чтобы не отвлекаться в дальнейшем, скажу сразу, что взвращаются данные так же через модем, через тот самый указанный порт. Так что не забудьте открыть его (modem.open(PORT)) и указать получение данных через event.pull("modem_message"). Формат данных: "modem_message", "адрес сетевухи на текущем компе", "адрес наноботов", порт, расстояние, "nanomachines", возвращаемые данные.... В данной функции возвращаемые данные: "health", 15, 20, где 15 — текущее, а 20 — максимальное состояния здоровья. http://computercraft.ru/blog/3/entry-436-oc-tutorial-tutorial-po-nanobotam/ но я как всегда не понял, как это должно выглядеть в целом[ я так понимаю, что это должно выглядить примерно вот так component.modem.broadcast(1, "nanomachines", getHealth()) но вот куда пойдёт вывод, хрен его знает [[ и как убрать серое выделение некоторых слов? а то мешается Изменено 24 августа, 2017 пользователем stripwire Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 24 августа, 2017 я так понимаю, что это должно выглядить примерно вот так component.modem.broadcast(1, "nanomachines", getHealth()) но вот куда пойдёт вывод, хрен его знает [[ и как убрать серое выделение некоторых слов? а то мешается для сброса форматирования при составлении поста используй ластик (вторая иконка в первой строке) А с нанитами попробуй так type, currentHP, maxHP = component.modem.broadcast(1, "nanomachines", "getHealth") print('Текущее знач. HP: '..currentHP) print('Макс. знач. HP: '..maxHP) по идее должно работать. Но это в частном случае. Судя по кусочку гайда, который ты где-то вырезал, то запрос к нанитам, видимо, возвращает первым значением какой-то стринг. Эти стринги можно, и наверно нужно проверять на всякий пожарный. И потом уже смотреть, что там еще вернулось и вернулось ли вообще, так как могут быть разные запросы к нанитам, ошибки и прочее. например так: data = {component.modem.broadcast(1, "nanomachines", command)} if type(data) == 'table' then if data[1] == 'health' then currentHP = data[2] elseif data[1] == 'hunger' currentHunger = data[2] -- и т.д. и прочее end end но это все лабуда. Лучше поищи на форуме гайды по нанороботам. Fingercomp и Totoro и др. игроки писали когда-то эпические гайды по ним. И просмотри еще на досуге сам язык луа, операторы, базовые конструкции, циклы какие-то и прочие какашки, уроки там какие-то и пр. Тебе тяжело понять код по моду ОС потому, что ты только минут 10 изучал луа, а потом сразу окунулся с головой в опенКомПуктерс, и при чем не в самые простые его аспекты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stripwire Автор вопроса 0 Опубликовано: 24 августа, 2017 (изменено) type, currentHP, maxHP = component.modem.broadcast(1, "nanomachines", "getHealth") print('Текущее знач. HP: '..currentHP) print('Макс. знач. HP: '..maxHP) примерно так и предполагал, но там вот шо ещё написано, и из-за этого я запутался взвращаются данные так же через модем, через тот самый указанный порт. Так что не забудьте открыть его (modem.open(PORT)) и указать получение данных через event.pull("modem_message"). ну, lua я учил по нескольким гайдам по ~20 минут, а понять скорее всего сложно потому, что практики вообще не было, из-за этого плохо помню синтаксис, ну а остальное из-за незнания стандартных библиотек Изменено 24 августа, 2017 пользователем stripwire Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stripwire Автор вопроса 0 Опубликовано: 24 августа, 2017 (изменено) шот не работает [надеюсь, библиотеки можно подключать так] p.s. а, вроде понял, щас проверю. если не поможет, то хоть одной ошибкой будет меньше Изменено 24 августа, 2017 пользователем stripwire Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stripwire Автор вопроса 0 Опубликовано: 24 августа, 2017 немного исправил [в библиотеке сделал функцию локальной], теперь так Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Kid 8 Опубликовано: 24 августа, 2017 Что то не понятно, что ты настрочил)Вообще по идеи ты отправляешь сигнал на наниты broadcast (или send если знаешь адрес нанитов), а потом ловишь ответ с помощью event.pull().P.S. Держи мою недоделку, в ней много косяков, но надеюсь что то полезное из нее вытащишь) https://pastebin.com/qwBM1LVQ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 24 августа, 2017 шот не работает [надеюсь, библиотеки можно подключать так] все смешалось в доме Облонских ... либы не работают, наниты не отвечают, бродкасты не ловятся, кони не бегают и крипы не взрываются... . Давай так, начни с того, что для начала отдельно поработай с модемом, потом с таблицами, потом с либами, на самых простых примерах убедись, что ты правильно все делаешь и что твоя либа, которая просто прибавляет А к Б, работает. Потом составь какую-то простую таблицу и поработай с ней, потом функцию.... А потом перейдем к нанитам А то ты там в либе объявил пустую таблицу, потом какие-то фанкшины непонятные напихал, отретурнил ее же, эту пустую таблицу, и ждешь, чтобы что-то работало и наниты что-то делали. 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stripwire Автор вопроса 0 Опубликовано: 25 августа, 2017 все смешалось в доме Облонских ... либы не работают, наниты не отвечают, бродкасты не ловятся, кони не бегают и крипы не взрываются... . Давай так, начни с того, что для начала отдельно поработай с модемом, потом с таблицами, потом с либами, на самых простых примерах убедись, что ты правильно все делаешь и что твоя либа, которая просто прибавляет А к Б, работает. Потом составь какую-то простую таблицу и поработай с ней, потом функцию.... А потом перейдем к нанитам А то ты там в либе объявил пустую таблицу, потом какие-то фанкшины непонятные напихал, отретурнил ее же, эту пустую таблицу, и ждешь, чтобы что-то работало и наниты что-то делали. ну, значит я опять не понял по гайду как делать библиотеки] да и ещё одну ошибку нашёл, ладно, будем разбираться] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stripwire Автор вопроса 0 Опубликовано: 25 августа, 2017 мдэ, шот не то... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stripwire Автор вопроса 0 Опубликовано: 25 августа, 2017 так, понял зачем нужны переменные "_", но по моему остаются старые сообщения, как их чистить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 25 августа, 2017 Блин, откуда у тебя в эмуляторе могут быть нанороботы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stripwire Автор вопроса 0 Опубликовано: 25 августа, 2017 Блин, откуда у тебя в эмуляторе могут быть нанороботы? да, да, знаю, прост для начала тут тесчу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stripwire Автор вопроса 0 Опубликовано: 25 августа, 2017 как сообщения от нанороботов чистить то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 25 августа, 2017 по моему остаются старые сообщения, как их чистить?Где они остаются? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stripwire Автор вопроса 0 Опубликовано: 25 августа, 2017 Где они остаются? а, не, ошибся... извените... пока вопросов нету, позже затесчу на нанороботах в майне и узнаю, работает или нет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
serafim 272 Опубликовано: 25 августа, 2017 Если ты имеешь в виду как очистить экран, то можно так --подключаем библиотеку local term = require("term") --команда очистить терминал term.clear() А если переменную local _,_,_,_,_,h1,h2,h3 = e.pull("modem_message") то можно её не очищать , данные в ней заменятся при следующем ответе на сообщение модема, на то она и переменная И ты мог бы код не в виде скриншота вставлять, а виде кода. В сообщении есть кнопочка с надписью КОД Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stripwire Автор вопроса 0 Опубликовано: 25 августа, 2017 Если ты имеешь в виду как очистить экран, то можно так --подключаем библиотеку local term = require("term") --команда очистить терминал term.clear() А если переменную local _,_,_,_,_,h1,h2,h3 = e.pull("modem_message") то можно её не очищать , данные в ней заменятся при следующем ответе на сообщение модема, на то она и переменная И ты мог бы код не в виде скриншота вставлять, а виде кода. В сообщении есть кнопочка с надписью КОД на счёт очистки переменных я думал, что в e.pull(modem_massage) остаётся старый вывод и тоже пишится в переменные, а потом новый Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
stripwire Автор вопроса 0 Опубликовано: 26 августа, 2017 чёт не работайт local e = require("event") local component = require("component") local term = require("term") local modem = component.modem modem.open(1) modem.broadcast(1,"nanomachines", "setResponsePort", 1) modem.broadcast(1,"nanomachines", getHealth) local a,b,c,d,f,g,h,h1,h2,h3 = e.pull("modem_message") print(a) print(b) print(c) print(d) print(f) print(g) print(h) print(h1) print(h2) print(h3) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
как можно получить значения возвращаемые командой например getHealth() и записать их в таблицу, ну или в несколько переменных? и поподробнее пж
Изменено пользователем stripwireПоделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах