[Any] TrustFactor
TrustFactor
Sadly there are a bunch of bad actors running around trying to give mod teams and other players a bad time by botting, spamming or using illegal image material for ingame sprays. While there is no good way to completely prevent this from happening, there is hope in making it so tedious for these people that they simply don't bother any further. This plugin aims to automate some legitimacy checks usually performed on players for SourceMod plugins. The provided API can be used by other plugins to limit features unless certain criteria are met. For example using chat or sprays could be limited until a certain amount of time was spent on the server. Server moderators can also check a players trust flags with /checktrust player. TrustFlags and TrustLevel The following trust flags are possible:
The TrustLevel is simply the sum of all trust flags a player has (currently max 13) Other plugins might offer you to customize the required trust flags similar to admin flag strings. The format is as follows: RRR+TTTn For a client to be trusted to do an action, all R flag chars from the list above have to be set. Additionally the client needs all n flag of the optional group of T flag characters. Lastly you can use an asterisk (*) to mean all trust flags. Both sides are optional, meaning you don't have to put required or optional flags. Examples:
Please keep in mind that depending on the setup, the TrustLevel might never exceed 2 (td)! Commands and Config Print a report of known values for the specified player with /checktrust player. This command requires the generic admin flag. Reload all players trust values with /reload_playertrust. This is an administrative command and requires the ban flag (same flag as /reloadadmins) The config is automatically generated in cfg/sourcemod/plugin.trustfactor.cfg Only one of sm_trustfactor_donorgroup and sm_trustfactor_donorflag is required for the donator flag to be set. The former would be the name of the admin group to check, the latter would be a regular admin flag. sm_trustfactor_mingametime requires the specified minimum amount of playtime account wide for the game in hours. If you set this to 0 it's ignored and the flag will always pass. sm_trustfactor_minservertime requires the specified minimum amount of playtime on the server or server network. If you set this to 0 it's ignored and the flag will always pass. The playtime value is store as client preference (same as !settings). Tipp: You can synchronize the client preferences (and playtime) between servers by changing the clientprefs entry in database.cfg sm_trustfactor_minpocprogress requires the Pillar of Community Badge to have at least the specified level before it counts as trusted. If you set this to 0 it's ignored and the flag will always pass. If you did not enable sm_trustfactor_checksteamlvl it's recommended to set this to 0. sm_trustfactor_minsteamlevel requires the players profile to have at least the specified steam level for this flag to be set. If you set this to 0 it's ignored and the flag will always pass. If you did not enable sm_trustfactor_checksteamlvl it's recommended to set this to 0. Installing In order for the plugin to check the Profile flags, you need to set up the PHP script for Steams WebAPI. More information on how to get an API Key can be found here (a User Key is enough) https://partner.steamgames.com/doc/webapi_overview/auth After you put the tfcache.php onto your web server (you can rename it if you want), you have to edit it using a text editor. At the top, put in your API-Key and database configuration, then safe it. Code:
$config = [ After that is done, you have to go into the plugins configuration and put in the URL for the PHP script and enable the data groups you want to be checked. Code:
sm_trustfactor_playercacheurl "https://myserver.net/pathto/tfcache.php"; The PHP script will cache player data for 12 hours, so if a player for example barely does not have enough game time, they will have to wait another 12 hours before that value is checked again. If certain checks are not enabled, the associated trust factors will appear as failed to the plugin. This is done also, so you're not exhausting your 100000 request/day limit any time soon. Dependencies
You can check players trust levels actively or by callbacks. The trust level is only available for players (not bots) and only after OnClientTrustFactorLoaded. You can also check that with IsClientTrustFactorLoaded. If a players TrustFactor changes throughout them playing, you will get OnClientTrustFactorChanged. The recommended way to check a player trust level is the following:
|
Re: [Any] TrustFactor
This is some awesome work mate. Well done.
|
Re: [Any] TrustFactor
Perhaps the only cure for the madness. If this is integrated fully with SourceBans then it'll be perfect, very nice.
|
Re: [Any] TrustFactor
Awesome plugin! If I can further add.
Amount of comments, inventory value, amount of steam games, VAC banned friends, friends with similar names/name history, sharing IP with other users/previous accounts on the server (logging). I know these additions are only possible with public profile, and it might make things even harder to code and more heavy for the server (idk?). Maybe there could be a way to integrate it with either Battlemetrics statistics, they offer API now i Believe and they give a lot of GREAT data. There's also steamid.uk that has a lot of data. Just throwing ideas out there. Being a community owner for 10 years now makes you think very thoroughly for these kinds of factors. Cheers, might test it out on my servers soon =) |
Re: [Any] TrustFactor
* The amount of comments as far as i can tell is not visible through the SteamWorks API.
* Getting the inventory value would probably require a third party API, SteamWorks API can read the inventory, but also assigns values to untradable/non marketable items? not sure how that works. * Counting steam games would be possible but depending on if you want to count f2p games that would probably mean another API call. However I can very much imagine people playing/having only one/very view games and with already checking the game time itself, idk how useful this really is. You could also just get a bunch of really cheap games to boost that number. * Any analysis of the friendlist would probably not only raise privacy concerns, but also very quickly drain your API call limit (I guess steamid.uk has some data cached, but I don't want to register an API key just to look at the docs). Also VAC/Trade banned friends is an iffy; those accounts do not have to be alts or may be close/personal friends - maybe some people did some stupid stuff but having the actions of others influence the players experience doesn't sit well with me. I think I understand why you suggested this tho. * Going by IPs is just not useful nowadays imo; if a bad actor has multiple accounts they probably know what a VPN is. Also (growing up with siblings) it was a pain getting Support to whitelist the IP in games that did that. There is also reasons to legitimately use a VPN for playing games, and I couldn't find any publicly available lists with IP ranges. I want to keep the setup simple, that why I'm a but hesitant to add more external APIs. As for Battlemetrics, what would you want to fetch from there? Player bans? I intent to add SourceBans data as trust flags, but they currently don't have natives in the sbpp_checker module and I wanted to wait a bit and see if they merge a PR that would add that. I'm not against adding new factors, just giving my opinion first |
Re: [Any] TrustFactor
Update 22w26a
* Added SourceBans flags Oops, this way laying around for some time... let me know if things don't work |
All times are GMT -4. The time now is 19:13. |
Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.