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

Ошибка в программе

Вопрос

Хотел написать короткую програмку для полуавтоматических дверей, но выбивает ошибку, а так как я полный валянок в Lua прошу подсказки где я не прав. 

Вот код:

 

while true do

  F = redstone.getInput("front")

    if (F == true) then

      redpulse("back", 1, 6) 

    end

  sleep(1)

end

 

Ошибка появляется при подаче сигнала на front и выглядит таким образом:

, temp:4: attempt to call nil

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


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

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

15 минут назад, Grobovshik5121 сказал:

Я полнейший валянок, что значит определена?

Это значит, что она где-то создана в проге. Ты в этой жизни определен в свидетельстве о рождении под какую-то конкретную дату с сопутствующей инфой о месте регистрации. С функциями (командами) та же история: они имеют имя, тело (код, который они выполняют) и место определения в проге (номер строки)

 

15 минут назад, Grobovshik5121 сказал:

Эта команда вроде как одна из встроеных в компах

Да, но это консольная команда, а не команда для обращения к редстоун-модулю из кода. Чтобы заставить свою прогу работать, ты можешь глянуть на исходный код redpulse.lua и модифицировать его под свои нужды:

while true do
  F = redstone.getInput("front")
  
  if F then
    -- Либо используешь собственный код
    redstone.setOutput("back", true)
    sleep(3)
    
    redstone.setOutput("back", false)
    sleep(3)
    
    -- Либо запускаешь оригинальный redpulse, без разницы
    shell.run("redpulse back 1 6" )
  end
  
  sleep(1)
end

 

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


Ссылка на сообщение
Поделиться на других сайтах
44 минуты назад, Grobovshik5121 сказал:

while true do

  F = redstone.getInput("front")

    if (F == true) then

      redpulse("back", 1, 6) 

    end

  sleep(1)

end

 

Ошибка появляется при подаче сигнала на front и выглядит таким образом:

, temp:4: attempt to call nil

Ошибка сообщает о попытке вызвать неопределённую функцию.

Как определена функция redpulse?

 

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


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

@Grobovshik5121 функция redpulse() существует ?

 

оставлю пару примеров для OpenComputers

Скрытый текст

local component = require("component")
local sides = require("sides")
local redstone = component.redstone

while true do
  if redstone.getInput(sides.front) >= 10 then
    redstone.setOutput(sides.back,15)
  else
    redstone.setOutput(sides.back,0)
  end
  os.sleep(1)
end

этот вариант использует библиотеку sides чтоб управлять сторонами блока с помощью таблицы названий в формате:

Низ (bottom): 0 , Верх (top): 1 , Тыл (back): 2 , Перед (front): 3 , Право (right): 4 , Лево (left): 5

Скрытый текст

local component = require("component")
local redstone = component.redstone

while true do
  if redstone.getInput(3) >= 10 then
    redstone.setOutput(2,15)
  else
    redstone.setOutput(2,0)
  end
  os.sleep(1)
end

тоже самое но без библиотеки sides

 

if redstone.getInput(3) >= 10 then

сторона Перед (front): 3

если сигнал больше или = 10

 

redstone.setOutput(2,15)

сторона Тыл (back): 2

15 = сила выдаваемого сигнала (максимум для редстоуна 15)

 

redstone.setOutput(2,0)

сторона Тыл (back): 2

0 = сигнал редстоуна выключен

 

os.sleep(1)

ждём одну секунду

почитай документацию с примерами по OpenComputers/Красная плата

на этом же сайте есть примеры по другим компонентам мода

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
18 часов назад, serafim сказал:

функция redpulse() существует ?

Скрытый текст

Screenshot_20210319-092440_Chrome.jpg.1809b525520edeacd7c515d70899b902.jpg

Ну.. Вроде как да, или я что-то не так понял? 

Или её нужно как-то дополнительно подключить как библиотеку? 

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


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

Ошибка сообщает о попытке вызвать неопределённую функцию.

Как определена функция redpulse?

 

Я полнейший валянок, что значит определена? 

Эта команда вроде как одна из встроеных в компах... 

Не бейте тапочками 😅

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


Ссылка на сообщение
Поделиться на других сайтах
В 19.03.2021 в 09:45, ECS сказал:

-- Либо используешь собственный код redstone.setOutput("back", true) sleep(3) redstone.setOutput("back", false) sleep(3)

Данный вариант сработал, всё отлично, огромное спасибо

В 19.03.2021 в 09:45, ECS сказал:

-- Либо запускаешь оригинальный redpulse, без разницы shell.run("redpulse back 1 6" )

А вот здесь меня, культурно говоря, послали нафиг, с ошибкой о том что программа/команда не существует

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


Ссылка на сообщение
Поделиться на других сайтах
44 минуты назад, Grobovshik5121 сказал:

А вот здесь меня, культурно говоря, послали нафиг, с ошибкой о том что программа/команда не существует

для того, чтобы использовать библиотеку shell, ее надо подключить в программу:

local shell = require("shell")

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, MrAbad сказал:

для того, чтобы использовать библиотеку shell, ее надо подключить в программу:


local shell = require("shell")

Разве библиотека shell на ComputerCraft не глобальна? И существует ли там вообще require? Не os.loadAPI?

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


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, ECS сказал:

Разве библиотека shell на ComputerCraft не глобальна? И существует ли там вообще require? Не os.loadAPI?

Тю, это разве CC? Если так, то дико извиняюсь, и советую перейти на OC аффтару

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


Ссылка на сообщение
Поделиться на других сайтах
18 часов назад, MrAbad сказал:

Тю, это разве CC? Если так, то дико извиняюсь, и советую перейти на OC аффтару

Вы имеете ввиду Open Computers?

Есть ли какая-то функиональная разница между CC и OC? 

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


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

Вы имеете ввиду Open Computers?

Есть ли какая-то функиональная разница между CC и OC? 

OpenComputers сложнее, чем ComputerCraft, но у него сильно больше функциональности

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


Ссылка на сообщение
Поделиться на других сайтах
33 минуты назад, MrAbad сказал:

OpenComputers сложнее, чем ComputerCraft, но у него сильно больше функциональности

Мне бы с СС разобратся.

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


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