It's a bit disappointing to see how much of other peoples stuff this requires and you used, but you are gating features/updates behind a paywall.
What I mean by this is:
1. You used emoose's DQXIHook code directly and just renamed the output file. Original source code is here:https://github.com/emoose/DQXIHook
The code is all his stuff with the exception of you adjusting it to not be specific to DQ.
The actual hook is the same.
bool FileExists(LPCWSTR path)
DWORD dwAttrib = GetFileAttributesW(path);
return (dwAttrib != INVALID_FILE_ATTRIBUTES && !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
void* __fastcall PakFile__Find_hook(void* thisptr, void* Filename)
const TCHAR* fname = *(TCHAR**)Filename;
if (wcsstr(fname, gameDataStart) && FileExists(fname))
return 0; // file exists loosely, return false so the game thinks that it doesn't exist in the .pak
return PakFile__Find_orig(thisptr, Filename);
__int64 __fastcall sub_1800011F0(__int64 a1, const wchar_t **a2, __int64 a3)
const WCHAR *v3; // rbx
const wchar_t **v4; // rdi
__int64 v5; // rbp
__int64 v6; // rsi
DWORD v7; // eax
__int64 result; // rax
v3 = *a2;
v4 = a2;
v5 = a1;
v6 = a3;
if ( !wcsstr(*a2, L"../../../") || (v7 = GetFileAttributesW(v3), v7 == -1) || v7 & 0x10 )
result = qword_1800089B0(v5, v4, v6);
result = 0i64;
You even left debug symbols/info in which further proves this:
2. Your setup as it is relies on things to even work.
- My personal Steamless project.
- An injector. (In your case, you showed with ExtremeInjector.)
- An offline Steam Emulator. (In your case, you showed with Goldberg.)
Steamless isn't required to get something like this to work. Understanding how injection works and how SteamStub works would get around all of that along with the issue you had in your video of the game double-loading/restarting itself. This is all stuff that is easily fixed/avoided if you understand the base of what you're doing/working on.
I don't want to sound harsh or mean towards your project/goal, but I would highly encourage you to rethink your Patreon and just leave open a means of people to donate as a way to say thanks if you are going to use everyone else's stuff to do this. It's pretty crappy for you to ask for money directly for new features/early access to something like this when it's like.. 99% not yours to begin with.
As I Said in the original post, the dxgi proxy and minhook part was taken from emoose later on, yes.
We started fresh on his project because it was much easier to transfer our Main.cpp to his project than the other way around.
I do state that this wouldnt even be possible without you guys work on my YouTube as well. It's No secret really.
The dll is supposed to be renamed btw. Because It's using dxgi to load the DLL.
It's not some sort of Scheme to hide that we compiled from His source.
Where the work is and why I made a Patreon, is in expanding compatibility, adding features and hopefully making it NOT rely so much on things like steamless, goldberg and sometimes extremeinjector.
If you play cracked games, it usually Always works straight out of the box, but since I didnt want to encourage piracy, I decided to include these tools as part of the video.
The patreon is optional and the stuff on there Will be moved to public in a Short amount of time and I dont expect to make anything from it anyway.
It's just a fun way to have an Early Access and feel a Little more official.
Hope I cleared some things up.