AutoWarkey Guide & Sammelthread

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

    • AutoWarkey Guide & Sammelthread

      AutoWarkey Guide

      von Hellfish



      Einleitung
      Was ist AutoWarkey?
      Was kann AutoWarkey?
      Muss ich programmieren können?
      Hotstrings
      Hotkeys vergeben und Send Befehl
      Maus
      Werte in Variablen speichern
      If Ausdruck
      Fertige Script Teile
      Invoker & Rubick Script
      Nemurus OMG Keys
      Ultimate Hotkey (Funmap Keys)


      Einleitung
      Wie versprochen stelle ich hier ein paar Möglichkeiten von Autowarkey vor und stelle am Ende auch einige fertige Scripts zur Verfügung.
      Wer allerding erwartet, hier Dinge zu finden, die einen echten spielerischen Vorteil verschaffen, ist an der falschen Addresse und ich werde auch niemandem dabei helfen. Alle hier vorgestellten Funktionen sind so auch mit Blamestars Hotkey Tool und anderen gängigen Tools möglich oder dienen nur der Bequemlichkeit.
      Die meisten hier gezeigten Dinge basieren zumindest auf der Arbeit meines Mates Worldedit oder sind sogar unverändert übernommen (mit Zustimmung natürlich).
      In dieser kurzen Abhandlung wird nur die Oberfläche der Möglichkeiten von AutoWarkey angekratzt. Die im Folgenden erklärten Befehle und Funktionen sind nur die aus meiner Sicht nützlichsten, um Hotkeys für DotA zur erstellen.

      [HRLINE][/HRLINE]


      Was ist AutoWarkey?
      AutoWarkey ist ein Programm, dass es ermöglicht, Inventarhotkeys zu verlegen und durch ein einfaches grafisches Interface einfache Makros zu erstellen um z.B. Tasten bzw. Tastenkombinationen auf Hotkeys zu legen (und noch andere Sachen siehe Screenshot). Autowarkey basiert auf der beliebten Scriptsprache Autohotkey und kann Autohotkey Scripts als "User Code" ausführen. In diesen Teil kann man seinen eigenen Code schreiben, um komplexere Dinge zu verwirklichen.
      AutoWarkey bekommt man automatisch, wenn man Warkeys installiert, welches man hier herunterladen kann. Die Homepage des Projekts findet man hier.

      [HRLINE][/HRLINE]


      Was kann Autowarkey?
      Neben den bereits erwähnten Funktionen ist hier vor allem der User Code von Bedeutung. Grenzen gibt es quasi nicht, wer will, kann sich einen Ingame-Taschenrechner basteln oder bei jedem Spell, den man castet den Musik spielen lassen.
      Ich beschäftige mich im Folgenden vor allem mit Funktionen, die das Spiel angenehmer machen, z.B. Autocast Hotkeys, Invoker Hotkeys und weiterem.
      Wer die volle Vielfalt von AutoWarkey kennen lernen will, sollte sich die Autohotkey-Hilfe-Datei anschauen (an der früher oder später sowieso kein Weg vorbeigeht, wenn man seine eigenen Vorstellungen umsetzen will).
      Diese Datei findet man im Warkeys Verzeichnis unter \AutoWarkey\AutoHotkey\AutoHotkey.chm

      [HRLINE][/HRLINE]


      Muss ich programmieren können?
      Was für DotA wirklich nützlich ist, bekommt man auch als Laie hin. Ein gewissen Grundverständnis schadet aber gewiss nicht. Vieles funktioniert auch ohne einen User Code zu schreiben, damit werde ich mich im folgenden aber nicht beschäftigen, da das Programm ansonsten relativ selbsterklärend ist. Am Ende des Guides findet man auch fertige User Code Teile, für alle, die sich nicht weiter in das Thema einlesen möchten aber trotzdem von den Möglichkeiten des Programms profitieren wollen.

      [HRLINE][/HRLINE]


      Hotstrings
      Hotstrings sind die schnellste und einfachste Art, Hotkeys zu belegen.

      Quellcode

      1. X::Y

      Mit diesem Befehl wird bei Drücken der Taste X ein Y gesendet. Für komplexere Befehle wird "send" verwendet.

      [HRLINE][/HRLINE]


      Hotkeys vergeben und Send Befehl
      Um irgendeine Funktion im Spiel auszulösen, brauchen wir einen Hotkey dafür. Tastenkombinationen sind natürlich auch möglich.

      Quellcode

      1. X::
      macht die Taste X zum Auslöser für nachfolgendes, z.B. einen einfachen "Send" Befehl.

      Quellcode

      1. X::
      2. Send Y

      Auch mit diesem Befehl wird bei drücken der Taste X ein Y gesendet. Natürlich lassen sich auch ganze Sätze schreiben, so könnte man sich z.B. einen "me solo mid" Hotkey erstellen, das sähe dann so aus:

      Quellcode

      1. X::
      2. Send {enter}me solo mid{enter}
      3. return

      Hier wird bei Druck der Taste X "me solo mid" in den Teamchat geschrieben.
      Am Ende muss immer "return" folgen.

      [HRLINE][/HRLINE]


      Maus
      Die Maus Bewegen und klicken kann Warkeys natürlich auch. Dazu ist der gesammte Bildschirm in ein Koordinatensystem eingeteilt. Der Ursprung befindet sich links oben, rechts unten ist (1/1).

      Hier einige Koordinaten:

      Spell 1: (0.79583*A_ScreenWidth), (0.95428*A_ScreenHeight)
      Spell 2: (0.85238*A_ScreenWidth), (0.95428*A_ScreenHeight)
      Spell 3: (0.90476*A_ScreenWidth), (0.95428*A_ScreenHeight)
      Spell 4: (0.96071*A_ScreenWidth), (0.95428*A_ScreenHeight)
      Sonderspell 1: (0.85238*A_ScreenWidth), (0.88380*A_ScreenHeight)
      Sonderspell 2: (0.90476*A_ScreenWidth), (0.88380*A_ScreenHeight)

      Zum Bewegen der Maus ist folgender Befehl da:

      Quellcode

      1. MouseMove, X, Y

      Geschwindigkeit und weiteres lässt sich auch noch einstellen, ist hierfür aber irrelevant, näheres im Help File.


      Um einen Mausklick zu machen, gibt es folgenden Befehl:

      Quellcode

      1. MouseClick [Button] , X, Y

      Anstelle von [Button] muss die gewünschte Maustaste stehen, zur Auswahl stehen R, M, L, XButton1 und XButton2 für Rechts, Mitte, Links, und zwei Zusatztasten (Daumentasten).
      Geschwindigkeit und weiteres lässt sich auch noch einstellen, ist hierfür aber irrelevant, näheres im Help File.

      Um einen Klick auf einen Button in Warcraft 3 ausführen zu lassen, empfiehlt es sich erst die Maus auf den Button zu bewegen und dann einen Klick ausführen zu lassen, sonst ist es manchmal nicht ganz zuverlässig.
      Um einen Rechtsklick auf den ersten Spell eines Helden beim Drücken der Taste X ausführen zu lassen, wird also folgender Befehl angewandt:

      Quellcode

      1. X::
      2. MouseMove, (0.79583*A_ScreenWidth), (0.95428*A_ScreenHeight)
      3. MouseClick, R, (0.79583*A_ScreenWidth), (0.95428*A_ScreenHeight)


      Natürlich möchte man die Maus hinterher auch wieder am Ausgangspunkt vorfinden, dazu muss man die Ausgangskoordinaten vor dem Bewegen der Maus speichern, das geht mit folgendem Befehl:

      Quellcode

      1. MouseGetPos, x, y

      Hierbei werden die Koordinaten in x und y gespeichert.
      Um zu verhindern, dass bei gedrückter Maustaste Rahmen gezogen werden, sollte der Maus-Input blockiert und ein eventueller Mausklick beendet werden, anschließend wird die Maus wieder freigegeben.

      Quellcode

      1. BlockInput, Mouse
      2. Click up left
      3. ...
      4. BlockInput, Off

      Def komplette Befehl sieht in der Praxis also folgendermaßen aus:

      Quellcode

      1. X::
      2. MouseGetPos, x, y
      3. BlockInput, Mouse
      4. Click up left
      5. MouseMove, (0.79583*A_ScreenWidth), (0.95428*A_ScreenHeight)
      6. MouseClick, R, (0.79583*A_ScreenWidth), (0.95428*A_ScreenHeight)
      7. MouseMove, x, y
      8. BlockInput, Off
      9. return


      [HRLINE][/HRLINE]


      Werte in Variablen speichern
      Eigentlich habe ich es schon vorweggegriffen, natürlich lassen sich Werte auch in Variablen speichern. Folgender Operator weist der Variablen z den Wert 1 zu:

      Quellcode

      1. z := 1

      Es gibt auch noch andere Möglichkeiten, die sind hierfür aber nicht von Belang, näheres siehe im Help File.


      If Ausdruck
      Dem If Ausdruck folgt immer eine Aussage, die entweder wahr oder Falsch sein kann. Ist sie wahr, wird das Nachfolgende ausgelöst, sonst nicht.
      Mit folgendem Ausdruck, wird "BOB" in den Chat geschrieben, falls die Variable B den Wert 1 hat:

      Quellcode

      1. if B = 1
      2. {
      3. Send {enter}BOB{Enter}
      4. }
      5. return


      Falls die Variable B nicht den Wert 1 hat, passiert hierbei gar nichts. Soll etwas anders passieren, verwendet man "else"
      Möchte ich statt "BOB" "NOOB" schreiben, sofern B nicht 1 ist, erweitere ich den Ausdruck folgendermaßen:

      Quellcode

      1. if B = 1
      2. {
      3. Send {enter}BOB{Enter}
      4. }
      5. else
      6. {
      7. Send {enter}NOOB{Enter}
      8. }
      9. return


      Glückwunsch! Wer bis hierher folgen konnte, hat jetzt alles Handwerkszeug beisammen, das man braucht, um eigene Profile für verschiedene Helden mit verschiedenen Anforderungen, z.B. Autocasts auf verschiedenen Buttons, zu schreiben.

      [HRLINE][/HRLINE]


      Fertige Script Teile
      Für die faulen gibt es hier noch ein paar nützliche Sachen. Der entsprechende Hotkey steht immer in Klammern und kann natürlich beliebig geändert werden. Einfach in den User Code kopieren und Spaß haben.

      Ersten Helden auswählen auf Leertaste (Space)
      Spoiler anzeigen

      Quellcode

      1. Space::F1


      Miss Top/Mid/Bot Hotkeys (UJM)
      Spoiler anzeigen

      Quellcode

      1. u::
      2. Send {enter}miss top{enter}
      3. return
      4. j::
      5. Send {enter}miss mid{enter}
      6. return
      7. m::
      8. Send {enter}miss bot{enter}
      9. return
      Alles anzeigen


      Multiboard Hotkey (<)
      Spoiler anzeigen

      Quellcode

      1. <::
      2. BlockInput, Mouse
      3. Click up left
      4. MouseGetPos, x, y
      5. MouseMove, (0.98452*A_ScreenWidth), (0.05809*A_ScreenHeight)
      6. MouseClick, L, (0.98452*A_ScreenWidth), (0.05809*A_ScreenHeight)
      7. MouseMove, x, y
      8. Blockinput, off
      9. return


      Autocast Profile für alle 6 möglichen Spell Buttons (XButton1)
      Spoiler anzeigen

      Quellcode

      1. auto := 0
      2. Numpad0::
      3. auto := 0
      4. SoundBeep, 1000, 200
      5. return
      6. Numpad1::
      7. auto := 1
      8. SoundBeep, 1000, 50
      9. Sleep, 50
      10. SoundBeep, 1000, 50
      11. return
      12. Numpad2::
      13. auto := 2
      14. SoundBeep, 1000, 50
      15. Sleep, 50
      16. SoundBeep, 1000, 50
      17. return
      18. Numpad3::
      19. auto := 3
      20. SoundBeep, 1000, 50
      21. Sleep, 50
      22. SoundBeep, 1000, 50
      23. return
      24. Numpad4::
      25. auto := 4
      26. SoundBeep, 1000, 50
      27. Sleep, 50
      28. SoundBeep, 1000, 50
      29. return
      30. Numpad5::
      31. auto := 5
      32. SoundBeep, 1000, 50
      33. Sleep, 50
      34. SoundBeep, 1000, 50
      35. return
      36. Numpad6::
      37. auto := 6
      38. SoundBeep, 1000, 50
      39. Sleep, 50
      40. SoundBeep, 1000, 50
      41. return
      42. XButton1::
      43. if auto = 0
      44. {
      45. Send, x
      46. }
      47. else
      48. {
      49. BlockInput, Mouse
      50. Click up left
      51. MouseGetPos, x, y
      52. }
      53. if auto = 1
      54. {
      55. MouseMove, (0.79583*A_ScreenWidth), (0.95428*A_ScreenHeight)
      56. MouseClick, R, (0.79583*A_ScreenWidth), (0.95428*A_ScreenHeight)
      57. }
      58. if auto = 2
      59. {
      60. MouseMove, (0.85238*A_ScreenWidth), (0.95428*A_ScreenHeight)
      61. MouseClick, R, (0.85238*A_ScreenWidth), (0.95428*A_ScreenHeight)
      62. }
      63. if auto = 3
      64. {
      65. MouseMove, (0.90476*A_ScreenWidth), (0.95428*A_ScreenHeight)
      66. MouseClick, R, (0.90476*A_ScreenWidth), (0.95428*A_ScreenHeight)
      67. }
      68. if auto = 4
      69. {
      70. MouseMove, (0.96071*A_ScreenWidth), (0.95428*A_ScreenHeight)
      71. MouseClick, R, (0.96071*A_ScreenWidth), (0.95428*A_ScreenHeight)
      72. }
      73. if auto = 5
      74. {
      75. MouseMove, (0.85238*A_ScreenWidth), (0.88380*A_ScreenHeight)
      76. MouseClick, R, (0.85238*A_ScreenWidth), (0.88380*A_ScreenHeight)
      77. }
      78. if auto = 6
      79. {
      80. MouseMove, (0.90476*A_ScreenWidth), (0.88380*A_ScreenHeight)
      81. MouseClick, R, (0.90476*A_ScreenWidth), (0.88380*A_ScreenHeight)
      82. }
      83. if auto != 0
      84. {
      85. MouseMove, x, y
      86. BlockInput, off
      87. }
      88. return
      Alles anzeigen


      Invoker Keys (X, C), aktivieren auf I, deaktivieren auf strg+I

      Spoiler anzeigen

      Quellcode

      1. I::
      2. i := 1
      3. SoundBeep, 1000, 50
      4. Sleep, 50
      5. SoundBeep, 1000, 50
      6. return
      7. ^i::
      8. i := 0
      9. SoundBeep, 1000, 200
      10. return
      11. X::
      12. if i = 1
      13. {
      14. BlockInput, Mouse
      15. Click up left
      16. MouseGetPos, x, y
      17. MouseMove, (0.85238*A_ScreenWidth), (0.88380*A_ScreenHeight)
      18. MouseClick, L, (0.85238*A_ScreenWidth), (0.88380*A_ScreenHeight)
      19. MouseMove, x, y
      20. Blockinput, off
      21. }
      22. else
      23. {
      24. Send x
      25. }
      26. return
      27. C::
      28. if i = 1
      29. {
      30. BlockInput, Mouse
      31. Click up left
      32. MouseGetPos, x, y
      33. MouseMove, (0.90476*A_ScreenWidth), (0.88380*A_ScreenHeight)
      34. MouseClick, L, (0.90476*A_ScreenWidth), (0.88380*A_ScreenHeight)
      35. MouseMove, x, y
      36. Blockinput, off
      37. }
      38. else
      39. {
      40. send c
      41. }
      42. return
      Alles anzeigen


      Rubick Spell Steal Script V 2

      Dieses Script setzt den gestohlenen Spell auf ein einen Hotkey und verhindert alle Überschneidungen mit Rubicks eigenen Spells.
      Benötigt werden Autowarkey und Customkeys.

      In den Customkeys sind die aktiven Spells von Rubick folgendermaßen zu ersetzen:
      QWER
      Spoiler anzeigen

      Quellcode

      1. [A27F]
      2. Tip=(|cffffcc00Q|r) Telekinesis - [|cffffcc00Level 1|r],(|cffffcc00Q|r) Telekinesis - [|cffffcc00Level 2|r],(|cffffcc00Q|r) Telekinesis - [|cffffcc00Level 3|r],(|cffffcc00Q|r) Telekinesis - [|cffffcc00Level 4|r]
      3. Researchtip=(|cffffcc00Q|r) Telekinesis - [|cffffcc00Level %d|r]
      4. Hotkey=I
      5. Researchhotkey=I
      6. [A27X]
      7. Tip=(|cffffcc00Q|r) Telekinesis Land
      8. Hotkey=I
      9. [A27G]
      10. Tip=(|cffffcc00W|r) Fade Bolt - [|cffffcc00Level 1|r],(|cffffcc00W|r) Fade Bolt - [|cffffcc00Level 2|r],(|cffffcc00W|r) Fade Bolt - [|cffffcc00Level 3|r],(|cffffcc00W|r) Fade Bolt - [|cffffcc00Level 4|r]
      11. Researchtip=(|cffffcc00W|r) Fade Bolt - [|cffffcc00Level %d|r]
      12. Hotkey=O
      13. Researchhotkey=O
      14. [A27H]
      15. Tip=(|cffffcc00R|r) Spell Steal - [|cffffcc00Level 1|r],(|cffffcc00R|r) Spell Steal - [|cffffcc00Level 2|r],(|cffffcc00R|r) Spell Steal - [|cffffcc00Level 3|r]
      16. Researchtip=(|cffffcc00R|r) Spell Steal - [|cffffcc00Level %d|r]
      17. Hotkey=P
      18. Researchhotkey=P
      Alles anzeigen
      ASDF
      Spoiler anzeigen

      Quellcode

      1. [A27F]
      2. Tip=(|cffffcc00A|r) Telekinesis - [|cffffcc00Level 1|r],(|cffffcc00A|r) Telekinesis - [|cffffcc00Level 2|r],(|cffffcc00A|r) Telekinesis - [|cffffcc00Level 3|r],(|cffffcc00A|r) Telekinesis - [|cffffcc00Level 4|r]
      3. Researchtip=(|cffffcc00A|r) Telekinesis - [|cffffcc00Level %d|r]
      4. Hotkey=I
      5. Researchhotkey=I
      6. [A27X]
      7. Tip=(|cffffcc00A|r) Telekinesis Land
      8. Hotkey=I
      9. [A27G]
      10. Tip=(|cffffcc00S|r) Fade Bolt - [|cffffcc00Level 1|r],(|cffffcc00S|r) Fade Bolt - [|cffffcc00Level 2|r],(|cffffcc00S|r) Fade Bolt - [|cffffcc00Level 3|r],(|cffffcc00S|r) Fade Bolt - [|cffffcc00Level 4|r]
      11. Researchtip=(|cffffcc00S|r) Fade Bolt - [|cffffcc00Level %d|r]
      12. Hotkey=O
      13. Researchhotkey=O
      14. [A27H]
      15. Tip=(|cffffcc00F|r) Spell Steal - [|cffffcc00Level 1|r],(|cffffcc00F|r) Spell Steal - [|cffffcc00Level 2|r],(|cffffcc00F|r) Spell Steal - [|cffffcc00Level 3|r]
      16. Researchtip=(|cffffcc00F|r) Spell Steal - [|cffffcc00Level %d|r]
      17. Hotkey=P
      18. Researchhotkey=P
      Alles anzeigen
      YXCV
      Spoiler anzeigen

      Quellcode

      1. [A27F]
      2. Tip=(|cffffcc00Y|r) Telekinesis - [|cffffcc00Level 1|r],(|cffffcc00Y|r) Telekinesis - [|cffffcc00Level 2|r],(|cffffcc00Y|r) Telekinesis - [|cffffcc00Level 3|r],(|cffffcc00Y|r) Telekinesis - [|cffffcc00Level 4|r]
      3. Researchtip=(|cffffcc00Y|r) Telekinesis - [|cffffcc00Level %d|r]
      4. Hotkey=I
      5. Researchhotkey=I
      6. [A27X]
      7. Tip=(|cffffcc00I|r) Telekinesis Land
      8. Hotkey=I
      9. [A27G]
      10. Tip=(|cffffcc00X|r) Fade Bolt - [|cffffcc00Level 1|r],(|cffffcc00X|r) Fade Bolt - [|cffffcc00Level 2|r],(|cffffcc00X|r) Fade Bolt - [|cffffcc00Level 3|r],(|cffffcc00X|r) Fade Bolt - [|cffffcc00Level 4|r]
      11. Researchtip=(|cffffcc00X|r) Fade Bolt - [|cffffcc00Level %d|r]
      12. Hotkey=O
      13. Researchhotkey=O
      14. [A27H]
      15. Tip=(|cffffcc00V|r) Spell Steal - [|cffffcc00Level 1|r],(|cffffcc00V|r) Spell Steal - [|cffffcc00Level 2|r],(|cffffcc00V|r) Spell Steal - [|cffffcc00Level 3|r]
      16. Researchtip=(|cffffcc00V|r) Spell Steal - [|cffffcc00Level %d|r]
      17. Hotkey=P
      18. Researchhotkey=P
      Alles anzeigen


      Die Invoker Hotkeys (nur Invokes) sind durch folgende zu ersetzen. Anmerkung: Die Invokes haben dann alle den gleichen Hotkey und lassen sich dadurch ohne Script/Tool nicht mehr verwenden. Wer dies nicht möchte, lässt diesen Teil weg, hat dann allerdings keinen Hotkey für gestohlene Invokes. Mit der weiter oben stehenden Version des Scripts tritt dieses Problem nicht auf, allerdings ist die Verzögerung dabei etwas größer.
      Spoiler anzeigen

      Quellcode

      1. [a0vn]
      2. Tip=Chaos Meteor [EEW]
      3. Hotkey=U
      4. [a0vs]
      5. Tip=Emp [WWW]
      6. Hotkey=U
      7. [a0vk]
      8. Tip=Tornado [WWQ]
      9. Hotkey=U
      10. [a0xl]
      11. Tip=Ghost Walk [QQW]
      12. Hotkey=U
      13. [a0vm]
      14. Tip=Deafeaning Blast [QWE]
      15. Hotkey=U
      16. [a0vp]
      17. Tip=Ice Wall [QQE]
      18. Hotkey=U
      19. [a0vg]
      20. Tip=Sun Strike [EEE]
      21. Hotkey=U
      22. [a0vq]
      23. Tip=Alacrity [WWE]
      24. Hotkey=U
      25. [a0vo]
      26. Tip=Forge Spirit [EEQ]
      27. Hotkey=U
      28. [a0vz]
      29. Tip=Cold Snap [QQQ]
      30. Hotkey=U
      Alles anzeigen


      Unter Usercode ist folgendes einzufügen:
      Wird noch ein Invokerscript für die gleichen Hotkeys verwendet, führt das zu überschneidungen. Die entsprechenden Scriptteile müssen dann ineinander integriert werden. Für Hilfe dabei PM an mich.

      QWER/übernommener Spell auf S, Subspell auf D
      Spoiler anzeigen

      Quellcode

      1. m::
      2. m := 1
      3. SoundBeep, 1000, 50
      4. Sleep, 50
      5. SoundBeep, 1000, 50
      6. return
      7. ^m::
      8. m := 0
      9. SoundBeep, 1000, 200
      10. return
      11. s::
      12. if m = 1
      13. {
      14. send qweru
      15. }
      16. else
      17. {
      18. send s
      19. }
      20. return
      21. d::
      22. if m = 1
      23. {
      24. send sd
      25. }
      26. else
      27. {
      28. send d
      29. }
      30. return
      31. q::
      32. if m = 1
      33. {
      34. send i
      35. }
      36. else
      37. {
      38. send q
      39. }
      40. return
      41. w::
      42. if m = 1
      43. {
      44. send o
      45. }
      46. else
      47. {
      48. send w
      49. }
      50. return
      51. r::
      52. if m = 1
      53. {
      54. send p
      55. }
      56. else
      57. {
      58. send r
      59. }
      60. return
      Alles anzeigen
      ASDF/übernommener Spell auf X, Subspell auf C
      Spoiler anzeigen

      Quellcode

      1. m::
      2. m := 1
      3. SoundBeep, 1000, 50
      4. Sleep, 50
      5. SoundBeep, 1000, 50
      6. return
      7. ^m::
      8. m := 0
      9. SoundBeep, 1000, 200
      10. return
      11. x::
      12. if m = 1
      13. {
      14. send asdfu
      15. }
      16. else
      17. {
      18. send x
      19. }
      20. return
      21. c::
      22. if m = 1
      23. {
      24. send xc
      25. }
      26. else
      27. {
      28. send c
      29. }
      30. return
      31. a::
      32. if m = 1
      33. {
      34. send i
      35. }
      36. else
      37. {
      38. send a
      39. }
      40. return
      41. s::
      42. if m = 1
      43. {
      44. send o
      45. }
      46. else
      47. {
      48. send s
      49. }
      50. return
      51. f::
      52. if m = 1
      53. {
      54. send p
      55. }
      56. else
      57. {
      58. send f
      59. }
      60. return
      Alles anzeigen
      YXCV/übernommener Spell auf S, Subspell auf D
      Spoiler anzeigen

      Quellcode

      1. m::
      2. m := 1
      3. SoundBeep, 1000, 50
      4. Sleep, 50
      5. SoundBeep, 1000, 50
      6. return
      7. ^m::
      8. m := 0
      9. SoundBeep, 1000, 200
      10. return
      11. s::
      12. if m = 1
      13. {
      14. send yxcvu
      15. }
      16. else
      17. {
      18. send s
      19. }
      20. return
      21. d::
      22. if m = 1
      23. {
      24. send sd
      25. }
      26. else
      27. {
      28. send d
      29. }
      30. return
      31. y::
      32. if m = 1
      33. {
      34. send i
      35. }
      36. else
      37. {
      38. send y
      39. }
      40. return
      41. x::
      42. if m = 1
      43. {
      44. send o
      45. }
      46. else
      47. {
      48. send x
      49. }
      50. return
      51. v::
      52. if m = 1
      53. {
      54. send p
      55. }
      56. else
      57. {
      58. send v
      59. }
      60. return
      Alles anzeigen


      [HRLINE][/HRLINE]

      Invoker & Rubick Script

      Dieses Script belegt die zwei Hotkeys für Sonderspells (in meinen QWER und YXCV Versionen sind das S und D, bei ASDF X unf C) mit den beiden Invokes oder Rubicks gestohlenem Spell sowie einem eventuellen Subspell.
      Um das Invoker Profil zu aktivieren, dient die Taste I, für Rubick M. Deaktivieren lässt sich das Script mit strg+I und strg+M.
      Voraussetzungen:
      • Customkeys mit einheitlicher Belegung für alle Helden
      • Autowarkey

      Zunächst muss die Hotkeybelegung eingestellt werden. Kopiert dazu den ganzen Text in ein Textbearbeitungsprogramm und benutzt die Suchen und Ersetzen Funktion (in der Regel strg+f).
      Zu ersetzen ist:
      • [spell1], [spell2], [spell3] und [spell4] mit den in den Customkeys eingestellten Hotkeys für die normalen 4 Spells.
      • [sonderspell1] und [sonderspell2] mit den in den Customkeys eingestellten Hotkeys für die zwei Sonderspells (Blinding Light, Relocate, Eternal Jaunt, etc.)

      Achtung: Unbedingt Kleinbuchstaben verwenden!

      Danach kann der Text unter "User Code" in Autowarkeys eigenfügt werden.

      Quellcode

      1. i := 0
      2. I::
      3. i := 1
      4. SoundBeep, 1000, 50
      5. Sleep, 50
      6. SoundBeep, 1000, 50
      7. return
      8. ^i::
      9. i := 0
      10. SoundBeep, 1000, 200
      11. return
      12. m::
      13. i := 2
      14. SoundBeep, 1000, 50
      15. Sleep, 50
      16. SoundBeep, 1000, 50
      17. return
      18. ^m::
      19. i := 0
      20. SoundBeep, 1000, 200
      21. return
      22. [Sonderspell1]::
      23. if i = 1
      24. {
      25. BlockInput, Mouse
      26. Click up left
      27. MouseGetPos, x, y
      28. MouseMove, (0.85238*A_ScreenWidth), (0.88380*A_ScreenHeight)
      29. MouseClick, L, (0.85238*A_ScreenWidth), (0.88380*A_ScreenHeight)
      30. MouseMove, x, y
      31. Blockinput, off
      32. }
      33. if i = 2
      34. {
      35. send [Spell1][Spell2][Spell3][Spell4]u
      36. }
      37. if i = 0
      38. {
      39. Send [Sonderspell1]
      40. }
      41. return
      42. [Sonderspell2]::
      43. if i = 1
      44. {
      45. BlockInput, Mouse
      46. Click up left
      47. MouseGetPos, x, y
      48. MouseMove, (0.90476*A_ScreenWidth), (0.88380*A_ScreenHeight)
      49. MouseClick, L, (0.90476*A_ScreenWidth), (0.88380*A_ScreenHeight)
      50. MouseMove, x, y
      51. Blockinput, off
      52. }
      53. if i = 2
      54. {
      55. send [Sonderspell1][Sonderspell2]
      56. }
      57. if i = 0
      58. {
      59. send [Sonderspell2]
      60. }
      61. return
      62. [Spell1]::
      63. if i = 2
      64. {
      65. send i
      66. }
      67. else
      68. {
      69. send [Spell1]
      70. }
      71. return
      72. [Spell2]::
      73. if i = 2
      74. {
      75. send o
      76. }
      77. else
      78. {
      79. send [Spell2]
      80. }
      81. return
      82. [Spell4]::
      83. if i = 2
      84. {
      85. send p
      86. }
      87. else
      88. {
      89. send [Spell4]
      90. }
      91. return
      Alles anzeigen


      Desweiteren müssen in den Customkeys die Hotkeys und Researchhotkeys der aktiven Spells von Rubick auf I,O und P gelegt werden.
      Wer eine QWER, ASDF oder YXCV Version verwendet, kann dazu die entsprechenden Einträge durch folgende ersetzen:

      QWER
      Spoiler anzeigen

      Quellcode

      1. [A27F]
      2. Tip=(|cffffcc00Q|r) Telekinesis - [|cffffcc00Level 1|r],(|cffffcc00Q|r) Telekinesis - [|cffffcc00Level 2|r],(|cffffcc00Q|r) Telekinesis - [|cffffcc00Level 3|r],(|cffffcc00Q|r) Telekinesis - [|cffffcc00Level 4|r]
      3. Researchtip=(|cffffcc00Q|r) Telekinesis - [|cffffcc00Level %d|r]
      4. Hotkey=I
      5. Researchhotkey=I
      6. [A27X]
      7. Tip=(|cffffcc00Q|r) Telekinesis Land
      8. Hotkey=I
      9. [A27G]
      10. Tip=(|cffffcc00W|r) Fade Bolt - [|cffffcc00Level 1|r],(|cffffcc00W|r) Fade Bolt - [|cffffcc00Level 2|r],(|cffffcc00W|r) Fade Bolt - [|cffffcc00Level 3|r],(|cffffcc00W|r) Fade Bolt - [|cffffcc00Level 4|r]
      11. Researchtip=(|cffffcc00W|r) Fade Bolt - [|cffffcc00Level %d|r]
      12. Hotkey=O
      13. Researchhotkey=O
      14. [A27H]
      15. Tip=(|cffffcc00R|r) Spell Steal - [|cffffcc00Level 1|r],(|cffffcc00R|r) Spell Steal - [|cffffcc00Level 2|r],(|cffffcc00R|r) Spell Steal - [|cffffcc00Level 3|r]
      16. Researchtip=(|cffffcc00R|r) Spell Steal - [|cffffcc00Level %d|r]
      17. Hotkey=P
      18. Researchhotkey=P
      Alles anzeigen


      ASDF
      Spoiler anzeigen

      Quellcode

      1. [A27F]
      2. Tip=(|cffffcc00A|r) Telekinesis - [|cffffcc00Level 1|r],(|cffffcc00A|r) Telekinesis - [|cffffcc00Level 2|r],(|cffffcc00A|r) Telekinesis - [|cffffcc00Level 3|r],(|cffffcc00A|r) Telekinesis - [|cffffcc00Level 4|r]
      3. Researchtip=(|cffffcc00A|r) Telekinesis - [|cffffcc00Level %d|r]
      4. Hotkey=I
      5. Researchhotkey=I
      6. [A27X]
      7. Tip=(|cffffcc00A|r) Telekinesis Land
      8. Hotkey=I
      9. [A27G]
      10. Tip=(|cffffcc00S|r) Fade Bolt - [|cffffcc00Level 1|r],(|cffffcc00S|r) Fade Bolt - [|cffffcc00Level 2|r],(|cffffcc00S|r) Fade Bolt - [|cffffcc00Level 3|r],(|cffffcc00S|r) Fade Bolt - [|cffffcc00Level 4|r]
      11. Researchtip=(|cffffcc00S|r) Fade Bolt - [|cffffcc00Level %d|r]
      12. Hotkey=O
      13. Researchhotkey=O
      14. [A27H]
      15. Tip=(|cffffcc00F|r) Spell Steal - [|cffffcc00Level 1|r],(|cffffcc00F|r) Spell Steal - [|cffffcc00Level 2|r],(|cffffcc00F|r) Spell Steal - [|cffffcc00Level 3|r]
      16. Researchtip=(|cffffcc00F|r) Spell Steal - [|cffffcc00Level %d|r]
      17. Hotkey=P
      18. Researchhotkey=P
      Alles anzeigen


      YXCV
      Spoiler anzeigen

      Quellcode

      1. [A27F]
      2. Tip=(|cffffcc00Y|r) Telekinesis - [|cffffcc00Level 1|r],(|cffffcc00Y|r) Telekinesis - [|cffffcc00Level 2|r],(|cffffcc00Y|r) Telekinesis - [|cffffcc00Level 3|r],(|cffffcc00Y|r) Telekinesis - [|cffffcc00Level 4|r]
      3. Researchtip=(|cffffcc00Y|r) Telekinesis - [|cffffcc00Level %d|r]
      4. Hotkey=I
      5. Researchhotkey=I
      6. [A27X]
      7. Tip=(|cffffcc00I|r) Telekinesis Land
      8. Hotkey=I
      9. [A27G]
      10. Tip=(|cffffcc00X|r) Fade Bolt - [|cffffcc00Level 1|r],(|cffffcc00X|r) Fade Bolt - [|cffffcc00Level 2|r],(|cffffcc00X|r) Fade Bolt - [|cffffcc00Level 3|r],(|cffffcc00X|r) Fade Bolt - [|cffffcc00Level 4|r]
      11. Researchtip=(|cffffcc00X|r) Fade Bolt - [|cffffcc00Level %d|r]
      12. Hotkey=O
      13. Researchhotkey=O
      14. [A27H]
      15. Tip=(|cffffcc00V|r) Spell Steal - [|cffffcc00Level 1|r],(|cffffcc00V|r) Spell Steal - [|cffffcc00Level 2|r],(|cffffcc00V|r) Spell Steal - [|cffffcc00Level 3|r]
      16. Researchtip=(|cffffcc00V|r) Spell Steal - [|cffffcc00Level %d|r]
      17. Hotkey=P
      18. Researchhotkey=P
      Alles anzeigen


      Die Invoker Hotkeys (nur Invokes) sind alle auf U zu legen.
      Ersetzt dazu die entsprechenden Einträge durch diese hier:

      Quellcode

      1. [a0vn]
      2. Tip=Chaos Meteor [EEW]
      3. Hotkey=U
      4. [a0vs]
      5. Tip=Emp [WWW]
      6. Hotkey=U
      7. [a0vk]
      8. Tip=Tornado [WWQ]
      9. Hotkey=U
      10. [a0xl]
      11. Tip=Ghost Walk [QQW]
      12. Hotkey=U
      13. [a0vm]
      14. Tip=Deafeaning Blast [QWE]
      15. Hotkey=U
      16. [a0vp]
      17. Tip=Ice Wall [QQE]
      18. Hotkey=U
      19. [a0vg]
      20. Tip=Sun Strike [EEE]
      21. Hotkey=U
      22. [a0vq]
      23. Tip=Alacrity [WWE]
      24. Hotkey=U
      25. [a0vo]
      26. Tip=Forge Spirit [EEQ]
      27. Hotkey=U
      28. [a0vz]
      29. Tip=Cold Snap [QQQ]
      30. Hotkey=U
      Alles anzeigen


      [HRLINE][/HRLINE]

      Dieser Beitrag wurde bereits 16 mal editiert, zuletzt von Hellfish ()

    • Quellcode

      1. o::
      2. o := 1
      3. SoundBeep, 1000, 50
      4. Sleep, 50
      5. SoundBeep, 1000, 50
      6. return
      7. ^o::
      8. o := 0
      9. SoundBeep, 1000, 200
      10. return
      11. Q::
      12. if o = 1
      13. {
      14. MouseGetPos, x, y
      15. MouseMove, (0.79583*A_ScreenWidth), (0.95428*A_ScreenHeight)
      16. MouseClick, L, (0.79583*A_ScreenWidth), (0.95428*A_ScreenHeight)
      17. MouseMove, x, y
      18. }
      19. else
      20. {
      21. send q
      22. }
      23. return
      24. W::
      25. if o = 1
      26. {
      27. MouseGetPos, x, y
      28. MouseMove, (0.85238*A_ScreenWidth), (0.95428*A_ScreenHeight)
      29. MouseClick, L, (0.85238*A_ScreenWidth), (0.95428*A_ScreenHeight)
      30. MouseMove, x, y
      31. }
      32. else
      33. {
      34. send w
      35. }
      36. return
      37. E::
      38. if o = 1
      39. {
      40. MouseGetPos, x, y
      41. MouseMove, (0.90476*A_ScreenWidth), (0.95428*A_ScreenHeight)
      42. MouseClick, L, (0.90476*A_ScreenWidth), (0.95428*A_ScreenHeight)
      43. MouseMove, x, y
      44. }
      45. else
      46. {
      47. send e
      48. }
      49. return
      50. R::
      51. if o = 1
      52. {
      53. MouseGetPos, x, y
      54. MouseMove, (0.96071*A_ScreenWidth), (0.95428*A_ScreenHeight)
      55. MouseClick, L, (0.96071*A_ScreenWidth), (0.95428*A_ScreenHeight)
      56. MouseMove, x, y
      57. }
      58. else
      59. {
      60. send r
      61. }
      62. return
      63. S::
      64. if o = 1
      65. {
      66. MouseGetPos, x, y
      67. MouseMove, (0.85238*A_ScreenWidth), (0.88380*A_ScreenHeight)
      68. MouseClick, L, (0.85238*A_ScreenWidth), (0.88380*A_ScreenHeight)
      69. MouseMove, x, y
      70. }
      71. else
      72. {
      73. send s
      74. }
      75. return
      76. D::
      77. if o = 1
      78. {
      79. MouseGetPos, x, y
      80. MouseMove, (0.90476*A_ScreenWidth), (0.88380*A_ScreenHeight)
      81. MouseClick, L, (0.90476*A_ScreenWidth), (0.88380*A_ScreenHeight)
      82. MouseMove, x, y
      83. }
      84. else
      85. {
      86. send d
      87. }
      88. return
      Alles anzeigen




      Mein OMG-Script
      o macht es an, shift+o machts aus, spells liegen auf qwer von links nach rechts. gegen sich überschneidende hotkeys!

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

    • mal ne Frage direkt dazu: Liegt die Tatsache, dass ich die beiden Invoker-Spells per Autowarkey nicht ansteuern kann, an meiner Dummheit oder daran, dass ich mit einer widescreen-auflösung spiele? Dürfte ja eigentlich nicht, weil der Klick ja über relative Bildschirmbreiten/-längen berechnet wird, oder?
      Trotzdem funktioniert das bei mir nicht.
    • Hier ein kleines Script, das quasi genau das macht, was Blamestars kann, nämlich Buttons anklicken, im Gegensatz zu diesem allerdings ohne nennenswerten Delay.
      Die Hotkeys QWER, ASDF und YXCV führen einfach Mausklicks auf die entsprechenden Buttons durch, TZGHBN ist das Inventar F1 auf Space, ein-/ausschalten mit Pause. Ist sehr praktisch für Funmaps aller Art.
      Download Ultimate Hotkey.exe (Zum Spielen einfach Ausführen, erscheint im Tray)
      Download Ultimate Hotkey.ahk (Benötigt Autohotkey)
      Download Ultimate Hotkey.cfg (Mit Autowarkey öffnen)
      Quelltext
      Spoiler anzeigen
      #SingleInstance force
      #HotkeyInterval 0
      #InstallKeybdHook
      #UseHook On
      #MaxThreads 20
      SetBatchLines, -1
      SetKeyDelay , -1, -1
      ;Thread, Interrupt , -1, -1
      SetTitleMatchMode, 3
      SetDefaultMouseSpeed, 0

      IfExist, Warcraft III.ico
      menu, tray, Icon, Warcraft III.ico, 1, 1

      bInChatRoom := False
      Return


      #ifWinActive, Warcraft III ahk_class Warcraft III
      ~*Enter::
      ~*NumpadEnter::
      Suspend, Permit
      if (bInChatRoom == True)
      return
      Suspend
      if (A_IsSuspended == true)
      {
      SoundPlay,*64
      SetScrollLockState, Off
      }
      else
      {
      SoundPlay,*48
      SetScrollLockState, On
      }
      return

      ~*Esc::
      Suspend, Permit
      if (bInChatRoom == True)
      return
      Suspend, Off
      SoundPlay,*48
      SetScrollLockState, On
      return

      *Pause::
      Suspend, Permit
      bInChatRoom := not bInChatRoom
      if (bInChatRoom == True)
      {
      Suspend, On
      SetScrollLockState, Off
      SoundPlay,*64
      }
      else
      {
      Suspend, Off
      SetScrollLockState, On
      SoundPlay,*48
      }
      return

      ; Disable Left Windows Key
      Lwin::return
      ; Disable Left Alt-Q GG
      <!q::return

      q::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.79583*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseClick, L, (0.79583*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      w::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.85238*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseClick, L, (0.85238*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      e::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.90476*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseClick, L, (0.90476*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      r::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.96071*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseClick, L, (0.96071*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      a::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.79583*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseClick, L, (0.79583*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      s::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.85238*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseClick, L, (0.85238*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      d::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.90476*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseClick, L, (0.90476*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      f::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.96071*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseClick, L, (0.96071*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      y::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.79583*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseClick, L, (0.79583*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      x::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.85238*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseClick, L, (0.85238*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      c::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.90476*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseClick, L, (0.90476*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      v::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.96071*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseClick, L, (0.96071*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      Space::F1
      t::Numpad7
      z::Numpad8
      g::Numpad4
      h::Numpad5
      b::Numpad1
      n::Numpad2


      edit: Ich habe den Thread mal umbenannt, weil er doch eher zu einer Sammlung von Scripts geworden ist. Ihr seid herzlich eingeladen, auch eure Scripts zu posten, wenn ihr meint, dass sie für die Community interessant sein könnten.

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Hellfish ()

    • Danke Hellfish ! Weiter so =)

      MfG
      [spoil=Gyros wird die Weltherrschaft an sich reißen]Kebap-: Jimaras
      Kebap-: im gosugamers forum steht
      Kebap-: gyro as support
      Kebap-: und wegen dir bastard
      Kebap-: les ich halt
      Kebap-: gyros als support
      [/spoil][spoil=Amoment und seine letzte Klausur]Amoment: ich habe gestern letzte 2-stündige arbeit meines lebens geschrieben
      Amoment: und was war es?
      Amoment: na???
      Amoment: na???
      Amoment: GESCHICHTE
      Amoment: ÜBER JUDEN
      Amoment: Ich habe schön viel das wort finanzjudentum eingebracht
      [/spoil]
    • Wc3KeyManager v. 1.01 (beta)

      Geb ich hier auch mal meinen Senf zu ab :P

      Kleines Script meinerseits: Wc3KeyManager v. 1.01(beta)

      Was macht dieses Script?
      Erstmal nicht viel ^^
      Es ermöglicht euch eure scripts sowie verschiedene CustomKeys.txt zu verwalten.

      Falls ihr WarKeys benutzt und keine gängige AutoHotkey installation habt erstellt eine .bat Datei und schreibt folgendes rein:
      "<WarkeyPfad>\AutoWarkey\AutoHotkey\AutoHotkey.exe" Wc3KeyManager.ahk (<WarkeyPfad> ist der Pfad zu eurem WarkeysOrdner)

      Dann einfach die .bat starten

      Dazu werden 4 Ordner erstellt (passiert beim ersten start automatisch): autoExec, scripts, customKeys, misc
      Den Ordner misc könnt ihr ignorieren.

      autoExec:
      Alle .ahk, .exe, .bat Dateien in diesem Ordner werden automatisch bei scriptstart ausgeführt und beim beenden (ausnahme sind .bats) beendet.

      scripts:
      .ahk Dateien in diesem Ordner können ingame geladen werden, dazu muss man einfach
      /script <scriptname> (ohne <>)
      schreiben. Bei erneutem aufruf (mit anderem scriptnamen) wird das vorherig aufgerufene Script beendet.
      /script beendet einfach das zuletzt geladene script.

      Ist eine default.ahk im Ordner scripts vorhanden wird diese automatisch geladen (und per /script ??? überschrieben)

      Anwendung in DotA: Ein normales script, eins für Rubik, eins für Invoker...

      customKeys:
      .txt Dateien in diesem Ordner können ingame als CustomKeys.txt geladen werden (Tauscht einfach die Datei im WC3 Ordner aus...)
      /keys <name> (ohne <>)
      Funktioniert leider nur bevor das Spiel gestartet wurde (z.B. in der Game lobby)
      '/keys default' lädt z.B. eine leere Datei...

      Des weiteren kann man in der Settings.ini noch einstellen ob WC3 automatisch gestartet und wenn ja ob dies in coolem Fenster modus passieren soll.
      Der "coole Fenstermodus" (x'D) hat keine Nachteile (zumindest hab ich noch keine Entdecken können...) er sieht aus und fühlt sich an wie ein ganz normaler Vollbildmodus, allerdings funktioniert Alt-Tab instant und bugt auch nicht rum...

      Viel Spaß dabei...
      Dateien

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von N0bylity ()

    • Das Programm hat wirklich Potential. N0bylity ist btw ein Freund von mir, er wird euch keine Viren unterjubeln ;)

      Wir werden demnächst wohl ein Programm schreiben, das alle (oder zumindest viele) Funktionen übernimmt und die vielen kleinen Scripts und customkeys und was man sonst noch alles braucht ersetzt (und noch einige neue Funktionen bringt).
    • Hellfish schrieb:

      Hier ein kleines Script, das quasi genau das macht, was Blamestars kann, nämlich Buttons anklicken, im Gegensatz zu diesem allerdings ohne nennenswerten Delay.
      Die Hotkeys QWER, ASDF und YXCV führen einfach Mausklicks auf die entsprechenden Buttons durch, TZGHBN ist das Inventar F1 auf Space, ein-/ausschalten mit Pause. Ist sehr praktisch für Funmaps aller Art.
      Download Ultimate Hotkey.exe (Zum Spielen einfach Ausführen, erscheint im Tray)
      Download Ultimate Hotkey.ahk (Benötigt Autohotkey)
      Download Ultimate Hotkey.cfg (Mit Autowarkey öffnen)
      Quelltext
      Spoiler anzeigen
      #SingleInstance force
      #HotkeyInterval 0
      #InstallKeybdHook
      #UseHook On
      #MaxThreads 20
      SetBatchLines, -1
      SetKeyDelay , -1, -1
      ;Thread, Interrupt , -1, -1
      SetTitleMatchMode, 3
      SetDefaultMouseSpeed, 0

      IfExist, Warcraft III.ico
      menu, tray, Icon, Warcraft III.ico, 1, 1

      bInChatRoom := False
      Return


      #ifWinActive, Warcraft III ahk_class Warcraft III
      ~*Enter::
      ~*NumpadEnter::
      Suspend, Permit
      if (bInChatRoom == True)
      return
      Suspend
      if (A_IsSuspended == true)
      {
      SoundPlay,*64
      SetScrollLockState, Off
      }
      else
      {
      SoundPlay,*48
      SetScrollLockState, On
      }
      return

      ~*Esc::
      Suspend, Permit
      if (bInChatRoom == True)
      return
      Suspend, Off
      SoundPlay,*48
      SetScrollLockState, On
      return

      *Pause::
      Suspend, Permit
      bInChatRoom := not bInChatRoom
      if (bInChatRoom == True)
      {
      Suspend, On
      SetScrollLockState, Off
      SoundPlay,*64
      }
      else
      {
      Suspend, Off
      SetScrollLockState, On
      SoundPlay,*48
      }
      return

      ; Disable Left Windows Key
      Lwin::return
      ; Disable Left Alt-Q GG
      <!q::return

      q::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.79583*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseClick, L, (0.79583*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      w::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.85238*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseClick, L, (0.85238*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      e::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.90476*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseClick, L, (0.90476*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      r::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.96071*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseClick, L, (0.96071*A_ScreenWidth), (0.81332*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      a::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.79583*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseClick, L, (0.79583*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      s::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.85238*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseClick, L, (0.85238*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      d::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.90476*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseClick, L, (0.90476*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      f::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.96071*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseClick, L, (0.96071*A_ScreenWidth), (0.88380*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      y::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.79583*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseClick, L, (0.79583*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      x::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.85238*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseClick, L, (0.85238*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      c::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.90476*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseClick, L, (0.90476*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      v::
      MouseGetPos, x, y
      BlockInput, Mouse
      Click up left
      MouseMove, (0.96071*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseClick, L, (0.96071*A_ScreenWidth), (0.95428*A_ScreenHeight)
      MouseMove, x, y
      BlockInput, Off
      return

      Space::F1
      t::Numpad7
      z::Numpad8
      g::Numpad4
      h::Numpad5
      b::Numpad1
      n::Numpad2


      edit: Ich habe den Thread mal umbenannt, weil er doch eher zu einer Sammlung von Scripts geworden ist. Ihr seid herzlich eingeladen, auch eure Scripts zu posten, wenn ihr meint, dass sie für die Community interessant sein könnten.




      das ist so ziemlich genau das was ich mir vor 3 monaten oder so gemacht habe. wir haben uns ja noch darüber unterhalten. toll für die anderen dass du es noch sharest... hätte ich vllt auch machen sollen / können xD
    • Hey,

      ich habe ein Problem mit dem rubick script, es klappt zwar alles mit den spells und den gestohlenen, aber immer wenn ich d oder f drücke bewegt sich mein bildschirm auf irgend einen punkt auf der map (wahrscheinlich hat das irgendwas mit der grundeinstellung von warcraft zu tun, hat man da auf die leertaste gedrückt kommt man zu dem punkt auf der map wo irgend eine aktion statt fand). dies passiert sowohl wenn ich keine spells gestohlen habe als auch wenn ich spells gestohlen habe, dann werden die spells ausgeführt aber mein bildschirm bewegt sich wieder irgendwo auf die map, was bei den meisten spells ziemlich schlecht ist da man den spell aktiviert, ein ziel auswählen muss aber auf einmal mit der sicht am anderen ende der map ist...

      Irgend eine Ahnung woran das liegen könnte?