Введение

Это гайд по модам для Geometry Dash на Windows. Написан Jaan#2897.

Сначала необходимо знать язык c++, знать, как хукать функции, а также знать основные принципы движка cocos2d-x.

Полезная информация

Discord сервер программистов GD.
Мой сайт с 2800+ адресов функций, а также их параметрами.

Необходимые программы

#1. Создаём и настраиваем проект

В этой главе мы научимся создавать проект, познакомимся с библиотеками и скомпилируем тестовый мод.


Начнём с того, что скачаем шаблон для модов, который содержит в себе всё необходимое. А именно: cocos-headers, minhook, gd.h. Этот шаблон - изменённый мной шаблон из CappuccinoSDK, который устарел после выхода cocos-headers.

Скачать

Разархивируйте его в любую папку. Теперь мы готовы создать проект.

Зайдите в папку "tools", откройте в ней командную строку и введите python create_project.py -project <любое название проекта>


Через какое-то время проект будет создан и в командной строке будет написан путь к проекту.



Папка проекта будет выглядеть примерно вот так:



Теперь откройте файл "<название проекта>.sln". Если тип .sln не ассоциирован с Visual Studio 2019, у вас появится такое окно:


Выберите "Visual Studio 2019".




Если вы всё сделали правильно, то после открытия проекта у вас появится примерно такое окно:



Поздравляю! Но пока что не спешите компилировать проект, ведь мы ещё не всё настроили. Во-первых, откройте файл "dllmain.cpp"



Не пугайтесь того, что сейчас в проекте очень много ошибок, это нормально.

Внимание! Поменяйте Debug x64 на Release x86! Это очень важно! Это нужно, чтобы исправить изначальные ошибки.




В принципе, сейчас уже можно нажать Ctrl+B и создать .dll мода, а потом загрузить его в игру, но давайте сначала ещё кое-что настроим.


Если вы используете загрузчик модов(крайне рекомендую), зайдите в "Проект" -> "Свойства: <название проекта>" -> "События сборки" -> "Событие после сборки" -> "Командная строка" -> "Изменить".





Теперь найдите папку загрузчика модов. В моём случае это "D:\SteamLibrary\steamapps\common\Geometry Dash\extensions". В "Командная строка" напишите:

copy "$(SolutionDir)Build\$(Configuration)\$(ProjectName).dll" "<ваша папка загрузчика>\$(ProjectName).dll"

В моём случае это: copy "$(SolutionDir)Build\$(Configuration)\$(ProjectName).dll" "D:\SteamLibrary\steamapps\common\Geometry Dash\extensions\$(ProjectName).dll"

Не забудьте нажать "Применить" и "ОК"!


Теперь после успешной сборки мода он будет сам копироваться в папку загрузчика мода, то есть после сборки остаётся только запустить Geometry Dash.



Что ж, давайте добавим небольшой функционал нашему моду. Перейдём в dllmain.cpp и посмотрим на функцию my_thread(). Между MH_Initialize(); и MH_EnableHook(MH_ALL_HOOKS); можно добавлять свой код. Мы добавим код, который будет отображать диалоговое окно.

MessageBoxA(NULL, "Test mod! ;)", "GD modding", NULL);



Мы готовы протестировать наш мод! Давайте сделаем это. Нажмите Ctrl+B, чтобы собрать мод. Если вы всё сделали приавильно, вы увидите примерно это:


Мой полный вывод сборки(можете сравнить)


Главное, чтобы было написано ========== Сборка: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========

Если всё правильно, то вы готовы протестировать свой мод! Если вы используете загрузчик модов и настроили событие сборки, то можно запускать игру. Если нет, то надо сначала открыть игру, а потом использовать Cheat Engine или MegaHack 5 или любой другой загрузчик.



Если при запуске игры/загрузке мода вы увидите примерно такое сообщение:

То вы всё сделали правильно! Поздравляю!!! Можете поэкспериментирвать, повыводить в консоль текст с помощью cout << "some text" << endl;, поменять текст сообщения и так далее



До встречи во втором уроке!