Ergebnis 1 bis 3 von 3
  1. #1
    Wiederbelebt Avatar von Cystasy
    Registriert seit
    08.05.2015
    Beiträge
    685

    Standard Achievements + Spielzeit Hax0rn [STEAM]

    Ihr wolltet schon immer Spielzeit in Steam sammeln ohne das entsprechende Spiel im Hintergrund offen zu haben?
    Oder wolltet alle Achievements ohne was dafür tun zu müssen? Well.. jetzt könnt ihr es. Mit Javascript

    (Gut..auch mit anderen Sprachen die Support für Greenworks haben..)


    Da das ganze hier aber ein Tutorial werden soll, fangen wir mal an.. was benötigen wir?

    Wir benötigen:

    - Node Webkit (NW.js - https://github.com/nwjs/nw.js/)
    - Steamworks SDK ( https://partner.steamgames.com/home )
    - Greenworks Plugin für NW.js ( https://github.com/greenheartgames/greenworks )
    - Am besten natürlich Kenntnisse in Javascript oder sonstigen Sprachen

    So, nachdem wir das Greenworks Plugin in unser Node-Webkit eingebunden haben (steam_appid.txt nicht vergessen!) können wir auch schon loslegen.
    Für dieses Tutorial werden wir eine "One Button Hack" App basteln mit der man mit einem Klick instant alle Achievements freischaltet.
    Es wäre auch möglich spezifische freizuschalten, aber das bekommt jeder denke ich mal von selbst hin

    Zunächst einmal müssen wir die Greenworks Engine / API Initialisieren.. das tun wir mit folgendem Befehl:

    Code:
    var greenworks = require('./greenworks.js');
    greenworks.initAPI();
    Nachdem dies gemacht wurde, müssen wir natürlich wissen welche Achievements unser Spiel besitzt.
    Hierfür besitzen wir eine nette Funktion die uns die Achievement Namen als Array ausgibt.

    Code:
    var achievements = greenworks.getAchievementNames();
    Anzumerken ist hierbei das diese Namen anders lauten als die Bezeichnungen der Achievements auf der Steam Seite des entsprechenden Games.
    Würden wir die Achievement Namen der Steam Webseite nutzen, würde einfach garnichts geschehen.
    Jetzt wollen wir aber loslegen.. wir aktivieren uns alle Achievements!

    Zum freischalten eines Achievements gibt es eine nette Funktion..


    Code:
    greenworks.activateAchievement(achievement_string, succes_callback, error_callback);
    Im ersten Parameter dieser Funktion müssen wir angeben welches Achievement wir freischalten möchten - dafür benötigen wir den Internen Name dieses Achievements.
    Erinnert ihr euch? Diesen haben wir oben uns schon geholt. Und Theoretisch.. ja Theoretisch sollten wir nun in einer For-Schleife doch dieses Array mit den Namen durchrattern können!
    Testen wir das ganze mal ..

    Code:
    function GetAchievements()
    {
     var achievements = greenworks.getAchievementNames();
     for(var x=0;x<achievements.length;x++)
     {
      greenworks.activateAchievement(achievements[x], function(){}, function(){});
     } 
    }
    Wir starten also unser Node-Webkit Programm... aktivieren unsere GetAchievements(); Funktion und.. BÄM... Steam zeigt es uns.. wir sind Ultra Leet Haxx0rs!
    Denn jetzt sind alle Achievements von unserem Lieblingsspiel freigeschalten Hach.. wir sind doch voll die Babos ey!

    Aber halt.. jetzt wo wir alle Achievements haben und auf unser geschafftes blicken bemerken wir ein Ungutes Gefühl in der Bauchregion..was könnte das nur sein?
    Es nennt sich Reue.. wir haben nämlich ein total schlechtes Gewissen weil wir uns die Achievements alle ercheatet haben
    Was tun in dieser Situation? Genau.. wir setzen alle Achievements wieder zurück.. dann haben wir wieder ein ruhiges Gewissen und können Nachts wieder schlafen ohne das uns Steam Nachts in unseren Träumen terrorisiert ;_;!

    Let's Go.. Selbes Spielchen wie zum freischalten

    Code:
    unction ResetAchievements()
    {
     var achievements = greenworks.getAchievementNames();
     for(var x=0;x<achievements.length;x++)
     {
      greenworks.clearAchievement(achievements[x], function(){} ,function(){});
     }
    }
    Und Zack.. wir sind die ganzen ercheateten Achievements wieder los und haben wieder ein Reines Gewissen
    Hoffendlich Wir stehen aber total auf GROßE Zahlen!! Wir möchten gerne.. wir möchten Spielzeit. VIEL SPIELZEIT!
    Und da Spielzeit automatisch hochtickt während wir Ingame sind, können wir dank unseres Programmes auch Spielzeit sammeln.
    Hierfür müssen wir lediglich die Initialisierung wie oben beschrieben machen und danach das Programm laufen lassen.
    Steam denkt daraufhin das eigendliche Spiel würde ausgeführt.. in wirklichkeit läuft aber unser Node-Webkit Programm und sammelt fleißig Spielzeit.
    Und wofür das ganze? Nunja.. wer steht nicht auf große Zahlen?

    Anyway.. Auch wenn es sehr kurz war, und mehr ein Aufzeigen von einer Möglichkeit.. ich hoffe es war ein bisschen unterhaltsam und man hat ein bisschen was gelernt.. zumindestens ein bisschen

    p.s: Idee zum ganzen ist entstanden da auf EPVP ein Typ einen "Steam Spielzeit Farmer" verkauft hat.. und da dachte ich mir das ich mal zeige wie sowas Technisch funktioniert + wie man noch zusätzlich Achievements freischaltet.. ganz ohne Geld auszugeben für dieses Tool aus EPVP.


    grüße
    Geändert von Cystasy (05.04.2016 um 00:58 Uhr)

  2. #2
    Gesperrt
    Registriert seit
    24.08.2008
    Beiträge
    401

    Standard AW: Achievements + Spielzeit Hax0rn [STEAM]

    Offene Fragen:
    Warum NW.js? Warum nicht node.js?
    Warum gehst du nicht ein bisschen auf die benutzten Tools und Bibliotheken ein?
    Ist kein Login nötig?
    Wenn ja, warum skippst du diesen?
    Wenn nein, woher weiß der Server für welchen Account er die Achievements aktivieren soll.
    Array.prototype.forEach?

    Bitte versteh mich nicht falsch Cystasy, ich bewundere deine Motivation und ziehe meinen Hut vor deinem Output (Output sein Onkel, das bist du mein Freund).
    Manchmal frag ich mich aber doch ob ich dir nicht 'nen Lektor sponsern soll

  3. #3
    Wiederbelebt Avatar von Cystasy
    Registriert seit
    08.05.2015
    Beiträge
    685

    Standard AW: Achievements + Spielzeit Hax0rn [STEAM]

    Zitat Zitat von Starflow Beitrag anzeigen
    Offene Fragen:
    Warum NW.js? Warum nicht node.js?
    Warum gehst du nicht ein bisschen auf die benutzten Tools und Bibliotheken ein?
    Ist kein Login nötig?
    Wenn ja, warum skippst du diesen?
    Wenn nein, woher weiß der Server für welchen Account er die Achievements aktivieren soll.
    Array.prototype.forEach?

    Bitte versteh mich nicht falsch Cystasy, ich bewundere deine Motivation und ziehe meinen Hut vor deinem Output (Output sein Onkel, das bist du mein Freund).
    Manchmal frag ich mich aber doch ob ich dir nicht 'nen Lektor sponsern soll
    Okay, Ich gebe zu.. ich hätte da etwas mehr Informationen mitliefern sollen.. hatte beim schreiben initial gedacht das sich die Leute mit dem meisten eh auskennen oder es bei den verlinkten Webseiten nachlesen können. Also gut, ich erkläre das ganze mal Tiefergehender..

    Warum NW.js? Warum nicht node.js?
    Dafür gibts mehr Gründe:

    1) Ich beschäftige mich derzeit mit NW.js und kenne mich deshalb besser damit aus

    2) Ich mag node.js halt nicht wirklich. Ich habe node.js bei einer VR Anwendung von mir benutzt und es hat mich ziemlich genervt.
    Finde NW.js in vielen Punkten angenehmer für das Experimentieren und entwickeln von Dingen (vorallem da ich trotztdem noch die Möglichkeit habe node.js spezifische Dinge zu nutzen). NW.js ist halt deshalb sehr angenehm, weil es ein bisschen wie "Plug & Play" ist. Du lädst dir die Binary runter, richtest deine HTML, JS usw Files zurecht, erstellst ne package Datei zum Konfigurieren und bist fertig. Zusätzlich könnte man mit NW.js sogar dann auf Basis von HTML5 ein Spiel entwickeln und mit dem NW.js Binary auf Steam publishen was dem ganzen nochmals einen positiven Effekt gibt finde ich. Und da ich das Longterm gesehen gern tun würde, finde ich NW.js nunmal angenehmer weil man eine eigene Fensteranwendung erstellen kann die auf Linux, Mac und Windows läuft ohne groß alles neu programmieren zu müssen.


    Warum gehst du nicht ein bisschen auf die benutzten Tools und Bibliotheken ein?
    Weil ich das ganze nicht Ewig lang werden lassen wollte und ich dachte das die verlinkung eigendlich genug Informationen liefern sollte.
    Jemand der Interesse an dem ganzen hat, sollte innerhalb 5 Minuten bei meinen Links sehen können was die einzelnen Biblotheken und Programme die ich nutze tun.

    Ist kein Login nötig?
    Nein.
    Oder hast du dich jemals in Steam erneut innerhalb des Spiels einloggen müssen nachdem du ein Steam Spiel gestartet hast?
    Spielen die auf Steam angeboten werden wird von Steam eine API Schnittstelle bereitgestellt über die das Spiel spezifische Dinge lösen kann.
    Unteranderem Achievements unlocken / reseten, sehen wieviele Leute das Spiel gerade in Steam spielen, das Steam Overlay aktivieren usw usf.

    Man gibts sich hier sogesehen als das eigendliche Spiel aus und sagt Steam man möchte eine spezifische Aktion ausführen.
    Zur "Authentification" dient hier lediglich die entsprechende Steamapp_id die man z.b in der Desktop Verknüpfung von Steam Spielen vorfinden kann.


    Wenn nein, woher weiß der Server für welchen Account er die Achievements aktivieren soll.
    Der Server muss das ganze nicht wissen.
    Über das Greenworks Plugin kommunizierst du direkt mit dem Steam Clienten und sagst ihm sogesehen "Hey Steam Client, ich bin das Spiel mit der Steamapp_id XYZ und möchte jetzt XYZ machen".
    Und da du natürlich zum starten eines Spiels über Steam eingeloggt sein musst, ergibt sich das ganze von selbst auf welchen Account dann das ganze stattfinden soll.

    Nächstesmal vielleicht
    Geändert von Cystasy (05.04.2016 um 17:28 Uhr)

  4. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Barny (06.04.2016), Starflow (05.04.2016)

Ähnliche Themen

  1. 7 Tage kostenlose World of Warcraft Spielzeit
    Von Crackpot im Forum 4-Free
    Antworten: 3
    Letzter Beitrag: 05.03.2012, 07:36
  2. Cod 6 stürzt nach 1 Std. Spielzeit ab
    Von lyrex ## im Forum Games
    Antworten: 23
    Letzter Beitrag: 20.12.2010, 21:28
  3. Antworten: 10
    Letzter Beitrag: 19.07.2010, 12:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •