The user “Jeed” does a very good job at explaining on how you can achieve something and also already developed a small server-side plugin / mutator.
Unfortunately he only shows code-snippets and didn’t provide a source code for his plugin yet. Initialization, declarations, hooks, etc.
He also said that his plugin exists of two files: A “version.dll” and a .ini file. I guess the “version.dll” will be loaded by the server automatically. So I created a small empty .dll in Dev-C++, compiled it, renamed it to version.dll and copied it into the Binaries\Win64 folder. But when starting the server after that I get an error message saying that he cannot find the function “VerQueryValueW”.
I want to create a plugin / mutator which renders player structures immune to damage. Or in other words: I want to add a “Indestructable Bases” feature to my server.
In X64DBG I can open the ShooterGameServer.exe and thankfully the Devs provided a ShooterGameServer.pdb. I figured there is a function:
APrimalStructure::TakeDamage
When I set a breakpoint in X64DBG, it gets triggered whenever I hit a wall or a storage box. So I guess in my plugin I “just” need to hook this function and basically change its behaviour so it doesn’t forward the applied damage, but plain 0.
How can I achieve that? How can I hook / override this “APrimalStructure::TakeDamage” function in my plugin? I’m basically missing the “plugin skeleton” with all the needed “overhead” for creating a working version.dll which is correctly loaded by the ShooterGameServer.exe.
What do I need? Can I work with Dev-C++? Or do I need Visual Studio?
Any help is very appreciated! Thank you very much! <3
This is correct. I had a 3 paragraph reply typed out for you, but accidentally deleted it by pressing “Reply” instead of “Post Quick Reply”. In summary, What you are doing is unofficial modding that doesn’t involve mutators nor is exclusive to UE4. Try asking on a cheats/modding forum. You’ll be injecting a DLL (via an injector or by letting the Server self-inject with a modified DLL, which it looks like the other guy did) and then hooking functions and rerouting them to your own logic. For now, you can hardcode the mod right into the server binary (I did this for an NS2 server mod). There are a couple ways to achieve what you want (I had 4 ways typed out), but the cleanest/simplest/safest way is just to find the damage value being grabbed from the stack/register, and replace the instruction to grab “0” instead.
Thank you very much for responding. This actually really helps me, because it finally clarifies on how to not do it.
I’m still sitting here trying to figure that out. Gosh … Like 10+ hours. D: I also came to the same conclusion: Unless the devs of ARK provide a more “user-friendly” way to create server-mods, the only sane solution is via DLL injection / function hijacking.
I will go to bed now. Will implement this when I got up.
the problem here is, that we have no idea what the ARK developers do with their servers. This forum here is only for general UE4 Help. We could tell you how to mod for a Game that allows mods, but as long
as we don’t know how ARK manages mods, we can’t really help you.
You would be more helped if you go to ARK Forums.
ARK itself has no official forum despite the Steam forums, but you could have a look here:
This is an unofficial forum and since i posted a Thread on how to create a Server for ARK,
the Forum user count exploded. Maybe you find someone there who is modding too.
The Ark Devs released an “Ark Dev Kit” some days ago. But unfortunately it only focuses on creating “mods” in terms of either creating new maps or modifying the existing “TheIsland” map. But in all cases the mods are bound to a map and need to be delivered with them. So it is mainly “client sided”.
I hoped the UT “Mutator Tutorial” also works for ARK. But I think it won’t. But still, when searching the Server’s .exe and the provided .PDB file it contains alot of appearances of “Mutator”. So it seems like they implemented Mutator support, but without further API or source codes we can’t do anything with it anyway I guess.
@nuclearping - Judging by some of the statements by Wildcard, I think they will be opening up their native code to modding soon, so it might be worthwhile to simply wait until it’s a bit more approachable and doesn’t involve hacky DLL injection and such.