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

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

Вопрос

Всем здравствуйте! Столкнулся с такой проблеммой... не работают многие команды. Например rs.setOutput. Пробовал уже по всякому. Проблвал писать простенькие программы по видео точь-в-точь по инструкции. Итог: на видео все работает, у меня - нет. Пример программы и версии OpenOS на фото
dae9b8419b9877fa498e7d5247a2c135-full.jp

IMG_5578.jpg
IMG_5579.jpg

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


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

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

1. Объявляешь функцию lock, вызываешь функцию pass. Pass не определена, о чем он тебе и говорит.

2. Если не ошибаюсь, у тебя не заработает еще по одной причине, а именно redstone не определен. Попробуй впихнуть в самое начало 'redstone=require"redstone"' или 'redstone=component.redstone'.

3. Делать это через рекурсию - упорото и небезопасно, переделай под цикл.

P.S.

4. 'sleep' замени на 'os.sleep'

5. В начало проги 'io=require"io"', 'read' замени на 'io.read'

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

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


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

Нет функции pass()

 

в функции lock() рекурсия, в будущем произойдет вылет с ошибкой, вместо вызова lock() помести все в бесконечный цикл while true do **** end

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


Ссылка на сообщение
Поделиться на других сайтах
1. Объявляешь функцию lock, вызываешь функцию pass. Pass не определена, о чем он тебе и говорит.

2. Если не ошибаюсь, у тебя не заработает еще по одной причине, а именно redstone не определен. Попробуй впихнуть в самое начало 'redstone=require"redstone"' или 'redstone=component.redstone'.

3. Делать это через рекурсию - упорото и небезопасно, переделай под цикл.

 

Изменил pass() на lock(), тогда выдает следующее... <img src="http://uploadme.ru/images/2017/05/05/IMG_5584.jpg" alt="IMG_5584.jpg" border="0" />

Пробовал вроде что-то похожее впихивать в начало. Тогда та же ошибка, только "require" в кавычках. Завтра попробую вписать твой вариант в начало, просто боюсь, что тоже не сработает... уже не первый день пытаюсь разобраться, что-то в инете найти - все вбестолку, расстроился очень.

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


Ссылка на сообщение
Поделиться на других сайтах
Нет функции pass()

 

в функции lock() рекурсия, в будущем произойдет вылет с ошибкой, вместо вызова lock() помести все в бесконечный цикл while true do **** end

 

С while true do тоже проблема... он просит меня закрыть линию и поставить end. Ирония в том, что end итак стоял и стояли где надо (все варианты перепробовал), все равно пишет закрыть линию. И не подскажете, что значит рекурсия? Я просто не сильно разбираюсь...

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


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

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

 

Не надо расстраиваться. Проблема в том что у тебя каша в коде. Много синтаксических и логических ошибок. Щас тебе наши гуру всё расскажут как правильно.

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


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

Очень надеюсь)

 

Просто даже самая обычная команда не срабатывает rs.setOutput и все ее вариации. Не понимаю, в чем дело... По видео когда делал похожие программы, у них все в миг зарабатывало, а у меня - такая фигня

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


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

Очень надеюсь)

 

Просто даже самая обычная команда не срабатывает rs.setOutput и все ее вариации. Не понимаю, в чем дело... По видео когда делал похожие программы, у них все в миг зарабатывало, а у меня - такая фигня

 

У тебя ошибки совсем не связаны с этой командой.

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


Ссылка на сообщение
Поделиться на других сайтах
У тебя ошибки совсем не связаны с этой командой.

 

А с чем тогда?

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


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


io,component=require"io",require"component" -- Подключаем библиотеки io и component для взаимодействия соответственно с пользователем и с компонентами
redstone=component.redstone -- Получаем прокси компонента редстоуна, будь то карта или блок

SIDE=2 -- Задаем сторону, в которую будет выдаваться сигнал

function lock()
print"Enter password"
t=io.read()
if t=="123" then
print"Correct!"
redstone.setOutput(SIDE,15)
os.sleep(7)
redstone.setOutput(SIDE,0)
else
print"Incorrect!"
end
end

