Skip to content

Commit

Permalink
1.3.0
Browse files Browse the repository at this point in the history
a
2.1 and 2.2 projects
some fixes and additions
  • Loading branch information
user95401 committed Dec 26, 2023
1 parent 4f10224 commit 2b26031
Show file tree
Hide file tree
Showing 18 changed files with 248 additions and 23 deletions.
52 changes: 52 additions & 0 deletions ONEMR_Loader-2.113/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
cmake_minimum_required(VERSION 3.10.0)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO")
set(LIBRARY_OUTPUT_PATH "${CMAKE_CURRENT_LIST_DIR}")
cmake_policy(SET CMP0057 NEW)

project ("ONEMR_Loader")
set(developer "user95401")
set(description "gd 2.1 mod that load dlls in all ur game directory")
set(lib_output "D:\\Games\\user666\\Geometry.Dash.v07.24.2021\\") # post build copy

#curly-eureka
set(GAME_VERSION "2.113")
include("C:\\Users\\Lenovo\\source\\curly-eureka\\CURLY-EUREKA-INCL.cmake")# "\" must be escaped by \\

#version
set(FILEVERSION "1, 3, 0, 0")
set(LegalCopyright "user666's original")
configure_file("Version.rc" "../../../src/Version.rc")

#mod
file(GLOB_RECURSE SRC
src/*
)
add_library(${PROJECT_NAME} SHARED ${SRC} ${CURLY_EUREKA_SRC})

#POST_BUILD
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND #POST_BUILD UPDATE USES POWERSHELL!
"${CMAKE_CURRENT_LIST_DIR}/CMakePostBuild.bat" ${developer} ${PROJECT_NAME} ${LIBRARY_OUTPUT_PATH} ${lib_output})

#libcurl distributing zip makeup
if(EXISTS ${LIBRARY_OUTPUT_PATH}/${PROJECT_NAME}.dll) #can be deleted so escape "not found"
#ONEMR_Loader
file(COPY ${LIBRARY_OUTPUT_PATH}/${PROJECT_NAME}.dll
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/copy.to.game.folder/)
#libcurl
file(COPY ${CMAKE_CURRENT_LIST_DIR}/libcurl.dll
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/copy.to.game.folder/)
#libcurldist_readme
configure_file(${CMAKE_CURRENT_LIST_DIR}/libcurldist_readme.md ${CMAKE_CURRENT_BINARY_DIR}/libcurldist_readme.md)
#ARCHIVE_CREATE
file(ARCHIVE_CREATE
OUTPUT "${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}_dist.zip"
PATHS
${CMAKE_CURRENT_BINARY_DIR}/copy.to.game.folder/${PROJECT_NAME}.dll
${CMAKE_CURRENT_BINARY_DIR}/copy.to.game.folder/libcurl.dll
${CMAKE_CURRENT_BINARY_DIR}/libcurldist_readme.md
FORMAT "zip")
message("${PROJECT_NAME}_dist makeup done: see at ${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}_dist.zip")
endif()
File renamed without changes.
File renamed without changes.
12 changes: 12 additions & 0 deletions ONEMR_Loader-2.113/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# ONEMR_Loader

load dlls in all ur game directory

Made with curly-eureka, only for Windows.

## Install Loader to game
- download zip from [releases](https://github.com/user95401/ONEMR_Loader/releases) and read the [`libcurldist_readme.md`](libcurldist_readme.md) and `about.md`
>just copy all files from `copy.to.game.folder` to ur Geometry Dash
# build
learn here https://github.com/user95401/GMDModTemplate/wiki/Prepare
File renamed without changes.
File renamed without changes.
6 changes: 6 additions & 0 deletions ONEMR_Loader-2.113/libcurldist_readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# libcurldist
made for installing mod loader to a clear game

libcurl.dll is file that game loading:
1. game loading libcurl.dll
2. libcurl.dll loading ONEMR_Loader.dll
107 changes: 107 additions & 0 deletions ONEMR_Loader-2.113/src/_main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
#include "ModUtils.hpp"
#include "HooksUtils.hpp"
#include<fstream>

using namespace cocos2d;
using namespace gd;

int ModsLoaded = 0;
std::string ModsLoadedList = "";
bool afterLoad = false;

DWORD WINAPI LoadMods(void* hModule) {
ModUtils::log("Crawling...");
for (const auto& entry : std::filesystem::recursive_directory_iterator(std::filesystem::current_path())) {
//ModUtils::log(entry.path().extension().string()); .dll
bool loadit = false;
if (entry.path().extension().string() == std::string(".dll")) loadit = true;//is dll
if (strstr(entry.path().string().c_str(), "geode")) loadit = false;//in geode/unzipped
if (strstr(entry.path().string().c_str(), "minhook")) loadit = false;//minhook
if (strstr(entry.path().string().c_str(), "MinHook")) loadit = false;//MinHook
if (strstr(entry.path().string().c_str(), "websockets.dll")) loadit = false;//websockets.dll
if (strstr(entry.path().string().c_str(), "msvcp")) loadit = false;//msvcp
if (strstr(entry.path().string().c_str(), "msvcr")) loadit = false;//msvcr
if (GetModuleHandleA(entry.path().string().c_str())) loadit = false;
if (loadit) {
//Sleep(10);justwhy
HMODULE hModule = LoadLibraryA(entry.path().string().c_str());
if (!hModule) ModUtils::log("Failed to load library \"" + entry.path().relative_path().string() + "\" .");
else {
ModUtils::log("Loaded library \"" + entry.path().relative_path().string() + "\"!");
++ModsLoaded;
ModsLoadedList = ModsLoadedList + ((ModsLoadedList == "" ? "" : ", ") + entry.path().filename().string());
}
}
}
ModUtils::log("Loading libs reached end!");
}

//0x272390
void __fastcall LoadingLayer_loadAssets(CCLayer* self, void* edx) {
afterLoad = true;
MappedHooks::getOriginal(LoadingLayer_loadAssets)(self, edx);
if (!CCFileUtils::sharedFileUtils()->isFileExist("ONEMR_Loader.NoInfo") && !CCFileUtils::sharedFileUtils()->isFileExist("ONEMR_Loader.AddInfo")) {
std::string fileinfo = (
"u can delete that file, so message box with confirm appears again" "\n"
"if exists ONEMR_Loader.NoInfo => dont show loaded mods info in corner" "\n"
"if exists ONEMR_Loader.AddInfo => dont show confirm message box"
);
if (MessageBoxExA(nullptr, "Enable showing info?", "ONEMR_Loader", MB_ICONQUESTION | MB_YESNO, LANG_ENGLISH) == IDYES) {
std::remove("ONEMR_Loader.NoInfo");
std::ofstream("ONEMR_Loader.AddInfo") << fileinfo;
}
else {
std::ofstream("ONEMR_Loader.NoInfo") << fileinfo;
std::remove("ONEMR_Loader.AddInfo");
}
}
if (CCFileUtils::sharedFileUtils()->isFileExist("ONEMR_Loader.NoInfo")) return self->removeChildByTag(938);
self->removeChildByTag(938);
CCLabelTTF* ModsCountLabel = CCLabelTTF::create(std::format(
"ONEMR_Loader: {} dlls loaded{}",
ModsLoaded,
ModsLoadedList == "" ? "" : ("\n" + ModsLoadedList)
).c_str(), "Arial", 12.000f);
ModsCountLabel->setHorizontalAlignment(CCTextAlignment::kCCTextAlignmentLeft);
ModsCountLabel->setAnchorPoint({ -0.01f, -0.1f });
ModsCountLabel->setScale(0.4f);
ModsCountLabel->setOpacity(68);
ModsCountLabel->setBlendFunc({ GL_SRC_ALPHA, GL_ONE }/*that is additive blend*/);
self->addChild(ModsCountLabel, 10, 938);/**/
}

