Jugando con la API de Steam

Hoy probando cosillas para Gamerz he encontrado una ‘feature’ que podría ser interesante.

Lo primero que hay que hacer es obtener una API Key. La podéis conseguir desde este enlace

Y ya de paso, desde aquí podéis mirar los términos de uso. Os resumo lo ‘interesante’: 100.000 llamadas / día, cosa que no está nada mal 🙂 

Como se puede ver, hay disponibles 4 APIs:

ISteamNews
ISteamUserStats
ISteamUser
ITFItems_440 

La API que me interesa es precisamente la ISteamUserStats y más concretamente la función GetPlayerAchievements.

Con dicha función, podremos ver cuantos logros hemos completado de un determinado juego.

La llamada a la API es simple y solo necesita 3 parámetros:

http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?appid={0}&key={1}&steamid={2}&format=xml 

¿Qué es la appid?
Pues el el id del juego en cuestión. En Steam, cada juego tiene un id, así por ejemplo si en Steam entramos en la página del Skyrim vemos que la dirección es esta:

http://store.steampowered.com/app/72850

Pues en este caso, el id del Skyrim es el 72850. ¿Fácil, no? 

¿Qué es la key?
Pues la API key que hemos conseguido en el primer paso. Creo que no tiene duda. 

¿Qué es el steamid?
Cada usuario en Steam, también tiene un id. Ojo, no confundir el steamid con nuestro nombre dentro de steam (tanto nombre como nombre de la cuenta), ya que no tiene nada que ver.
Para averiguar nuestro steamid, lo más sencillo es dentro de la página de Steam, acceder a nuestro perfil y mirar la dirección en nuestro navegador web, en mi caso es algo como esto: 

http://steamcommunity.com/profiles/7656119xxxxxxxxxxxx

Bien, pues en este caso, el steamid es  7656119xxxxxxxxxxxx 

Con estos tres datos, lo único que tenemos que hacer es una llamada a esta dirección:

http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?appid=72850&key=tu_key_aqui&steamid=tu_steamid_aqui&format=xml  

Esto nos devuelve un XML con el siguiente formato:

 

Si el valor de achieved es 1, es que el logro está completado, si es 0 es que no lo está. 

Bien, pues con está información, me he creado una pequeña clase en C# que precisamente me proporciona la información que busco. El código fuente lo podéis ver aquí. (vía pastebin) 

El uso de la clase es bastante trivial:


(Haz click para agrandar)

Básicamente hay un método GetStats(appid, steamid) y un evento llamado GetStatsCompleted()

Si la descarga / información es correcta, el argumento value del evento será distinto de null y podremos ver lo siguiente:

Como véis , simple, rápido y para todos los públicos.

Ahora queda ver si merece la pena implementar esta "feature" en el catalogador de juegos.

 

Actualización

Al final no he podido "resistirme" y lo he integrado en el programa 🙂  

 

Saludos.
mov eax,ollydbgInt 13h 

 


Ollydbg ProSignature