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

Asior

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

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

  • Посещение

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

    70

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


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

    Nqy4T5I.png

    Как видно из картинок это приближенное размещение. Дистанция между кругами может быть разной. Но главное, что в 1 круге всегда 8 точек координаты которых необходимо получить, во втором 24, и так далее (48, 81 ...). Обратите внимание, что координаты центральной точки уже известны. Для удобства пусть будут (0; 0).
    Я конечно как-то не особо внятно сформулировал задачу, но как-то не пойму как точнее сформулировать задание.


  2. 5 часов назад, BrightYC сказал:

    разрядиться до 1000 единиц - он вернётся на базу

    Лучше не 1000, а рассчитывать в процентах. Например 10 %. Кто его знает как там накрутили в конфигах все. Не помню точно но вроде как в стандартных конфигах у дрона 2000 энергии.

    А так программа замечательная. Правда вся проблема в нехватке инвентаря ...


  3. Для тех у кого нету инета или жалко ~350 Мб выкладываю компактную сборку на 40 Мб все с той же картой.

    Содержит только: Моды, конфигурацию к модам, карту

    Самого майна в архиве нету!

    Инструкции в архиве. Удачного взлома.

    СКАЧАТЬ 

    • Нравится 1
    • Спасибо 1

  4. Прошел этот квест, нашел 1 уязвимость, (остальные хз как найти). Это было довольно занимательно, тут и пеленг, и статистика, и жесткий хакинг. Но есть некоторые минусы.

    • Для начала userAdd в одиночке не работает. Рекомендую заменить его закоротив в файле init.lua автозапуск, а если попытаются отрубить прогу, уводить комп в ребут с последующим запуском клиентов.
    • Добавить необходимо изменение разрешения экранов, а то после отключения проги приходится выставлять своё
    • Зачем весь клиент то выкладывать? Достаточно только папки с модами, папки с конфигами, папки с картой и файлом подсказки чего куда лепить, а там уже тот кто решил пройти его, сам разберется как ему чего включать, чего докачать, и через что запускать. Антивирус у @kcalBxoF верно орал, там же TLauncher лежит.
    • Зачем столько модов то? Я конечно понимаю, каждый играет на том, что душе приятнее, но для карты достаточно только OpenSecurity, industrialcraft_2, OpenComputers_MC1.7.10, OpenPrinter. Все. Остальное я по всей карте не отыскал.
    • Чего такая тяжелая карта? 40 Мб на 5 домиков... можно и оптимизировать.

    А так, мне все понравилось, замечательная разминка для мозгов.

    P.s. Судя по коду, ты на чем-то еще умеешь кодить, так как ну не может новичок применять кое какие специфические конструкции, тут чувствуется опыт работы на каких-то других языках. 


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

    Для начала надо вытащить из файла ник игрока. Не очень люблю такие страшные конструкции

    3 часа назад, MisterFunny01 сказал:

    player = “MisterFunny01”

    Больше предпочитаю построчно считать и все. Но надо так надо. Смотрим справку на функцию:

    string.sub (s, i [, j])
    Возвращает подстроку s, которая начинается от i и продолжается до j; i и j могут быть отрицательными. 
    Если j отсутствует, то он считается равным -1 (что то же самое, что и длина строки). В частности, 
    вызов string.sub(s,1,j) возвратит начало строки s длиной j, а string.sub(s, -i) возвратит окончание 
    строки s длиной i. Если, после преобразования отрицательных индексов, i становится меньше 1, он 
    корректируется до 1. Если j больше длины строки, он корректируется до этой длины. Если, после этих 
    исправлений, i стал больше j, функция возвратит пустую строку.
    
    string.find (s, pattern [, init [, plain]])
    Разыскивает первое совпадение с шаблоном pattern в строке s. Если совпадение найдено, то find 
    возвращает индексы строки s, где место этого совпадения началось и закончилось; в противном 
    случае, она возвращает значение nil. Третий, необязательный аргумент init определяет место, откуда 
    нужно начинать поиск; его значение по умолчанию равно 1 и может быть отрицательным. Значение true 
    в качестве четвертого, дополнительного аргумента plain отключает возможности поиска совпадения с 
    шаблоном, так что функция делает простую операцию "поиска подстроки", как если бы в pattern не было 
    символов, считающихся магическими. Обратите внимание, что если задан аргумент plain, то аргумент init 
    также должен быть задан.
    
    string.len (s)
    Принимает строку и возвращает её длину. Пустая строка "" имеет длину 0. Вложенные нули считаются, 
    так что длина строки "a\000bc\000" равна 5. 

    Это все что нам надо!
    Добавим немного магии, и получим следующий код

    local file = io.open('config.txt', 'r') --открыть файл конфигурации
    local a = file:read() --считать 1 строчку
    a = string.sub(a, string.find(a, '"')+1, string.len(a)-1) --порезать и выкинуть лишнее, обновить данные
    file:close() --закрыть конфигурацию

    На выходе в получаем только твой ник. Первая часть решена. Поехали дальше.
     

    3 часа назад, MisterFunny01 сказал:

    допустим event.pull(“touch”, 1, 1, и тут надо вставить player из конфига

    Я это не понимаю но похоже это сделано для проверки ника того кто нажал на экран.
    Тут все в разы проще, отлавливаем данные нажатия в массив и потом проверяем их из массива с данными.

    b = {event.pull('touch')}
    if b[6] == a then
      print('Нажатие разрешено!')
    else
      print('Ты кто такой еще?')
    end

    Как-то так. Конечно вариант предложенный ECS мне больше по душе, но почему бы и не попробовать сделать как-то иначе?

    • Нравится 3

  6. 9 часов назад, BrightYC сказал:

    (Или всё сложнее? Я бегло пробежался по программе

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

    Но программа офигенная!

    • Нравится 1

  7. 4 минуты назад, RAPD123 сказал:

    Как можно убрать числа после точки?

    Вообще это лечится 2 способами:

    • Перевод в другой тип данных tonumber(x) tostring(x)
    • Путем округления в большую или меньшую сторону math.ceil(x) math.floor(x)
    • Путем обрезания лишних частей (лень искать, сам найдешь)
    2 минуты назад, RAPD123 сказал:

    Я когда нибудь реализую это. Пока что немного лень)

    Чего там реализовывать то? Пару условий да готово.


  8. Неплохо! Для робота можно информации чуть больше выводить, например объем инвентаря, его заряд. Ну и можно добавить информацию по количеству свободных компонентов, чтобы не получать перегрузку и экран смерти.

    2 минуты назад, BrightYC сказал:

    Всё же вроде просто:
    print("Всего ОЗУ:", computer.totalMemory() / 1000)
    print("Свободно ОЗУ:", computer.freeMemory() / 1000)

    Мат часть подучи, не 1000 а 1024


  9. 7 часов назад, mercurial сказал:

    Asior мне очень важно, чтобы график рисовался при включении программы, не важно сколько было бы в бочке предметов, он брал начальное значение за середину этого графика. И желательно чтобы график был таким как на картинке, т.е. линиями, а не столбиками :) Ты можешь объяснить как это сделать или просто переделать?

    Начну по порядку.

    Нужно чтобы график брал за середину то значение, что есть в бочке. Да такое возможно, но только ошибок при таком выводе будет море и график будет скособоченный, тоесть со смещением вверх. Это выглядеть будет во первых некрасиво, во вторых при опускании графика ниже начнутся ошибки, можно конечно все это обработать и исключить, но увы мне лень.

    Желательно чтобы график был как на картинке? Я взялся за эту работу так как видел уже готовую библиотеку графиков. Мне хотелось самому научиться работать с ней и вообще посмотреть пощупать, как это все работает. Я для себя задачу выполнил, разобрался что да как работает, как вывести синусоиду, полосу, или гистограмму. Именно на ней построена текущая программа и та библиотека по определению не поддерживает рисование таких графиков. Это можно увидеть в описании библиотеки. А разрабатывать свой код для того чтобы выводить 1 единственную линию ... извините меня, но это не очень как-то звучит.

    Объяснять как это можно переделать я не буду. Библиотека которую я использовал не удовлетворяет вашим запросам, а писать костыли для того чтобы заставить её выводить как вам надо информацию, на мой взгляд это кощунство по отношению к её создателю.

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

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

    • Нравится 2

  10. 17 часов назад, eu_tomat сказал:

    Похоже на незавершённую попытку добавить какую-то новую фичу.

    Скорее на очередной мой костыль "Добраться из точки А в точку Б можно по прямой, но это скучно поэтому пойдем через весь алфавит рандомом".

    Как-то я не уверен, что такой код сработает. Но спасибо за подсказку. (и да, это вообще никакая не фича а просто попытка затолкать данные в этот график)


  11. 14.12.2018 в 16:08, mercurial сказал:

    Я думал она постоянно график делает.

    Это можешь и сам исправить достаточно закомментировать или удалить строки

    46, 47, 53.

    Если график будет слишком быстро рисоваться (как по мне он рисуется очень быстро) то можешь поиграть со значением os.sleep(1)


  12. Программка почти не изменилась, просто использует другой тип графика.

    IypdSoo.png

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

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

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

    Установка программы в 2 шага:

    Загрузка библиотеки:

    • pastebin get -f wchQZtZB /lib/charts.lua

    Загрузка программы:

    • pastebin get -f zjiKv5F0 Graf_drawer.lua
    • Нравится 5

  13. 17 часов назад, eu_tomat сказал:

    @Asior, а не приведёт ли постоянное добавление новых записей в таблицу payload.values к переполнению памяти?

    Как ни странно, но память не переполняется. Или у библиотеки есть очистка, или я хз. Память потихоньку растет, а потом падает.

    17 часов назад, mercurial сказал:

    Как в машине тесла

    Это то тут причем? Непонятно, но смысл как переделать я понял.

     

    14 часов назад, mercurial сказал:

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

    Лень уже добавлять это, программу уже переписал по другому. Следующим сообщением добавляю программу.


  14. Так, программка готова. Рекомендую размер экрана 3х2. Хотя вроде должно нормально работать и на экранах большего размера. Рядом (сверху/снизу/неважно короче) с бочкой надо поставить адаптер. Его подключить к компьютеру. По устройству компьютера требований вообще никаких, что запихаешь то и будет.

    Установка программы в 2 шага:

    Загрузка библиотеки:

    • pastebin get -f wchQZtZB /lib/charts.lua

    Загрузка программы:

    • pastebin get -f mSRmMS72 Graf_drawer.lua

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

    Ну и скрин, как это выглядит:

    FYkZKOs.png

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

    • Нравится 4

  15. Угу, понятно. Курю тогда как работают гистограммы и графики. Как будет время накатаю. Вроде все просто, но надо тестить.

    Библиотека для создания гистограмм и прогрессбаров


  16. 3 часа назад, eu_tomat сказал:

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

    Он все верно пишет. Там же есть образец, где так прям и сказано. Ну а то что игрок не играет на сервере тут уже не его вина.

    10.12.2018 в 22:14, mercurial сказал:

    Описание: Требуется программа для отслеживания количества предметов в бочке (из мода storage drawers);

    Вот тут вопрос, сколько предметов может быть в бочке в этой? 1/2/4/8 или сколько. С одним теоретически можно график выводить. С 2 уже сложнее будет, а вот если больше предметов тут уже у меня идей даже нет как это реализовать.


  17. К сожалению данная программа немного не работает. Все померло. Или я делаю что-то не так?

    mzPzCMK.png

    И вообще стоило бы в главной теме объединить все ссылки на новые версии программ, или подписать им номера версий. Хотя это тоже не помогло, всеравно ни одна программа не стартовала


  18. 29.11.2018 в 22:22, eu_tomat сказал:

    При непрерывной подаче команд три из четырёх выполняются вхолостую. Источник воды не успевает регенерироваться.

    Не 1000 мл мы передавали я помню точно, мы вроде как 100 мл, чтобы источник не регенерировался. Насчет микроконтроллеров, тогда это считалось не очень эффективным, запуск шайтан машины планировался 1 раз. (ну и потом пару раз еще врубали когда на заказ создавали сингулярность)


  19. 3 часа назад, eu_tomat сказал:

    Я, возможно, не понимаю особенностей задачи, но зачем там 4 (!), да ещё и сервера?

    Попробую угадать, почему лагала эта машина. Все 4 сервера каждый тик выполняли transferFluid?

    4 сервера для скорости. У пробовали к 1 цеплять и перебором посылать команды, но оказалось это неэффективно. Замеры скорости делали, оказалось что 1 транспозер выдает максимальную частоту передачи если этим занят 1 компьютер. Ну и для того чтобы не мучать остальных игроков решено было запустить сразу 4 сервера. Хотя всеравно на генерацию сингулярности уходило 30 минут. И да, команда та самая была. Только перемещали не 1000 мл, а вроде 10-100 мл. Давно было, забыл уже. Подробности @FluttyProger должен помнить, мы с ним это чудо строили. 

×
×
  • Создать...