//0x1907b0
bool __fastcall MenuLayer_init(CCLayer* self, void* edx) {
MappedHooks::getOriginal(MenuLayer_init)(self, edx);
//afterLoad
if (!afterLoad) return true;
afterLoad = false;
//ONEMR_Loader.NoInfo
if (CCFileUtils::sharedFileUtils()->isFileExist("ONEMR_Loader.NoInfo")) return true;
//geode thook origin call bug
twoTimesBoolCallEscapeByParrentNode(self);
//add label
CCLabelTTF* ModsCountLabel = CCLabelTTF::create(std::format(
"ONEMR_Loader: {} dlls loaded{}",
ModsLoaded,
ModsLoadedList == "" ? "" : ("\n" + ModsLoadedList)
).c_str(), "Arial", 12.000f);
ModsCountLabel->setHorizontalAlignment(CCTextAlignment::kCCTextAlignmentLeft);
ModsCountLabel->setAnchorPoint({ -0.01f, -0.1f });
ModsCountLabel->setScale(0.4f);
ModsCountLabel->setOpacity(68);
ModsCountLabel->setBlendFunc({ GL_SRC_ALPHA, GL_ONE }/*that is additive blend*/);
ModsCountLabel->runAction(CCEaseExponentialIn::create(CCFadeTo::create(3.0f, 0)));
self->addChild(ModsCountLabel, 10, 938);
return true;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
LoadMods(hModule);
MH_Initialize();
MappedHooks::registerHook(base + 0x18c8e0, LoadingLayer_loadAssets);
MappedHooks::registerHook(base + 0x1907b0, MenuLayer_init);
}
return TRUE;
}
File renamed without changes.
27 changes: 27 additions & 0 deletions ONEMR_Loader-2.200/CMakePostBuild.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
::Msg "%username%" developer: %1, PROJECT_NAME: %2, LIBRARY_OUTPUT_PATH: %3, lib_output: %4

