Seite 1 von 1
Programm vom Spiel aus mit Tastatur steuern
Verfasst: 24.02.2009 15:29
von Cabble
Hi
Da ich mir ein tolles Programm für eines meiner spiele geschrieben habe und 2 Bildschirme besitze, möchte ich nun wissen, ob es möglich ist, z.B. im Spiel eine Nachricht zu schreiben (zb /fi bm vs dh) auf die das Programm reagiert. Ist das möglich ohne direkt auf das Spiel zuzugreifen? Geht das mit API Funktionen oder DirectX?
Verfasst: 24.02.2009 16:49
von Thorium
Du kannst mit GetAsyncKeyState die Tastatur systemweit abfragen. Dann musst aber natürlich Tasten in deinem Programm verwenden, die nicht bereits vom Spiel verwendet werden.
Eine andere Möglichkeit ohne das Spiel zu manipulieren kenne ich nicht.
Verfasst: 24.02.2009 16:52
von Thorium
Um was für ein Spiel handelt es sich denn? Hats eine Konsole? Die kann man anzapfen. Ist aber etwas komplexer. Für viele Spiele gibt es aber bereits Konsolenhooks die man nutzen kann.
Hier hab ich einen für Sacred 2: Fallen Angel entwickelt:
http://www.purebasic.fr/german/viewtopic.php?t=17823
Verfasst: 24.02.2009 17:01
von Blackskyliner
@Thorium
Und was sagen Punkbuster&Co dazu wenn ich das dann in einem Shooter Verwende um da die Konsole zu hooken? Bestimmt nicht grade erfreut darüber , da ja eine änderung vorliegt. Deswegen ist GetAsyncKeyState doch die bessere Wahl... Zumal man das dann bei so ziemlich jedem Spiel nutzen kann.
Verfasst: 24.02.2009 19:27
von Cabble
Es handelt sich um Warcraft 3: The Frozen Throne (Online).
Da es in dem Spiel haufenweise hotkeys gibt und man da chatten kann, wird es wohl sehr schwer, gebräuchliche, nicht verwendete Tasten zu finden ^^
edit: nein es hat keine konsole.
Verfasst: 24.02.2009 20:03
von Kaeru Gaman
nuja... du könntest schon durch dementsprechendes Abfangen
per GetAsyncKeystate auch eine Chat nachricht abfangen,
die dann eben einen Befehl für dein Prog darstellt...
aber bei WC3 online cheaten? dz dz...
generell ist cheaten bei PvP onlinegames was für Leute ... naja sag ich jetzt mal nicht wie ich sowas bezeichne.
und aufm BattleNet... das läuft über CD-Keys, also wenn du gesperrt bist, bist du gesperrt.
nicht wie bei irgendwelche Brausergames wo du dich so oft anmelden kannst wie du zeit hast eine dummy-email aufzumachen.
Verfasst: 24.02.2009 20:33
von Cabble
wer redet denn von cheaten?
es sind reine berechnungen die das spiel in keinster weise beeinflussen!
also wie viele hits ne unit brauch um ne andere um zu hauen und so^^
Verfasst: 24.02.2009 20:49
von Blackskyliner
Des würde denk ich mal mit GetAsyncKeyState nicht direkt möglich sein, wie auch? xD müssteste ja bei jedem Schlag die eine Unit macht nen Knof drücken. Was du willst ist höchst warscheinlich das auslesen von Gameinteresannten Informationen wie z.B. Unit hat grade zu geschlagen, etv. also Events, etc. wer weiß was noch so für dollen Kram. AUch wenns nur statistisch genutzt wird hat, wie ich weiß Blizzard in so ziemlich allen Ihren OnlineGames mittlerweile Warden am laufen (zumindest bei Diablo2, WoW) und wenn dies auch bei Warcraft 3 der Fall sein sollte kan schon durch einfaches Auslesen des speichers dein Key gesperrt werden. (Warden überprüft, welche fremden Zugriffe via DLL oder MemoryReading gemacht werden und schickt entsprechend Daten an den Blizzard Server)
Wenn du allerdings bei jedem Schlag, den eines deiner Units machst eine Taste drückst... sagen wir mal F1 oder so dann kannste das mit GetAsyncKeyState regeln.
Und falls ich dich falsch verstanden habe, Unwarheiten oder Halbwahrheiten erzählt habe,so möge man mich korrigieren.
MFG
Blackskyliner
Verfasst: 24.02.2009 20:50
von Thorium
Hm, ja. Mit Blizzardspielen ist Vorsicht geboten.
Da is dein Key ganz schnell gebannt.
Verfasst: 24.02.2009 22:23
von Cabble
jo warden kenn ich. ich nutze keine dll in meinem programm. alle units sind im programm gespeichert. das programm berechnet dann den kampf von 2 units. also nichts mit taste drücken ^^