Doob
-
Публикации
1 089 -
Зарегистрирован
-
Посещение
-
Победитель дней
141
Сообщения, опубликованные пользователем Doob
-
-
Изображение с экрана пропадает, потому-что на него подается сигнал, об этом даже сказано в ачивке при крафте монитора. Лучше отделить монитор или редстоун I/O кабелем от других блоков.
Если проблема с определением стороны, то можно подать сигнал на все.
local wlist = {['Lockry'] = true} local sleep = 10 local side = 1 local status local component = require('component') local computer = require('computer') local redstone = component.redstone local chat_box = component.chat_box local signal = computer.pullSignal local function switch(value) for side = 0, 5 do redstone.setOutput(side, value) end end function computer.pullSignal(...) local e = {signal(...)} if status and status+sleep*72 <= os.time() then switch(0) status = nil end if e[1] == 'chat_message' and wlist[e[3]] then if e[4] == 'startmob' then status = os.time() switch(15) end end return table.unpack(e) end -
Надо сохранить файл с другим именем, redstone.lua это родная утилита управления редстоуном.
-
local wlist = {['Lockry'] = true} local sleep = 10 local side = 1 local status local component = require('component') local computer = require('computer') local redstone = component.redstone local chat_box = component.chat_box local signal = computer.pullSignal function computer.pullSignal(...) local e = {signal(...)} if status and status+sleep*72 <= os.time() then redstone.setOutput(side, 0) status = nil end if e[1] == 'chat_message' and wlist[e[3]] then if e[4] == 'startmob' then status = os.time() redstone.setOutput(side, 15) end end return table.unpack(e) endПервая строка - белый список игроков, которым доступно управление.Вторая строка - задержка в секундах, т. е. на сколько времени активировать сигнал.
Третья - сторона блока, на которую подавать сигнал.
-
2
-
-
Стоимость для всех одинаковая, стартовый баланс = 0
Поэтому, чтобы что-нибудь купить, надо что-нибудь продать.
-
Никакой. Вообще.
Приходишь, сдаешь ресурсы, приобретаешь другие.
Стоимость перерасчитывается после каждой операции, устанавливается в зависимости от спроса/предложения и редкости ресурса.
-
-
-
Можно ловить событие redstone_changed. Но оно не работает с цветными кабелями.
-
1
-
-
простой переключатель
if message == 12345 then if redstone.getOutput(side) == 0 then -- если на выходе 0 redstone.setOutput(side, 15) -- подать 15 else -- иначе redstone.setOutput(side, 0) -- подать 0 end endмигание
while true do redstone.setOutput(side, 15) os.sleep(1) -- задержка в секундах redstone.setOutput(side, 0) if [[условие]] then break -- выход из цикла end end-
1
-
-
Просто куда-то затерялась переменная 'slot', если ее вернуть, то никаких ошибок. А нужные функции, без проблем добавляются в таблицу 'commands'.
-
local component = require("component")
local robot = require("robot")
local event = require("event")
local port = 512
local modem
if component.isAvailable("modem") then
modem = component.modem
else
error("Этой программе требуется беспроводной модем для работы!")
end
modem.open(port)
local commands = {
forward = robot.forward,
back = robot.back,
turnRight = robot.turnRight,
turnLeft = robot.turnLeft,
up = robot.up,
down = robot.down,
suck = robot.suck,
drop = function() -- создаем функцию дропа
robot.drop() -- дропаем предмет вперед
slot = (slot + 1)%robot.inventorySize() -- задаем номер следующего
if slot == 0 then -- проверяем исключение
slot = 1 -- назначаем, в случае исключения
end
robot.select(slot) -- выбираем
end,
}
local function receive()
while true do
local e = {event.pull('modem_message')}
if commands[e[7]] then -- если в списке есть такая команда
commands[e[7]]() -- выполнить
end
end
end
receive()
-
До меня дошло.
Если бы еще маленько дошло, то было бы понятно, что это копия системной либы и в ней все работает точно так же (кроме дополнительного функционала навигации).
-
2
-
-
А можно скрин? У меня все нормально.
-
заменить 'cmd' на 'commands' в строках 59, 60 и удалить все с 61 до 87
ну и поправить event.pull() на event.pull('modem_message')
-
В общем, да, но в цикле два вызова event.pull, вторая часть не нужна, т. к. функционал дублируется и работает через раз.
-
OpenComputers:item:45 - обычный
OpenComputers:item:46 - золотой
OpenComputers:item:40 - алмазный
OpenComputers:item:69 - креативный
OpenComputers:rack - серверная стойка
-
собсна, нам надо послать команду с планшета
для этого нужна примерно такая писанина:
local component = require('component') -- подключаем компоненты local event = require('event') -- подключаем события local modem = component.modem -- даем название модему while true do -- запускаем бесконечный цикл local e = {event.pull('key_down')} -- захватываем события нажатий if e[4] == 34 then -- если код кнопки равен 'G' modem.broadcast(1, 'drop') -- послать сообщение elseif e[4] == 16 then -- если код кнопки равен 'Q' break -- выход из цикла end endдальше, робот должен ждать сообщение и выполнить указанные инструкцииlocal component = require('component') -- подключаем компоненты local event = require('event') -- подключаем события local modem = component.modem -- даем название модему local robot = component.robot -- даем название роботу local slot = 1 -- задаем текущий слот local cmd = { -- создаем список команд drop = function() -- создаем функцию дропа robot.drop(3) -- дропаем предмет вперед slot = (slot + 1)%robot.inventorySize() -- задаем номер следующего слота if slot == 0 then -- проверяем исключение slot = 1 -- назначаем слот, в случае исключения end robot.select(slot) -- выбираем слот end } modem.open(1) -- открываем порт на модеме, чтобы слышать сообщения while true do -- запускаем бесконечный цикл local e = {event.pull('modem_message')} -- захватываем события модема if cmd[e[6]] then -- если в списке есть такая команда cmd[e[6]]() -- выполнить end end -
При чем тут контроллер, если это метод робота?
-
Не понял, почему нельзя использовать robot.inventorySize(), а в общем, программа простая, даже удивительно, как она может что-то копать.
Можно сделать еще проще, засунуть все в EEPROM, но все-таки эффективность сомнительная, обычный карьер намного лучше.
-
Такая программа давным-давно есть и не одна.
Например. Есть еще [li]pastebin run CGs3u4Ck[/li], готовые алиасы: WASD, Q - вверх, E - вниз, F - забрать лут, G - юзать, H - дропать. (написано было под OOS 1.5)Функционал можно дописывать в боевом режиме, авторизация топорная, поэтому, если робот отвалится в привате, то его не вернуть.
-
Без задней мысли. Берем и следим.6 или 7 слот, на выбор.
Только смысла в этом не много, т. к. передаваемый объем данных слишком большой, а если использовать систему как обычный модем, то ресурсы используются не рационально.
Проще объединить сеть связанными картами, кстати,тоже можно подключить любое количество компов, потому-что есть такая хитрая топология, называется "кольцо".
-
1
-
-
Изначальная идея здравая, но реализация хромает.
Предлагаю не занимать слоты эндерчета бессмысленной инфой.
Берем несколько сундуков, закладываем в них 255 разных ресурсов.
Для передачи информации, переносим ресурсы в эндерчест, по заранее созданной таблице соответствий (синхронизировать можно при старте).
Получаем 53 байта за раз, следовательно, можно жать информацию, бить на блоки по 53 байта и передавать без особых извращений.
-
Вообще-то, мы с тов. Томатом подразумеваем самый обычный бартер, который контролируется компьютером и все выпады на такой способ торговли идут в сторону бартера, который есть на абсолютно всех серверах.
Программа более справедливо рассчитывает относительные цены "товар-товар" и никаких валют ей не требуется, т. к. товары сами-по себе самодостаточные валюты.
Достаточно, просто осознать смысл денег. Деньги - это эквивалент стоимости, поэтому зачем вводить еще один ресурс и искусственно задавать его стоимость относительно других, когда мы можем рассчитать стоимость любого одного товара, относительно другого?
Деньги нужны в реальном мире, где царит полный бардак, куча невидимых переменных и человеческие хотелки. Майнкрафт этого лишен, потому-что он кубический в вакууме и почти все можно предсказать (кроме багов и дюпов)
-
1
-
-
Эм... os.execute()?



Программа "Подача сигнала"
в Выполненные заказы
Опубликовано: