View difference between Paste ID: wwpnRBx2 and FMfKpUpN
SHOW: | | - or go back to the newest paste.
1
; This is the start of a hotkey block.  I chose to use Win+Q for this hotkey but you might have to
2
; change it to suit your own keyboard.
3
; http://www.autohotkey.com/docs/Hotkeys.htm#Symbols
4
5
;;Global variable initialization
6
DEBUG := true
7-
DragSpeed := 5
7+
8
MaxY := 600
9
;These values are coordinate offsets from the Origin for the item bar hotkeys; the values do not change.
10
Item0X := 250
11
ItemsY := 523
12
ItemWidth := 53
13
if(DEBUG)
14
  DragSpeed := 5
15
else
16
  DragSpeed := 1
17
18
#q::
19
If (HotkeysEnabled == true)
20
{
21
  HotkeysEnabled := false
22
  HasCroissant := false
23
  MsgBox, , GrinnKeys, Hotkeys turned off, 2
24
} else {
25
  IfWinExist, Play The Grinns Tale
26
    WinActivate
27
  else
28
    return
29
30
  ; This is the core of the Anchor system.  It requires a picture to be found in the
31
  ; same directory as this script is run from.  This is a cropped picture of the Pramin
32
  ; on the top bar that is almost always found in the exact same spot.  It allows us to
33
  ; determine where in the window  the top/left corner of the game is so we can use the
34
  ; right coordinates for the rest of the code.
35
  ImageSearch, _FoundX, _FoundY, 0, 0, 1300, 700, *25 GTPramin.png
36
  if (ErrorLevel == 1){
37
    MsgBox, , GrinnKeys, Pramin image not found on screen.
38
    return
39
  } else if (ErrorLevel == 2){
40
    MsgBox, , GrinnKeys, GTPramin.png was not found in the script directory
41
    return
42
  }
43
  OriginX := _FoundX - 155
44
  OriginY := _FoundY - 0
45
  ImageSearch, _FoundX, _FoundY, 0, 500, 1300, 900, *25 *TransBlack GTCroissant.png
46
  if (ErrorLevel == 1){
47
    MsgBox, , GrinnKeys, Croissant image not found on screen.
48
    HasCroissant := false
49
  } else if (ErrorLevel == 2){
50
    MsgBox, , GrinnKeys, GTCroissant.png was not found in the script directory
51
    HasCroissant := false
52
  } else if (ErrorLevel == 0){
53
    HasCroissant := true
54
    CroissantX := _FoundX + 15 - OriginX
55
    CroissantY := _FoundY + 15 - OriginY
56
  }
57
  HotkeysEnabled := true
58
  if (HasCroissant){
59
    MsgBox, , GrinnKeys, Hotkeys turned on `n` Croissant was found. Hotkey 4 is active, 2
60
  } else {
61
    MsgBox, , GrinnKeys, Hotkeys turned on `n` Croissant was not found. Hotkey 4 is inactive, 2
62
  }
63
}
64
return
65
66
; This line will make these hotkeys only work if our Grinns Tale game is the active window.
67
#IfWinActive, Play The Grinns Tale
68
1::
69
  ; We are only going to go further if the hotkeys are turned on.
70
  ; This allows us to check for our Origin position once instead of on each keypress.
71
  If (HotkeysEnabled == true)
72
    if (DragToMouse(174, 389) == true)
73
      return
74
75
  Send 1
76
return
77
78
2::
79
  ; We are only going to go further if the hotkeys are turned on.
80
  ; This allows us to check for our Origin position once instead of on each keypress.
81
  If (HotkeysEnabled == true)
82
    if (DragToMouse(265, 389) == true)
83
      return
84
85
  Send 2
86
return
87
88
3::
89
  ; We are only going to go further if the hotkeys are turned on.
90
  ; This allows us to check for our Origin position once instead of on each keypress.
91
  If (HotkeysEnabled == true)
92
    if (DragToMouse(357, 389) == true)
