Open Side Menu Go to the Top
Register
AHK script:Stars Filtered SNG Opener AHK script:Stars Filtered SNG Opener

11-19-2009 , 05:17 AM
Mine recently stopped working within the past week I think. Anyone else having problems?
AHK script:Stars Filtered SNG Opener Quote
11-19-2009 , 07:10 AM
Quote:
Originally Posted by guitarizt
Mine recently stopped working within the past week I think. Anyone else having problems?
Which version doesn't work? If you are talking about 4.0x and using windows Vista or windows7, tell me your path to pokerstars.log.0 file.
AHK script:Stars Filtered SNG Opener Quote
11-19-2009 , 08:24 PM
Oops I must have been using an older version. I tried the last one you posted and it works again. Kind of weird since I used my old sfso maybe a week ago now and it worked fine.
AHK script:Stars Filtered SNG Opener Quote
11-19-2009 , 11:51 PM
Quote:
Originally Posted by guitarizt
Oops I must have been using an older version. I tried the last one you posted and it works again. Kind of weird since I used my old sfso maybe a week ago now and it worked fine.
Since at least someone is using my version, here is update, fixed tourney count after pausing-resuming.

Code:
; 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
; 4.0 version fixed by Max1mums
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance, Force
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
logfile:= pspath . "pokerstars.log.0"
IfNotExist %logfile%
{
 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"
IfNotExist %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
tcounter:="tcounter.ini"
IfExist, %tcounter%
FileDelete, %tcounter%
RegSofar=0
OpenTables=0
trows=17
SysGet,mon, MonitorworkArea
fivesec=0
two=0
ddlist4=Off|
ddlist5=Off|
ddlist6=Off|
ddlist7=Off|
LobbyList=Default|Black|
ddlist2:=ddlist2 . 1 . "|"
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 . "|"
}
}
}
}
ddlist3:=ddlist3 . 9999 . "|"
ddlist:=ddlist . 100 . "|"
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
IfExist, %tcounter%
FileDelete, %tcounter%
tcount:=0
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
IfExist, %tcounter%
FileDelete, %tcounter%
tcount:=0
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 ) {
SetTitleMatchMode, 2
ControlClick, %regButton%, ahk_id%id%
WinWait, Tournament Registration ahk_class #32770, , 10
{
WinGet, regid, id, Tournament Registration
;ControlFocus, Button1, ahk_id%regid%
;Sleep, -1
;ControlSend, Button1, {Space}, ahk_id%regid%
;Sleep, 10
ControlGet, Z, Visible,,Button1, ahk_id%regid%
if Z
{
Control, Check,,Button1, ahk_id%regid%
ControlClick, Button1, ahk_id%regid%
}

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%
Control, Check,,Button3, Tournament Registration
ControlClick, Button3, Tournament Registration
}

WinWait, Tournament Registration ahk_class #32770, , 10
{
WinGet, regid, id, Tournament Registration
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%
Control, Check,,Button1, ahk_id%regid%
ControlClick, Button1, ahk_id%regid%
if h>=145
 {
 RegSofar++
 GuiControl, , RegSofar, SNG:s registered so far: %RegSofar%
 GuiControl, , Status, Status: Waiting ;TEST
 Gui, show, NoActivate, %thisahk%
 }

}
; 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
AHK script:Stars Filtered SNG Opener Quote
12-22-2009 , 02:45 PM
Hey all I'm new to AHK,

I tried running this script with several different combinations of settings and every time it never actually registers me for any SNG, I am in a Sit & Go tab in the pokerstars lobby. It always just pops up my cashier..

If it helps I'm on Windows Vista.

If this is a common problem and I didn't read well enough through the thread I apologize!

any help would be appreciated,
thanks!
AHK script:Stars Filtered SNG Opener Quote
12-22-2009 , 02:56 PM
Uninstall-install autohotkey program as admin, make sure that correct Lobby theme is chosen on Advanced settings tab.
AHK script:Stars Filtered SNG Opener Quote
01-02-2010 , 02:50 PM
This still works correct?
AHK script:Stars Filtered SNG Opener Quote
01-02-2010 , 03:15 PM
Works fine for me. Noone asking for help means people don't need it or it works fine.
AHK script:Stars Filtered SNG Opener Quote
01-03-2010 , 06:19 PM
I can't seem to get version 4.0a to work
AHK script:Stars Filtered SNG Opener Quote
01-03-2010 , 06:36 PM
Try running script as admin if you are under Vista/W7 (uninstalling-installing autohotkey program as admin is the easiest way http://www.autohotkey.com/download/ ), tell me your path to pokerstars.log.0 file if that doesn't help.
AHK script:Stars Filtered SNG Opener Quote
01-03-2010 , 06:45 PM
Not sure if this is the reason, but on my debustifier file it says the path is Path=C:\Users\Brett\AppData\Local\PokerStars/pokerstars.log.0

And for the sfso that doesn't work, it says the path is
path=C:\Users\Brett\AppData\Local\Pokerstars\
AHK script:Stars Filtered SNG Opener Quote
01-03-2010 , 06:50 PM
btw is correct lobby theme chosen on advanced setting tab for you?
Script sets path correctly.
AHK script:Stars Filtered SNG Opener Quote
01-03-2010 , 06:52 PM
Yea, I have the default one
AHK script:Stars Filtered SNG Opener Quote
01-03-2010 , 06:58 PM
Try changing both to black then ) And what doesn't work exactly? Does it cycle through sngs, does registered number get changed? I'd say that's "run as admin" issue.
It seems stars changed buttons on default lobby theme, i'll try to fix script for default theme, you can use it with black theme for now.

Last edited by Max1mums; 01-03-2010 at 07:06 PM.
AHK script:Stars Filtered SNG Opener Quote
01-03-2010 , 07:48 PM
Try now:
Code:
; 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
; 4.0 version fixed by Max1mums
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance, Force
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
logfile:= pspath . "pokerstars.log.0"
IfNotExist %logfile%
{
 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"
IfNotExist %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
tcounter:="tcounter.ini"
IfExist, %tcounter%
FileDelete, %tcounter%
RegSofar=0
OpenTables=0
trows=17
SysGet,mon, MonitorworkArea
fivesec=0
two=0
ddlist4=Off|
ddlist5=Off|
ddlist6=Off|
ddlist7=Off|
LobbyList=Default|Black|
ddlist2:=ddlist2 . 2 . "|"
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 . "|"
}
}
}
}
ddlist3:=ddlist3 . 9999 . "|"
ddlist:=ddlist . 100 . "|"
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
IfExist, %tcounter%
FileDelete, %tcounter%
tcount:=0
Gui, Submit, NoHide
displayedTime=
If (lobby="Default")
{
;regButton:="PokerStarsButtonClass7"
regButton:="PokerStarsButtonClass8"
}
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
IfExist, %tcounter%
FileDelete, %tcounter%
tcount:=0
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 ) {
SetTitleMatchMode, 2
ControlFocus, %regButton%, ahk_id%ID%
PostMessage, 0x201, 0x0001,((20<<16)^30),%regButton% , ahk_id%id%
PostMessage, 0x202 , 0,((20<<16)^30),%regButton% , ahk_id%id%
WinWait, Tournament Registration ahk_class #32770, , 3
{
WinGet, regid, id, Tournament Registration
ControlGet, Z, Visible,,Button1, ahk_id%regid%
if Z
{
ControlFocus, Button1, ahk_id%regID%
PostMessage, 0x201, 0x0001,((10<<16)^10),Button1 , ahk_id%id%
PostMessage, 0x202 , 0,((10<<16)^10),Button1 , ahk_id%id%
}

If (AutoIfFull = 1)
{
ControlFocus, Button2, ahk_id%regid%
Sleep, -1
ControlSend, Button2, {Space}, ahk_id%regid%
Sleep, 30
}

Control, Check,,Button3, ahk_id%regid%
ControlFocus, Button3, ahk_id%regid%
PostMessage, 0x201, 0x0001,((10<<16)^10),Button3 , ahk_id%id%
PostMessage, 0x202 , 0,((10<<16)^10),Button3 , ahk_id%id%
;RegSofar++
}

WinWait, Tournament Registration ahk_class #32770, , 3
{
WinGet, regid, id, Tournament Registration
WinGetPos, x, y, w, h, ahk_id%regid%
ControlGetText, ctext, Button1, ahk_id%regid%
If ( cText = "OK" )
{
Control, Check,,Button1, ahk_id%regid%
ControlFocus, Button1, ahk_id%regid%
PostMessage, 0x201, 0x0001,((10<<16)^10),Button1 , ahk_id%id%
PostMessage, 0x202 , 0,((10<<16)^10),Button1 , ahk_id%id%
}
}
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
  StringLeft, templine, templine, instr(templine,A_space)
  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
AHK script:Stars Filtered SNG Opener Quote
01-03-2010 , 08:23 PM
works ty
AHK script:Stars Filtered SNG Opener Quote
01-06-2010 , 02:40 PM
Quote:
Originally Posted by Max1mums
Try now:
Code:
; 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
; 4.0 version fixed by Max1mums
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance, Force
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
logfile:= pspath . "pokerstars.log.0"
IfNotExist %logfile%
{
 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"
IfNotExist %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
tcounter:="tcounter.ini"
IfExist, %tcounter%
FileDelete, %tcounter%
RegSofar=0
OpenTables=0
trows=17
SysGet,mon, MonitorworkArea
fivesec=0
two=0
ddlist4=Off|
ddlist5=Off|
ddlist6=Off|
ddlist7=Off|
LobbyList=Default|Black|
ddlist2:=ddlist2 . 2 . "|"
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 . "|"
}
}
}
}
ddlist3:=ddlist3 . 9999 . "|"
ddlist:=ddlist . 100 . "|"
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
IfExist, %tcounter%
FileDelete, %tcounter%
tcount:=0
Gui, Submit, NoHide
displayedTime=
If (lobby="Default")
{
;regButton:="PokerStarsButtonClass7"
regButton:="PokerStarsButtonClass8"
}
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
IfExist, %tcounter%
FileDelete, %tcounter%
tcount:=0
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 ) {
SetTitleMatchMode, 2
ControlFocus, %regButton%, ahk_id%ID%
PostMessage, 0x201, 0x0001,((20<<16)^30),%regButton% , ahk_id%id%
PostMessage, 0x202 , 0,((20<<16)^30),%regButton% , ahk_id%id%
WinWait, Tournament Registration ahk_class #32770, , 3
{
WinGet, regid, id, Tournament Registration
ControlGet, Z, Visible,,Button1, ahk_id%regid%
if Z
{
ControlFocus, Button1, ahk_id%regID%
PostMessage, 0x201, 0x0001,((10<<16)^10),Button1 , ahk_id%id%
PostMessage, 0x202 , 0,((10<<16)^10),Button1 , ahk_id%id%
}

If (AutoIfFull = 1)
{
ControlFocus, Button2, ahk_id%regid%
Sleep, -1
ControlSend, Button2, {Space}, ahk_id%regid%
Sleep, 30
}

Control, Check,,Button3, ahk_id%regid%
ControlFocus, Button3, ahk_id%regid%
PostMessage, 0x201, 0x0001,((10<<16)^10),Button3 , ahk_id%id%
PostMessage, 0x202 , 0,((10<<16)^10),Button3 , ahk_id%id%
;RegSofar++
}

WinWait, Tournament Registration ahk_class #32770, , 3
{
WinGet, regid, id, Tournament Registration
WinGetPos, x, y, w, h, ahk_id%regid%
ControlGetText, ctext, Button1, ahk_id%regid%
If ( cText = "OK" )
{
Control, Check,,Button1, ahk_id%regid%
ControlFocus, Button1, ahk_id%regid%
PostMessage, 0x201, 0x0001,((10<<16)^10),Button1 , ahk_id%id%
PostMessage, 0x202 , 0,((10<<16)^10),Button1 , ahk_id%id%
}
}
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
  StringLeft, templine, templine, instr(templine,A_space)
  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

Thanks, that finally made it work for me.
AHK script:Stars Filtered SNG Opener Quote
01-06-2010 , 08:46 PM
I'm not sure how I feel about this. I love everything about it, almost. I just tried it for the first time and loaded up a set and I only cashed in one (though I have one still going). So, on the one hand, the most stressful part of mass-multitabling has been removed, but so have my profits. I think profits > stress, but I am not sure.

Other than that, this is amazing! Thank you, Everlong and all who have contributed!
AHK script:Stars Filtered SNG Opener Quote
01-11-2010 , 09:26 PM
Let's say I want to open 10 tables every 30 minutes. I want to play set of 10 tables every 30 minutes.

Does anyone know a script that opens "X" number of tables every 30 minutes?

SFSO doesn't seem do this...and Stars SNG Opener v.0.01 by _dave_ isn't working for me. The one by _dave_ seems perfect, but it doesn't register.
AHK script:Stars Filtered SNG Opener Quote
01-21-2010 , 09:08 AM
I'd like to keep more than 50 tables open.
Is this possible w/ just editing some line?
If yes - which ones?

thank YoU vM!!
AHK script:Stars Filtered SNG Opener Quote
01-21-2010 , 11:25 AM
I added 100 there as maximum number of tables to keep open and 9999 for total limit in last version i posted here, which version are you using?
AHK script:Stars Filtered SNG Opener Quote
01-26-2010 , 01:13 AM
sorry for the stupid question. I tried to download this, but it only opens up a file with text in it. What do I do with this, and how do I get this to run?

Any one have an executable file for this like there is for stars hotkeys?

Sorry I am obv computer challenged (and embarassed that noone else has asked this before so apparently its pretty simple?)

Thanks !!
AHK script:Stars Filtered SNG Opener Quote
01-26-2010 , 01:32 AM
Download and install (as admin if under Vista/W7) autohotkey program http://www.autohotkey.com/download/A...keyInstall.exe, run .ahk file.
AHK script:Stars Filtered SNG Opener Quote
02-22-2010 , 09:30 AM
Thanks scalf that version works for me. Does anyone else have a problem with the counter not working at all for counting sngs regged?
AHK script:Stars Filtered SNG Opener Quote
02-22-2010 , 10:07 AM
That happened to me while using auto-register function of another script, check if you will still have that problem running SFSO alone.
AHK script:Stars Filtered SNG Opener Quote

      
m