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

Totoro

Гуру
  • Публикации

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

  • Посещение

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

    289

Все публикации пользователя Totoro

  1. А к чему ты тогда пытаешься получить доступ?
  2. Ага. Умеет писать "Hello World", весит 17,8 Мб, запускается только на Java 8.
  3. К сожалению, я ввел в заблуждение. Существует функция, которая позволяет задать расстояние, на котором объект виден для игрока. Однако она не возвращает расстояния. Работает чисто как параметр объекта.
  4. Уже пишу максимально вдумчиво и осмысленно.
  5. На самом деле память получается не настолько эффективная, как из экрана третьего уровня. Каждый воксель голограммы может быть погашен, либо иметь один из трех цветов палитры. Т.е. - 4 состояния. Это 2 бита информации. Размерность голограммы - 48 на 32 на 48. То есть - 73 728 вокселей. Делим на четыре, и получаем 18 432 байт. Т.е. сама по себе матрица голограммы вмещает не очень много информации. Можно добавить еще конкретные значения цветов палитры: 3 цвета по 3 байта = 9 байт Масштаб голограммы, и значения сдвига дает еще четыре number'а. Т.е. 4 * 8 = 32 байта. Итого, голограмма максимального уровня хранит: 18 473 байт информации.
  6. Как завещал великий Ленин P.S. Могу помочь по конкретным вопросам, но не здесь, а, например, в Mumble.
  7. Нету гайдиков, к сожалению. Придется перекопать методы компонента, и поизучать програмки которые под него есть.
  8. Totoro

    Сизифов код

    Теперь и брат появился.
  9. Способ хранения и обработки информации, в условиях отсутствия жесткого диска.
  10. Никакого шевеления [soundcloud=00aabb]69975822[/soundcloud]
  11. Тогда пост должен будет называться "[Статья] Как построить бункер на случай зомбиапокалипсиса".
  12. Немного не понятна логика программы. При получении эвента 'motion' она пробивает имя нарушителя по базе "гостей". А если нарушитель (отсутствующий в вайтлисте), придет повторно? Сирена будет молчать, ведь он уже был занесен в список "гостей".
  13. @@swg2you, а ведь еще можно задействовать новую Data Card и пожать данные алгоритмом deflate
  14. OpenComputers 1.5.13 Итак, после пары недель наведения блеска, окончательный релиз 1.5.13 =) Добавлено: Архитектура Lua 5.3 Карта данных. Предоставляет встроенные алгоритмы хеширования а также сжатия (inflate / deflate - алгоритмы gzip, применяющиеся среди прочего для сжатия NBT тегов, и растра PNG файлов) (спасибо пользователю Kubuxu). Принты могут быть настроены на отсутствие коллизий (для стейтов отдельно, плюс стоит доп. расхода хамелиума). Таким образом вы сможете ходить сквозь принт, всегда, или в одном из его стейтов. Использование пустой строки, в качестве текстуры для шейпов принта, сделает их невидимыми. Добавлен новый метод в драйвер AE2 Интерфейса, для того, чтобы сохранять информацию о предметах в апгрейд-базу данных. Интеграция с модом ExtraCells (спасибо пользователю DrummerMC). Интеграция с Электронной Библиотекой из BC7, для сохранения / загрузки чипов EEPROM (требует BC 7.0.9). Фиксы: Взаимодействие роботов и дронов с двойным сундуком-ловушкой. Соседние с испускающим сигнал редстоуна принтом блоки не обновлялись в некоторых ситуациях. Некорректные координаты в событии "mouse scroll", при измененном размере интерфейса. "Ошибка неучтенной единицы" в функции os.date(). Драйвер Командного блока теперь возвращает данные выполнения команд executeCommand (а не вечное true, как раньше). Потенциальный Null Pointer Exception при инициализации микроконтроллера. Улучшена имплементация отвертки из Project Red в Ключ (Scrench) из OC. Отображение положения "дроноботов" при движении "в присяде". Дроны издающие звуки шагов, при движении низко над землей. Поведение /dev/null в роботах. Туча опечаток в документации. Включить процессору новую архитектуру Lua 5.3 можно на Shift+ПКМ, держа процессор в руке (как уже писал в своем блоге Fingercomp). Кликайте ПКМ, пока в чате (или подсказке к процессору) не будет написано "Lua 5.3". Если вы играли в 1.5.13 dev-билд (например с Jenkins-сервера автора), не забудьте вручную переключить опцию enableLua53 в конфиге мода на true. (Потому что автор отключил ее, пока новая архитектура не стала достаточно стабильна.)
  15. Totoro

    Little Tanks

    Как-то раз я писал программку на Луа, и вдруг подумал: "А что, если взглянуть на процесс с другой стороны? Вместо скрипта для программы - написать программу для скрипта. " В качестве платформы, я решил взять Java Swing, потому что в тот момент под рукой была только шестая Java, и никаких библиотек. А в качестве программы - игру. Как многие знают, Луа - традиционный язык скриптования во многих играх. Игра располалагется в репозитории: https://github.com/MoonlightOwl/LittleTanks Последняя версия может быть скачана здесь: https://github.com/MoonlightOwl/LittleTanks/releases Проект представляет собой аркаду, с редактируемыми уровнями, и скриптованием этих уровней на Lua 5.2. Игрок управляет одним танком, и должен уничтожить все другие танки на уровне. (Правила конкретного уровня могут быть изменены его скриптом.) Редактирование уровней Создавать и редактировать карты можно в любом блокноте. (Памятка: http://pastebin.com/eW1PTzUB ) Уровни образуют пакеты, или "миссии". Название файла имеет такой формат: "<название_миссии><номер_уровня_начиная_с_1>.dat" (например base1.dat, и т.д.) Скрипт к уровню должен лежать в папке /levels/script/. Он должен называться так же как и сам уровень, только с расширением lua вместо dat. Скриптование Игра обращается к скрипту через следующие методы: * init(world) Вызывается один раз, при загрузке уровня. Объект world - это "игровой мир". Он содержит методы для обращения к игре, карте уровня. * updateTank(tank) Этот метод вызывается для каждого вражеского танчика в игре, каждый раз, как он завершает очередное действие. Через объект tank скрипт может обратиться к танку, и задать ему новое действие (двигаться, стрелять). * updateWorld(world) Этот метод вызывается каждый тик и передает объект игрового мира. Описание всего доступного интерфейса на текущий момент, можно найти здесь: http://pastebin.com/SYRSnar2 Пример скрипта, который загружается по умолчанию: function init(world) math.randomseed(os.time()) end local function randomBool() return math.random(0,1) == 1 end function updateTank(tank) local action = math.random(1, 20) if action == 1 then local dx, dy = 0, 0 if randomBool() then if randomBool() then dx = 1 else dx = -1 end else if randomBool() then dy = 1 else dy = -1 end end tank:move(dx, dy) elseif action == 2 then tank:fire() end end function updateWorld(world) end (https://github.com/MoonlightOwl/LittleTanks/blob/master/levels/script/default.lua) Здесь танк движется совершенно рандомно, время от времени стреляя. Таков его ИИ на большинстве уровней =) Итак Игра чертовски сырая, геймплей не сбалансирован, скриптовые интерфейсы требуют серьезной доработки, и английский язык хромает. Но тем не менее оно уже работает. Буду рад любым советам (может даже pull-реквестам ))), багрепортам, и предложениям.
  16. В для первого load() ты указываешь переменную окружения, насколько я понял. Для второго - нет (используется "глобальное окружение"). Поэтому, у них разные переменные а. Строка из документации: Т.е. загруженный чанк получает новую переменную окружения, и при этом LVM выдает ей "внешний" _G.
  17. Монстер, у меня голограмма 48х32х48 весит всего 18,5 Кб. И это без сжатия, которе предлагал Зеро. Так что - апргейдить! Однозначно апгрейдить!
  18. Думаю, это самая разумная схема.
  19. Без должной системы шифрования, нельзя упускать из виду вероятность того, что сообщения будут перехвачены по пути или подменены хакером. Тут нужно подумать над реализацией протокола.
  20. В каком смысле, одна для всех устройств? Насколько я знаю в OpenComputers все компьютеры/устройства работают примерно одинаково, и все имеют "БИОС".
×
×
  • Создать...