Let’s start this post with big thanks to Florian for his donation, appreciate your support!

Until today I didn’t know much about Steam’s VAC (anti-cheat), but recent comment of Torndeco made me look into it. So apparently there is a Team Fortress API that allows to view player Steam bans even if profile is private. I couldn’t find this API on official Steam dev wiki, so I improvised, and what do you know, it works!

This API provides the following:

  • Community ban  => Steam forums ban
  • VAC ban => Banned from using a VAC enabled game (Arma 3 is not VAC enabled)
  • VAC ban count => From how many VAC games player is banned
  • Days since last ban => Number of days since the last ban
  • Economy ban => Something to do with Steam Economy and trading

How can this help with Arma 3? Well, it could be used as some sort of credit check, so to speak. Valve claims that VAC is very reliable and they never revert VAC bans. Truth be told, I have no experience with VAC but if I saw a player on my server with a ban endorsed by Steam, I would probably consider this player a potential cheat.

So I made another extension to get the ban info from Steam for the joining player. It works very much like get_friends extension (I only needed to modify it a bit), so please refer to the get_friends page for more info. The output of the extension is again, either: ”WAIT” – still fetching, ”[]” – failed or:

  • My profile check
[ ["CommunityBanned","0"], ["VACBanned","0"], ["NumberOfVACBans","0"], ["DaysSinceLastBan","0"], ["EconomyBan","none"] ]
  • A cheater check
[ ["CommunityBanned","0"], ["VACBanned","1"], ["NumberOfVACBans","8"], ["DaysSinceLastBan","76"], ["EconomyBan","none"] ]

As with get_friends, adding it to the server is pretty easy:

onPlayerConnected { "check_player" callExtension _uid; };

Handling the data needs some logic so I’m going to write one for get_friends and one for this one soon.

Download check_player_v1.0