-- Начало самой программы

while true do --Всегда повторяем кусок ниже
lock() --Вызываем функцию замка
os.sleep(0) --Даем событиям шанс на обработку. Здесь не играет особой роли, но обычно полезно
end

 

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

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


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

Изменил pass() на lock(), тогда выдает следующее... <img src="http://uploadme.ru/images/2017/05/05/IMG_5584.jpg" alt="IMG_5584.jpg" border="0" />

Пробовал вроде что-то похожее впихивать в начало. Тогда та же ошибка, только "require" в кавычках. Завтра попробую вписать твой вариант в начало, просто боюсь, что тоже не сработает... уже не первый день пытаюсь разобраться, что-то в инете найти - все вбестолку, расстроился очень.

Вместо read() надо io.read() И вообще мне кажется что ты хочешь запустить программу для ComputerCraft на OpenComputers. Там многое надо менять. И ещё на пожалуйста делай скриншоты на F2, не фоткай экран. Хоть там видно всё, но лучше делай скрины так легче будет

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

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


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

Такое чувство, что это фотографии. На будущее - пользуйся принтскрином/его аналогом

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


Ссылка на сообщение
Поделиться на других сайтах
io,component=require"io",require"component" -- Подключаем библиотеки io и component для взаимодействия соответственно с пользователем и с компонентами
redstone=component.redstone -- Получаем прокси компонента редстоуна, будь то карта или блок

SIDE=2 -- Задаем сторону, в которую будет выдаваться сигнал

function lock()
	print"Enter password"
	t=io.read()
	if t=="123" then
		print"Correct!"
		redstone.setOutput(SIDE,15)
		os.sleep(7)
		redstone.setOutput(SIDE,0)
	else
		print"Incorrect!"
	end
end

-- Начало самой программы

while true do --Всегда повторяем кусок ниже
	lock() --Вызываем функцию замка
	os.sleep(0) --Даем событиям шанс на обработку. Здесь не играет особой роли, но обычно полезно
end

 

Сделал все один в один. Все та же ошибка... attempt to index global...

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


Ссылка на сообщение
Поделиться на других сайтах
io,component=require"io",require"component" -- Подключаем библиотеки io и component для взаимодействия соответственно с пользователем и с компонентами
redstone=component.redstone -- Получаем прокси компонента редстоуна, будь то карта или блок

SIDE=2 -- Задаем сторону, в которую будет выдаваться сигнал

function lock()
print"Enter password"
t=io.read()
if t=="123" then
print"Correct!"
redstone.setOutput(SIDE,15)
os.sleep(7)
redstone.setOutput(SIDE,0)
else
print"Incorrect!"
end
end

-- Начало самой программы

while true do --Всегда повторяем кусок ниже
lock() --Вызываем функцию замка
os.sleep(0) --Даем событиям шанс на обработку. Здесь не играет особой роли, но обычно полезно
end
вот сейчас заработало! Но последняя проблема: при вводе верного пароля, пишет только "Correct" и слежующа ошибка: bad argument #1 (number expected, got nil): и то же самое

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


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

такое чувство, что ты не знаешь что нужно компоненты подключать...

require('component').redstone.setOutput​(2,15) 

а не

 

rs.setOutput

 

или же:

local com = require('component')
local rs = com.redstone
rs.setOutput​(2,15) 

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


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

Хз что у вас там не работает, проверил программу все нормально. Кстати io подключать не обязательно. Скорее всего вы вручную перепечатывали код и где-то сделали ошибку, просто скопируйте код и нажмите колесико мышки, и весь код вставится. А так да, юзайте какой-нибудь текстовый редактор, хоть тот же Notepad ++

Кстати может вы чего не подключили к компьютеру?

9RFKtTr.png

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


Ссылка на сообщение
Поделиться на других сайтах
и кодь в sublime text 3, а не в редакторе текста OpenOS'ки. http://www.sublimetext.com/3

 

Спасибо огромное! Все работает! Огромное спасибо всем, кто отписался)

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


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

фоткал с моника)) ALT + PrintScreen тебе в руки)

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


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

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

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

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

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

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

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

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

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


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