From 05bbc6d482b0d901ceb5b210b5402508987d9be6 Mon Sep 17 00:00:00 2001 From: Kent Slaney Date: Mon, 9 Sep 2024 17:09:18 -0700 Subject: [PATCH] promptless dll plugins --- .SRCINFO | 4 ++-- PKGBUILD | 16 +++++++++------- settings_252950_bakkes.py | 19 +++++++++++++------ 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 204fc34992ff..066bb9874486 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = bakkesmod-steam pkgdesc = A mod aimed at making you better at Rocket League! pkgver = 2.43 - pkgrel = 3 + pkgrel = 4 url = https://bakkesmod.com/ arch = x86_64 license = GPL @@ -13,7 +13,7 @@ pkgbase = bakkesmod-steam makedepends = python source = dll-2-0-43.zip::https://github.com/bakkesmodorg/BakkesModInjectorCpp/releases/download/2.0.43/bakkesmod.zip source = src-2-0-43.zip::https://github.com/bakkesmodorg/BakkesModInjectorCpp/archive/refs/tags/2.0.43.zip - source = loopback-2-43-3.zip::https://github.com/kentslaney/bakkesmod-arch/archive/refs/tags/2.43-3-steam.zip + source = loopback-2-43-4.zip::https://github.com/kentslaney/bakkesmod-arch/archive/refs/tags/2.43-4-steam.zip sha256sums = 3d39b07149872d891659330185ef9c4e02c580bfad67ed2df9979dbd72d4ae61 sha256sums = 2d9cb1534fbae77ba008b07be3291d30e98a872ebfb0f0b3e6bb0c638d98bef8 sha256sums = SKIP diff --git a/PKGBUILD b/PKGBUILD index de19f3758ee7..b8a4d451d0b3 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: Kent Slaney pkgname=bakkesmod-steam pkgver=2.43 -pkgrel=3 +pkgrel=4 pkgdesc="A mod aimed at making you better at Rocket League!" arch=('x86_64') url="https://bakkesmod.com/" @@ -61,17 +61,13 @@ build() { int wmain(int argc, wchar_t* argv[]) { std::wstring ps = L"RocketLeague.exe"; - auto official = L"C:\\users\\steamuser\\AppData\\Roaming\\bakkesmod\\bakkesmod\\dll\\bakkesmod.dll"; - auto promptless = L"C:\\users\\steamuser\\AppData\\Roaming\\bakkesmod\\bakkesmod\\dll\\bakkesmod_promptless.dll"; - const wchar_t* launcher = official; + const wchar_t* launcher = L"C:\\users\\steamuser\\AppData\\Roaming\\bakkesmod\\bakkesmod\\dll\\bakkesmod.dll"; DllInjector dllInjector; bool launching = false; for (int i = 1; i < argc; i++) { auto arg = std::wstring(argv[i]); if (arg == L"launching") { launching = true; - } else if (arg == L"promptless") { - launcher = promptless; } } if (launching) { @@ -144,6 +140,8 @@ package() { echo "$proton_paths" > "$srcdir/runner.sh" # supposedly this might need to be ESYNC in some cases but this works by default cat <<" EOF" >> "$srcdir/runner.sh" + dll=`[ "$PROMPTLESS" = 1 ] && echo "bakkesmod_promptless.dll" || echo "bakkesmod_official.dll"` + ln -sf "$bm_pfx/bakkesmod/dll/$dll" "$bm_pfx/bakkesmod/dll/bakkesmod.dll" WINEFSYNC=1 WINEPREFIX="$compat/pfx/" "$proton/bin/wine64" "$@" EOF chmod a+x "$srcdir/runner.sh" @@ -152,7 +150,10 @@ package() { unzip -quo "dll-$rlesc.zip" -d "$bm_pfx/bakkesmod" # by default, starts with bakkesmod.dll and outputs bakkesmod_promptless.dll echo -n "shunted winuser calls for DLL patch: " - python "$srcdir/dll_patch.py" "$bm_pfx/bakkesmod/dll" + dll_path="$bm_pfx/bakkesmod/dll" + python "$srcdir/dll_patch.py" "$dll_path" + mv "$dll_path/bakkesmod.dll" "$dll_path/bakkesmod_official.dll" + ln -sf "$dll_path/bakkesmod_official.dll" "$dll_path/bakkesmod.dll" cp -f "$srcdir/inject.exe" "$bm_pfx" cp -f "$srcdir/runner.sh" "$srcdir/dll_patch.py" "$bm_pfx" @@ -217,6 +218,7 @@ pre_remove() { end=`echo "$end" | awk "\$0 > $start" | head -1` remove_between "$start" "$end" "$conf" > "$conf" fi + if [[ -z `cat "$conf" | tr -d "\n"` ]]; then rm "$conf"; fi fi rm -fr "$bm_pfx" } diff --git a/settings_252950_bakkes.py b/settings_252950_bakkes.py index f8dc8e6b12d9..cd7cc478ac14 100644 --- a/settings_252950_bakkes.py +++ b/settings_252950_bakkes.py @@ -1,10 +1,17 @@ -import os, shlex +import os, shlex, pathlib flag = "BAKKES" def update(user_settings): - dll = ("promptless",) if os.environ.get("PROMPTLESS", "0") == "1" else () + promptless = os.environ.get("PROMPTLESS", "0") == "1" + dll = "bakkesmod_promptless.dll" if promptless else "bakkesmod_official.dll" + pfx = pathlib.Path(os.environ["STEAM_COMPAT_DATA_PATH"]) / \ + pathlib.Path("pfx/drive_c/users/steamuser/AppData/Roaming/bakkesmod") + print(pfx) + return + dll_path = pfx / "bakkesmod" / "dll" + try: + os.remove(dll_path / "bakkesmod.dll") + finally: + os.symlink(dll_path / dll, dll_path / "bakkesmod.dll") user_settings.update({"PROTON_REMOTE_DEBUG_CMD": shlex.join(( - os.environ["STEAM_COMPAT_DATA_PATH"] + - "/pfx/drive_c/users/steamuser/AppData/Roaming/bakkesmod/inject.exe", - "launching") + dll)}) - + str(pfx / "inject.exe"), "launching"))})