[UTILITY] AHK script:Stars Filtered SNG Opener
CountTourneys() { global If (SetReg=1) { Return 0 } logfile:= pspath . "pokerstars.log.0" Loop, Read, %logfile%, tourlist.txt { Ifinstring,A_LoopReadLine, RT add { StringTrimLeft, templine, A_LoopReadLine, 7 StringTrimRight, templine, templine, 11 tcount ++ IniWrite, %tcount%,tcounter.ini, RegInT, %templine% IniWrite, %tcount%,tcounter.ini, RegInT, Tourneycount } Ifinstring,A_LoopReadLine, RT remove { StringTrimLeft, templine2, A_LoopReadLine, 10 tcount -- IniDelete, tcounter.ini, RegInT , %templine2% IniWrite, %tcount%, tcounter.ini, RegInT, Tourneycount } } return tcount
; Author: Everlong@2p2 Code assembled from misc sources, thanks to _dave_, chris228, finnisher ; v.4.0a ; added: option to atuobuyin if full, hide/show window ; fixed issue with skipping first sng in lobby #NoEnv SendMode Input SetWorkingDir %A_ScriptDir% #SingleInstance, Force IfExist, tcounter.ini FileDelete, tcounter.ini SetTitleMatchMode, 2 SetTimer, register, off SetTimer, safeguard, off StringTrimRight, thisahk, A_ScriptName, 4 ;;;;;;;;;;;SET YOUR PokerStars folder path here;;;;;;;;;;;;;;; ;pspath:="C:\Program Files\PokerStars\" IniRead, pspath, %thisahk%.ini, Settings, path If pspath=ERROR { If A_OSVersion in WIN_VISTA IniWrite, %A_AppData%\Pokerstars\, %thisahk%.ini, Settings, path Else IniWrite, %ProgramFiles%\Pokerstars\, %thisahk%.ini, Settings, path IniRead, pspath, %thisahk%.ini, Settings, path } ;============================================================== tcount=0 RegSofar=0 OpenTables=0 trows=17 SysGet,mon, MonitorworkArea fivesec=0 two=0 ddlist4=Off| ddlist5=Off| ddlist6=Off| ddlist7=Off| LobbyList=Default|Black| Loop 100 { two:=two+2 ddlist3:=ddlist3 . two . "|" If (A_index<51) { fivesec:=fivesec+5 ddlist:=ddlist . A_index . "|" ddlist2:=ddlist2 . fivesec . "|" ddlist5:=ddlist5 . fivesec . "|" ddlist6:=ddlist6 . fivesec . "|" If (A_index<22) { ddlist7:=ddlist7 . A_Index . "|" If (A_index<16) { ddlist4:=ddlist4 . A_index . "|" } } } } Gosub, BuildGui Return BuildGui: Gui, color, white Gui, font, cOlive Gui, add, tab, h340 w240, General|Advanced Settings Gui, add, text, , Auto-register Gui, add, Checkbox, yp xp+80 Check3 Checked-1 vRegister Gui, add, text, yp xp+30, Reg. next if full? Gui, add, Checkbox, yp xp+80 AutoIfFull VAutoifFull Gui, add, text,xp-190 yp+30 , Register every (sec): Gui, add, DropDownList, w50 yp-5 xp+140 vInterval1, %ddlist2% Gui, add, text, xp-140 yp+30, No of SNG:s to keep open: Gui, add, DropDownList, w50 yp-5 xp+140 vKeepOpen , %ddlist% Gui, add, text,xp-140 yp+30, Limit total SNG:s to: Gui, add, DropDownList, w50 yp-5 xp+140 vTotalLimit , %ddlist3% Gui, add, text,xp-140 yp+30, Limit total time to (min): Gui, add, DropDownList, w50 yp-5 xp+140 vTimeLimit , %ddlist5% Gui, add, text, xp-140 yp+30 cred vcdown w200 Gui, add, text, xp yp+30 w200 vRegSofar, SNG:s registered so far: Gui, add, text, w200 vOpenTables, Tables open/waiting: Gui, add, text, w200 cRed vStatus, Status: Idle Gui, add, Button, w68 ggetgui, &Submit+Run Gui, add, text, xp+72 yp+5, (Autosaves your settings) Gui, Add, Button, Disabled xp-72 yp+20 w48 h20 Center, &Resume Gui, Add, Button, Disabled w45 h20 yp xp+48 Center, &Pause Gui, Add, Button, w80 h20 yp xp+45 Center globbyrestore, &Lobby restore Gui, Add, Button, w45 h20 yp xp+80 gDonate, &Donate Gui, tab, 2 Gui, add, Text, x25 y65 , Lobby Theme: Gui, add, DropDownList, w65 yp-5 xp+140 vLobby, %LobbyList% Gui, add, text,xp-140 yp+30 , Close lobbies every (sec): Gui, add, DropDownList, w50 yp-5 xp+140 vCloseInterv, %ddlist6% Gui, add, text, xp-140 yp+18 , (manually Close with ctrl+e) Gui, add, text, yp+30, Disable if no user Input (min): Gui, add, DropDownList, w50 yp-5 xp+140 vGuardtimer Choose1 , %ddlist4% Gui, add, text, xp-140 yp+30 ,Batch-register? Gui, add, Checkbox,yp xp+140 vBatchReg Gui, add, text, yp+20 xp-140 ,SetReg* mode? Gui, add, Checkbox,yp xp+140 vSetReg Gui, add, text, yp+20 xp-140 ,Minimize lobby? Gui, add, Checkbox,yp xp+140 vMinlob Gui, add, Text, xp-140 yp+30, Times to scroll down: Gui, add, DropDownList, w50 yp-5 xp+140 vscrldwn, %ddlist7% Gui, add, Text, xp-140 yp+25, Always start at top of lobby? Gui, add, Checkbox, yp xp+140 vTopReturn /* Gui, tab, 3 Gui, add, text, , Manually populate list: F11 Gui, Add, ListView, r%trows% grid gFindLobby w200 c1, Registered in Tournaments */ Gui, show, w256, %thisahk% WinGetPos, x, y, w, h, SFSO x:=monRight-w y:=monBottom-h Gosub, GetIni Gui, show, x%x% y%y%, %thisahk% Return getgui: GuiControl,, Register, -1 Register = 1 Gui, Submit, NoHide displayedTime= If (lobby="Default") { regButton:="PokerStarsButtonClass7" } Else If (lobby="Black" or lobby="Custom*") { regButton:="PokerStarsButtonClass8" } Gosub, TimeLimit Gosub, MakeIni GuiControl, Enable, Pause GuiControl, Disable, Resume interval:=interval1*1000 If !interval interval=off If guardtimer is not Number { SetTimer, safeguard, off } Else { killtime:=guardtimer*60000 SetTimer, safeguard, 1000 } lobclose:=CloseInterv*1000 SetTimer, NukeLobbies, %lobclose% register=1 SetTimer, Register, %interval% Gosub, ButtonResume Return Safeguard: If (A_TimeIdle > killtime) { Gosub, ButtonPause GuiControl, , cdown, Stopped due to inactivity!!! %displayedTime% } Return TimeLimit: If TimeLimit is Number { allowedMinutes := timeLimit endTime := A_Now endTime += %allowedMinutes%, Minutes SetTimer, CountDown, 1000 } Else { GuiControl, , cdown, Time Limit off } Return Countdown: remainingTime := endTime EnvSub remainingTime, %A_Now%, Seconds m := remainingTime // 60 s := Mod(remainingTime, 60) displayedTime := Format3Digits(m) ":" Format2Digits(s) GuiControl, , cdown, Running another (mm:ss): %displayedTime% If (A_now > endTime) { SetTimer, Countdown, off Gosub, ButtonPause GuiControl, , cdown, Time Limit reached. } Return GuiClose: Gui, Submit Gosub, MakeIni ExitApp Return ButtonResume: Gui, Submit, NoHide If PausedTime is Number { TimeLimit:=PausedTime } Gosub, TimeLimit GuiControl, Disable, Resume GuiControl, Enable, Pause GuiControl, , Register, -1 Register=1 Gosub, Register SetTimer, Register, %Interval% Return ButtonPause: Critical Gui, Submit, NoHide PausedTime:=remainingTime/60 Register=0 SetTimer, Countdown, off SetTimer, Register, off GuiControl, Disable, Pause GuiControl, Enable, Resume GuiControl, , Register, 0 GuiControl, , cdown, Manually Paused %displayedTime% GuiControl, , Status, Status: Waiting ;TEST Return Register: SetTitleMatchMode, 2 WinGet, LobbyID, id, PokerStars Lobby If !LobbyID { Gosub, ButtonPause GuiControl,, Status, Status: PokerStars Lobby not found Gui, show, NoActivate, %thisahk% Return } If (TopReturn=1) { ControlSend, PokerStarsListClass5, {NumpadUp 20}, ahk_id%lobbyid% } WinGet, PhysicalTables, list, ahk_class PokerStarsTableFrameClass If PhysicalTables is not Number PhysicalTables=0 If (PhysicalTables >= KeepOpen) { GuiControl,, Status, Set Full waiting Gui, show, NoActivate, %thisahk% Return } OpenTables:=CountTourneys() If OpenTables is not Number OpenTables=0 GuiControl, , OpenTables, Tables open/waiting: %OpenTables% GuiControl, , RegSofar, SNG:s registered so far: %RegSofar% Gui, show, NoActivate, %thisahk% If (RegSofar >= TotalLimit) { Gosub, ButtonPause GuiControl, , cdown, SNG Total Limit reached GuiControl, , Status, Status: Idle ;TEST Return } If (OpenTables >= TotalLimit) { Gosub, ButtonPause GuiControl, , cdown, SNG Total Limit reached GuiControl, , Status, Status: Idle ;TEST Return } If (OpenTables >= KeepOpen) { GuiControl, , OpenTables, Tables open/waiting: %OpenTables% (Set full) GuiControl, , Status, Status: Waiting ;TEST Return } Else { If (BatchReg=1) { Times:= KeepOpen - OpenTables RegSNGexec(LobbyID, Times, scrldwn) } Else { RegSNGexec(LobbyID, 1, scrldwn) } } Return MakeIni: IniWrite, %AutoIfFull%, %thisahk%.ini, Settings, AutoIfFull IniWrite, %TopReturn%, %thisahk%.ini, Settings, TopReturn IniWrite, %scrldwn%, %thisahk%.ini, Settings, scrldwn IniWrite, %Lobby%, %thisahk%.ini, Settings, Lobby IniWrite, %BatchReg%, %thisahk%.ini, Settings, BatchReg IniWrite, %Setreg%, %thisahk%.ini, Settings, SetReg IniWrite, %Minlob%, %thisahk%.ini, Settings, MinLob IniWrite, %Interval1%, %thisahk%.ini, Settings, Interval1 IniWrite, %AutoClose%, %thisahk%.ini, Settings, AutoClose IniWrite, %CloseInterv%, %thisahk%.ini, Settings, CloseInterv IniWrite, %KeepOpen%, %thisahk%.ini, Settings, KeepOpen IniWrite, %TotalLimit%, %thisahk%.ini, Settings, TotalLimit IniWrite, %GuardTimer%, %thisahk%.ini, Settings, GuardTimer IniWrite, %TimeLimit%, %thisahk%.ini, Settings, TimeLimit Return GetIni: IfExist, %thisahk%.ini { IniRead, AutoIfFull, %thisahk%.ini, Settings, AutoIfFull IniRead, TopReturn, %thisahk%.ini, Settings, TopReturn,0 IniRead, scrldwn, %thisahk%.ini, Settings, scrldwn IniRead, Lobby, %thisahk%.ini, Settings, Lobby IniRead, BatchReg, %thisahk%.ini, Settings, BatchReg IniRead, SetReg, %thisahk%.ini, Settings, SetReg, 1 IniRead, MinLob, %thisahk%.ini, Settings, MinLob, 0 IniRead, Interval1, %thisahk%.ini, Settings, Interval1 IniRead, CloseInterv, %thisahk%.ini, Settings, CloseInterv IniRead, AutoClose, %thisahk%.ini, Settings, AutoClose IniRead, KeepOpen, %thisahk%.ini, Settings, KeepOpen IniRead, TotalLimit, %thisahk%.ini, Settings, TotalLimit IniRead, GuardTimer, %thisahk%.ini, Settings, GuardTimer, Off IniRead, TimeLimit, %thisahk%.ini, Settings, TimeLimit, Off GuiControl, , AutoIfFull, %AutoIfFull% StringReplace, ddlist7, ddlist7, %scrldwn%, %scrldwn%| GuiControl, , scrldwn, |%ddlist7% StringReplace, LobbyList, LobbyList, %Lobby%, %Lobby%| GuiControl, , Lobby, |%LobbyList% GuiControl, , BatchReg, %BatchReg% GuiControl, , SetReg, %SetReg% GuiControl, , MinLob, %MinLob% GuiControl, , TopReturn, %TopReturn% GuiControl, , AutoClose, %AutoClose% StringReplace, ddlist2, ddlist2, %interval1%, %Interval1%| GuiControl, , Interval1, |%ddlist2% StringReplace, ddlist6, ddlist6, %CloseInterv%, %CloseInterv%| GuiControl, , CloseInterv, |%ddlist6% StringReplace, ddlist, ddlist, %KeepOpen%, %KeepOpen%| GuiControl, , KeepOpen, |%ddlist% StringReplace, ddlist3, ddlist3, %TotalLimit%, %TotalLimit%|, GuiControl, , TotalLimit, |%ddlist3% StringReplace, ddlist4, ddlist4, %GuardTimer%, %GuardTimer%| GuiControl, , GuardTimer, |%ddlist4% StringReplace, ddlist5, ddlist5, %TimeLimit%, %TimeLimit%| GuiControl, , TimeLimit, |%ddlist5% } Return ^e:: NukeLobbies: SetTitleMatchMode, 2 GroupAdd, TLobbies, Lobby,,, PokerStars Lobby GroupClose, TLobbies, A Return #H:: WinHide, %thisahk% return #S:: WinShow, %thisahk% return F11:: TmpSetReg:=SetReg SetReg=0 CountTourneys() SetReg:=TmpSetReg Return ManualCount: CountTourneys() Return FindLobby: If (%A_GuiEvent% = DoubleClick) { LV_GetText(TournId,A_EventInfo) TournID:=SubStr(TournID, 1,10) WinMenuSelectItem, PokerStars Lobby,, Requests, Find a Tournament WinWait, Find Tournament ahk_class #32770, , 10 WinGet, fat, id ControlFocus, Edit1, ahk_id%fat% Sleep, -1 ControlSend, Edit1, %TournId%, ahk_id%fat% ControlFocus, Button1, ahk_id%fat% Sleep, -1 ControlSend, Button1, {Space}, ahk_id%fat% } Return Donate: donation() Return Format2Digits(_val) { _val += 100 StringRight _val, _val, 2 Return _val } Format3Digits(_val) { _val += 1000 StringRight _val, _val, 3 StringTrimRight, FirstZ, _val, 2 If FirstZ=0 { StringTrimLeft, _val, _val, 1 } StringTrimRight, FirstZ, _val, 1 If FirstZ=0 { StringTrimLeft, _val, _val, 1 } Return _val } LobbyRestore: WinGet, lobbyid, id, PokerStars Lobby WinShow, ahk_id%lobbyid% WinMove, ahk_id%lobbyid%,,0,0 return RegSNGexec(id, times, scrldwn) { global RegSofar global Register global OpenTables global KeepOpen global TotalLimit global RegButton global AutoIfFull Loop %times% { Gosub, ManualCount Sleep, 25 ControlSend, PokerStarsListClass5, {NumpadUp 20}, ahk_id%id% If (OpenTables >= KeepOpen) Exit If (OpenTable >0 TotalLimit) Exit ClickdirectionCount=0 direction=0 GuiControl, , Status, Status: Registering ;TEST Loop 16 { If (Register=0) { GuiControl, , Status, Status: Idle ;TEST Exit } ControlGet, v, Visible, , %regButton%, ahk_id%id% If (v = 0) If (scrldwn!="Off") { If (ClickdirectionCount<=scrldwn) { If (direction=0) { ControlSend, PokerStarsListClass5, {NumpadDown}, ahk_id%id% } Else { ControlSend, PokerStarsListClass5, {NumpadUp}, ahk_id%id% } ClickdirectionCount:=ClickdirectionCount+1 } Else { If (direction=0) { direction:=1 } Else { direction:=0 } ClickdirectionCount:=0 } Sleep 1000 } If (v = 1) Break } If ( v = 1 ) { ControlClick, %regButton%, ahk_id%id% WinWait, Tournament Registration ahk_class #32770, , 10 { WinGet, regid, id ControlFocus, Button1, ahk_id%regid% Sleep, -1 ControlSend, Button1, {Space}, ahk_id%regid% Sleep, 10 If (AutoIfFull = 1) { ControlFocus, Button2, ahk_id%regid% Sleep, -1 ControlSend, Button2, {Space}, ahk_id%regid% Sleep, 30 } ;WinGet, clist , ControlList, ahk_id%regid% ;IfInString, clist, Button4 ;{ ControlFocus, Button3, ahk_id%regid% Sleep, -1 ControlSend, Button3, {Space}, ahk_id%regid% RegSofar++ GuiControl, , RegSofar, SNG:s registered so far: %RegSofar% GuiControl, , Status, Status: Waiting ;TEST Gui, show, NoActivate, %thisahk% ;} ;Else ;{ ;ControlFocus, Button2, ahk_id%regid% ;Sleep, -1 ;ControlSend, Button2, {Space}, ahk_id%regid% ;RegSofar++ ;GuiControl, , RegSofar, SNG:s registered so far: %RegSofar% ;GuiControl, , Status, Status: Waiting ;TEST ;Gui, show, NoActivate, %thisahk% ;} } WinWait, Tournament Registration ahk_class #32770, , 10 { WinGet, regid, id ControlGetText, ctext, Button1, ahk_id%regid% If ( cText = "OK" ) { ControlFocus, Button1, ahk_id%regid% Sleep, -1 ControlSend, Button1, {Space}, ahk_id%regid% } } } } } CountTourneys() { global If (SetReg=1) { Return 0 } logfile:= pspath . "pokerstars.log.0" Loop, Read, %logfile%, tourlist.txt { Ifinstring,A_LoopReadLine, RT add { StringTrimLeft, templine, A_LoopReadLine, 7 StringTrimRight, templine, templine, 11 IniRead, tregistered,tcounter.ini, RegInT, %templine% if tregistered=ERROR { IniWrite, %tcount%,tcounter.ini, RegInT, %templine% tcount ++ IniWrite, %tcount%,tcounter.ini, RegInT, Tourneycount } } Ifinstring,A_LoopReadLine, RT remove { StringTrimLeft, templine2, A_LoopReadLine, 10 IniRead, tremove,tcounter.ini, RegInT, %templine2% if tremove<>ERROR { IniDelete, tcounter.ini, RegInT , %templine2% tcount -- IniWrite, %tcount%, tcounter.ini, RegInT, Tourneycount } } } return tcount } donation() { WinMenuSelectItem, PokerStars Lobby,, Requests, Transfer Funds... WinWait, Transfer Funds ahk_class #32770, , 10 WinGet, tf, id ControlFocus, Edit2, ahk_id%tf% ControlSetText, Edit2, Attilio ControlFocus, Edit1, ahk_id%tf% Sleep, -1 ControlSetText, Edit1, GuiControl, Disable, Donate } lobbyStars() { SetTitleMatchMode 1 WinGet, id, id, PokerStars Lobby Return id } ~^!Q:: ExitApp
; Author: Everlong@2p2 Code assembled from misc sources, thanks to _dave_, chris228, finnisher ; v.4.0a ; added: option to atuobuyin if full, hide/show window ; fixed issue with skipping first sng in lobby #NoEnv SendMode Input SetWorkingDir %A_ScriptDir% #SingleInstance, Force IfExist, tcounter.ini FileDelete, tcounter.ini SetTitleMatchMode, 2 SetTimer, register, off SetTimer, safeguard, off StringTrimRight, thisahk, A_ScriptName, 4 ;;;;;;;;;;;SET YOUR PokerStars folder path here;;;;;;;;;;;;;;; ;pspath:="C:\Program Files\PokerStars\" IniRead, pspath, %thisahk%.ini, Settings, path If pspath=ERROR { If A_OSVersion in WIN_VISTA { IniWrite, %A_AppData%\Pokerstars\, %thisahk%.ini, Settings, path IniRead, pspath, %thisahk%.ini, Settings, path logfile:= pspath . "pokerstars.log.0" if notexist logfile { StringGetPos,pos, pspath,Roaming StringLeft, pspath, pspath, %pos% pspath:=pspath . "Local\Pokerstars\" IniWrite, %pspath%, %thisahk%.ini, Settings, path } } Else IniWrite, %ProgramFiles%\Pokerstars\, %thisahk%.ini, Settings, path IniRead, pspath, %thisahk%.ini, Settings, path } ;============================================================== tcount=0 RegSofar=0 OpenTables=0 trows=17 SysGet,mon, MonitorworkArea fivesec=0 two=0 ddlist4=Off| ddlist5=Off| ddlist6=Off| ddlist7=Off| LobbyList=Default|Black| Loop 100 { two:=two+2 ddlist3:=ddlist3 . two . "|" If (A_index<51) { fivesec:=fivesec+5 ddlist:=ddlist . A_index . "|" ddlist2:=ddlist2 . fivesec . "|" ddlist5:=ddlist5 . fivesec . "|" ddlist6:=ddlist6 . fivesec . "|" If (A_index<22) { ddlist7:=ddlist7 . A_Index . "|" If (A_index<16) { ddlist4:=ddlist4 . A_index . "|" } } } } Gosub, BuildGui Return BuildGui: Gui, color, white Gui, font, cOlive Gui, add, tab, h340 w240, General|Advanced Settings Gui, add, text, , Auto-register Gui, add, Checkbox, yp xp+80 Check3 Checked-1 vRegister Gui, add, text, yp xp+30, Reg. next if full? Gui, add, Checkbox, yp xp+80 AutoIfFull VAutoifFull Gui, add, text,xp-190 yp+30 , Register every (sec): Gui, add, DropDownList, w50 yp-5 xp+140 vInterval1, %ddlist2% Gui, add, text, xp-140 yp+30, No of SNG:s to keep open: Gui, add, DropDownList, w50 yp-5 xp+140 vKeepOpen , %ddlist% Gui, add, text,xp-140 yp+30, Limit total SNG:s to: Gui, add, DropDownList, w50 yp-5 xp+140 vTotalLimit , %ddlist3% Gui, add, text,xp-140 yp+30, Limit total time to (min): Gui, add, DropDownList, w50 yp-5 xp+140 vTimeLimit , %ddlist5% Gui, add, text, xp-140 yp+30 cred vcdown w200 Gui, add, text, xp yp+30 w200 vRegSofar, SNG:s registered so far: Gui, add, text, w200 vOpenTables, Tables open/waiting: Gui, add, text, w200 cRed vStatus, Status: Idle Gui, add, Button, w68 ggetgui, &Submit+Run Gui, add, text, xp+72 yp+5, (Autosaves your settings) Gui, Add, Button, Disabled xp-72 yp+20 w48 h20 Center, &Resume Gui, Add, Button, Disabled w45 h20 yp xp+48 Center, &Pause Gui, Add, Button, w80 h20 yp xp+45 Center globbyrestore, &Lobby restore Gui, Add, Button, w45 h20 yp xp+80 gDonate, &Donate Gui, tab, 2 Gui, add, Text, x25 y65 , Lobby Theme: Gui, add, DropDownList, w65 yp-5 xp+140 vLobby, %LobbyList% Gui, add, text,xp-140 yp+30 , Close lobbies every (sec): Gui, add, DropDownList, w50 yp-5 xp+140 vCloseInterv, %ddlist6% Gui, add, text, xp-140 yp+18 , (manually Close with ctrl+e) Gui, add, text, yp+30, Disable if no user Input (min): Gui, add, DropDownList, w50 yp-5 xp+140 vGuardtimer Choose1 , %ddlist4% Gui, add, text, xp-140 yp+30 ,Batch-register? Gui, add, Checkbox,yp xp+140 vBatchReg Gui, add, text, yp+20 xp-140 ,SetReg* mode? Gui, add, Checkbox,yp xp+140 vSetReg Gui, add, text, yp+20 xp-140 ,Minimize lobby? Gui, add, Checkbox,yp xp+140 vMinlob Gui, add, Text, xp-140 yp+30, Times to scroll down: Gui, add, DropDownList, w50 yp-5 xp+140 vscrldwn, %ddlist7% Gui, add, Text, xp-140 yp+25, Always start at top of lobby? Gui, add, Checkbox, yp xp+140 vTopReturn /* Gui, tab, 3 Gui, add, text, , Manually populate list: F11 Gui, Add, ListView, r%trows% grid gFindLobby w200 c1, Registered in Tournaments */ Gui, show, w256, %thisahk% WinGetPos, x, y, w, h, SFSO ;x:=monRight-w ;y:=monBottom-h x:=monLeft y:=monTop Gosub, GetIni Gui, show, x%x% y%y%, %thisahk% Return getgui: GuiControl,, Register, -1 Register = 1 Gui, Submit, NoHide displayedTime= If (lobby="Default") { regButton:="PokerStarsButtonClass7" } Else If (lobby="Black" or lobby="Custom*") { regButton:="PokerStarsButtonClass8" } Gosub, TimeLimit Gosub, MakeIni GuiControl, Enable, Pause GuiControl, Disable, Resume interval:=interval1*1000 If !interval interval=off If guardtimer is not Number { SetTimer, safeguard, off } Else { killtime:=guardtimer*60000 SetTimer, safeguard, 1000 } if CloseInterv is not number SetTimer, NukeLobbies, off else { lobclose:=CloseInterv*1000 SetTimer, NukeLobbies, %lobclose% } register=1 SetTimer, Register, %interval% Gosub, ButtonResume Return Safeguard: If (A_TimeIdle > killtime) { Gosub, ButtonPause GuiControl, , cdown, Stopped due to inactivity!!! %displayedTime% } Return TimeLimit: If TimeLimit is Number { allowedMinutes := timeLimit endTime := A_Now endTime += %allowedMinutes%, Minutes SetTimer, CountDown, 1000 } Else { GuiControl, , cdown, Time Limit off } Return Countdown: remainingTime := endTime EnvSub remainingTime, %A_Now%, Seconds m := remainingTime // 60 s := Mod(remainingTime, 60) displayedTime := Format3Digits(m) ":" Format2Digits(s) GuiControl, , cdown, Running another (mm:ss): %displayedTime% If (A_now > endTime) { SetTimer, Countdown, off Gosub, ButtonPause GuiControl, , cdown, Time Limit reached. } Return GuiClose: Gui, Submit Gosub, MakeIni ExitApp Return ButtonResume: Gui, Submit, NoHide If PausedTime is Number { TimeLimit:=PausedTime } Gosub, TimeLimit GuiControl, Disable, Resume GuiControl, Enable, Pause GuiControl, , Register, -1 Register=1 Gosub, Register SetTimer, Register, %Interval% Return ButtonPause: Critical Gui, Submit, NoHide PausedTime:=remainingTime/60 Register=0 SetTimer, Countdown, off SetTimer, Register, off GuiControl, Disable, Pause GuiControl, Enable, Resume GuiControl, , Register, 0 GuiControl, , cdown, Manually Paused %displayedTime% GuiControl, , Status, Status: Waiting ;TEST Return Register: SetTitleMatchMode, 2 WinGet, LobbyID, id, PokerStars Lobby If !LobbyID { Gosub, ButtonPause GuiControl,, Status, Status: PokerStars Lobby not found Gui, show, NoActivate, %thisahk% Return } If (TopReturn=1) { ControlSend, PokerStarsListClass5, {NumpadUp 20}, ahk_id%lobbyid% } WinGet, PhysicalTables, list, ahk_class PokerStarsTableFrameClass If PhysicalTables is not Number PhysicalTables=0 If (PhysicalTables >= KeepOpen) { GuiControl,, Status, Set Full waiting Gui, show, NoActivate, %thisahk% Return } OpenTables:=CountTourneys() If OpenTables is not Number OpenTables=0 GuiControl, , OpenTables, Tables open/waiting: %OpenTables% GuiControl, , RegSofar, SNG:s registered so far: %RegSofar% Gui, show, NoActivate, %thisahk% If (RegSofar >= TotalLimit) { Gosub, ButtonPause GuiControl, , cdown, SNG Total Limit reached GuiControl, , Status, Status: Idle ;TEST Return } If (OpenTables >= TotalLimit) { Gosub, ButtonPause GuiControl, , cdown, SNG Total Limit reached GuiControl, , Status, Status: Idle ;TEST Return } If (OpenTables >= KeepOpen) { GuiControl, , OpenTables, Tables open/waiting: %OpenTables% (Set full) GuiControl, , Status, Status: Waiting ;TEST Return } Else { If (BatchReg=1) { Times:= KeepOpen - OpenTables RegSNGexec(LobbyID, Times, scrldwn) } Else { RegSNGexec(LobbyID, 1, scrldwn) } } Return MakeIni: IniWrite, %AutoIfFull%, %thisahk%.ini, Settings, AutoIfFull IniWrite, %TopReturn%, %thisahk%.ini, Settings, TopReturn IniWrite, %scrldwn%, %thisahk%.ini, Settings, scrldwn IniWrite, %Lobby%, %thisahk%.ini, Settings, Lobby IniWrite, %BatchReg%, %thisahk%.ini, Settings, BatchReg IniWrite, %Setreg%, %thisahk%.ini, Settings, SetReg IniWrite, %Minlob%, %thisahk%.ini, Settings, MinLob IniWrite, %Interval1%, %thisahk%.ini, Settings, Interval1 IniWrite, %AutoClose%, %thisahk%.ini, Settings, AutoClose IniWrite, %CloseInterv%, %thisahk%.ini, Settings, CloseInterv IniWrite, %KeepOpen%, %thisahk%.ini, Settings, KeepOpen IniWrite, %TotalLimit%, %thisahk%.ini, Settings, TotalLimit IniWrite, %GuardTimer%, %thisahk%.ini, Settings, GuardTimer IniWrite, %TimeLimit%, %thisahk%.ini, Settings, TimeLimit Return GetIni: IfExist, %thisahk%.ini { IniRead, AutoIfFull, %thisahk%.ini, Settings, AutoIfFull IniRead, TopReturn, %thisahk%.ini, Settings, TopReturn,0 IniRead, scrldwn, %thisahk%.ini, Settings, scrldwn IniRead, Lobby, %thisahk%.ini, Settings, Lobby IniRead, BatchReg, %thisahk%.ini, Settings, BatchReg IniRead, SetReg, %thisahk%.ini, Settings, SetReg, 1 IniRead, MinLob, %thisahk%.ini, Settings, MinLob, 0 IniRead, Interval1, %thisahk%.ini, Settings, Interval1 IniRead, CloseInterv, %thisahk%.ini, Settings, CloseInterv IniRead, AutoClose, %thisahk%.ini, Settings, AutoClose IniRead, KeepOpen, %thisahk%.ini, Settings, KeepOpen IniRead, TotalLimit, %thisahk%.ini, Settings, TotalLimit IniRead, GuardTimer, %thisahk%.ini, Settings, GuardTimer, Off IniRead, TimeLimit, %thisahk%.ini, Settings, TimeLimit, Off GuiControl, , AutoIfFull, %AutoIfFull% StringReplace, ddlist7, ddlist7, %scrldwn%, %scrldwn%| GuiControl, , scrldwn, |%ddlist7% StringReplace, LobbyList, LobbyList, %Lobby%, %Lobby%| GuiControl, , Lobby, |%LobbyList% GuiControl, , BatchReg, %BatchReg% GuiControl, , SetReg, %SetReg% GuiControl, , MinLob, %MinLob% GuiControl, , TopReturn, %TopReturn% GuiControl, , AutoClose, %AutoClose% StringReplace, ddlist2, ddlist2, %interval1%, %Interval1%| GuiControl, , Interval1, |%ddlist2% StringReplace, ddlist6, ddlist6, %CloseInterv%, %CloseInterv%| GuiControl, , CloseInterv, |%ddlist6% StringReplace, ddlist, ddlist, %KeepOpen%, %KeepOpen%| GuiControl, , KeepOpen, |%ddlist% StringReplace, ddlist3, ddlist3, %TotalLimit%, %TotalLimit%|, GuiControl, , TotalLimit, |%ddlist3% StringReplace, ddlist4, ddlist4, %GuardTimer%, %GuardTimer%| GuiControl, , GuardTimer, |%ddlist4% StringReplace, ddlist5, ddlist5, %TimeLimit%, %TimeLimit%| GuiControl, , TimeLimit, |%ddlist5% } Return ^e:: NukeLobbies: SetTitleMatchMode, 2 GroupAdd, TLobbies, Lobby,,, PokerStars Lobby GroupClose, TLobbies, A Return #H:: WinHide, %thisahk% return #S:: WinShow, %thisahk% return F11:: TmpSetReg:=SetReg SetReg=0 CountTourneys() SetReg:=TmpSetReg Return ManualCount: CountTourneys() Return FindLobby: If (%A_GuiEvent% = DoubleClick) { LV_GetText(TournId,A_EventInfo) TournID:=SubStr(TournID, 1,10) WinMenuSelectItem, PokerStars Lobby,, Requests, Find a Tournament WinWait, Find Tournament ahk_class #32770, , 10 WinGet, fat, id ControlFocus, Edit1, ahk_id%fat% Sleep, -1 ControlSend, Edit1, %TournId%, ahk_id%fat% ControlFocus, Button1, ahk_id%fat% Sleep, -1 ControlSend, Button1, {Space}, ahk_id%fat% } Return Donate: donation() Return Format2Digits(_val) { _val += 100 StringRight _val, _val, 2 Return _val } Format3Digits(_val) { _val += 1000 StringRight _val, _val, 3 StringTrimRight, FirstZ, _val, 2 If FirstZ=0 { StringTrimLeft, _val, _val, 1 } StringTrimRight, FirstZ, _val, 1 If FirstZ=0 { StringTrimLeft, _val, _val, 1 } Return _val } LobbyRestore: WinGet, lobbyid, id, PokerStars Lobby WinShow, ahk_id%lobbyid% WinMove, ahk_id%lobbyid%,,0,0 return RegSNGexec(id, times, scrldwn) { global RegSofar global Register global OpenTables global KeepOpen global TotalLimit global RegButton global AutoIfFull Loop %times% { Gosub, ManualCount Sleep, 25 ControlSend, PokerStarsListClass5, {NumpadUp 20}, ahk_id%id% If (OpenTables >= KeepOpen) Exit If (OpenTable >= TotalLimit) Exit ClickdirectionCount=0 direction=0 GuiControl, , Status, Status: Registering ;TEST Loop 16 { If (Register=0) { GuiControl, , Status, Status: Idle ;TEST Exit } ControlGet, v, Visible, , %regButton%, ahk_id%id% If (v = 0) If (scrldwn!="Off") { If (ClickdirectionCount<=scrldwn) { If (direction=0) { ControlSend, PokerStarsListClass5, {NumpadDown}, ahk_id%id% } Else { ControlSend, PokerStarsListClass5, {NumpadUp}, ahk_id%id% } ClickdirectionCount:=ClickdirectionCount+1 } Else { If (direction=0) { direction:=1 } Else { direction:=0 } ClickdirectionCount:=0 } Sleep 1000 } If (v = 1) Break } If ( v = 1 ) { ControlClick, %regButton%, ahk_id%id% WinWait, Tournament Registration ahk_class #32770, , 10 { WinGet, regid, id ControlFocus, Button1, ahk_id%regid% Sleep, -1 ControlSend, Button1, {Space}, ahk_id%regid% Sleep, 10 If (AutoIfFull = 1) { ControlFocus, Button2, ahk_id%regid% Sleep, -1 ControlSend, Button2, {Space}, ahk_id%regid% Sleep, 30 } ControlFocus, Button3, ahk_id%regid% Sleep, -1 ControlSend, Button3, {Space}, ahk_id%regid% } WinWait, Tournament Registration ahk_class #32770, , 10 { WinGet, regid, id WinGetPos, x, y, w, h, ahk_id%regid% ControlGetText, ctext, Button1, ahk_id%regid% If ( cText = "OK" ) { ControlFocus, Button1, ahk_id%regid% Sleep, -1 ControlSend, Button1, {Space}, ahk_id%regid% } if h>=145 { RegSofar++ GuiControl, , RegSofar, SNG:s registered so far: %RegSofar% GuiControl, , Status, Status: Waiting ;TEST Gui, show, NoActivate, %thisahk% } } } } } CountTourneys() { global If (SetReg=1) { Return 0 } SetTitleMatchMode, 2 logfile:= pspath . "pokerstars.log.0" Loop, Read, %logfile%, tourlist.txt { Ifinstring,A_LoopReadLine, RT add { StringTrimLeft, templine, A_LoopReadLine, 7 Needle:=" " StringGetPos,pos, templine,%Needle% If pos>=0 StringLeft, templine, templine, %pos% IniRead, tregistered,tcounter.ini, RegInT, %templine% if tregistered=ERROR { tcount ++ IniWrite, %tcount%,tcounter.ini, RegInT, Tourneycount IniWrite, %tcount%,tcounter.ini, RegInT, %templine% } } Ifinstring,A_LoopReadLine, RT remove { StringTrimLeft, templine2, A_LoopReadLine, 10 IniRead, tremove,tcounter.ini, RegInT, %templine2% if tremove<>ERROR { IniDelete, tcounter.ini, RegInT , %templine2% if tcount>0 tcount -- IniWrite, %tcount%, tcounter.ini, RegInT, Tourneycount } } } return tcount } donation() { WinMenuSelectItem, PokerStars Lobby,, Requests, Transfer Funds... WinWait, Transfer Funds ahk_class #32770, , 10 WinGet, tf, id ControlFocus, Edit2, ahk_id%tf% ControlSetText, Edit2, Attilio ControlFocus, Edit1, ahk_id%tf% Sleep, -1 ControlSetText, Edit1, GuiControl, Disable, Donate } lobbyStars() { SetTitleMatchMode 1 WinGet, id, id, PokerStars Lobby Return id } ~^!Q:: ExitApp