Alex 4 683 Опубликовано: 14 мая, 2015 Проверил в простом варианте сегодня движения. Циклов 100 наверно сделал туда сюда на 10 блоков. Ничего робот уже не пропускает (я по крайней мере не выявил косяков), катаясь в воздухе. Видимо была проблема в версии (обновил с тех пор, с 23 апреля) и OS новая. Скорее всего там был косяк. При посте первом, 23 апреля, когда BarBoss написал, да, уже на втором или третьем развороте робот начал стопориться и не выполнял 10 движений в форе. Но реально, если перед роботом ничего нет, он должен треснуть, но выполнить 10 перемещений в цикле for i=1 , 10 do robot.forward() end При блоке на пути четко вылетает столько раз звездочки из глаз робота при столкновении, сколько попыток робот не смог пройти, где-то две попытки в секунду, что судя по конфигу дефолту на выполнение перемещения 0.4 секунды, что очень похоже на правду. По идее, метод robot.forward() должен начать и закончить перемещение (или вернуть nil и причину [string], если не может робота переместить) и только тогда отдать управление дальше программе. Как бы там даже сервак не лагал и прочее, пропусков не должно быть. И их сейчас по состоянию на 15.05.2015, 01:00 по МСК я не обнаружил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 748 Опубликовано: 7 июня, 2015 (изменено) Что довольно странно, но делал программки на MC 1.8 с последним OC и встретил этот баг, решил проверить на 1.7.10 - аналогично.К примеру в этом коде: robot.swingDown() robot.down() robot.swingDown() robot.up() стабильно игнорится вторая строчка, при чем другие движения/взаимодействия работают довольно четко, но в паре с функцией swing происходят ошибки (иногда даже путает слоты инвентаря). Слипы не помогают, что делать? Переписать robot API? Изменено 7 июня, 2015 пользователем Doob Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 398 Опубликовано: 7 июня, 2015 (изменено) Создаём файл /lib/robo.lua, например, и пишем что-то типа этого (не тестил, будет ли работать): local robot = require("robot") local attempts = 5 -- Указыавет, сколько следует сделать попыток выполнить данное действие local function tryToDo(func) local success = false for i = 1, attempts, 1 do if not func() == true then os.sleep(0.5) else success = true break end end return success end local funcsToOverride = {"down", "up", "turnLeft", "turnRight", "forward", "swing"} -- просто заполняем список функциями для перезаписи на стабильные версии for i = 1, #funcsToOverride, 1 do robot[funcsToOverride[i]] = function() local success = false for i = 1, attempts, 1 do if not robot[funcsToOverride[i]]() == true then os.sleep(0.5) else success = true break end end return success end end return robot Изменено 7 июня, 2015 пользователем Fingercomp 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 748 Опубликовано: 7 июня, 2015 (изменено) Создаём файл /lib/robo.lua, например, и пишем что-то типа этого (не тестил, будет ли работать): local robot = require("robot") local attempts = 5 -- Указыавет, сколько следует сделать попыток выполнить данное действие local function tryToDo(func) local success = false for i = 1, attempts, 1 do if not func() == true then os.sleep(0.5) else success = true break end end return success end local funcsToOverride = {"down", "up", "turnLeft", "turnRight", "forward", "swing"} -- просто заполняем список функциями для перезаписи на стабильные версии for i = 1, #funcsToOverride, 1 do robot[funcsToOverride[i]] = function() local success = false for i = 1, attempts, 1 do if not robot[funcsToOverride[i]]() == true then os.sleep(0.5) else success = true break end end return success end end return robot То, что надо! Ща затестим... Изменено 7 июня, 2015 пользователем Doob Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 748 Опубликовано: 9 июня, 2015 А вообще, слипы помогают, особенно если перезапустить майн, а лучше в конфиге на все действия сделать задержки подольше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ivan52945 75 Опубликовано: 11 июня, 2015 надо ОЗУ больше (помню эту проблему, и как над ней с тоторо мучались) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах