diff --git a/Applications/RobotGriefer/Receiver.lua b/Applications/RobotGriefer/Receiver.lua index d7b04ef1..3edcbcbf 100644 --- a/Applications/RobotGriefer/Receiver.lua +++ b/Applications/RobotGriefer/Receiver.lua @@ -8,6 +8,8 @@ local keyWord = "ECSGrief" local modem local redstone = component.redstone local redstoneState = false +local toolUsingMode = false +local toolUsingSide = 1 if component.isAvailable("modem") then modem = component.modem @@ -26,6 +28,8 @@ local commands = { turnLeft = robot.turnLeft, up = robot.up, down = robot.down, + swing = robot.swing, + drop = robot.drop } local function redstoneControl() @@ -50,6 +54,8 @@ local function receive() local eventData = { event.pull() } if eventData[1] == "modem_message" and eventData[4] == port and eventData[6] == keyWord then local message = eventData[7] + local message2 = eventData[8] + if commands[message] then commands[message]() else @@ -62,13 +68,43 @@ local function receive() require("term").clear() require("computer").shutdown() elseif message == "use" then - robot.use() - robot.useUp() - robot.useDown() + if toolUsingMode then + if toolUsingSide == 1 then + print("Использую экипированный предмет в режиме правого клика перед роботом") + robot.use() + elseif toolUsingSide == 0 then + print("Использую экипированный предмет в режиме правого клика под роботом") + robot.useDown() + elseif toolUsingSide == 2 then + print("Использую экипированный предмет в режиме правого клика над роботом") + robot.useUp() + end + else + if toolUsingSide == 1 then + print("Использую экипированный предмет в режиме левого клика перед роботом") + robot.swing() + elseif toolUsingSide == 0 then + print("Использую экипированный предмет в режиме левого клика под роботом") + robot.swingDown() + elseif toolUsingSide == 2 then + print("Использую экипированный предмет в режиме левого клика над роботом") + robot.swingUp() + end + end elseif message == "exit" then return elseif message == "redstone" then redstoneControl() + elseif message == "changeToolUsingMode" then + toolUsingMode = not toolUsingMode + elseif message == "increaseToolUsingSide" then + print("Изменяю режим использования вещи") + toolUsingSide = toolUsingSide + 1 + if toolUsingSide > 2 then toolUsingSide = 2 end + elseif message == "decreaseToolUsingSide" then + print("Изменяю режим использования вещи") + toolUsingSide = toolUsingSide - 1 + if toolUsingSide < 0 then toolUsingSide = 0 end end end end diff --git a/Applications/RobotGriefer/Sender.lua b/Applications/RobotGriefer/Sender.lua index 2bcc9cb6..4318203b 100644 --- a/Applications/RobotGriefer/Sender.lua +++ b/Applications/RobotGriefer/Sender.lua @@ -56,6 +56,14 @@ local commands = { messageToRobot = "redstone", screenText = "Приказываю роботу включить/выключить редстоун вокруг себя", }, + [16] = { + messageToRobot = "drop", + screenText = "Приказываю роботу выкинуть предмет из выбранного слота", + }, + [33] = { + messageToRobot = "changeToolUsingMode", + screenText = "Приказываю роботу изменить режим использования предмета, а именно swing() или use()", + }, } local function send() @@ -69,6 +77,14 @@ local function send() return end end + elseif eventData[1] == "scroll" then + if eventData[5] == 1 then + print("Приказываю роботу увеличить режим использования предметов, т.е. useDown() изменится на use(), а use() на useUp()") + modem.broadcast(port, keyWord, "increaseToolUsingSide") + else + print("Приказываю роботу уменьшить режим использования предметов, т.е. useUp() изменится на use(), а use() на useDown()") + modem.broadcast(port, keyWord, "decreaseToolUsingSide") + end end end end