Remember now that any players that join though a lobby in L4D will have the steam id of STEAM_1:x:xxxxxx
2008/11/21 Zach Kanzler <[EMAIL PROTECTED]> > A full explanation is available here: > http://forums.alliedmods.net/showthread.php?t=60899 > > On Fri, Nov 21, 2008 at 16:08, Sam Klinger <[EMAIL PROTECTED]> wrote: > > > Attached is a python script that does both Community -> Steam and Steam > -> > > Community. > > > > > > Sebastian Staudt wrote: > > > >> Does anyone know a way to calculate the Steam Community SteamID > >> ("SteamID64") from the in-game SteamID (STEAM_X:X:XXXXXX)? > >> This would be a nice way to get fast access to the Steam Community pages > >> of > >> each player on a server. > >> _______________________________________________ > >> To unsubscribe, edit your list preferences, or view the list archives, > >> please visit: > >> http://list.valvesoftware.com/mailman/listinfo/hlcoders > >> > >> > >> > > > > > > import sys, os, re > > > > SID_NONE = 1<<0 > > SID_PRINT = 1<<1 > > SID_PROCESS = 1<<2 > > SID_QUIET = 1<<3 > > > > def about(): > > print "Steam Id <-> Community ID Converter\n" \ > > "Programmed by theY4Kman, algorithm discovered by voogru\n" > > > > def syntax(command=None): > > if command == ["help", "?", "/?"]: > > print "Displays the help message." > > else: > > print "Usage: ", os.path.basename(sys.argv[0]), " > > SteamID|CommunityID [/p] [/q]\n" \ > > "Options:\n" \ > > " /p Show the process of deriving the > Steam/Community > > ID\n" \ > > " /q Quiet mode. Only print out the Steam/Community > > ID" > > > > def proc(message, check=SID_NONE, flags=SID_NONE): > > if flags & check: print message > > > > def convert(i, flags=SID_NONE): > > steamid = re.compile(r'STEAM_0:([01]):(\d{1,10})').match(i) > > commid = re.compile(r"(\d{17})").match(i) > > if steamid: > > proc("Steam ID -> Community ID\n\n%s" % i, SID_PROCESS, flags) > > tok = steamid.groups() > > auth = int(tok[1]) * 2 > > server = int(tok[0]) > > proc("%s * 2 = %d" % (tok[1], auth), SID_PROCESS, flags) > > tok = auth + 76561197960265728 + server > > proc("%d + 76561197960265728 + %d = %d" % (auth, server, tok), > > SID_PROCESS, flags) > > if flags & SID_PRINT: print "\nCommunity ID:", tok > > else: return tok > > else: > > proc("Community ID -> Steam ID\n", SID_PROCESS, flags) > > tok = int(i) > > server = tok % 2 > > proc("%s is %s, so the auth server is %d" % (i, (server and "odd") > > or "even", server), SID_PROCESS, flags) > > auth = tok - server > > proc("%d - %d = %d" % (tok, server, auth), SID_PROCESS, flags) > > auth -= 76561197960265728 > > proc("%d - 76561197960265728 = %d" % (tok - server, auth), > > SID_PROCESS, flags) > > proc("%d / 2 = %d" % (auth, auth/2), SID_PROCESS, flags) > > auth /= 2 > > if flags & SID_PRINT: print "\nSteam ID: STEAM_0:%d:%d" % (server, > > auth) > > else: return "STEAM_0:%d:%d" % (server, auth) > > return > > if __name__ == '__main__': > > if len(sys.argv) < 2: > > syntax() > > exit() > > if sys.argv[1] == "about": > > about() > > exit() > > if sys.argv[1] in ["help", "?", "/?"]: > > syntax((len(sys.argv) >= 3) and sys.argv[2] or None) > > exit() > > > > flags = SID_NONE > > i = None > > for option in sys.argv[1:]: > > if option == "/p": flags |= SID_PROCESS > > if option == "/q": flags |= SID_QUIET > > else: > > if not i and > re.compile(r'STEAM_0:[01]:\d{1,10}').match(option) > > or re.compile(r"\d{17}").match(option): i = option > > > > if not i: # Then whom? > > syntax() > > else: > > if flags & (SID_QUIET|SID_PROCESS) == (SID_QUIET|SID_PROCESS): > flags > > ^= SID_PROCESS > > convert(i, flags|SID_PRINT) > > _______________________________________________ > > To unsubscribe, edit your list preferences, or view the list archives, > > please visit: > > http://list.valvesoftware.com/mailman/listinfo/hlcoders > > > > > > > _______________________________________________ > To unsubscribe, edit your list preferences, or view the list archives, > please visit: > http://list.valvesoftware.com/mailman/listinfo/hlcoders > > _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders

