Code:
#SingleInstance, Force
#NoEnv
Settitlematchmode, 2
setwindelay,-1
OnExit exitSub
StringTrimRight, thisahk, A_ScriptName, 4
SetWorkingDir %A_ScriptDir%
Menu, Tray, NoStandard
Menu, Tray, Add, Settings, menugui
Menu, Tray, Add
Menu, Tray, Add, Reload, reload
Menu, Tray, Default, Settings
Menu, Tray, Add
Menu, Tray, Add, Exit, ExitSub
SysGet, xbord, 32
SysGet, ybord, 33
SysGet, cap, 4
tablequeue=
ddlist=
Loop 14
ddlist:=ddlist . A_index . "|"
gosub,getini
;;;;;;;;;;;;End of init;;;;;;;;;;;;;;
settimer,check,477
settimer,clickwithdelay,100
return
;-----------------------------------------------------------------------------------------------------
check:
check()
return
check()
{
local listprima,id,t,col
winget,listprima,list,/ ahk_class POPUP_INT_DLG_WINDOW
loop %listprima%
{
id:=listprima%A_index%
WinGetTitle, title, ahk_id%id%
StringMid, hero, title, InStr(title, ") - ")+4,InStr(title, "/")
StringLeft, hero, hero, InStr(hero, A_space, true, 1)-1
VarSetCapacity(hh, 2048)
Loop, 10
{
ControlGetText, hh, RichEdit20W1, ahk_id%id%
If hh
{
break
}
Sleep, 80
}
StringTrimLeft, hh, hh, InStr(hh, " wins ", false, 0)
Loop, Parse, hh, `n
{
time:=a_loopfield
}
if instr(time,hero) & instr(time,"you have")
{
if !InStr(tablequeue,id)
movetolist(id,A_TickCount)
}
else
if InStr(tablequeue,id)
removefromlist(id)
}
}
return
;-----------------------------------------------------------------------------------------------------
relPrimaClientPoint(id, ByRef x, ByRef y, client=1)
{
global xbord,ybord,cap
WinGetPos,,,w,h,ahk_id%id%
w-=2*xbord
h-=(2*ybord)+cap
x:=floor(W*x)
y:=floor(H*y)
if !client
{
x+=xbord
y+=ybord+cap
}
}
return
;-----------------------------------------------------------------------------------------------------
PostclickPrima(x,y,winid,activate=1,client=1)
{
relPrimaClientPoint(winid, x, y,client)
DllCall("SetCapture","Uint",winid)
PostLeftClick(x, y, winid, activate)
DllCall("ReleaseCapture")
}
return
;-----------------------------------------------------------------------------------------------------
PostLeftClick(x, y, table_id, activate=1, control_class="") {
; ### JUK: Send the down left click, then the mouse-up messages.
; NOTE: This is relative to the top left of the client area and NOT the top left of the
; window (ie: It *doesn't* include the title-bar like AHK's MouseClick does!!!).
If activate
WinActivate, ahk_id%table_id%
;critical,6
PostMessage, 0x201, 0x0001, ((y<<16)^x), %control_class%, ahk_id%table_id%
PostMessage, 0x202 , 0, ((y<<16)^x), %control_class%, ahk_id%table_id%
;critical,off
;sleep,-1
}
return
;-----------------------------------------------------------------------------------------------------
clickwithdelay:
Loop, Parse, tablequeue, `,
{
interval:=interval1*1000
stringsplit,tab,A_loopfield,-
if abs(tab2-A_TickCount)>interval
{
controlgetpos,x,,,,RichEdit20W1,ahk_id%tab1%
if x>100
{
backx:=0.4360
backy:=0.6431
}
else
{
backx:=0.5525
backy:=0.6450
}
PostclickPrima(backx,backy,tab1,0)
listDelItem(tablequeue, A_Loopfield)
}
}
return
;-----------------------------------------------------------------------------------------------------
listAdd( byRef list, item, del="," ) {
list:=( list!="" ? ( list . del . item ) : item )
return list
}
;-----------------------------------------------------------------------------------------------------
listDelItem( byRef list, item, del=",") {
ifEqual, item,, return list
list:=del . list . del
StringReplace, list, list, %item%%del%
StringTrimLeft, list, list, 1
StringTrimRight, list, list, 1
return list
}
;-----------------------------------------------------------------------------------------------------
movetolist(winid,time)
{
global tablequeue
listAdd(tablequeue, winid . "-" . time)
}
return
;-----------------------------------------------------------------------------------------------------
removefromlist(winid)
{
global tablequeue
Loop, Parse, tablequeue, `,
{
if InStr(A_loopfield,winid)
listDelItem(tablequeue, A_Loopfield)
}
}
return
;-----------------------------------------------------------------------------------------------------
BuildGui:
Gui, color, white
Gui, font, cOlive
Gui, add, tab, h340 w240, General
Gui, Tab, General
Gui, add, Text, w200 y45 x15, Time delay for pressing Time button
Gui, add, DropDownList, w50 y40 x190 vInterval1, %ddlist%
Gui, Add, Button, x75 y315 w55 h20 gSave,Submit
Gui, Add, Button, x135 y315 w55 h20 gCancel,Cancel
Gosub, GetIni
Gui, show, w256, %thisahk%
Return
;-----------------------------------------------------------------------------------------------------
GetIni:
IfNotExist, %thisahk%.ini
gosub, CreateIni
IniRead, Interval1, %thisahk%.ini, Settings, Interval1
StringReplace, ddlist, ddlist, %interval1%, %Interval1%|
GuiControl, , Interval1, |%ddlist%
StringReplace, ddlist, ddlist, %interval1%|, %Interval1%
Return
;-----------------------------------------------------------------------------------------------------
MakeIni:
IniWrite, %Interval1%, %thisahk%.ini, Settings, Interval1
Return
;-----------------------------------------------------------------------------------------------------
CreateIni:
Interval1:=1
gosub, MakeIni
gosub, buildgui
return
;-----------------------------------------------------------------------------------------------------
GuiClose:
gosub, cancel
return
;-----------------------------------------------------------------------------------------------------
menuGui:
gosub, getini
winget,id,id, %thisahk% ahk_class AutoHotkeyGUI
if !DllCall( "IsWindowVisible", "UInt",id)
gosub, buildgui
else
winactivate,ahk_id%id%
Gui, Submit,nohide
return
;-----------------------------------------------------------------------------------------------------
reload:
reload
return
;-----------------------------------------------------------------------------------------------------
Save:
Gui, Submit
FileDelete, %thisahk%.ini
gosub, MakeIni
Reload
return
;-----------------------------------------------------------------------------------------------------
Cancel:
Gui, Destroy
Return
;-----------------------------------------------------------------------------------------------------
exitSub:
FileDelete, %thisahk%.ini
gosub, makeini
exitApp
return
;-----------------------------------------------------------------------------------------------------