ValveSoftware / halflife

Half-Life 1 engine based games
Other
3.65k stars 617 forks source link

GoldSRC [Build 8245] compatible with Half-Life mod`s. #2488

Open ghost opened 5 years ago

ghost commented 5 years ago

With GoldSRC [Build 4554] and with earlier, old fashions that no longer have support [1999-2008] work fine. But it is worth upgrading to the [Build 8245] version, as various incompatibility errors immediately pop up.

After upgrades from 2013, many mods have stopped working. For example:

https://www.moddb.com/mods/counter-strike/downloads/counter-strike-15-for-steam/

With the previous version of Half-Life [Build 4554], everything works well. And starting with the version from 2013 and above, it knocks an error: "Fatal Error could not load library g: \ jogos e programas \ steam \ steamapps \ common \ half-life \ csv15 \ cl_dlls \ client.dll "

The situation is similar with many other old mods. Many mods for Half-Life were released in the early 2000s and most of the projects do not develop anymore, so they hope there will be no sense in updating.

Until 2013, everything worked perfectly. Now there is no. What are the solutions?

SamVanheer commented 5 years ago

I checked out the mod you linked, when i tried to load it i got error code 193: %1 is not a valid Win32 application.

The client dll included with that installer is not a valid dll file, it is neither a 16 bit nor a 32 bit application. IDA won't recognize it either. The server dll (mp.dll) does appear to be valid however.

The only possible explanation that i can come up with other than corrupted dlls is that this is an encrypted dll.

The engine used to support what it refers to as secure clients, but these days secure clients are loaded just like insecure ones, they're just checked for a particular exported function to use a different initialization method. If the CS 1.5 dll included with this is such a secure dll then the engine won't be able to load it.

In that case, if Valve wants to allow the use of such dlls they should provide a tool to decrypt the dlls into the dll file that engine used to produce at runtime.

To my knowledge the code used to decrypt these (called a "security module" in UI code) was downloaded from some server so extracting the code from older engine builds may not be possible. Somebody with access to such an engine build and experience in reverse engineering it should be able to say for sure.

Please link to other mods affected by this so they can also be checked.

Srandista commented 4 years ago

I can confirm this issue, but I found a workaround for it. I just use client.dll file from previous version of CS, specifically version 1.3 (linked below). Version 1.4 client.dll doesn't work, I get the same error as with version 1.5.

<Link removed by moderator>