I know the guy.. He helped me with my own code till we both discovered Solokillers work. Then he ceased development. The public code is even less sophisticated than the private one I own and even that it a total dev build. For instance many NPC actions spawn a spark on top their heads for verification that things worked as intended coding wise. Unfortunately I'm to stupid and limited in time to figure things out myself.
If you got the coding know how let me know and I'll send you that internal code. He fixed dozens of spirit related bugs and cleaned up the whole code of it big time. At least so he claimed but I believe that he did.
HLEnhanced was never really planned that well which is why i ceased development. I am planning to make a successor that does stuff properly (and with a unique name so it doesn't get confused for
another mod).
That spark issue is actually vanilla HL behavior that happens in debug builds:
https://github.com/ValveSoftware/halflife/blob/c7240b965743a53a29491dd49320c88eecf6257b/dlls/schedule.cpp#L184-L194If you're looking for any functionality in particular you can always make a list and i'll see what i can do. The planned mod might be enough for your needs, but Asset Manager V1 has to be released first before i can work on that. That project is going into beta soon, once i get a few remaining features implemented and the installer setup done.
Another guess is CMake and dependencies. You need to build the XercesC library, and use CMake to generate project files for Visual Studio, if I recall correctly. That probably pushes away many people, especially beginners. But then again, it's 2021, programmers are supposed to be familiar with at least one or two build systems. :/
Yeah Xerces was a bad choice. There are XML parsing libraries that are lightweight, header only and don't have the separate dependency requirement. The only downside is they don't support the full XML spec, but i doubt anybody would ever use namespaces, entities and doctypes.
I can update HLEnhanced to replace the XML library, but it's still advised to not use it. I already have a library in mind for the replacement project so i can just update HLE first.
As far the FMOD Ex issues go, the library can no longer be downloaded from the official website so getting a compatible version is going to be difficult. For some reason the library was never included in Spirit installations so i don't know if you can find a compatible version anywhere. The web archive lists old download links but none of them work and the archived copy doesn't have the files either.
You might be able to get a copy if you can find a mod that uses that particular version of fmod, but it seems that the library was only renamed to fmodex.dll relatively shortly before being discontinued so that might not be possible. I do have an old version of it in an old HLMV installation, version 4.44.61 but i don't know if it's compatible or if it's even a release version.
You may be better off just upgrading the codebase to FMOD Studio instead. If you encounter issues with GetProcAddress calls you may be better off just using the import library and using delay loading to load it from cl_dlls.
The process for delay loading is described here:
https://docs.microsoft.com/en-us/cpp/build/reference/linker-support-for-delay-loaded-dlls?view=msvc-160But it's a bit verbose. The gist of it is that you need to handle loading yourself and can load from a different location on disk:
https://github.com/Solokiller/HLEnhanced/blob/master/game/shared/DelayLoad.hhttps://github.com/Solokiller/HLEnhanced/blob/master/game/shared/DelayLoad.cppYou also need to specify the library to be delay loaded in the linker settings for client.dll. In HLE this is done in the
CMakeLists file, but for regular Visual Studio projects it's done through VS's properties dialog for client.dll.
You also need to link with the delayimp.lib library for this to work.
The library will be loaded when you first invoke any function imported from the library, so you need to make sure the client dll has at the very least received the engine pointers before it will work. Otherwise it will crash when trying to get the mod name from the engine.
If this is all too confusing i can take a look at the project and upgrade it to FMOD Studio along with delay loading support.