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

artem211

Пользователи
  • Публикации

    109
  • Зарегистрирован

  • Посещение

  • Победитель дней

    4

Сообщения, опубликованные пользователем artem211


  1. Ну при использовании геосканера - возможно. Когда будете тестировать, советую делать это в своей сборке с модом x-ray, очень наглядно...
    лень сборку отдельную делать,лазер и креативка мне помогут. Или стекло и искусственные жилы

    )


  2. А, понял, надо распознавать жилы/не жилы и бегать только по жилам. Это спорт такой, или есть практическое применение? Как по мне, тупая копалка туннелей с выжиранием встреченных жил намного эффективней и проще.

    Нет не спорт, просто эффективный карьер с геосканером и мозгами, который будет копать все в заданном объёме, а не делать туннель бессмысленный и беспощадный) а вообще разрабатываемый алгоритм будет универсальным, хочешь туннель, хочешь шахта, а хочешь огромный плоский пласт от 0 до 20 уровня не останется ни блока руды. По мне - так туннель и рядом не стоит по эффективности


  3. В ComputerCraft есть библиотеки GPS и Vector, можно перенести на OpenComputers, поставить навигационные вышки на микроконтроллерах, конвертировать относительные координаты в абсолютные и гонять робота между ближайшими необходимыми блоками и будет не важно, находятся они в одной жиле или в разных.

    Шучу, конечно, можно работать и с относительными координатами, нужен только цикл поиска ближайших блоков и беганья по векторам.

     

    Именно потому, что есть разница гонять робота по каждому блоку руды или по очереди выбирая жилы я и задал вопрос, не было бы разницы гонял бы тупо циклом по всем блокам плотностью больше 2.5, вот только при этом будет прорыт миллион ненужных ходов в кобле


  4. Когда подготовлю ВСЕ звуки для ИТ, и для телепорта, и для  банков, и трынделки и прочее, что даже нового игрока на ИТ можно будет встречать голосовым приветствием, запихаю их в assets.zip  и поправлю sound.json  

     

    Библиотека большая, более 200 Мб, и не хочется ее 100 раз дергать, чтобы игроки ее перекачивали. Отдельным sound паком делать не хочу, так как большинство игроков  или не юзает паки вообще и понятия про них не имеет, или юзают свои, и команда /playsound просто напросто ничего игроку не проиграет, если звук жестко не зашит в клиент.

     

    Вот звук ТП, который планирую прикрутить:  https://yadi.sk/d/YyLOqWtVhLHGe

    Также на игрока будет накладываться на 5-7 сек. дебаф тошноты (головокружение) после телепортационного броска. Это в плане стоит.

    лучше на 3-5сек )) а то просто раздражать будет. Крутой сказал они починили компутроникс, просит вернуть ) прикрутить можно будет музычку к тп станциям )


  5.   Простите что опять без картинок и проч красивостей(ну не умею я) да и пост сугубо по делу, а не развлеченья для.

     

    Так вот, уже второй вечер пытаюсь измыслить новый тип геомайнера, использующего geolyzer.scan(), майнера под geolyzer.analyze()  - уже написал и отладил, пользуюсь, не выкладывал, т.к. народ не считает карьер "1 через 2" с использованием геолайзера оправданным. 

     

    К делу: задумал разбивать указанный карьер(ширина,длинна) на кластеры(чанки) 20х20х20(вроде у геолайзера по горизонтали помех нет, потому границы по горизонтали можно так не ограничивать, но это потом решать буду).

     

    В общем имеем заданный кластер объемом 20х20х20 блоков, просвеченный геолайзером на предмет руд, по сути имеем 3д массив(может проще будет обычный тейбл с 3 координатами в ячейке, опять же не суть) в данном объеме есть некоторое количество рудных жил, например 5, кататься в цикле к каждому блоку в слое - не рационально вообще никак, будет бегать от одной жилы к другой.

     

    Посему хочу придумать сущность "жила", не могу додуматься, по какому алгоритму определить из всего массива блоки руды в "жилу", для передачи ее роботу на выкапывание. 

     

    Получается нужно побить массив рудных блоков на несколько групп, в данном случае на 5. Какой избрать алгоритм? Проверить все рудные блоки между собой и все, на расстоянии 0 блоков друг от друга определить в одну жилу? При проверке первый же блок руды кидать в подмассив "жила номер раз" с указанием 3 координат, каждый следующий блок сравнивать по координатам со всеми блоками в во всех жилах, разница соответствующих координат с которыми равна 1  - приписывать найденный блок к этой жиле...хмм может сработать.

     

    Есть идеи? Может свой вариант?

     

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


  6. Приветствую. Добрался в изучении ОС и до баз данных, пока нет возможности сделать АЕ, вот решил поинтересоваться что они могут, просмотрел офф вики(в первоисточнике), вычитал все функции, но понял только, что данный апгрейд, ничего кроме информации о предмете не хранит, это не волшебная ячейка АЕ, в которую можно пихнуть стак железа, а только блокнотик, где можно зарисовать иконку железяки и все ее свойства. Внимание вопрос, какие видите перспективы применения данной детальки? Я пока только 1 придумал, хранить схемы для например реакторов ИК, ну или список "мусора" при копании, с которым сверяться.

    http://ocdoc.cil.li/component:database 


  7. Зато универсально, мне большего и не надо.

    универсально - это когда можно легко менять то или иное условие программы, у тебя же жестко заданы границы и чтоб их поменять придется лезть в код

    Зато универсально, мне большего и не надо.

    не говоря о том что встань на пути игрок или корова или зомби - привет твоей ферме


  8. И зачем так сложно? Не проще либу стандартную написать? и вызывать также require("liba")

    local API = {}

     

    function API.hello()

     print("Hello!")

    end

     

    API.var1 = 12345324

    API.var2 = true

    API.var3 = "aasdp"

    ...

    ...

    ...

    return API


  9. День добрый/утро/вечер/ночь. 

    Пишу свою библиотеку API для робота(фермер/копатель/проч).

    Поскольку апи перемещений по координатам/обход плоскости и проч подходят как для фермера, так и для майнера(и еще чего нибудь), было решено унифицировать эти функции путем передачи в качестве аргумента собственно функции действия(копание, собирательство). Выглядит примерно следующим образом:

     

    function dig(arg)

      ...

      robot.swing()

      ...

    end

     

     

    function move(action, arg)

      ...

      robot.forward()

      action(arg)

      ...

    end

     

    move(dig, 3)

     

    Если выглядит именно так - то работает без проблем, функция спокойно передается одна в другую в качестве аргумента и вызывается оттуда.

    Те кто писал библиотеки для ОС, именно библиотеки, знают, что реализуются они так:

     

    local api={}

    ...

    function api.dig()

    ...

    end

    function api.move()

    ...

    end

     

    return api

     

    При такой форме записи столкнулся с проблемой, в интерпретаторе(где проверяю апи) подключаю свою либу:

    a=require("api")

    Далее вызываю a.move(dig, 3)

    Интерпретатор ругается на то, что аргумент - нил в точке его использования в функции move(). Вероятно интерпретатор не понимает аргумента, причем вызвать просто a.dig(3) работает штатно.

    Я новичок в луа и уж тем более в написании библ, подскажите что делаю неверно? как правильно передать аргументом функцию, чтоб она работала?


  10. Думаю pim  ограничивать нельзя, но есть смысл обязать игроков кто из юзает делать заборчик по периметру привата. А то можно просто поле сделать в раздвигающейся землей поближе к спавну и обкрадывать.

    думаю прост надо крафт чуть дороже )


  11. Кое какие вещи уже начал писать Леший, у меня постоянно куча предложений и советов, вот решил оформить.

     

    Система охраны дома/базы/сарая на ОС(без дополнений) делится, по моему мнению, на 4 блока:

     

    1. Мониторинговая система - Голографическая обновляемая карта окружающей местности с указанием точек наблюдейния/активной обороны, сопряженная с детектором жизненых форм(обновление в реальном времени), отображение всех ЖФ на карте.

          Ведение логов времени приближения к охраняемому периметру игроков, с указанием ников и длительности пребывания. Возможно в будущем логировать и их перемещения(дабы просмотреть голограмму-запись). Оповещение владельца в случае приближения нежелательных субьектов(черный список), друзей(белый список) на планшет либо как то иначе(в случае отсутствия на базе.

         Для мониторинговой системы предусмотрено 4 режима работы: а) обновление голокарты раз в 20 сек, при отсутствии любых ЖФ. б) обновление раз в 5 сек, при наличии в зоне ответственности неигровых персонажей. в) обновление 1 раз в секунду при появлении игровых персоналий. Также при отсутствии на базе хозяев - отключение карты, дисплеев, доп оборудования(для экономии ресурсов/энергии)

    2.  

           Общая система доступа на ОО(Охраняемый Объект) - коридор с тамбуром и шлюзовой камерой(2-х возможно 3-х дверная система на поршнях(либо роботы с соотв, апгрейдами)). Сенсоры перед внешними дверьми - пропускают только игроков, сенсоры перед первыми внутренними дверьми - пропускают игроков строго по 1 в шлюзовую камеру(в случае 2 игроков, игрока и моба и т.п. - первые внутренние двери не будут закрыты, процесс прохождения контроля не продолжится, пока не будут выполнены условия(возможно инфо панель/монитор для пояснения)). Между внутренним(со стороны базы) и средним(тамбурным) шлюзами хопперы/роботы и сенсоры проверки личности для пропуска на базу. В случае, если гость нежелателен - включить систему стерилизации тамбура, с последующим сбором останков.

    3.  

           Охранная система базы(внешний периметр), в случае приближения к границам периметра персонажей из черного списка включается лазерное ограждение(голограмма), при пересечении обозначенных границ - включение систем обороны(роботы/теслы/комбинир.) Отключение мануально - через сервер-диспетчер либо предварительными настройками поведения системы(например не включать активную оборону, если на базе хозяин и т.д.)

    4.  

         Охранная система базы(внутренние помещения) по всему объему доступных для перемещения игрока пространств будет зона агрессивной защиты - теслы/роботы/проч, за исключением безопасной зоны(вокруг кровати, если не отключат /home, а также возможно торговой/гостевой территории). Включение автоматическое, через 20 сек, отсутствия хозяев, отключается система автоматически, либо мануально. По базе в ключевых точках сенсоры, для определения "все ли дома?" и не пора ли встать на боевое дежурство.

       

      На данный момент мыслей больше нет, пора думать об исполнении. Дополнения, рекомендации, критику, пожалуйста в студию.



       

       

    • Нравится 2

  12. Да, салат берега утратил, решил обкопать меня со всех сторон дырки найти

     

     

    Ну фиг его знает, весь приват обрыли, как понять. Пусть там роют))) А что они искали? Подземный вход в приват типа?=)


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

    Алекс ты хоть внимательно читаешь когда "остапа понесло" ? Я написал "ОБРЫЛИ", вокруг, просто намусорили на карте, мое все цело и невредимо


  14. К сути вопроса. Роботы в чужих приватах можно как то без рук оставить? В том смысле что прекратить эту лабуду с кражами. Мне то ладно, я с головой к строительству базы подошел, но даже меня достали имбицилы, обрыли мой приват до бедрока скоты, всю территорию засрали, осадок отвратительный.


  15. Отлично. Нужная программа. Так как никто и ничто в майнкрафт кроме человека, ну и естественно робота, не сможет точно контролировать состояние стержней. 

     

    Но надо оптимизировать немного код.  Библиотеки, скорее всего не следует каждый раз вызывать всей кучей в циклах.  Их достаточно один раз подключить (получить указатель на них), то есть запись

     

    while true do
       require('robot').forward()
    end
    скорее всего не оптимальная. Библиотека math и так уже подключена по умолчанию в Луа. Ну и очень много лишних телодвижений и циклов. Каждые 10 секунд робот проверяет, как я понял, все, зарядку, слоты, есть ли запас урана в коробке под задницей АЕ-шки, состояние стежней в камере реактора и т.д.  

     

    Там же они горят часа 2 минимум. Зачем так часто там гонять циклы. Понятно, что там работа с 4-мя слотами и измерение энергии своей, вроде мелочь, но просто не рационально, тем более, что он никуда инфу не шлет пока на внешние отображалки. Если сделаешь диспетчерскую, тогда да, раз в 10-20 секунд можно там гетить все и проверять, принтить на большие экраны состояние стержней в % износа полосочками прогрессбара и прочее. 

     

    Но в целом отлично, что сделал робота-ядерщика и применил АПИ продвинутое по контролю внешнего инвентаря, слотов и демеджа айтемов.

    Не совсем так. Каждые 10 сек он проверяет только 2 условия - отработан ли стержень в 1 слоте реактора и не упал ли заряд ниже половины. Все прочие действия циклы и прочее отсекаются этими двумя условиями и никаких лишних циклов и библиотек не вызывается, пока не наступит момент действовать, об этом я подумал.

  16. Приверженность к независимым от погоды источникам энергии и природная тяга к автоматизации и надежности сподвигли меня, на автоматизированное обслуживание атомных реакторов, коих имею 4 энергоблока(!), плясать вокруг каждого в резине на голое тело - не айс. 

    В ОС я новичок, до этого кодил в майнкрафте только в СС, в реальности привык к жестко-типизированному C#, так что нюансы луа даются не просто. 

     

    Итак общая задача такая - исключить игрока из схемы "склад-реактор".

    По пунктам:

    1. Выбор однородного топливного комплекта(уран/МОХ) для жидкостного реактора(далее реактор)

    2. Отслеживание выработки текущей топливной закладки в реакторе.

    3. Своевременное отключение реактора, изъятие отработанного топлива, закладка свежих стержней в заданной конфигурации.

    4. Постоянное самостоятельное дежурство у реактора(ов), автозарядка, недопущение ошибок конфигураций закладок стержней.

    5. Конвеерное получение оружейного плутония в коварных целях и обеспечение базы электроэнергией.

     

    На данный момент программа в длительном бета-тесте уже почти 20 часов(уран вырабатывается 10 000 секунд, МОХ 5 000 секунд).

    Чего удалось достичь:

    - отсутствие привязки к таймеру(процесс завязан на реальное состояние топлива в реакторе),

    - проверка и подборка цельных комплектов подходящего топлива(система не всегда готова поставить нужное топливо)

    - на данный момент робот принимает только подходящие под мою реакторную схему "двушки" и "четверки" стержней урановых либо МОХ. 180520150ab536f0a4.png

    - автономность работы(автоматический контроль уровня заряда в батареях робота, посредством блока зарядника)

    1805201550daa62998.png

    - своевременное обслуживание реактора, практически безостановочная подача электроэнергии в сеть

    - адаптивность(программу можно запускать на любом этапе работы реактора и продолжит ее с нужного шага)

    Чего пока не получилось/не успелось, но что в перспективе хочется видеть в программе:

    - программу-конфигуратор с ГУИ и сенсорными кнопками, для настройки схемы реактора, количества, конфигурации и типа топливной закладки(вероятно на управляющем компьютере)

    - централизованный менеджмент(сервер) для контроля "Уранитов", оценки состояния системы, корректировки схем топливных закладок "на лету"

    - взаимодействие с АЕ сетью напрямую(на данный момент робот получает топливо и сбрасывает отработку через преднастроенный МЕ Интерфейс) 18052015010bfa1290.png

     

    В общем выглядит так: 18052015daf4eae897.png

    Робот лицом к люку реактора, под ним интерфейс МЕ сети, с одной стороны зарядник, с другой можно рычаг поставить, если не нравится сверху. С какой стороны что стоит можно указать в самом начале программы, далее все управление параметризовано, исходя из настроек charge_side(с какой стороны зарядник), switch_side(с какой стороны рычаг), остальные параметры типа reac_side и fuel_side на данный момент не используются или почти не используются, задел на перспективу.

     

    Паст программы http://pastebin.com/4RN9s0Aa

     

    П.С.

    Прошу прощения за "топорное" изложение. 

    Идет Бета-тест первой версии "уранита".

    Не умею расставлять "спойлеры" и прочее, на форумах не помню когда когда постил последний раз.

    Прошу конструктивной критики и советов.

    П.П.С

    Самоуверенно считаю это "кандидатской" на статус программиста.

    • Нравится 6
×
×
  • Создать...