Entwickler-Ecke
Open Source Projekte - AutoCheater
Silas - Di 10.04.07 20:48
Titel: AutoCheater
Hallo!
Ich möchte hier ein kleines, (hoffentlich) lebenserleichterndes Programm vorstellen, dass ich entwickelt habe.
Der Name des Programms kommt von der Verwendungsart, für die ich es eigentlich geschrieben habe: Für die erleichterung des Cheat-Eingebens (Ja, ich gestehe, ich verwende Cheats!).
Mithilfe des Programms kann man jeder der F-Tasten einen String zuweisen (oder auch nicht), der automatisch eingegeben wird, sobald man sie drückt. Das ganze funktioniert global, also auch, wenn die Anwendung im Hintergrund läuft. Damit ist das Programm aber auch dann geeignet, wenn z.B. die Zwischenablage nicht ausreicht.
Die Zuordnungen lassen sich in eine Textdatei mit der Endunt .cht speichern (INI-Format) und wieder einlesen.
F34r0fTh3D4rk - Di 10.04.07 20:54
ich glaube, dass das aber nicht unbedingt bei jedem Programm/Spiel funktioniert, es sei denn du machst das ganze auf Treiberebene. Welche Spiele hast du getestet ?
wenn ich eine andere F Taste wähle und da was eintrage, muss ich erst deaktivieren und aktivieren, damit die änderung wirksam ist, solltest du ändern ;)
mfg
Silas - Mi 11.04.07 15:24
Das Abfragen der F-Tasten läuft über GetAsyncKeyState (für Hooks war ich zu faul), das senden der Strings über keybd_event.
Getestet hab ich das Programm nur mit GTA: Vice City (dafür hab ich's auch eigentlich entwickelt, weil ich es leid war jedesmal mir mit "getthereamazinglyfast" für ein neues Auto die Finger kaputtzutippen wenn das alte geschrottet war, vor allem weil das bei mir ungefähr alle dreißig Sekunden der Fall ist :D). Da funktioniert es einwandfrei.
Die Sache mit dem Aktivieren/Deaktivieren-Knopf ist (zumindest ursprünglich) Absicht gewesen, weil bei jedem Aktivieren die Edits und Checkboxen in Arrays übertragen werden (meines Wissens ist es deutlich resourcenschonender, ständig ein Array mit "for" zu durchlaufen als jedes Mal die Komponente erst mit "FindComponent" ausfindig zu machen und dann die jeweilige Eigenschaft auszulesen).
Ich hab jetzt eine neue Version hochgeladen, das Button-Chaos ist beseitigt (jetzt läuft alles über Menüs) und es gibt einen Eintrag, mit dem sich im aktivierten Zustand die Edits und Checkboxen neu einlesen lassen.
Silas - Fr 13.04.07 13:06
Ich würde jetzt gerne noch die Möglichkeit einbauen, Tasten festzulegen, die zusätzlich zur F-Taste gedrückt werden müssen (also Ctrl, Alt, usw.).
Also es gibt drei Checkboxen (Ctrl, Alt und Shift), die nach Modifiers_* übertragen werden. Wenn eine ausgewählt wurde (Modifiers_? = true) und sie gedrückt ist (Boolean(GetAsyncKeyState(VK_?)) = true), dann soll der Cheat gesendet werden
Wie mach ich da am einfachsten die Abfrage? Bis jetzt ist mir nur
Delphi-Quelltext
1: 2:
| if ((Modifiers_Alt and Boolean(GetAsyncKeyState(VK_MENU)) or ((not Modifiers_Alt) and (not Boolean(GetAsyncKeyState(VK_MENU))) and (Modifiers_Ctrl |
eingefallen. (Ich hoffe ich hab mich mit den Klammern nicht vertan)
Danke schon mal im Voraus!
F34r0fTh3D4rk - Fr 13.04.07 19:47
Delphi-Quelltext
1:
| if Boolean(GetAsyncKeyState(VK_MENU)) and not (Boolean(GetAsyncKeyState(VK_ALT) xor Modifiers_alt) |
wäre glaube ich eine möglichkeit, dann darfst du aber auch nicht die alt taste drücken, wenn der modifier aus ist ;) das machst du dann für alle (alt shift und ctrl)
mfg
Silas - Sa 14.04.07 19:06
Ich steck jetzt an dieser Stelle fest: Wenn kein Modifier ausgewählt ist funktioniert's (also activatemodifiers = false), sobald aber einer ausgewählt ist funktioniert es nicht mehr... er scheint nicht erkennen zu können ob Ctrl gedrückt ist... ich komm hier einfach nicht weiter:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47:
| procedure TCheatForm.Timer1Timer(Sender: TObject); var i: byte; begin if LastCallTime + 300 < GetTickCount then begin if ActivateModifiers then begin if (Boolean(GetAsyncKeyState(VK_CONTROL)) and not (Boolean(GetAsyncKeyState(VK_CONTROL)) xor Modifiers_Ctrl)) and (Boolean(GetAsyncKeyState(VK_MENU)) and not (Boolean(GetAsyncKeyState(VK_MENU)) xor Modifiers_Alt)) and (Boolean(GetAsyncKeyState(VK_SHIFT)) and not (Boolean(GetAsyncKeyState(VK_SHIFT)) xor Modifiers_Shift)) and (Boolean(GetAsyncKeyState(VK_LWIN)) and not (Boolean(GetAsyncKeyState(VK_LWIN)) xor Modifiers_Win)) and ((Boolean(GetAsyncKeyState(VK_CONTROL)) and Boolean(GetAsyncKeyState(VK_MENU))) and not ((Boolean(GetAsyncKeyState(VK_CONTROL)) and Boolean(GetAsyncKeyState(VK_MENU))) xor Modifiers_Alt)) then begin for i := 0 to 11 do if (ListActive[i]) and (Boolean(GetAsyncKeyState(VK_Fkey[i]))) then SendKeyString(ListCheat[i]); end; end else begin for i := 0 to 11 do if (ListActive[i]) and (Boolean(GetAsyncKeyState(VK_Fkey[i]))) then SendKeyString(ListCheat[i]); end; end; end; |
@F34r0fTh3D4rk: Dein Codestück müsste meines Erachtens eigentlich schon stimmen (Danke!!!)
Silas - Di 17.04.07 18:54
*schieb* ( :oops: )
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!