Invoker-Tool (alle Spells auf 2 Hotkeys) [UPDATE: Generator mit GUI fertig!]

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Invoker-Tool (alle Spells auf 2 Hotkeys) [UPDATE: Generator mit GUI fertig!]

      Hiho,

      ich hab mich die letzten Tage damit beschäftigt ein Tool zu "programmieren" (diesen autohotkeyshit kann man ja eigentlich nicht so nennen ;)), welches es mir ermöglicht die 10 verschiedenen Spells vom Invoker mit nur 2 Hotkeys zu casten (man hat ja natürlich immer nur 2 invoked).

      Mittlerweile sollte das Ganze lauffähig sein und deshalb möchte ich es gerne mit euch teilen ;)

      Einige Dinge zur Benutzung/"Installation":

      1. Wie bereits gesagt, es ist ein Autohotkey-Script, man sollte also Ahk installiert haben (ich könnte auch die .exe reinstellen, aber die wäre nicht individuell anpassbar).
      2. .rar laden, entpacken, .exe starten, Hotkeys eintragen, Button klicken, .ahk starten (liegt im Ordner des Programms)
      3. Sollte das Script irgendwelche Probleme haben, lassen sich die Spells weiterhin über die Hotkeys die in der customkeys.txt-Datei stehen casten.
      4. Das Script merkt sich nicht die aktuell aktivierten Kugeln. Man muss also auch wenn man bereits eine Exort Kugel hat 3mal Exort drücken und dann R damit das Script den Spell als invoked erkennt.

      To do:

      - Aktuell unterstützt das Script Invoke Level 1 noch nicht! Es geht immer von 2 Spells aus und könnte Probleme mit Invoke Level 1 machen.
      - Da ich kein AHK-"Profi" bin, könnte es gut sein, dass man den Quelltext um einiges kürzer gestalten könnte.
      - Eines Tages vielleicht in eine ordentliche Programmiersprache umschreiben, welche Arrays kennt usw :D
      (Habe Erfahrung in Delphi und Java aber (noch) nicht genug ;))
      - Für Verbesserungsvorschläge einfach hier schreiben.

      Zum Schluss noch was Wichtiges: Ich habe bisher erst ein Spiel mit diesem Script (eine frühere Variante, die Probleme verursacht hat, wenn Invoke noch auf CD war, diese hier sollte damit zurechtkommen) bestritten und natürlich ist das ganze Fehleranfällig. (Auch wenn ich versucht habe Fehler so gut es geht auszuschließen)
      Ihr solltet das Script also erstmal testen (in Games wo es nicht drauf ankommt ;)).

      Sollte jemandem ein Fehler auffallen, mich bitte darüber informieren.

      MfG,
      ^woOt

      PS: Sollte sich jemand fragen "Warum so kompliziert?" --> Ich weiß dass es auch einfach mit Mausklicks auf die entsprechenden Koordinaten zu realisieren gewesen wäre, allerdings nutze ich diese Methode für Autocast-Toggles und weiß, dass sie, grade in hektischen Fights, ungeeignet ist, da man die Maus möglichst nicht bewegen sollte in der Zeit.
      Es gibt zwar auch in diesem Script ein kleines Delay, da die Pixelgetcolor Function von ahk nicht das Gelbe vom Ei ist, allerdings sollte es kaum auffallen (300ms).


      DAS SCRIPT LÄUFT SCHEINBAR BEI KEINEM AUßER MIR. WER ES DENNOCH AUSPROBIEREN WILL:

      rapidshare.com/files/282708140/Invoker-Script-Hotkey.rar

      Mirror:
      ul.to/1islv2

      Dieser Beitrag wurde bereits 11 mal editiert, zuletzt von ^woOt ()

    • kann man nicht "einfach" nen script nehmen,
      was die hotkey eingaben überprüft und sich die letzten 3/2 merkt?

      also wenn ich asdf für spells habe, dann wird asd ausgelesen + f getrennt.

      asd wird in 3er länge gespeichert (um bei drücken von f den invoke auszulesen)

      für f wird in 2er länge gespeichert, logisch.


      dann kannst du mit dem tool die tasten cv (invoke 1 und invoke 2 mal angenommen)
      spontan den befehl zuweisen, den du auf dem slot abrufen willst.

      so nach dem motto

      if press "a" write "a" to (n) , if n = 3 set n = 0 , n+1
      if press "s" write "s" to (n) , if n = 3 set n = 0 , n+1
      if press "d" write "d" to (n) , if n = 3 set n = 0 , n+1

      n = "n1,n2,n3"


      when press"f" do
      if n="d,d,d" assign "sunstrike" to "c"
      if "c" = "meteor", "sunstrike", "etc" then set "v" = "c"
      if n="d,d,s" assign....



      ich kenn mich da nicht genug aus um nen wirklichen code schreiben zu können, aber der logische kern sollte rüberkommen
    • Glaub du hast schon den Sinn hinter meinem Code verstanden, allerdings ist es eben nich so "einfach" ;)

      Ein Problem ist z.B. dass es für die Spells eine Art Liste gibt, welche angibt, welcher Spell eher rechts und welcher eher links erscheint. Cold Snap z.B. steht IMMER rechts. Egal welchen Spell man noch invoked hat. Außerdem wird natürlich immer der älteste Spell überschrieben, also wenn der linke Spell älter ist und man Cold Snap invoked, rutscht der aktuell rechte Spell nach links, damit Cold Snap rechts sein kann.
      Diese Liste habe ich durch austesten einiger Kombinationen rausgeschrieben und nach dieser Liste wird eben vorgegangen. Sollte man also Cold Snap und Alacrity invoken, sieht das Script nach welcher der Spells die höhere Priorität hat nach rechts zu kommen (Cold Snap). Wenn man sich den Code anguckt, sieht man ja wie die Belegung von sp1-sp10 ist. Diese Reihenfolge haben auch die Spells. Sp1 ist Cold Snap weil es immer rechts steht und sp10 ist EMP weil es immer links steht.
      Diese Liste würde also schonmal deine Vorgehensweise zu Nichte machen, da du nicht einfach sagen kannst "if meteor = invoked then set d = b", weil es genausogut sein kann, dass Meteor im anderen Slot erscheint.

      Zusätzlich muss man natürlich auchnoch überprüfen ob vielleicht grade Invoke auf CD war und in diesem Fall garnichts machen (deshalb vergleicht das Programm einen Pixel des jeweiligen Spells vorher und nachher (also vor und nach dem Druck der R-Taste)). Sollte sich was geändert haben, werden auch die Hotkeys geändert. Wenn nicht, dann eben nicht.

      Ich dachte am Anfang auch, dass es um einiges einfacher wird, aber das denke ich mir beim Programmieren immer.

      (Kann mich noch an ein Projekt in der Klasse erinnern wo ich mir gedacht hab dieses Uralt-Mario (nur einen Raum, Pilze kommen aus den Rohren, man springt drauf, die Pilze fallen runter) in Delphi nachzuprogrammieren. Da hab ich auch gedacht "Och da nehm ich n Mario Bild und lass das n bisschen da hin und her rutschen auf nem Tastendruck". Dann fängt man das ganze an und merkt: "Hmm Kollisionsabfrage wie?" :D)

      PS: Vielleicht könnte ich noch eine Art GUI (Benutzeroberfläche für die Unwissenden) mit Delphi entwerfen in der man die Hotkeys und die Auflösungen einstellen kann, da es im Moment ja schon noch etwas an Eigenarbeit bedarf bis alles funktioniert, allerdings würde ich gerne erstmal Rückmeldungen erhalten, wer es nutzt, ob es funktioniert, wer es nutzen würde wenn alles einfacher wär uswusw. Eigentlich hab ich das ganze sowieso nur für mich schreiben wollen weil ich Invoker immer gerepickt hab. (Kein Bock mir 2138492734 Hotkeys zu merken ;)). Da es allerdings doch ein etwas größerer Aufwand ist und das eben nicht jeder mal eben schnell selbst schreiben kann (glaubich), hab ichs mal hier rein gestellt.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ^woOt ()

    • du könntest halt auch einfach auf beine tasten auch jeweils alle shortkeys binden.

      natürlich nur wenn die abfrage über die taste geht und nicht über den shortkey des spells;
      also bei drücken von zb v versucht er dann alle shortkeys anzuwenden, weil aber nur 1 funzt sollte das kein prob seien imo.


      das geht halt mit nem customkey generator nicht, weil dadurch die hotkeys der spells abgerufen werden,
      anstatt die position den hotkeys wie bei grafischen tools (wc3keys?) und anderen 3rd party tools
    • Finde es krass wie alle hier seinen Code kritisieren, anstatt sich zu bedanken, dass er ohne etwas dafür zu wollen ein Programm hier reinstellt.
      Habe nicht so ganz verstanden, ob das Tool auch funktioniert, wenn man Warkeys benutzt. Wenn das möglich ist, würde ich es mir sicher downloaden.
      Auf jeden Fall viele Dank für deinen Einsatz für die Communaty!!

      Nyakes- schrieb:

      Ich lüfte morgens den ganzen Tag
      ?( ?(

      ardet4 schrieb:

      1 bit = 8 byte
    • pozzie schrieb:

      du könntest halt auch einfach auf beine tasten auch jeweils alle shortkeys binden.

      natürlich nur wenn die abfrage über die taste geht und nicht über den shortkey des spells;
      also bei drücken von zb v versucht er dann alle shortkeys anzuwenden, weil aber nur 1 funzt sollte das kein prob seien imo.


      1. Ist die Methode ja wohl mal das "Unsauberste" was es gibt.
      2. Reagiert WC3 nicht sofort, hab ne G15 und ohne Delay zwischen den Tasten geht da eigentlich kaum was. Wenn du auf jeder der Tasten 10 andere Tasten drauf hast und zwischen allem etwas Delay ist das auchnicht so geil. (Kann aber auch sein, dass Tasten die nichts bewirken funktionieren und man dochkein Delay braucht)
      3. Du musst ne Reihenfolge im Programm haben, welche die Tasten nacheinander durchprobiert. Allerdings hast du dann den Spell der in deiner Reihenfolge ganz oben steht invoked, drückst eine der beiden Tasten und castest auf beiden Tasten den selben Spell. (Das könnte man ausschließen indem man die eine Taste rückwärts suchen lässt. Also D probiert tzuighjkbn und F nbkjhgiuzt. Was eigentlich funktionieren müsste, allerdings ist das grade nur Theorie und könnte genausogut nicht laufen ^^)

      Ich teste das mal. Grundsätzlich ist es aber keine gute Idee soviele verschiedene Sachen durchzutesten bevor die Ausgabe geschieht denkich.

      EDIT: Ok getestet. Es funktioniert ohne Delay und WC3 nimmt alles an. ALLERDINGS: Es gibt da einige Probleme in der Praxis. Wenn man z.B. einen oder zwei Spells invoked hat, welche keine weitere Eingabe abwarten (Ghost Walk, Forge Spirit, Ice Wall) Castet man beide. Wenn man nur einen invoked hat, (z.B. Ghost Walk und Meteor) castet man Ghost Walk und hat sofort danach das Fadenkreuz vom Meteor da, was einen ganz schnell wieder sichtbar machen könnte wenn man nicht aufpasst. Am Besten wäre also auch hier wenn das Script wüsste welche Spells man grade invoked hat. Und das bedeutet wieder einiges mehr an Aufwand.

      pozzie schrieb:

      das geht halt mit nem customkey generator nicht, weil dadurch die hotkeys der spells abgerufen werden,
      anstatt die position den hotkeys wie bei grafischen tools (wc3keys?) und anderen 3rd party tools


      Versteh ich irgendwie nicht.



      @NeedForFeed:
      Wenn du warkeys nutzt um einfach alle Spells auf qwer zu legen, dann dürfte es theoretisch funktionieren beides laufen zu lassen. Allerdings ist es auch nicht so das Ding das Script einfach schnell zu starten wenn man Invoker spielt. (Ich weiß nämlich nicht genau ob es ein StandardTimeout bei den AHK Hotstrings gibt, sollte es keins geben kann es sein, dass wenn du einen Hero spielst und QQQR (z.B.) drückst (jeweils nachdem der CD um ist natürlich), das Script so reagiert als wenn du Cold Snap invoked hättest und statt F immer B drückt (oder wie auch immer man es eingestellt hat), was allerdings nicht weiter schlimm sein sollte, da sich das Script im Chat deaktiviert und man den Hotkey ja wahrscheinlich sonst nicht braucht.

      Du stellst einfach für sp1-sp10 die Hotkeys der Spells ein (Liste befindet sich im Code) so wie du sie auch in Warkeys für Invoker eingestellt hast. Und für hk1 bzw hk2 eine andere Taste die nicht verwendet wird.



      Und was mir grad noch aufgefallen ist: Mein Script funktioniert nur wenn man die Spells auf QWER hat :/ Das dürfte auch ziemlich schwer zu ändern sein, aber mann kann ja beim Invoker QWER als Tasten einstellen und bei den anderen Heros immernoch ASDF oder whatever haben.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ^woOt ()

    • Jeder der hier liest bitte folgende Fragen beantworten:

      1. Findet ihr ein solches Programm nützlich?
      2. Nutzt ihr es?
      3. Wenn nein, würdet ihr es nutzen wenn es einfach wäre (sprich *.exe anklicken, Benutzeroberfläche geht auf, man setzt seine jeweiligen Hotkeys in entsprechend beschriftete Felder ein, wählt eine Auflösung aus der Liste und klickt auf Start)?
    • ^woOt schrieb:

      Jeder der hier liest bitte folgende Fragen beantworten:

      1. Findet ihr ein solches Programm nützlich?
      2. Nutzt ihr es?
      3. Wenn nein, würdet ihr es nutzen wenn es einfach wäre (sprich *.exe anklicken, Benutzeroberfläche geht auf, man setzt seine jeweiligen Hotkeys in entsprechend beschriftete Felder ein, wählt eine Auflösung aus der Liste und klickt auf Start)?
      1.ja
      2.ja, bin aber zu dumm es einzustellen
      3.ja!
    • 1.Ja sehr
      2.ja
      3.find ich unwichtig, bekomm ich auch selbst hin
      aber nun zu meiner frage, habe selbst mithilfe eines invokertools, dass ich bei playdota gefunden habe meine keys bearbeitet, mein problem ist nur das die invokten spells eben per mausklick funktionieren, dafür muss man nur alt+beliebige taste drücken und der spell wurde invoked was das ganze sehr vereinfacht. Meine frage ist nun, könntest du wenn du dir kurz mein tool anschaust mir die teile sagen die ich brauche um das mit dem mausklick zu umgehen und den teil wo es darum geht das tool zu deaktivieren per chat/ende taste
      Dateien
      • Invoker.txt

        (2,5 kB, 18 mal heruntergeladen, zuletzt: )
    • M0G3L schrieb:

      aber nun zu meiner frage, habe selbst mithilfe eines invokertools, dass ich bei playdota gefunden habe meine keys bearbeitet, mein problem ist nur das die invokten spells eben per mausklick funktionieren, dafür muss man nur alt+beliebige taste drücken und der spell wurde invoked was das ganze sehr vereinfacht. Meine frage ist nun, könntest du wenn du dir kurz mein tool anschaust mir die teile sagen die ich brauche um das mit dem mausklick zu umgehen und den teil wo es darum geht das tool zu deaktivieren per chat/ende taste


      Erstmal danke dafür, da hat sich scheinbar jemand Gedanken über die Auflösungen gemacht. Mit diesen Berechnungen da sollte es möglich sein unabhängig von der Auflösung zu arbeiten ;)

      Deine Fragen verstehe ich allerdings nicht ganz. Ich geh dein Script einfach mal durch:

      Den ersten Teil verstehe ich garnicht. Auf bnghtz hast du Numblock Tasten gelegt, welche wahrscheinlich für die Spells vom Invoker stehen. Warum editierst du nicht einfach die customkeys, sodass da bnghtz als Hotkeys festgelegt sind?

      Dann hast du in deinem Script eben die 2 Hotkeys mit Mousemoves belegt (was keine gute Variante darstellt mMn) und zwar hier:

      Quellcode

      1. s::
      2. Grid()
      3. BlockInput, On
      4. MouseGetPos, intx, inty
      5. Mousemove, %x1%, %y1%, 0
      6. SendInput {Click}
      7. Mousemove, intx, inty, 0
      8. BlockInput, Off
      9. return
      10. d::
      11. Grid()
      12. BlockInput, On
      13. MouseGetPos, intx, inty
      14. Mousemove, %x2%, %y1%, 0
      15. SendInput {Click}
      16. Mousemove, intx, inty, 0
      17. BlockInput, Off
      18. return
      Alles anzeigen


      Also das ist schonmal der "Teil" mit den Mausklicks. Was meinst du mit "umgehen"? Du willst jetzt statt Mausklicks die Befehle ändern die S und D senden, sodass es wie in meinem Tool ohne Hotkeys funktioniert?
      Da das Remapping von den 2 Hotkeys eigentlich alles ist was mein Tool macht, ist es nicht so einfach das ganze in dein Script einzufügen. (also sag erstmal ob es das ist was du machen willst, dann helf ich gerne weiter ;))

      Danach kommt die Funktion Grid die ich gleich mal in mein Tool integrieren werde und dadurch das Problem mit den verschiedenen Auflösungen beseitigen werde :)

      Dann kommt die Funktion add, gefolgt von einigen Tasten die wohl deine Spells invoken und danach die Kugeln wieder umstellen.

      Wie du die ganze Sache mit dem Chat gelöst hast ist vieeeel zu umständlich.

      c, x und y werden jeweils 3x ausgelöst. (Das kannst du übrigens auch mit "send, c, 3" machen). Darauf folgen immer 2 Backspaces. Warum? Damit wenn du im Chat eine der Tasten drückst, diese 3mal ausgelöst wird und dann wieder 2x gelöscht wird? Warum machst du das überhaupt wenn du deine eigene "im chat nichts auslösen" Funktion gemacht hast? Funktioniert diese nicht?

      Grundsätzlich sollte man wenn man im chat ist einfahc das komplette Script pausieren.

      Quellcode

      1. ~*Enter::
      2. ~*NumpadEnter::
      3. Suspend, Permit
      4. if (bInChatRoom == True)
      5. return
      6. Suspend
      7. if (A_IsSuspended == true)
      8. SetScrollLockState, Off
      9. else
      10. SetScrollLockState, On
      11. return
      12. ;; Escape will cancel chatting, so turn the hotkeys back on
      13. ~*Esc::
      14. Suspend, Permit
      15. if (bInChatRoom == True)
      16. return
      17. Suspend, Off
      18. SetScrollLockState, On
      19. return
      20. ;; Use End to toggle an "in chat room" state to keep script off
      21. *End::
      22. Suspend, Permit
      23. bInChatRoom := not bInChatRoom
      24. if (bInChatRoom == True)
      25. {
      26. Suspend, On
      27. SetScrollLockState, Off
      28. }
      29. else
      30. {
      31. Suspend, Off
      32. SetScrollLockState, On
      33. }
      34. return
      Alles anzeigen


      So sieht das ganze bei mir aus. Hab das aus nem anderen Script kopiert, weiß allerdings genau was da vor sich geht und könnte es dir erklären. (Geht auch kürzer is mir grad aufgefallen mit suspend, toggle). Die ScrollLock Leuchte als Indikator (läuft oder läuft nicht) ist hier übrigens auch drin. Wenn du das irgendwo in dein Script (oben drüber oder unten drunter) einfügst sollte das reichen. Die Backspaces kannst du dann bei yxc löschen falls die keinen anderen Sinn haben den ich nochnicht verstanden hab. :)




      Nochwas an alle:

      Ich werde in der nächsten Zeit mal ein Programm schreiben (Delphi) welches mein Script den eigenen Wünschen entsprechend generiert. AHK wird das Script dann immernoch benötigen, aber da kann ich im Moment nichts dran ändern, da ich mich mit Keyboardhooks in Delphi nicht auskenne.

      Allerdings gibts dann ne Oberfläche und das ganze wird einfach zu bedienen sein.

      Also wers im Moment nicht zum Laufen kriegt: Einfach warten ;)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ^woOt ()

    • sry, nach 1.5 litern bier kann ich mich wohl nicht mehr so klar ausdrücken wie ich gerne hätte, werde das ganze morgen nochmal genau erklären wenns mir wieder besser geht, was ich aufjedenfall schonmal weiss ist das die numlock tasten über die du dich gewundert hast nichts mit dem invoker wirklich zu tun haben sondern einfach nur befehle dafür sind das die itemkeys auf tgbzhn sind wie ich es gewöhnt bin vom blamestar tool was auf den gleichen skripten aufbaut und ich die beiden tools deswegen nicht gleichzeitig starten kann
      edit: doch noch die mühe gemacht deinen letzten post genau zu lesen, wobei ich dir genau geholfen habe in sachen auflösung weiss ich noch nicht so genau.
      Das mit dem 3x y,x,c war ne idee von dem der das tool ursprünglich gemacht hat, was helfen soll wenn man zb als invoker wegrennen will anstatt 3 mal auf die tastatur zu haun einfach nur einmal drücken muss und direkt den maximalen speedbuff rausholst. das dann weiter unten steht das 2 mal y,x,c wieder weggenommen wird ist ja nur für den chat damit man im chat eben nicht direkt drei x hinternander hat.
      jedenfalls werd ich morgen mal versuchen mein tool und deins zu kombinieren damit ich endlich nen invoker habe wie ich ihn möchte.
      ist dein tool btw auch mit breitbild kompatibel? ich hab ne auflösung von 1440x900....

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von M0G3L ()

    • da könntest du recht haben :P
      hab ja gesagt, dieses tool ist eigendlich nicht von mir, ich habs nur ein wenig umgeschrieben das es mir gefällt, so komplizierte sachen wie mausklicks und sowas hab ich einfach komkplett übernommen^^
      @woot, ist es bei deinem tool relevant ob man die invoketasten auf qwer hat? hab meine imo nämlich auf yxcv, wenn ja sag mir bitte was ich bei dir ändern muss
    • Zitat von woot

      Und was mir grad noch aufgefallen ist: Mein Script funktioniert nur wenn man die Spells auf QWER hat :/ Das dürfte auch ziemlich schwer zu ändern sein, aber mann kann ja beim Invoker QWER als Tasten einstellen und bei den anderen Heros immernoch ASDF oder whatever haben.
    • ne das stimmt schon, aber wenn du sie änderst sind sie anders... ;)
      un wenn du das da usen willst, musst du sie wieder auf qwer ändern, was sich aber wiederrum mit dem attack knopf bei ihm überschneidet...
      ich musste mich auch mal umgewöhnen wegen dem invoker :D:D hab seitdem mein attack knopf auf k, aber auf der maus gebindet.. meine finger sind nicht so krass, dass ich schnell auf k komme ;)...
    • Es geht nicht um die Orbs, sondern um die eigentlichen Fähigkeiten wie "EMP" Sunstrike" ect. Die hätte man statt auf 10 (?) verschiedenen Hotkeys auf nur 2 und das permanent.


      Zum eigentlich Thema:

      Die Idee find ich grandios :) werd mir das gleich mal anschauen und ausprobieren, vielleicht sollte man wirklich ein Programm erstellen welches mit geeigneter GUI oberfläche leicht zu bedienen wäre, das wäre dann zumindestens flexibler und man müsste nicht vorlagen benutzen. Aber eine Art plugin ist ja schon ein guter Ansatz, Danke :D
    • ist uns schon bewusst.. ging aber gerade darum, dass die hotkeys der orbs dafür auf qwer sein müssen...

      btw..
      1. ja
      2. nein
      3. vieleicht, d.h. wahrscheinlich ja, wenns sich nicht mit anderem script (itemkeys) streitet, lässt sich aber ja irgentwie einrichten