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

Ksandr0

Пользователи
  • Публикации

    6
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем Ksandr0


  1. Поиск по форуму выдает с десяток подобных тем, им тоже можно иногда пользоваться.

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

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

     

    Впредь буду внимательней к деталям.


  2.  

    res={pcall(load("return "..any))}

    res[1]>>true

    res[2]>>80

    res[3]>>25

    res={pcall(load("return "..any))}
    tmp=""
    for id=2, #res do
      tmp=tmp.." | "..res[id]
    end
    modem.broadcast(port, tmp)
    

    Вот теперь дошло - в фигурные скобки заключить pcall(load.. забыл.

     

    Спасибо за пояснения, вопрос закрыт.


  3. На сколько я понял,pcall возвращает результат выполнения(true/false) и ответ от load

    И надо прикрепить return

    Что то вроде result, res = pcall(load("return "..any))

    Здесь в переменную запишется только то, что функция выполнится, т.е. true в примере на скриншоте. Хотелось бы получить именно результат выполнения (из скриншота - 80 и 25).


  4.  

    Надо полагать, оператору load доступны только глобальные переменные, если их явно не передавать через окружение.

    a=11
    local b=12
    load("print(a,b)")() --> 11     nil
    

    Вероятно, так и есть :)

     

    Отдельно уточнить хотел, как можно вывести результат в броадкаст? Попробовал :

     

    res=pcall(load(any))

     

    Но броадкаст передал nil.


  5. Всех благодарю за участие, решение оказалось в ином - убрать все local, в итоге работает с:

     

    modem = component.proxy(component.list('modem')())
    drone = component.proxy(component.list('drone')())

    modem.open(4455)

    while true do
    rnd, _, _, _, _, any = computer.pullSignal()
    if rnd == "modem_message" then
    pcall(load(any))
    end
    end


  6. Всем доброго дня.

     

    Для управления дроном хотел использовать систему, передающую ему команды, а в его eeprom разместить только программу на прием и исполнение внешних команд.

     

    На дроне использовал следующее:

     

    local modem = component.proxy(component.list('modem')())
    local drone = component.proxy(component.list('drone')())

    modem.open(4455)

    while true do
    local rnd, _, _, _, _, any = computer.pullSignal()
    if rnd == "modem_message" then
    pcall(load(any))
    end
    end

     

    Передаю с компьютера сообщение "drone.move(0,1,0)", однако дрон на нее никак не реагирует.

     

    Пробовал ради дебага заменить pcall(load(any)) на drone.setStatusText(any), и на дисплее дрона отобразилось отправленное  сообщение (сколько влезло, разумеется).

     

    Пришел к выводу, что не выполняется load(?).

     

    Поясните, пожалуйста, в чем я не прав?

×
×
  • Создать...