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

NEO

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

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

  • Посещение

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

    78

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


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

     

    А чем тебе АРМА не угодила? На Намальске можно бегать, стрелять, строить схроны, базы, опять же зомби, кровососы, выбросы всякие...

     

    Копать руду можно? строить бункер? віращивать ферму? крафтить патроні, винтовки, автоматі, бронь?

    Народ такого требует, крафта, ферм и бункеров


  2. Нет, почему. Можно. Никто не запрещает.

    • С помощью мода.
    • С помощью мода — аддона для OpenComputers, который позволял бы осуществлять такое (пока такого нет, к слову).

    Но не средствами одного OpenComputers.

    Про это речь и шла, в вопросе не было условий на создание модификаций


  3. Не сказал бы, что майн не кривой и что он совсем не требует мощное железо. Видимо из-за того, что он такой нетребовательный игроки на калькуляторах не могут играть даже в легкую версию сборки

    ну калькуляторы на том и созданы что бы быть калькуляторами, а не эвм с миллиардами тактов, 7 дней что бы умереть, что бы вы знали лагает на топ железе 1080ti и проце i7 и ддр3, а еще майн кроссплатформенный, не нужна лицензия и тд

     

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

    7 дней что бы умереть - довольно требовательная, в ней возможно можно было бы строить поселения и выживать, но скорее всего будет как майн, потому зачем она? поставьте всем знакомый майн с уже знакомыми модами и плагинами и не морочьтесь. Можно апнуть версию майна до 1.12

    • Нравится 1

  4. майн единственная игра, кроме ММО, шутеров с рпг в которой мультиплеер играбельный, факторио через пару дней залагает от десятков тысяч манипуляторов и других машин, тем более практически все игры кроме майна требуют мощное железо, из-за кривого движка или криворуких разрабов.

    • Нравится 2

  5. Справедливости ради, спамом можно обрушить любую сеть в Майнкрафте.

    справедливости ради, обычную вайфайку спамом не сломать

    Zn слишком дырявая и не проработанная


  6. Подскажите в чем я ошибся в своих измышизмах? Мне надо что бы, например, если закончилась зарядка, робот прервал цикл, затем поехал заряжаться, после зарядки возобновил основной цикл.

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

    • Нравится 2

  7. ....

    Согласен, 100%, я её написал за пару часов, а так её нужно еще писать и писать, оформлять, правильные названия дать.

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


  8. Точно. Сам не знаю, куда смотрел.

    На самом деле можно много чего ускорить, разного рода получение информации, понятно что родные действия не исправить, но чаще всего робот использует инвентарь - каким можно запоминать действия в памяти, сокращая обращения к родным функция, но тут уже требуется обкатка временем, много всяких особенностей. Есть сложные варианты, например воронка, она изымает из робота без его ведома, надо думать. Главное ориентироваться на сокращение родных вызовов. Первое что приходит в голову - это считать последний айтем в инвентаре потенциальным, но тут нужно сделать отдельный режим "извлечения из вне", ибо такой режим увеличивает время на работу с инвентарём.


  9.  

     

    Можешь пояснить, что обрабатывается в перехваченных proxy.dropIntoSlot и proxy.suckFromSlot?

    Какой инвентарь анализируется в этом участке кода? Вряд ли инвентарь робота, т.к. номер слота в данном случае не имеет к нему отношения. И вряд ли какой-либо внешний инвентарь, т.к. не учитывается сторона, с которой находится инвентарь.

     

    А ещё интересно узнать, почему ты отказался от проверки count==nil и результатов, возвращаемых оригинальными proxy.dropIntoSlot и proxy.suckFromSlot. Разве такой отказ не может привести к рассинхронизации кэша?

     

    Да, производит, я указал что функции не обкатанные, count == nil как раз обрабатывается, нужно только перед этим выполнить родную функции и по успешному результату - удалить из кэша.

    • Нравится 1

  10. Хаюшки всем кто читает this тему.

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

     

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

    Библиотека очень сырая, ей требуется доработок. Была написана за пару часов.

    Список функций.

    init([advancedMode: boolean]): nil - инициализирует библиотеку, опционально можно включить замену dropIntoSlot, suckFromSlot.
    free(): nil - удаляет callbacks с прослушки событий.
    scan():nil - сканирует полностью весь инвентарь.
    addPotentialSlot(slot:number): nil - добавляет в очередь потенциальный слот.
    removePotentialSlot(slot:number): nil - находит и удаляет слот из очереди.
    isPotetial(slot:number): nil - проверяет, находится-ли слот в очереди.
    update(): nil - сканирует слоты из очереди и заносит в кэш, вызов updateSlot для всей очереди.
    updateSlot(slot:number): nil - сканирует слот и заносит в кэш.
    getSlot(slot:number): table or nil - извлекает информацию о слоте из кэша.
    setSlot(slot:number, item:table): nil - устанавливает информацию о слоте, функция для внутреннего использования.
    requestInventorySize(): nil - сканирует размер инвентаря и обновляет информацию для кэша.
    getInventorySize(): number - получает закэшированный размер инвентаря.
    
    

    Остальные функции полностью служебные, обо всех багах или предложениях сообщать сюда.

    P.S

    Надеюсь она будет полезной как я предполагаю.

     

    Ссылка на исходный код: https://github.com/Avaja/OpenComputers/blob/master/cache.lua

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