- Сообщений: 101
- Спасибо получено: 346
ScriptLoader (Защита скриптов)
Название: ScriptLoader
Версия: 1.0 (Тестовая)
Описание: Данный скрипт позволяет загружать скрипты из файлов (текстовых (.txt и .rb) и бинарных (.xs))
Зачем это нам нужно?
При помощи этого скрипта и утилиты, вы сможете сохранить целостность вашего кода, разделив ваш скрипт на две части interface и implementation (интерфейс и реализация). В часть интерфейса вынести все константы и значения, которые по вашей задумке пользователь может менять, чтобы настроить ваш скрипт под себя, а в часть реализации собственно весь код. Часть реализации с помощью утилиты превращается в бинарный файл и загружается в игру одной строчкой под частью интерфейса, а сам интерфейс как обычный скрипт вставляем в RPG VXA. Реализация находится в бинарном виде и никто не может увидеть ваш код, а он в свою очередь будет выполняться в игре.
Как использовать?
Допустим у вас есть скрипт
Разделяем скрипт на две части
ЧАСТЬ 1
ЧАСТЬ 2
ЧАСТЬ 2 переводим в бинарный вид, а часть один вставляем в редактор, как обычный скрипт + вызываем метод загрузки второй части.
Вот так будет в результате:
Это весь код.
Также можно не переводить свой скрипт в бинарный формат, а просто вынести в файл и загрузить (Например просто чтобы код не мешался). Подробнее в демке.
Описание ScriptLoader:
Утилита RGSS_ScriptToBin.exe переводит ваш в код в бинарный файл с разрешение .xs. (Просто перетащите на неё текстовый файл с кодом вашего скрипта)
Сам скрипт ScriptLoader должен иметь строгое (строгое!) имя "PKD_ScriptLoader" и быть самым первым в вашей базе скриптов (причём иметь строгий код!)
В демке всё есть и написано подробнее. Загружать же свои скрипты при помощи ScriptLoader можно где угодно.
В данной версии есть ограничения по переводу скриптов в бинарный формат
1) Русские символы в коде (в строке например) будут как "?" - решается, если вынести слова в константы в часть интерфейса
2) Регулярные выражения в коде и некоторые escape последовательности - скрипт не загрузиться - решается аналогично, выносим в константы (интерфейс)
Программа тестировалась на всех стандартных скриптах, запустились и работали все за исключением Windows_Base, по причине наличия регулярных выражений в коде.
Для работы требуется:
.NET Framework 4
Visual C++ Redistributable Packages 2013
Демка с пояснениями и утилита.
Ссылки:
DropBox
Яндекс.Диск
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Кстати, надеюсь, комментарии из кода при конвертации утилита удалаяет? А то их все равно никто не увидит, так что это просто ненужный хлам
А что за проблема с регулярными выражениями? О.о Почему не решена до сих пор?)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Насчёт перевода в UTF-8 сразу при конвертации - это хорошая идея. Только на последних этапах тестирования я заметил разницу в кодировках, поэтому проблема не была решена в версии 1.0. В следующей версии подумаю над этим. Спасибо за совет.
Кстати, надеюсь, комментарии из кода при конвертации утилита удалаяет?
Конвертирование состоит из двух этапов. Необратимый процесс. На первом этапе всё удаляется: комментарии, переносы строк, пробелы, всё что только можно. Уже после этого этапа код человеком практически не читаем (одна длинная строка). Эту строку Ruby понимает, ему всё равно. А следующий этап дополнительно переводит это в двоичный код.
Чтобы код в одной строке интерпретировался нормально как в C#, так и в Ruby, нужно "закрывать" escape последовательности правильно. В регулярных выражениях Ruby есть свои управляющие символы, чтобы их правильно "закрыть" нужно найти все регулярные выражения в коде (для этого нужно написать регулярное выражениеА что за проблема с регулярными выражениями?
Из результатов тестирования (1 скрипт не работает из 110 стандартных ACE), решил что проблема не критична и уделил время разработке своей игры. Обновлять буду этот скрипт, но не в приоритете.Почему не решена до сих пор?)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Если да, то прошу пояснений, интересен ход мыслей, которые привели к такому решению.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