93
      return
94
95
  Send 3
96
return
97
98
w::
99
  ; Item slot 1
100
  If (HotkeysEnabled == true)
101
    if (useItem(1) == true)
102
      return
103
104
  Send w
105
return
106
107
e::
108
  ; Item slot 2
109
  If (HotkeysEnabled == true)
110
    if (useItem(2) == true)
111
      return
112
113
  Send e
114
return
115
116
r::
117
  ; Item slot 3
118
  If (HotkeysEnabled == true)
119
    if (useItem(3) == true)
120
      return
121
122
  Send r
123
return
124
125
t::
126
  ; Item slot 4
127
  If (HotkeysEnabled == true)
128
    if (useItem(4) == true)
129
      return
130
131
  Send t
132
return
133
134
y::
135
  ; Item slot 5
136
  If (HotkeysEnabled == true)
137
    if (useItem(5) == true)
138
      return
139
140
  Send y
141
return
142
143
u::
144
  ; Item slot 6
145
  If (HotkeysEnabled == true)
146
    if (useItem(6) == true)
147
      return
148
149
  Send u
150
return
151
152
i::
153
  ; Item slot 7
154
  If (HotkeysEnabled == true)
155
    if (useItem(7) == true)
156
      return
157
158
  Send i
159
return
160
161
#IfWinActive
162
163
;handles generic item slot use
164
useItem(slotnum)
165
{
166
  global
167
  return DragToMouse(Item0X + (ItemWidth * slotnum), ItemsY)
168
}
169
170
; This is our work horse.  Instead of writing this code three times, once for each hotkey we
171
; call this function with the X/Y coordinates of the player and it handles the rest.
172
DragToMouse(_PlayerX, _PlayerY)
173
{
174
  ; This makes it so that all variable names in this function, unless otherwise declared Local are global.
175
  ; I could also use: global OriginX, OriginY
176
  global
177
  local _MouseX, _MouseY
178
179
  ; Here we ask for the mouse position.  We only need the x/y values so we leave the other parts out.
180
  MouseGetPos, _MouseX, _MouseY
181
182
  ; Here we check to see if our mouse position is in the window.
183
  ; This lets us click over to chat and talk without it triggering on 1/2/3
184
  ;  so long as the mouse is off the game.
185
  if (_MouseX - OriginX < 0 || _MouseX - OriginX > MaxX
186
    || _MouseY - OriginY < 0 || _MouseY - OriginY > MaxY){
187
    TrayTip, Drag Operation Aborted, Mouse outside of game window, 10
188
    return false
189
  }
190
191
  if(DEBUG){
192
    tooltip, Drag from here, _PlayerX + OriginX, _PlayerY + OriginY, 1
193
    tooltip, Drag to here, _MouseX, _MouseY, 2
194
  }
195
  ; Now we ask for the drag movement.
196
  MouseClickDrag, Left, _PlayerX + OriginX, _PlayerY + OriginY, _MouseX, _MouseY, DragSpeed
197
198
  return true
199
}
200
201
ClickTheMouse(clickPosX, clickPosY)
202
{
203
  global
204
  local _MouseX, _MouseY
205
206
  MouseGetPos, _MouseX, _MouseY
207
208
  ; Here we check to see if our mouse position is in the window.
209
  ; This lets us click over to chat and talk without it triggering on 1/2/3
210
  ;  so long as the mouse is off the game.
211
  if (_MouseX - OriginX < 0 || _MouseX - OriginX > MaxX
212
    || _MouseY - OriginY < 0 || _MouseY - OriginY > MaxY){
213
    TrayTip, Click Operation Aborted, Mouse outside of game window, 10
214
    return false
215
  }
216
217
  if(DEBUG)
218
    tooltip, Click here, clickPosX, clickPosY, 1
219
  MouseMove, clickPosX, clickPosY, 0
220
  Click
221
  MouseMove, _MouseX, _MouseY, 0
222
  return true
223
}