Programm vom Spiel aus mit Tastatur steuern

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Cabble
Beiträge: 32
Registriert: 24.01.2009 13:48
Wohnort: Mecklenburg-Vorpommer O.o
Kontaktdaten:

Programm vom Spiel aus mit Tastatur steuern

Beitrag 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?
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag 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.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag 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
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag 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.
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Benutzeravatar
Cabble
Beiträge: 32
Registriert: 24.01.2009 13:48
Wohnort: Mecklenburg-Vorpommer O.o
Kontaktdaten:

Beitrag 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.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Cabble
Beiträge: 32
Registriert: 24.01.2009 13:48
Wohnort: Mecklenburg-Vorpommer O.o
Kontaktdaten:

Beitrag 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^^
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag 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
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Hm, ja. Mit Blizzardspielen ist Vorsicht geboten.
Da is dein Key ganz schnell gebannt.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Cabble
Beiträge: 32
Registriert: 24.01.2009 13:48
Wohnort: Mecklenburg-Vorpommer O.o
Kontaktdaten:

Beitrag 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 ^^
Antworten