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

Поиск по сайту

Результаты поиска по тегам 'CC'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Блоги

  • Робот Байт
  • Fingercomp's Playground
  • 1Ridav' - блог
  • Totoro Cookies
  • Блог cyber01
  • IncluderWorld
  • KelLiN' - блог
  • Крутой блог
  • eutomatic blog
  • Programist135 Soft
  • Сайт в сети OpenNet
  • PieLand
  • Очумелые ручки
  • Блог недоблоггера
  • В мире Майнкрафт
  • LaineBlog
  • Квантовый блог
  • Блог qwertyMAN'а
  • some blog name
  • Дача Игоря
  • Тут был Артур.

Форумы

  • Программирование
    • Программы
    • База знаний
    • Разработчикам
    • Вопросы
  • Игровой раздел
    • Игровые серверы
    • Предложения по улучшению игрового процесса
    • Моды и плагины
    • Жалобы на игроков
    • Ивенты
  • Общение
    • Вопрос-ответ
    • Беседка программистов
    • Беседка-флудилка
    • Шкатулка
  • Технический раздел
    • Багтрекер
    • Архив

Искать результаты в...

Искать результаты, которые...


Дата создания

  • Начать

    Конец


Последнее обновление

  • Начать

    Конец


Фильтр по количеству...

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

  • Начать

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


ВКонтакте


Gtalk


Facebook


Twitter


Город


Интересы

