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

Doob

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

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

  • Посещение

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

    141

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

  1. Это да, если сопрут устройство с которого осуществляется доступ, то все средства тоже сопрут. Можно использовать генерацию ключей по паролю - игрок задает сид своим паролем и из него генерируется ключевая пара. В итоге ключи существуют только во время связи с сервером. А для регистрации, игроку нужно будет только стоять возле основного сервера на сенсоре движения (в кабинке, как предложил SergOmarov) и вбить в регистрационную форму свой ключ - публичный ключ уходит на сервер, с сенсора отправляется имя. А потом уже доступ только по ключу, из любой точки карты, где есть связь с сервером.
  2. Вообще-то в кубе)) Изначально, я сделал по фильму Cube - 18х18х18 комнат, при переходе из одной комнаты в другую, дальние комнаты выгружались, новые появлялись, без всяких смещений и телепортаций. Но все делалось при помощи комблока - каждый блок приходилось ставить отдельно, комп на циклах без слипов подвисал, вылетал, крашил майн. В OpenComputers же, создать базовую комнату можно двумя командами setBlocks (в MC1.8 лучше задействовать стандартные fill и clone) Самое сложное это алгоритм генерации, тут у меня просто нет идей, только смена маршрутов по таймеру и предыдущим переходам. P.S. Как вариант - виртуальное пространство заполненное тессерактами, но это слишком примитивно.
  3. Симметричное шифрование решает все проблемы. Как одолею лень - переведу RSA на Lua, ибо рабочих библиотек не видел.
  4. Ну вся фишка в том, что система должна обрабатывать каждого игрока индивидуально и всех вместе. Внешне это будет выглядеть как висящие в пустоте ячейки для каждого игрока, когда один игрок переходит в комнату рядом с другим игроком, то его ячейка удаляется и подгружается к уже существующей. Если игрок покидает общую ячейку, то для него создается новая. Находясь внутри, переходы не заметны, т.к. переход совершается в заранее созданную комнату и при телепортации полностью сохраняется положение игрока.
  5. По ссылкам читал, но не понял, как ускорить запись циклами, конвертировать и обезьяна сможет, а вот процедурная генерация звуков намного интересней.
  6. Как можно побыстрей записывать информацию на кассеты? И вообще, где можно почитать описание формата, в котором хранятся данные на кассетах? А то возможности звукоизвлечения почти бесконечны, но на запись минуты звука уходит несколько часов.
  7. Код Грея мог бы помочь, хотя вряд-ли, ускорить обновление блоков невозможно. http://www.computercraft.info/forums2/index.php?/topic/16414-chat-via-redstone-but-its-not-reading-incoming-messages/
  8. Круто, на CC делал подобное, но теперь там есть http://www.computercraft.info/2015/07/01/introducing-computercraftedu/
  9. Шахтеры да фермеры, чую, скоро админы перестанут пускать с такими программами, но человек пишет программку, значит интересуется.
  10. Ну это если связи совсем случайные. Тогда это не лабиринт, а пытка рандомом.
  11. Не совсем случайно, по системе, игрок определивший систему связей становится могущественней, но правила генерируются бесконечно, так что возможности не ограничены, а если лабиринт пятимерный, то игроки изучающие лабиринт становятся богами, потому что они могут управлять конфигурацией комнат в которых они побывали. В The Talos Principle не играл, играл в Antichamber - там связи жестко зафиксированы и решить задачу можно просто рандомно бегая в разные двери.
  12. Появляешься в комнате [1] с четырьмя дверьми, идешь в первую попавшуюся - оказываешься в комнате [3] с кучей зомбей, бежишь назад - оказываешься в комнате [17]. В комнате [17] стоит печка, верстак и табличка, на табличке надпись "Ты всегда можешь вернуться сюда, войдя в ту же дверь, из которой вышел". Идешь в первую попавшуюся дверь - попадаешь в комнату [109], она пустая, идешь в первую попавшуюся дверь - попадешь в комнату [108], там растет дерево со стволом из коблы и "листвой" из досок. Ну и в таком духе...
  13. БД удобней хранить в CSV - оптимально и универсально. А вот до GUI библиотек у меня руки не доходят. GML, к примеру хорош, но очень тяжел. На ComputerCraft куча удобных, со всеми современными фичами и довольно легковесных, а на OpenComputers я таких не находил. Надобно затачивать либу под определенные задачи, чтобы не плодить сущности.
  14. Как-то ковыряясь с комблоком я вспомнил фильм "Cube", начал делать алгоритм пермутаций, попутно пытаясь сделать переброс пространства через время и наоборот, потом энтузиазм затух. Потом пытался сделать мини-игру, где кубы тессеракта спроецированы в 2d шестиугольники, игрокам надо было бегать по пространству заполненному тессерактами, и по определенным правилам линковать кубы удаленные друг от друга на огромные расстояния, так же была идея сделать полноценную игру-песочницу, с бесконечным фрактальным миром, где можно сокращать расстояния преобразовывая время в пространство. Но, так как во все это никто играть не будет, то даже и не пытался сделать что-либо внятное. В minecraft, при помощи комблока, можно сделать что угодно, но все упирается ресурсы сервера. Суть лабиринта в том, что игрок бегает не по коридорам, а по комнатам с несколькими дверьми, и зайдя в определенной последовательности в определенные двери, игрок перемещается в недоступные обычными переходами места. Весь лабиринт хранится в памяти, а новые комнаты подгружаются и материализуются, когда игрок совершает переход, старые комнаты исчезают и в мире постоянно остаются только 6 кубов вокруг комнаты, в которой находится игрок и комнаты, в которые можно попасть задействовав гиперсвязь. Но я никак не мог придумать нормальный алгоритм генерации связей гиперпереходов, рандом не может создавать достаточно осмысленный лабиринт, необходима какая-то формула, в математике я - дуб... как-то пытался разобраться с кватернионами, чтобы сделать кубик Рубика, даже не понял магию выражения векторов через мнимые единицы.
  15. Код был, когда я сидел на ComputerCraft, там я делал сохранение блоков в scoreboard игрока, была жуткая конвертация таблиц, на выходе получалась каша, но зато работало. Идея была в том, что мир можно стереть, а игроков со своими ресурсами оставить (на самом деле не ресурсами, а постройками). Вся проблема в том, что мне лень рисовать удобный интерфейс и переводить RSA на Lua.
  16. %PLAYERNAME% имеет %ITEMNAME%, в кoличетcве n, у негo зaбиты cундуки вcяким хлaмoм, ендерчеcт вooбще трещит пo-швaм. Мoжнo иcпoльзoвaть виртуaльные хрaнилищa AE, нo caм мoд cлишкoм лaгучий и c дoлгим рaзвитием. Мoя идея cocтoит в тoм, чтoбы cделaть aльтернaтиву AE в OpenComputers, чтoбы oблегчить жизнь игрoкaм и cерверу. Любoй игрoк, имеющий кoмпьютер c WiFi кaртoй, мoжет coздaть личнoе виртуaльнoе хрaнилище cкaчaв прoгрaмму и зaрегиcтрирoвaв cебя в cиcтеме. Функции cерверa: Перенoc предметoв из инвентaря в личнoе/oбщеcтвеннoе виртуaльнoе хрaнилище (ВХ). Мaтериaлизaция предметoв из ВХ. Мaтериaлизaция предметoв, кoтoрых нет в ВХ, нo для кoтoрых еcть рецепт и реcурcы в ВХ игрoкa. Перевoд предметoв из cвoегo ВХ в oбщеcтвеннoе/перевoд в ВХ другoгo игрoкa. Сoздaние oбщеcтвеннoгo хрaнилищa c дocтупoм пo пaрoлю. Сoздaние oбменнoй cделки (кaк в тoргoвых aвтoмaтaх IC) Уничтoжение предметa в ВХ Функции клиентa:Сoбcтвеннo, интерфейc к функциям cерверa.Вoзле cерверa cтoят терминaлы, чтoбы игрoки caми зaбивaли рецепты - игрoк кидaет предметы в вoрoнку, нa мoнитoре в виртуaльнoм oкне крaфтa зaбивaет рецепт, рoбoт рacклaдывaет рецепт и прoбует cкрaфтить, еcли true, тo рецепт coхрaняетcя нa cервере. Тaк же, мoжнo cделaть aдминcкoе беcпaрoльнoе виртуaльнoе хрaнилище c беcкoнечными дешевыми вoзoбнoвляемыми реcурcaми (деревo/кaктуc/aрбузы/трocтник), тoгдa игрoкaм не нaдo будет делaть лaгo-фермы, oни будут зaнимaтьcя чем-тo бoлее oтвлеченным. Мoжнo oгрaничить время жизни хрaнилищa (хaлявных cундукoв не бывaет), чтoбы дaвнo не игрaвшие игрoки удaлялиcь из БД, a чтoбы прoдлевaть жизнь хрaнилищa, неoбхoдимo в нем cжигaть oпределенные предметы (невoзoбнoвляемые реcурcы)
  17. А разве дебаг-плата и драйвер комблока не возвращает результат исполнения команды?
  18. Пытался прикрутить брутфорс, выяснил, что средствами OpenComputers ломать бессмысленно. Из-за того, что мощность процессора регулируется не замедлением реальных тактов, а жесткими фризами, то даже на самой мощной железяке выходит примерно так: алфавит 92 символа - 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ !?@#$%^&*()_+=-*/[]{}:;'".,<> время перебора: 1 символ = 0.42 секунд 2 символа = 39 секунд 3 = около получаса 4 = больше трех дней 5 = почти год Если брутить голым lua, то скорость возрастает где-то в 2000 раз. А если в ключе использовать рандомные символы юникода, то ломать вообще бессмысленно (при длине пароля не меньше 10 символов).
  19. А если взять голопроекторы, то память эффектней и эффективней +понтов больше
  20. Если надо зашифровать сообщение, но не хватает ресурсов, можно использовать XOR. Но нельзя использовать короткий циклический ключ, XOR хорош, когда можно получить рандомный ключ, равный длине сообщения. Если в math.random нету дыр, то можно использовать его. Функция подгоняет длину ключа к длине сообщения и прогоняет через XOR. local function encrypt(message, key) unicode = require('unicode') nKey = '' for i = 1, unicode.len(key) do nKey = nKey..key:byte(i) -- переводим ключ в number end math.randomseed(tonumber(nKey)) -- засеиваем генератор ключом tKey = {} sNewKey = '' for j = 1, unicode.len(message) do tKey[j] = '' while unicode.len(tKey[j]) ~= unicode.len(message.byte(j)) do tKey[j] = tKey[j]..math.random(0, 9) -- создаем рандомный код для ключа end sNewKey = sNewKey..unicode.char(bit32.bxor(message:byte(j), tKey[j])) -- записваем результат end return sNewKey end Пример использования: a = encrypt('сообщение', 'ключ') -- шифруем print(encrypt(a, 'ключ')) -- расшифровываем
  21. Проблема в получении слота с диском? component.filesystem.slot и вообще, слотов для дисков всего два Запоминаем адреса файловых систем по дефолту, при срабатывании программы ищем новую файловую систему, на нее и пишем.
×
×
  • Создать...