Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Macros in Game ausführen mit Delphi? (https://www.delphipraxis.net/204040-macros-game-ausfuehren-mit-delphi.html)

ScharfeMietze 17. Apr 2020 15:15

Macros in Game ausführen mit Delphi?
 
Kann man mit Delphi Macros in Games ausführen? Wenn ja wie?
Die Aufgabe die ich bekommen habe ist, Wenn in Mortal Combat eine Tastenkombination gebraucht wird diese mit einem Macro zu ersetzen wie es diverse Mäuse und Tastaturen auch machen.

Aufgabe wäre z.B wenn Taste "1" auf dem numblock gedrückt wird sende Tasten "X+y" dann "Z"


Ich brauche mal einen Schubs wie man das umsetzen kann. Bin für alle Ideen Dankbar.
Ich wüsste sofort was ich mache wenn es um eine Delphi Form gehen würde aber so? Keine Ahnung.
Gruß

hoika 17. Apr 2020 15:28

AW: Macros in Game ausführen mit Delphi?
 
ein Schubs wäre
global hooks

Aber ich würde eine andere Aufgabe wählen, wenn das geht (Schule/Uni?).

Mortal Combat klingt wie DirectX oder OpenGL, und dort wird das alle noch viel schwieriger.

himitsu 17. Apr 2020 16:25

AW: Macros in Game ausführen mit Delphi?
 
Zitat:

wie es diverse Mäuse und Tastaturen auch machen.
Das kannst du "so" vermutlich nicht machen.
Bei diesen Mäusen/Tastaturen ist es oft so, da direkt Maus das erkennt und sendet die Befehlsfolgen direkt an den PC.

Ja, hier wäre dann ein Hook nötig, der die Tasten zwischen Tastatur/PC/Windows und dem Programm abfängt und dort umschreiben kann.
Jetzt kommt es noch darauf an, wie das Programm auf die Tastatur reagiert. Normal über die WM_-Messages, via DirectInput oder sonstwie,
und ob das Spiel eine Erkennung auf Hooks hat, um den Cheatern das Leben zu erschweren.

freimatz 17. Apr 2020 16:54

AW: Macros in Game ausführen mit Delphi?
 
Wenn Du unbedingt willst kannst Du dir die Sourcen von LuaMacros laden und die mal anschauen. Danach hast Du garantiert genug :twisted:

DieDolly 17. Apr 2020 16:56

AW: Macros in Game ausführen mit Delphi?
 
Quasi alle Spiele setzen auf DirectInput. Das heißt mit simulierten Tastendrücken und Mausklicken passiert dann im Spiel ganz genau nichts.

Es gibt Python-Bibliotheken mit denen manm das bewerkstelligen kann. Einfach besonders nach python DirectInput simulate key press oder sowas googeln.

himitsu 17. Apr 2020 17:32

AW: Macros in Game ausführen mit Delphi?
 
Es gibt auch LowLevel-Hooks, wo man sich tiefer reinhängen kann, auch vor dem DirektInput.


Oder

Es gibt noch die Möglichkeit über einen virtuellen Tastaturtreiber.
Das wirkt dann so, als wenn die Tasten von einer "Hardware" kommen, aber der Treiber wird von einem Programm mit Daten gefüttert.
Über einen Hook kann man dann auf Tasten reagieren und "zusätzlich" zu der Taste vom "richtigen" Treiber dann anschließend noch über den Virtuellen weitere Tasten schicken.

Das wäre ein Weg, wenn es nicht möglich ist sich reinzuhooken und Tasten abzufangen (nicht vor dem Programm, sondern nur Parallel).


Allerdings gibt es auch hier Programme, die versuchen zu erkennen, ob es eine "echte" Hardware ist.
Da wäre dann noch die Möglichkeit sich ganz raus zu bewegen und eine echte Tastatur zu simulieren. (ein Microcontroller ala Arduino, der sich als Tastatur ausgibt ... ist leichter, als man denkt)

Medium 17. Apr 2020 17:59

AW: Macros in Game ausführen mit Delphi?
 
Zitat:

Zitat von himitsu (Beitrag 1462371)
Es gibt auch LowLevel-Hooks, wo man sich tiefer reinhängen kann, auch vor dem DirektInput.

Mit LL Hooks habe ich zumindest damals erfolgreich einen "1-Button-Auto-Fire-Raid-Moonkin-Bot" für WoW hinbekommen. (In Kombi mit einem kleinen eigenen Addon, das über Farben codiert meine aktuellen Buffs und Timer via Bild an mein Programm übergeben hat.) Das hat auch Blizzards sehr rigoroses Anti-Cheat über bestimmt ein Jahr nicht entdeckt. (Was nicht ausschließt, dass neuere Versionen bzw. andere Anti-Cheat Systeme es könnten, und ja - es war ein Spiel mit dem Feuer.)

ScharfeMietze 17. Apr 2020 18:45

AW: Macros in Game ausführen mit Delphi?
 
Erschreckender weise ist es bös einfach.

Delphi-Quellcode:
var
  aTask: ITask;
begin
aTask := TTask.Run(procedure
  begin
    keybd_event(VkKeyScan('d'), 0, KEY_EVENT, 0);
    Sleep(20);
    keybd_event(VkKeyScan('d'), 0, KEYEVENTF_KEYUP, 0);
  end);
end;
Damit ist es ohne Probleme möglich die Figur nach rechts zu bewegen. Ich gehe also von aus das ich auch weitere befehle so eingeben kann.
das einzige was ich noch brauche ist eine Function die mir die Tastatur logt, meine aktuelle ließt das Numpad nicht, sondern Loggt nur "1".
Wer da eine Idee hat immer her mit :)

Redeemer 17. Apr 2020 21:30

AW: Macros in Game ausführen mit Delphi?
 
Zitat:

Zitat von himitsu (Beitrag 1462364)
Zitat:

wie es diverse Mäuse und Tastaturen auch machen.
Das kannst du "so" vermutlich nicht machen.
Bei diesen Mäusen/Tastaturen ist es oft so, da direkt Maus das erkennt und sendet die Befehlsfolgen direkt an den PC.

So oft auch nicht. Mein letzter Stand ist, dass z.B. Logitech-Produkte ohne „Treiber“/Editor-Software exakt gar nichts können, was nicht auch eine Standard-Tastatur kann. Ich habe aber aus dem Grund derzeit keine Logitech-Produkte mehr, da ich mich immer freue, wenn mein Tray bis auf das Lautsprechersymbol leer ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz