PDA

View Full Version : Update to support more games


Calystos
08-27-2013, 00:23
I know its been asked before, including by myself (way back in Jan 2012, though I never got a reply to my last question), but that was quite some time ago back when TF2/etc were all on Source 2009 so I thought its time to bring up the question again since everything is moving/moved to SteamPipe and Source 2013.

Is it possible to now update SteamTools to support other games such as Left 4 Dead 1/2, Nuclear Dawn, etc?

Specially since SteamTools hasn't been updated in such a long time now.

Or does anyone know how to mod the source code in order to recompile it ourselves in order to make it work with other games?

As I know that if you try to load the last steamtools.ext.so dated October 2012 in ND/L4D2 it complains about

Could not find interface: ServerGameDLL007


If anyone can give me the info on how to change SteamTools source and recompile/build it for Linux (and Windows I guess, heh) servers, I'd gladly work on it to help out and bring it up to work with more games.

Or failing all that, is it possible to create the same functionality or features for those other games? Or maybe even re-write certain plugins to do the job without requiring the SteamTools extension?

As there are lots of plugins that require SteamTools, and lots of people who've been asking for the support for some time now but no updates or anything. So any tips or guides or anything would be great as I'm sure many people would be thankful for a version that works on those games too, I know I certainly would be! :-D

Thanks.

Powerlord
08-27-2013, 14:18
Source SDK 2013 is just a port of part of TF2's codebase to build new Source games with (you still see #ifdef TF_DLL scattered around it). That doesn't mean Valve's other games were moved to it.

Edit: For that matter, TF2 is now up to ServerGameDLL009.
Edit 2: According to the AlliedMods hl2sdk, L4D2 is using ServerGameDLL005

Powerlord
08-27-2013, 16:04
For the record, attempting to compile it against L4D2 on Windows throws these errors (every other error skipped due to them being caused by the odd numbered errors):

Error 1 error C2039: 'GameServerSteamAPIActivated' : is not a member of 'IServerGameDLL' c:\projects\sourcemod\dev\sourcemod_extension s\steamtools\extension\extension.cpp 74 1 steamtools
Error 3 error C2039: 'GameServerSteamAPIActivated' : is not a member of 'IServerGameDLL' c:\projects\sourcemod\dev\sourcemod_extension s\steamtools\extension\extension.cpp 74 1 steamtools
Error 5 error C2039: 'GameServerSteamAPIActivated' : is not a member of 'IServerGameDLL' c:\projects\sourcemod\dev\sourcemod_extension s\steamtools\extension\extension.cpp 74 1 steamtools
Error 7 error C2039: 'GameServerSteamAPIShutdown' : is not a member of 'IServerGameDLL' c:\projects\sourcemod\dev\sourcemod_extension s\steamtools\extension\extension.cpp 75 1 steamtools
Error 9 error C2039: 'GameServerSteamAPIShutdown' : is not a member of 'IServerGameDLL' c:\projects\sourcemod\dev\sourcemod_extension s\steamtools\extension\extension.cpp 75 1 steamtools
Error 11 error C2039: 'GameServerSteamAPIShutdown' : is not a member of 'IServerGameDLL' c:\projects\sourcemod\dev\sourcemod_extension s\steamtools\extension\extension.cpp 75 1 steamtoolsand some other errors dealing with 'PEntityOfEntIndex' not being a member of 'IVEngineServer', but iirc that can be worked around.

Dr. Greg House
01-02-2014, 20:18
Bumping this in the hope that this might be the cure against F2Pers flooding L4D2 versus and destroying the games.

Sillium
01-07-2014, 08:44
I don't think you can block F2P-L4D2-Players.... because L4D2 is not F2P. Yes Valve gave it away for free for a while but it's no F2P-Game like TF2 where you can distinguish between F2P and Premium players.

Dr. Greg House
01-07-2014, 19:06
It is possible and would be done the exact same way, as previously discussed in the IRC.

Sillium
01-08-2014, 04:57
So how can you distinguish between someone who got L4D2 while Valve gave it away and someone who bought it?
I'm just curious

Dr. Greg House
01-08-2014, 05:38
Look at the TF2 plugin.

Powerlord
01-08-2014, 09:18
Look at the TF2 plugin.
The TF2 plugin checks to see if players have Premium DLC, which TF2 players get the first time they buy something from the in-game store or when someone buys them an Upgrade to Premium thing from said store. L4D2 doesn't have that.

KyleS
01-08-2014, 11:06
L4D2 doesn't have that. You're right in the sense that it doesn't have DLC. However, their subscription is different then those who bought it.

I think you must use Steam_CheckClientSubscription/Steam_GetClientSubscription from SteamTools. Subs for F2P are 36144 (ROW), 36145 (DE), 36146 (AU)
Something like
bool:IsClientF2P(client)
{
new subId, subCount = Steam_GetNumClientSubscriptions(client);
for (new i = 0; i < subCount; i++)
{
subId=Steam_GetClientSubscription(client, i);
if (36144 <= subId <= 36146)
{
return true;
}
}
return false;
}

As to if it works or not is beyond me. SteamDB seems to support what was written; though.