[ANY] SteamWorks
1 Attachment(s)
Hello, this extension actually provides a bunch of things now (originally; Family Sharing detection).
This should function for any SteamWorks enabled game. However, I've only tested using CS:S on Linux. Windows builds are possible, but I can't support them. Interfaces presently supported (and exposed to Pawn). ISteamGameServer, ISteamHTTP, ISteamGameServerStats. If you'd like more interfaces added (with natives/hooks); by all means just post. Include File: https://github.com/KyleSanderson/Ste...SteamWorks.inc Confirmed (maybe) working: CS:GO Lin/Win, CS:S Lin/Win, DoD:S Win, L4D2 Lin/Win, TF2 Lin/Win. My game doesn't work! Nothing works! :( That's a bug, let me know and we can probably fix it. Installation Instructions: This is no longer the case, Valve has since updated a lot of games with a newer steamclient copy then what's attached. If your game has been updated recently, you should be fine (a lot has changed in 3 years). If you're still running an ancient game like L4D2 and not something more recent and up to date like CS:S or DoD:S you need any steamclient from the past 4 years to have this work. The rest is pretty straight forward, just extract SteamWorks to your gamedir. Thanks to: VoiDeD - Showing how to use Callback Macros. psychonic - Example for HTTP, knowing which binaries to replace, significant buildbot help. Drifter - Significant amb2 help. Unknown Steamworks Devs - Adding the requested functionality to SteamWorks after Family Sharing was being heavily abused. Plugins to supplement SteamWorks.ext Functionality: https://forums.alliedmods.net/showthread.php?p=2331846 Plugins using SteamWorks.ext: https://forums.alliedmods.net/showthread.php?t=236521 https://forums.alliedmods.net/showthread.php?t=237481 https://forums.alliedmods.net/showthread.php?t=253404 https://forums.alliedmods.net/showthread.php?t=252712 Full Documentation: https://github.com/alliedmodders/hl2...3/public/steam https://partner.steamgames.com/ Hopefully this helps someone. The latest development version can be found here: https://github.com/KyleSanderson/SteamWorks The latest development builds can be found here: https://github.com/KyleSanderson/SteamWorks/releases Old development builds can be found here: http://users.alliedmods.net/~kyles/builds/SteamWorks/ |
Re: [ANY] SteamWorks
In L4D2 people can prevent you from joining a server (precisely the one they are currently playing on) by blocking you in steamfriends/-community. This is bullshit because it happens quite regularly that this way people lock you out of your own server and there is nothing you can do about it.
I remember asking asherkin about this, but unfortunately I cannot remember the exact content of the conversation anymore. I THINK "steamworks" came up, I don't know, so this request could turn out to be misplaced. But I would be more than glad to be able to a) know who's preventing who from joining and b) allowing a person to join anyway. |
Re: [ANY] SteamWorks
Quote:
If you want to try a test extension, I can add the callback for you :O |
Re: [ANY] SteamWorks
Ofc, the least I can do is be your guinea pig.
Also, from what I understand how CS:GO works, it bases on many things l4d(2) has introduced. |
Re: [ANY] SteamWorks
1 Attachment(s)
Quote:
PHP Code:
|
Re: [ANY] SteamWorks
I will try to test this tomorrow (depends on whether the person who has the right amount of patience is available).
|
Re: [ANY] SteamWorks
Is this (just) an extension that makes it possible to ID the owner and player SteamID's? or is there also a plugin or something that makes SourceMod banning work based on that?
|
Re: [ANY] SteamWorks
Quote:
Quote:
|
Re: [ANY] SteamWorks
Had the time to test this now. I wrote a small testplugin to log the output (if any) and nothing happened. So I looked more closely if both the extension and the plugin loaded successfully and they did. So no message is logged, neither on allowed join nor on a blocked attempt.
The console of the blocked client(!) shows this Code:
CSysSessionClient: lobby response 10! |
Re: [ANY] SteamWorks
Quote:
PHP Code:
Do you have any output from the server? I can expose: PHP Code:
|
Re: [ANY] SteamWorks
Nope, no output at all.
I actually don't necessarily care about who prevents someone from joining, I'd simply like to join either way (if that is still possible). |
Re: [ANY] SteamWorks
Okay, I have another one:
Dr. McKay's steamupdater (and a script I wrote) uses steamtools to determine when the masterserver informs the server of an update. Steamtools currently does not support L4D2 and other games, so I was wondering if you could add the forward needed for the plugins to be able to be ported to other engines. |
Re: [ANY] SteamWorks
1 Attachment(s)
If this is allowed (I remember that psychonic removed compiled extensions at some thread during SteamPipe beta, so I don't know..), here is windows build.
UPD: Tested on CSS Windows. Works fine. |
Re: [ANY] SteamWorks
You need to attach the exact source code you used.
|
Re: [ANY] SteamWorks
Quote:
|
Re: [ANY] SteamWorks
Quote:
|
Re: [ANY] SteamWorks
Quote:
Quote:
Quote:
Quote:
|
Re: [ANY] SteamWorks
1 Attachment(s)
Quote:
Attached MSVC10 project files. Using environment variables HL2SDK and STEAMWORKS_SDK, other paths are relative to sourcemod/extensions folder. It's enough for compile. Also, here is simple fix for SB plugin (add this to the end of sourcebans.sp) that will just check if the user using Family sharing and if the owner banned. PHP Code:
Also, later I will try to modify banning system to ban only owner SteamID. |
Re: [ANY] SteamWorks
Good idea KyleS. This will prove to be very useful once the Family Sharing gets out of beta.
I'm going to try and spread this across all competitive servers in L4D2. Smurf accounts in that game are already an acute problem as it is, but with FS it will only get uglier. Best is to lock out FS users out of the competitive scene completely. |
Re: [ANY] SteamWorks
Quote:
PHP Code:
|
Re: [ANY] SteamWorks
Quote:
Will you add my MSVC config (and maybe compiled win version) to the first post? Or you will not support windows builds at all? |
Re: [ANY] SteamWorks
Uncompilable with L4D2 SDK nor Source 2013 SDK. And the compiled version, despite loading fine in L4D2, doesn't generate anything, or generates random trash values.
|
Re: [ANY] SteamWorks
Quote:
|
Re: [ANY] SteamWorks
This needs the natives free to be kicked uses so that something similar can be done for L4D2 which is pretty much unplayable at the moment.
|
Re: [ANY] SteamWorks
KorDen
Thanks, worked. Dr. Greg House Didn't quite understand what you said there. Did you mean that you want a way to detect "free-to-buy" Christmas players? |
Re: [ANY] SteamWorks
Quote:
|
Re: [ANY] SteamWorks
1 Attachment(s)
If anyone's feeling brave, here's a WIP. I lied, there are a few natives, and forwards.
Steam_IsVACEnabled(); Steam_GetPublicIP(addr[4]); Steam_GetPublicIPCell(); Steam_IsLoaded(); Steam_SetGameDescription(const String:sDesc[]); Steam_IsConnected(); Steam_SetRule(const String:sKey[], const String:sValue[]); Steam_ClearRules(); Steam_ForceHeartbeat(); And Forwards Steam_SteamServersConnected Steam_SteamServersConnectFailure(EResult); Steam_SteamServersDisconnected(EResult); If you have anything legacy from SteamTools and use it, let me know. If there's anything on ISteamClient, ISteamGameServer, ISteamUtils, ISteamNetworking, ISteamGameServerStats or ISteamHTTP again let me know. Things that require callbacks (like most stat functions / http) will come later. I'd say they wont, but at this point; might as well jump in and splash around. Natives are a bit strange in this, everything not explicit is a bool and will return false on failure. Current Source is available: https://github.com/KyleSanderson/SteamWorks Compiled From: https://github.com/KyleSanderson/Ste...90b0d2d7b2af85 Pull requests are definitely welcome; try to match the style :( If you encounter a crash or something equally bizarre. It's a debug build; so if you attach a debugger and type `bt full` without back-ticks we can probably figure it out. |
Re: [ANY] SteamWorks
Quote:
Do I understand it right, you want to implement SteamTools features that related to a server and doesn't require connection to Steam backend? (so you will not add e.g. gameplay stats?) Question: is there a way to detect which version of auth libraries are on the server? E.g. to check before use SW_OnValidateClient? Quote:
Something like PHP Code:
|
Re: [ANY] SteamWorks
Quote:
Quote:
|
Re: [ANY] SteamWorks
Please use your own prefix rather than SteamTools' Steam_, people can't use both extensions on the same server currently as the names clash.
|
Re: [ANY] SteamWorks
Quote:
|
Re: [ANY] SteamWorks
SW_OnValidateClient but SteamWorks_***...
Maybe use one style, e.g. SW_*** for all? |
Re: [ANY] SteamWorks
Quote:
|
Re: [ANY] SteamWorks
Looks like you don't have .inc file on github. I have a question: which results can be in forwards? I think that copy entire EResult enum to .inc isn't a best way, because there are many states not related to the servers...
|
Re: [ANY] SteamWorks
Quote:
Quote:
|
Re: [ANY] SteamWorks
Quote:
Yup. @KyleS: Can you do it? :) |
Re: [ANY] SteamWorks
Quote:
--- Tested on CS:S Windows. Looks like all works fine. (Test plugin & inc) https://i.imgur.com/k7WmKFc.png The only thing I can't understand is why EResult=84 when I disconnect network interface (in enum there are 1-83) |
Re: [ANY] SteamWorks
Quote:
|
Re: [ANY] SteamWorks
Quote:
|
Re: [ANY] SteamWorks
Would this extension be usefull to fix steam connection loss on linux CS:GO SRCDS (server that don't re-connect to steam until hibernation)?
This is really a pain and occurs sometimes more than once a day, server then need to be empty to allow new user connections (or they get "Session no longer available"). Maybe forcing a heartbeat might get server to re-connect... |
All times are GMT -4. The time now is 10:21. |
Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.