Добавлен IceFog,
опубликован
Программы
Предназначение:
Работа с кодом
Версия игры: 1.26a
При помощи этой системы можно встроить в карту динамические библиотеки (Win32/DLL).
Это может помочь тем, кто не хочет писать сценарий карты на JASS, а предпочитает другие языки как: C, C++, Rust, Pascal... Если поднапрячься с загрузкой виртуальной машины, то можно использовать и языки вроде Python, Lua, Ruby, C#, Java.
Нет нужды просить игроков установить специальные лаунчеры — всё уже встроено в карту.
Это может помочь тем, кто не хочет писать сценарий карты на JASS, а предпочитает другие языки как: C, C++, Rust, Pascal... Если поднапрячься с загрузкой виртуальной машины, то можно использовать и языки вроде Python, Lua, Ruby, C#, Java.
Нет нужды просить игроков установить специальные лаунчеры — всё уже встроено в карту.
Работа системы
Сначала, предоставленный JASS-скрипт, используя уязвимости в виртуальной машине, выделяет исполняемую память и записывает туда мини-программу, которая распаковывает и загружает библиотеку "bin\Loader.dll", после чего вызывает её функцию "DoIt". Та же, в свою очередь, распаковывает и загружает библиотеки, перечисленные в списке "libraries" файла "config.json".
Когда игра собирается уничтожить главный поток JASS-скрипта, система выгружает все ранее загруженные библиотеки в обратном порядке и удаляет их файлы из временной директории.
Также чистка временного хранилища происходит при начале работы системы, на случай, если в прошлый раз мусор не был удален из-за нештатного завершения игры.
Также чистка временного хранилища происходит при начале работы системы, на случай, если в прошлый раз мусор не был удален из-за нештатного завершения игры.
Поддерживается запуск множества экземпляров игры — у каждого процесса своё личное хранилище.
По завершению игры загрузчик остается в памяти, так как он не может выгрузить сам себя.
При запуске, система проверяет остался ли с прошлого раза висящий загрузчик и если обнаруживает такой, то выгружает его. Так что, они не будут накапливаться.
При запуске, система проверяет остался ли с прошлого раза висящий загрузчик и если обнаруживает такой, то выгружает его. Так что, они не будут накапливаться.
Установка
- Скачайте архив и распакуйте куда-нибудь.
- Импортируйте в карту "bin\Loader.dll" и "scripts\common.j".
- Импортируйте в карту требуемые библиотеки.
- Пропишите путь к своим библиотекам в "config.json" и импортируйте его тоже.
- Скопируйте в карту код из "loader.j" (используется cjass).
Пример
Можете ознакомиться с моим примером:
- pascal.w3x — карта со внедренными библиотеками.
- ExampleSource.zip — исходники библиотеки со сценарием на FreePascal.
На карте создается толпа вражеских рабочих и один злой работник для вас.
Когда он смотрит на других, применяя свою способность, их разрывает в клочья.
Когда он смотрит на других, применяя свою способность, их разрывает в клочья.
Для работы с нативками используются JassAPI и RedirectCalls.
Генератор кода
В примере выше используется файл "jass_common_j.pas" сгенерированный на основе "common.j".
Прикладываю исходники генератора на python'е (зависит от funcparserlib) на случай, если кто-то захочет сгенерировать привязку для других языков.
Прикладываю исходники генератора на python'е (зависит от funcparserlib) на случай, если кто-то захочет сгенерировать привязку для других языков.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Питон - вот интересно зачем? Все сводится в те же самые - мы взяли адресс нативки Создать юнита ( к примеру ) и вызвали её, сунув аргументы, если в жассе это делает вирутальная жассм машина, то тут ты будешь это делать на с\питоне\луа... И да, там все эти фишечки языков типа тута не пашут, надо все ручками написать... Да там алгоритм не будет так ограничен как на жассе, но извините если в 2020 на гуи как курица лапой пишут, что говорить о более сложных алгоритмах и продуманных подходах на других языках?
Те кто так могут и умеют, напишут на жассе, пусть не так оптимально - но в рот мне ноги, кому это усралось, работает, не лагает, утечки пачками не плодит, да и ладно, 2020 год, ни 1 карта чето не взлетела, дота, лтд, петры, вампы - все платформы ими забиты, остальные карты - единичны на снг платформах.
Отредактирован quq_CCCP
Поэтому развития это дело не получило, хоспаби за полгода 7 постов. Ради кого автору старатся? Идея конвертора - туда, сюда как айкап сделал, чито для защиты, как кстати щяс некоторые китайские карты, но это делают платформы, типа Озбнета или айкапа, где они затачивают карты под свои платформы и стараются чтобы они поменьше лагали на ноутбуках 20 летней давности.
Это такая религия - ради того чтоб не учить новые нативки напишем свою игру вокруг common.j
Для 90% задач то что есть хватает за глаза, про нейросети и прочее говно - хватит, уже не смешно, щяс драколича попрошу скинуть тот самый ии, который даже без мемхака сделан. Там быстренько тебя боты с небес спустят, тут дело не столько в отсуствии инструментов сколько в кривых руках \ не понимании того как это работает.
Потом если у вас такие замашки - своя игра, где ваша новая игра? Чето невидно.
Я к тому что в реалиях варкравта это некому ненужно, и делать поддержку никто не будет, проще написать снуля свою игру или в жасс нативок накидать необходимых, стоит тебе тронуть систему расчета путей или тумана - сразу фпс 6 кадров, про то как вы будите портировать игру на новый движок с поддержкой мультпотоков и трассировки лучей лучше создайте отдельную тему с готовым результатом, а мы посмотрим.
У вас хоть какая я то карта, играбельная есть?
Если вы считаете, что это никому не нужно, то это ваше личное мнение
Если вы считаете, что знание костылей jass и blizzard VM - полезное знание для дальнейшей жизни, то это ваше личное мнение