@echo POST_BUILD_PART

@set "$Title=Built mod install"
@set "$Message=Done: "

@echo "working at LIBRARY_OUTPUT_PATH: %3"
@cd "%3"

@echo "remove minhook built static lib because who needs it even"
@if exist "minhook.x32.lib" del "minhook.x32.lib"

@echo "copy dll to game: %2.dll => %4"
@if not exist "%2.dll" set "$Message=Can´t found %3/%2.dll to copy dll!"
if exist "%2.dll" copy "%2.dll" %4

::BEEEp if smth wrong
@if not "%$Message%" == "Done: " rundll32 user32.dll,MessageBeep
::add warn emoji
@if not "%$Message%" == "Done: " set "$Title=⚠️ Failed to %$Title%"

@if "%$Message%" == "Done: " set "$Message=%$Message%%4"

::push notify
@powershell -Command "& {Add-Type -AssemblyName System.Windows.Forms; Add-Type -AssemblyName System.Drawing; $notify = New-Object System.Windows.Forms.NotifyIcon; $notify.Icon = [System.Drawing.SystemIcons]::Information; $notify.Visible = $true; $notify.ShowBalloonTip(0, '%$Title%', '%$Message%', [System.Windows.Forms.ToolTipIcon]::None)}"
@echo [%$Title%]: %$Message%
15 changes: 15 additions & 0 deletions ONEMR_Loader-2.200/CMakeSettings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"configurations": [
{
"name": "x86-Release",
"generator": "Ninja",
"configurationType": "Release",
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x86" ]
}
]
}
23 changes: 23 additions & 0 deletions ONEMR_Loader-2.200/Version.rc
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
1 VERSIONINFO
FILEVERSION ${FILEVERSION}
PRODUCTVERSION ${FILEVERSION}
FILEOS 0x40004
FILETYPE 0x2
{
BLOCK "StringFileInfo"
{
BLOCK "040904B0"
{
VALUE "ProductName", "${PROJECT_NAME}"
VALUE "CompanyName", "${developer}"
VALUE "LegalCopyright", "${LegalCopyright}"
VALUE "FileDescription", "${description}"
VALUE "OriginalFilename", "${PROJECT_NAME}.dll"
}
}

BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0409 0x04B0
}
}
Binary file added ONEMR_Loader-2.200/libcurl.dll
Binary file not shown.
6 changes: 6 additions & 0 deletions ONEMR_Loader-2.200/libcurldist_readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# libcurldist
made for installing mod loader to a clear game

libcurl.dll is file that game loading:
1. game loading libcurl.dll
2. libcurl.dll loading ONEMR_Loader.dll
File renamed without changes.
Binary file removed ONEMR_Loader.dll
Binary file not shown.
Binary file removed ONEMR_Loader_dist.zip
Binary file not shown.
23 changes: 0 additions & 23 deletions src/version.rc

This file was deleted.

0 comments on commit 2b26031

Please sign in to comment.