Найдено 8 результатов

  1. Пока я писал свою систему для ComputerCraft, мне пришла мысль изобрести велосипед в виде функции require(), которая была удалена из мода по неизвестным мне причинам. Собственно вот код: function require(...) local i local libs = { } for i=1, #arg do arg[i] = fs.combine("", arg[i]) --В кавычки можно написать путь к директории с вашими библиотеками. if not fs.exists(arg[i]) or fs.isDir(arg[i]) then error("Couldn't find a file by the path #"..i, 2) end local g = getfenv() local t = { } setmetatable(t, {__index = _G}) t.shell = shell t.multishell = multishell setfenv(1, t) local f=function() dofile(arg[i]) end local ok, err = pcall(f) setfenv(1, g) if not ok then error(err..", in #"..i, 2) end libs[i] = t end return unpack(libs) end ,,Что-же эта функция делает?"- может кто-то спросить, а тоже что и раньше. Она загружает библиотеку по выбранному вами пути в таблицу (или правильнее будет сказать, в окружение). Самое главное - это то, что вы сможете загружать любое API в любую переменную, в том числе и локальную. Выглядит это примерно так: local firstVariable, secondVariable = require("APIs/HelloWorld.api", "APIs/Object.lua") Как вы наверное уже поняли, можно загружать не ограниченное количество библиотек за раз. Особенности: ​загрузка нескольких переменных одновременно; возможность не захламлять глобальное окружение; использование библиотек в любой другой таблице; пропуск shell API и multishell API в окружение вашего API*; запуск вашего файла с библиотекой во время загрузки (ну это я из пальца выжимаю); в отличии от стандартной функции, вы не можете использовать require()для поиска библиотеки среди файлов, но по-моему это лишнее в CC, но вы можете указать одну папку (заметка на счёт этого в коде); вы можете убедится в том, что окружение, куда вы запихнули свою библиотеку, не содержит копию всех функций и переменных из глобального окружения (что хорошо сказывается на производительности). ​Для того, чтобы использовать эту функцию, просто вставьте её код в вашу программу. Надеюсь, что это кому-нибудь пригодится. Дополнение. Я переделал функцию и добавил взаимодействие с глобальной таблицей package, этот вариант намного лучше предыдущего. Чтобы использовать его скачайте файл с помощью команды: pastebin get naxXwUey package Далее загрузите в глобальное окружение с помощью функции dofile("package"). Теперь рассмотрим, что же я изменил. Во-первых, при повторном вызове функции с одним и тем же API, вы получаете ту же самую таблицу, то-есть: local var1 = require("lib1") local var2 = require("lib1") print(var1 == var2) -->Вывод: true Так получается, потому что каждая новая загруженная библиотека сохраняется в таблице package.loaded, а при повторном вызове, вам выдаётся значение из этой таблицы. Я также внес все стандартные API ComputerCraft'а в эту таблицу. Во-вторых, я добавил значение package.path, оно работает точно также, как и в оригинале. Просто перечисляете директории с библиотеками в током виде: package.path = "/APIs/?.lua;/Lib/?;/?" Вы можете изменить это значение в самом файле, я там оставил комментарий. Также я добавил таблицу package.preload, которая содержит специальные пользовательские функции для загрузки конкретного API, по стандарту я её оставил пустой (что логично). Ключи таких функций являются названиями API, а возвращать они должны функции, которые возвращают само API (правда не знаю, кому это может понадобиться). И наконец, package.loaders, в этом массиве, расположены функции для загрузки всех API. Их пока две. Аргументом этой функции должно быть имя модуля, а возвращать она должна функцию, загружающую API. Для тех, кто ничего не понял, просто знайте второй вариант этой функции с дополнением лучше.))) *Да-да, теперь вам не придётся мучиться и придумывать изощрённые способы получения допуска к функциям этого API в вашей библиотеке!
  2. Для работы крутой черепашки мне потребовалось быстро сериализировать и передавать по сети большие объемы информации. 3д массивы, таблицы, и прочее прочее. Внутренние методы СС Textutils.serialize не подходили, из за медленного оператора ".." , который добавлял в итоговую строку символы. Поискав готовые решения на сайте lua-users, я нашел подходящий код для сохранения таблиц в файл, и переписал его под работу со строкой. http://pastebin.com/AYB7u25g Код: Userdata, Функции и метотаблицы не сохраняются Сохраняются только простые значения как таблицы, строки, числа а так же true\false Замечу, что в моем коде для сбора строки используется таблица и метод table.concat(), который увеличивает скорость работы в разы. Код можно использовать как в CС так и в OС. Он добавляет новые методы в глобальную таблицу table и вызывается так: Результаты для двухмерного массива с 1 000 000 полей и замеры времени выполнения: //CC textutils serialize(): 45.94 unserialize(): 1.73 //OC serialization serialization.serialize(): 40.00 serialization.unserialize(): 0.87 //Krutoy table.tostring: table.toString(): 1.80 table.fromString(): 1.19 Пруф для меньшего количества полей: http://ideone.com/ICpS0L
  3. Вышло обновление computercraft, добавили командный компьютер, суть его он может исполнять команды minecraft, без командного блока, но он присутствует в крафте. Добавили сериализацию JSON
  4. Сканер проводной сети,сканирует сети на включенные в нее устройства с помощью модема.P.S пока очень сырая утилита. http://pastebin.com/ZM6d9cqx Можно к кому-то подключиться не заметно ,найти компьютеры и ломануть их.
  5. Решил я делать BootMenu. Что то типа программы. Думаю потом переименую в startup. Установил я jupiterOS и переименовал startup в jupiter. Получилось что при команде "jupiter" вызывалась ОС. Также сделал c voidOS. Начал писать код, вот что у меня получилось: local void = void local jupiter - jupiter local shell = shell write("voidOS - void jupiterOS - jupiter shell - shell") local user = read() if user = void then shell.run("voidOS") --Start voidOS end if user = jupiter then shell.run("jupiter") --Start jupiterOS end if user = shell then shell.run("clear") --Clear display shell.run("shell") --Start shell(write text CraftOS C:) end При запуске программы все шло хорошо, но ОС не запускалась. Никак! такое ощущение что if'ы вообще не запускались .хотя я писал правильно - shell или void или jupiter. В чем проблема?
  6. программа для открытия двери "руками" но со списком довренных людей. установка: любой пк, детектор игроков(с любой стороны) , дверь. скачать: http://pastebin.com/WKDhnKTZ , назвать startup. скачать прогу управления доступом:http://pastebin.com/mrinTuZR Инструкция: 1.Скачать обе программы , запустить редактирование доступа . 2. Программа запросит режим удалить или добавить , вам нужно добавить "Add" 3. После чего программа спросит ник и уровень доступа, уровень пока что не влияет ни на что. 4. Теперь програмка предложит запустить ее еше раз для повторной настройки , нам это не надо пишем "n" 5. затем программа предложит перейти в основную пишем ей "y" в знак согласия. Готово дверь установлена , при необходимости можно выйти из программы для этого надо ввести пароль сейчас "ex" (его можно поменять внутри программы) и заново запустить программу настройки. P.S: уже пишу более продвинутую програмку с сервером и планшетом. P.P.S: первые два скрина это текушая версия , остальное бета.
  7. Написал программу которая позволяет взламывать шифры криптографической стойки . Для этого надо : Bitnet антенна , криптографическая стойка . Код можно скачать здесь: http://pastebin.com/n5967tMd . m = peripheral.wrap("top") ca = peripheral.wrap("right") algos = {"AES","Blowfish","DES","DESede","RC2"} --запрос данных с вышки битнет while true do M = {1,1} while true do A = {1,1,1} A[1] ,A[2],A[3] = os.pullEvent() if A[1] == "bitnet_message" then --print(A[3]) M[1] = A[3] end A[1] ,A[2],A[3] = os.pullEvent() if A[1] == "bitnet_message" then --print(A[3]) M[2] = A[3] break end end --разшифровка local function decryp(key,text,Method) key2 = ca.decodeKey(Method, key) text2 = key2.decrypt(Method, text) return text2 end --главный цикл for i =1 ,5,1 do re,res = pcall(decryp,M[1],M[2],algos[i]) if re == true then print(re) print(algos[i]) print(res) if res == "password" then break end if re == true then break end end end end algos = {"AES","Blowfish","DES","DESede","RC2"} список возможных кодировок , от ARCFOUR пришлось отказатся так как он реагирует на все A[1] ,A[2],A[3] = os.pullEvent() if A[1] == "bitnet_message" then прием шифра производися через битнет . для приема иcпользую os.pullEvent() и фильтрую на тип "bitnet_message". для полного приема это действие производится два раза key2 = ca.decodeKey(Method, key) text2 = key2.decrypt(Method, text) сам метод разшифровки , первое разшифровка ключа , второе разшифровка текста re,res = pcall(decryp,M[1],M[2],algos) безопасный вызов функций decryp(). метод подбора шифра шифра состоит в том что метод при неверном алгоритме крашится, необходима функция pcall. re - ответ , успешно ли программа сработала. res результат , выводит разшифрованный текст. M[1] и M[2] это ключ и текст так же программа передачи и приема : http://pastebin.com/HTxrtezc --передача http://pastebin.com/EP6rgpR7 --прием они взяты с вики:http://computercraft.ru/wiki/Cryptographic_accelerator . (к сожалению что то с загрузкой картинок, поэтому картинки залил на Яндекс Диск: https://yadi.sk/i/3wYBJmuzeAPrp , https://yadi.sk/i/4-w9nPTHeAPrk , https://yadi.sk/i/h9MR3ANheAPrt , https://yadi.sk/i/VPoSkAi4eAPrv)
×
×
  • Создать...