artem211 428 Опубликовано: 2 августа, 2015 Однако, здравствуйте! Созрел я для постинга своей робо-либы. Главной целью которой является накопление моих алгоритмов/программ в 1 месте и простое их использование. Самая главная и полезная часть моей библиотеки - Геокопалка. Итак, на данный момент из медиаинформации имеется "Минимальная рекомендуемая конфигурация робота для геокарьера": Рекомендованный билд для т2 робота Итак главное: геолайзер генератор инвентори контроллер инвентарь монитор клавиатура апгрейд контейнер т1 апгрейд контейнер т3 интернет карта видеокарта т1 еепром с луа биос жесткий диск т1 с OpenOS процессор т2 2 планки оперативной памяти т2 Рекомендованный билд для т3 робота Инструменты для т2 запуска Инструменты для т3 запуска Итак. Тестирование закончено. Работает стабильно. Для работы необходимо - за спиной робота вместилище для руды, в руки роботу бур, в съемный т3 слот - чанклоадер, в съемный т1 слот - Ховер апгрейд, в карман сачек. Программа не даст запустить копалку без наличия всех компонентов вышеописанных(кроме ховера, если не положите его и ваш робот повиснет в каком нибудь ущелье/пещере - чтож вы сами себе злобные буратины). В случае переполнения сундука для руды - робот будет ждать пока место не освободится и напишет об этом. В случае если кирка дойдет до 30% прочности - робот вернется и будет в сундуке искать инструмент(кирки, буры). В случае если робот был с буром и заряд просел ниже 30% робот вернется и будет искать зарядник слева от направления старта. Пока бур не будет заряжен, робот не двинется с места. В случае просадки уровня топлива робота ниже 90% робот съест что либо горючее из карманов, либо, если он у сундука - просканирует его на наличие топлива. Карьер может быть безразмерным(вплоть до 1000х1000 чего я вам крайне не рекомендую, генератор робота не справляется с его потреблением и в конце концов он встанет) для т2 робота, конфиг которого указан выше - рекомендуемые параметры карьера 32х32х44(запуск с глубины 44 среднее время работы 58 минут), для т3 робота рекомендую 64х64х44. Алгоритм копания следующий, начинает с проверки уровня бедрока(топорно, но точно), робот начиная с высоты старта сканирует кластер заданной площади(не более 32х32) впереди и справа от себя высотой 21 блок(над собой 10 слоев блоков, 1 слой на котором стоит и 10 слоев под собой), просканировав и обобрав кластер он спускается ниже и повторяет и так до бедрока, в бедрок не спускается, роет все что выступает над ним. Ульи каменные(удружил экстра бис) он сносит сачком(позже добавлю использование лазера), сачек лучше держать целым, его прочность он не проверяет(тоже стоит поправить это). При заполненности инвентаря 90%+ возвращается к старту, скидывает добро в сундук и возвращается к работе. Роет сначала целиковыми столбами площади 32х32, потом остатки(если заданы не кратные 32 границы) При встрече с мобами - выпотрошит, мне как то раз привез кучу пороха и 2 лука. Имеет нюх на сокровищницы и иногда вагонетки(привозит иридий да-да!) мусор выкидывает на пол по мере заполненения инвентаря. По окончании работы будет выведено сальдо по добытой руде и общий пробег в блоках, информация чисто статистический интерес представляет. Вобщем при аккуратном использовании копалки(робот на старте всегда со 100% заряда, бур/кирка полностью целый, сачек более 80% прочности) - вы за час имеете ресов на развитие, за ночь/день вы богаты и вам больше ничего не надо, рекомендую сначала несколько раз пробные небольшие карьеры запускать, потом, когда поймете динамику потребления расходником - сами решите какой карьер вам удобнее(для справки карьер 64х64х44 тратит около 75к еу в иридиевом буре в режиме удачи, карьер 128х128х14 тратит 197к+ в иридиевом буре в режиме удачи) Ссылка на лаунчер http://pastebin.com/vApEBQdf чтоб получить программу скопируй то что под спойлером и запусти в роботе. После скачивания - останется только набрать "mine" и поехали. pastebin get -f vApEBQdf mine.lua вся либа 1200+ строк http://pastebin.com/gqZ1Qdqi Альтернативные версии: Форк от @Doob (kopalka v 0.5): http://pastebin.com/DrQ1VG7x [описание] Версия копалки 0.3: http://pastebin.com/fDXkDmRE [описание] Форк от @vx13: http://pastebin.com/xu7Pcj26 [описание] 12 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Sharplook 293 Опубликовано: 2 августа, 2015 Ссылка на библиотеку, знающие могут юзать напрямую функция api.mine(x,z) Скрытый текст pastebin get -f vApEBQdf mine.lua Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 2 августа, 2015 endendendendend Пойми что к чему. Лучше в спойлеры не ложи код. Ссылка на библиотеку, знающие могут юзать напрямую функция api.mine(x,z) Скрытый текст pastebin get -f vApEBQdf mine.lua По той ссылке гулять потом - это же установщик, а хотелось бы сразу прямую http:/pastebin.com/... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
artem211 Автор темы 428 Опубликовано: 2 августа, 2015 end end end end end Пойми что к чему. Лучше в спойлеры не ложи код. По той ссылке гулять потом - это же установщик, а хотелось бы сразу прямую http:/pastebin.com/... я переписал и переформатировал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 2 августа, 2015 К ссылке на pastebin добавь еще - http://pastebin.com/gqZ1Qdqi. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
artem211 Автор темы 428 Опубликовано: 2 августа, 2015 К ссылке на pastebin добавь еще - http://pastebin.com/gqZ1Qdqi. уже. Все как просили Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
cyber01 1 704 Опубликовано: 2 августа, 2015 Похоже неправильная проверка на наличие либы... после старта пишу mine 32 32 снова качает либу и снова пишет указать данные и так бесконечно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
artem211 Автор темы 428 Опубликовано: 2 августа, 2015 Похоже неправильная проверка на наличие либы... после старта пишу mine 32 32 снова качает либу и снова пишет указать данные и так бесконечно ща поправлю, на коленке написал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
cyber01 1 704 Опубликовано: 2 августа, 2015 После замены lib\api.lua на lib/api.lua не перекачивает, но и не стартует (просит снова указать параметры) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
artem211 Автор темы 428 Опубликовано: 2 августа, 2015 После замены lib\api.lua на lib/api.lua не перекачивает, но и не стартует (просит снова указать параметры) Исправил вроде проблемы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
cyber01 1 704 Опубликовано: 2 августа, 2015 Недокопал, но уже нравится http://puu.sh/jmqHl/1749d8f56b.png Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 2 августа, 2015 Дождались!! Можно, наконец, бросать в топку рекурсивов и плодить геодиггеров. Тему, кстати, закрепил. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Krutoy 1 169 Опубликовано: 2 августа, 2015 (изменено) А когда будет бесконечная работа без участия пользователя "поставил-и-забыл" ? Изменено 2 августа, 2015 пользователем Krutoy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 2 августа, 2015 А когда будет бесконечная работа без участия пользователя "поставил-и-забыл" ?Когда Артём накопает на кучу чанклоадеров. =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov 34 Опубликовано: 2 августа, 2015 А если я абгрейд опыта суну, норм? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
artem211 Автор темы 428 Опубликовано: 2 августа, 2015 А если я абгрейд опыта суну, норм? Смысла нет, не помню зед или файндер проверили, разница копания без опыта 32х32х44 и с опытом 30 лвл 32х32х44 - всего около 5 минут, тоесть 57 и 52 минуты соответственно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 2 августа, 2015 (изменено) Если баги не нашел, займись уменьшением количества кода, не теряя функционала, то есть рефакторинг. 1200 строк, я думаю там можно будет найти код который можно заменить более компактной версией. Оптимизацией тоже займись, я таких строк "inv = require("component").inventory_controller" уже 3 нашел. Я тут проверил, если вместо require везде вставить код его checkArg(1, module, "string") if loaded[module] ~= nil then return loaded[module] elseif not loading[module] then loading[module] = true local loader, value, errorMsg = nil, nil, {"module '" .. module .. "' not found:"} for i = 1, #package.searchers do -- the pcall is mostly for out of memory errors local ok, f, extra = pcall(package.searchers[i], module) if not ok then table.insert(errorMsg, "\t" .. f) elseif f and type(f) ~= "string" then loader = f value = extra break elseif f then table.insert(errorMsg, f) end end if loader then local success, result = pcall(loader, module, value) loading[module] = false if not success then error(result, 2) end if result then loaded[module] = result elseif not loaded[module] then loaded[module] = true end return loaded[module] else loading[module] = false error(table.concat(errorMsg, "\n"), 2) end else error("already loading: " .. module, 2) end получиться - 3991 строк. Теперь прикинь сколько лишних операции. 75 require, да.. тут нужно рефакторингом заниматься, жестким. Изменено 2 августа, 2015 пользователем Fingercomp Добавил спойлеры для удобного чтения =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 2 августа, 2015 "Стань Миллионером" А что делать если я хочу стать миллиардером? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 2 августа, 2015 А что делать если я хочу стать миллиардером? в openttd играй. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
artem211 Автор темы 428 Опубликовано: 2 августа, 2015 Если баги не нашел, займись уменьшением количества кода, не теряя функционала, то есть рефакторинг. 1200 строк, я думаю там можно будет найти код который можно заменить более компактной версией. Оптимизацией тоже займись, я таких строк "inv = require("component").inventory_controller" уже 3 нашел. Я тут проверил, если вместо require везде вставить код его checkArg(1, module, "string") if loaded[module] ~= nil then return loaded[module] elseif not loading[module] then loading[module] = true local loader, value, errorMsg = nil, nil, {"module '" .. module .. "' not found:"} for i = 1, #package.searchers do -- the pcall is mostly for out of memory errors local ok, f, extra = pcall(package.searchers[i], module) if not ok then table.insert(errorMsg, "\t" .. f) elseif f and type(f) ~= "string" then loader = f value = extra break elseif f then table.insert(errorMsg, f) end end if loader then local success, result = pcall(loader, module, value) loading[module] = false if not success then error(result, 2) end if result then loaded[module] = result elseif not loaded[module] then loaded[module] = true end return loaded[module] else loading[module] = false error(table.concat(errorMsg, "\n"), 2) end else error("already loading: " .. module, 2) end получиться - 3991 строк. Теперь прикинь сколько лишних операции. 75 require, да.. тут нужно рефакторингом заниматься, жестким. Бесспорно рефакторинг нужен. По сути это первый исправный билд, нужно еще несколько фич прикрутить и отладить. А насчет строк - в либе ведь далеко не все для копалки))) там и ферма и пара утилитарных заклинаний и слоеный карьер есть и отладочная муть)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах