Skip to forum
Script per datamini...
 
Notifiche
Cancella tutti

[Chiuso] Script per datamining ipoker

130 Post
37 Utenti
0 Reactions
21.4 K Visualizzazioni

Su ipoker (titan and company ) non è possibile registrare le mani osservate , ci sono dei programmi a pagamento per farlo . Io ho scritto questo script che è gratis :D
E' molto semplice , aprite i tavoli cliccate su start e lui inizia a registrare le mani . Per fare in modo che registri bene , nelle opzioni della chat di titan bisogna spuntare SOLAMENTE "banco" e "azioni del giocatore" . Prima di chiudere qualche finestra è preferibile mettere in pausa il programmino altrimenti potrebbe crashare ; lo stesso vale quando volete spostare o cancellare le mani salvate (se le fate importare da pt2 meglio non usare l'opzione che li sposta in automatico mentre il programma stà registrando le mani).

Per ora funziona solo con ipoker italiano , ma a breve aggiungo anche l'inglese.

----edit1
Aggiunta funzionalità per client pokerroom in inglese e corretti alcuni bugs

------edit N , nuova versione 14/10/2008
Corrette alcune imperfezioni e reso il programma circa 10 volte + veloce , prima faceva un 600mani l'ora , adesso 6000 , penso che bastino :P

------altro update 1.6
------update , adesso funziona anche con Holdem Manager
------fixed bug of english version
-----again fixed small bug :P
-----update version 1.66
------ versione 1.67 with german support
IpokerHandGrabber1.67.rar

------ BUG REPORTING
Comunque se ci sono bug da segnalare , cercate di darmi più info possibili . Ad esempio se un prog da problemi a importare le mani mi serve sapere che tipo di errore vi da , ad esempio poker tracker se trova qualche errore nella mano lo scrive.

Spero che sia utile a qualcuno :P

PS
E' stato scritto con AutoIt

Parte del sourcecode:

#NoTrayIcon
#Region ;* Directives created by AutoIt3Wrapper_GUI *
#AutoIt3Wrapper_Icon=icon2.ico
#AutoIt3Wrapper_Outfile=IpokerHandGrabber1.61.exe
#AutoIt3Wrapper_Res_Description=Ipoker Hand Grabber
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;* Directives created by AutoIt3Wrapper_GUI *
#include <IE.au3>
#include <Array.au3>
#include "_XMLDomWrapper.au3"
#include <Date.au3>
#include <String.au3>
#include <GUIConstants.au3>
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ComboConstants.au3>

TraySetIcon("icon4.ico")
$mbdonationurl = " https://www.moneybookers.com/app/payment.pl?pay_to_email=francesco.buldo%40gmail.com&language=EN&currency=USD&ondemand_max_currency=EUR&ondemand_note=&rec_amount=&rec_start_date=&rec_end_date=&rec_period=&rec_grace_period=&rec_cycle=&title=&firstname=&lastname=&date_of_birth=&address=&address2=&phone_number=&postal_code=&city=&state=&country=+&detail1_description=Handgrabber+donation&detail1_text=Donate&submit_id=Submit&amount=" 
_XMLSetAutoSave(True)
Opt("TrayAutoPause", 0)

;configurazione tray
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 1) ; Default tray menu items (Script Paused/Exit) will not be shown.
;$displayitem	= TrayCreateItem("Display", $settingsitem)
;$printeritem	= TrayCreateItem("Printer", $settingsitem)
;$settingsitem = TrayCreateItem("Settings")
;TrayItemSetOnEvent(-1, "SettingEvent")
;TrayCreateItem("")
;$runitem = TrayCreateItem("Run")
;TrayItemSetOnEvent(-1, "runbClick")
;TrayCreateItem("")
TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "TrayClicked")
TraySetOnEvent($TRAY_EVENT_SECONDARYDOWN, "TrayClicked")
$apriitem = TrayCreateItem("Open program")
TrayItemSetOnEvent(-1, "TrayClicked")
TrayCreateItem("")
$exititem = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "ExitEvent")
TraySetState()
;-----fine config tray
;stringhe
Global $nactions, $timer1, $timer2, $savepath, $preflopstart, $timer
$timer = 0
; CONFIGURAZIONE
$savepath = IniRead("hbconfig.ini", "conf", "savepath", @ScriptDir) 
$stackbase = IniRead("hbconfig.ini", "conf", "stackbase", 1000)
$curlanguage = IniRead("hbconfig.ini", "conf", "curlanguage", "Italiano")

$snewh = "Avvio di una nuova mano ("
$sbutton = " è il mazziere"
$sline = "banco: "
$idwindows = "Texas Hold'em"
$ssb = "punta il buio (small blind) "
$sbb = "punta il controbuio (big blind) "
$sdstflop = "Distribuzione carte flop"
$sdstturn = "Distribuzione carta turn"
$sdstriver = "Distribuzione carta river"
$sraise = "lancia a"
$sfold = "lascia"
$scall = " vede" ; 3
$sbet = " punta " ;
$scheck = " passa" ;4
$sallin = " va in All-in";7
$swinner = "Il vincitore è "
$swinner2 = " vince con"
$sshow = " mostra"
$sdstb = "Distribuzione"
$slasciatoiltavolo = " lasciato"
$ssbbb = " il Dead Small Blind" ;2
$spreflopstart = "Distribuzione carte"

Global $manisalvate = 0
Global $tavolimonitorati = 0
Global $pause = 1



Dim $windows[30][4] ;  ultima mano letta   in 000 c'è il num di finestre
$windows[0][0] = 0

Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("IpokerGrabber", 376, 307, 791, 416)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form2Close")
$Input1 = GUICtrlCreateInput($savepath, 105, 35, 260, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
$Browse = GUICtrlCreateButton("Browse", 14, 35, 78, 22, 0)
GUICtrlSetOnEvent(-1, "Button1Click")
$Label1 = GUICtrlCreateLabel("Hands Folder:", 14, 14, 70, 17)
$Label2 = GUICtrlCreateLabel("Tables :", 14, 70, 85, 17)
$LabelTables = GUICtrlCreateLabel("000", 105, 70, 22, 17)
$Label4 = GUICtrlCreateLabel("Saved hands:", 14, 91, 69, 17)
$Labelhands = GUICtrlCreateLabel("000", 105, 91, 42, 17)
$Label8 = GUICtrlCreateLabel("Default stack:", 14, 108, 69, 17)
$Inputstack = GUICtrlCreateInput($stackbase, 105, 108, 42, 17)
$Labelstackhelp = GUICtrlCreateLabel("Help?", 150, 108, 42, 17)
GUICtrlSetOnEvent(-1, "stackhelp")
GUICtrlSetColor(-1, 0xFF0000)
$ButtonStart = GUICtrlCreateButton("Start", 14, 164, 92, 22, 0)
GUICtrlSetOnEvent(-1, "ButtonStartClick")
GUICtrlSetColor(-1, 0xFF0000)
$Group1 = GUICtrlCreateGroup("N.B. READ THIS!", 7, 195, 358, 106)
$Label13 = GUICtrlCreateLabel("Prima di avviare il salvataggio delle mani bisogna assicurarsi " & @CRLF & _
		"di spuntare solo le opzioni 'banco' e 'azioni del giocatore' della chat di Titan." & @CRLF & _
		"E' preferibile non cancellare o spostare le mani salvate mentre" & @CRLF & _
		"è in funzione il programma , se proprio dovete , mettetelo in pausa prima!", 15, 215, 293, 85)
GUICtrlSetColor(-1, 0xFF0000)
$Label10 = GUICtrlCreateLabel("Language:", 14, 133, 69, 17)
$Combolanguage = GUICtrlCreateCombo("", 85, 133, 90, 17, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))
GUICtrlSetData($Combolanguage, "Italiano|English", $curlanguage)

GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Donation", 189, 56, 176, 134)
$Label3 = GUICtrlCreateLabel("Se hai trovato utile questo programma, potresti prendere in considerazione una donazione tramite moneybookers :P , 196, 70, 155, 52)
$ButtonDonate = GUICtrlCreateButton("Donate", 196, 164, 71, 22, 0)
GUICtrlSetOnEvent(-1, "ButtonDonateClick")
GUICtrlCreateGroup("", -99, -99, 1, 1)

GUISetState(@SW_SHOW)
#EndRegion ### START Koda GUI section ### Form=


While 1
	ChangeLanguage()
	;SALVATAGGIO CONFIGURAZIONE
	IniWrite("hbconfig.ini", "conf", "savepath", GUICtrlRead($Input1))
	IniWrite("hbconfig.ini", "conf", "stackbase", GUICtrlRead($Inputstack))
	IniWrite("hbconfig.ini", "conf", "curlanguage", GUICtrlRead($Combolanguage))
	GUICtrlSetData($Labelhands, $manisalvate)
	GUICtrlSetData($LabelTables, $tavolimonitorati)
	Sleep(200)
	While $pause
		Sleep(700)
		IniWrite("hbconfig.ini", "conf", "savepath", GUICtrlRead($Input1))
		IniWrite("hbconfig.ini", "conf", "stackbase", GUICtrlRead($Inputstack))
		IniWrite("hbconfig.ini", "conf", "curlanguage", GUICtrlRead($Combolanguage))

		GUICtrlSetData($Labelhands, $manisalvate)
		GUICtrlSetData($LabelTables, $tavolimonitorati)
		ChangeLanguage()
	WEnd
	;cerchiamo finestre
	Opt("WinTitleMatchMode", 2)
	$winlist = WinList($idwindows)
	;_ArrayDisplay($winlist)

	For $i = 1 To $winlist[0][0]
		_ArraySearch($windows, $winlist[$i][0], 1, 0, 0, 1, 1, 1)
		If @error Then
			ConsoleWrite("aggiungoooooo")
			$windows[0][0] += 1
			$windows[$windows[0][0]][0] = $winlist[$i][1]
			$windows[$windows[0][0]][1] = $winlist[$i][0]
			$windows[$windows[0][0]][2] = "null"
			$windows[$windows[0][0]][3] = "null"
		EndIf
	Next

	;_ArrayDisplay($windows)
	;Exit
	;--------- ora leggiamo le mani dalle finestre
	$tavolimonitorati = 0
	$stack = Round(GUICtrlRead($Inputstack), 2)
	If @error Then $stack = 1000
	GUICtrlSetData($Inputstack, $stack)
	For $u = 1 To $windows[0][0]
		ChangeLanguage()
		While $pause
			Sleep(700)
			IniWrite("hbconfig.ini", "conf", "savepath", GUICtrlRead($Input1))
			IniWrite("hbconfig.ini", "conf", "stackbase", GUICtrlRead($Inputstack))
			IniWrite("hbconfig.ini", "conf", "curlanguage", GUICtrlRead($Combolanguage))

			GUICtrlSetData($Labelhands, $manisalvate)
			GUICtrlSetData($LabelTables, $tavolimonitorati)
			ChangeLanguage()
		WEnd
		GUICtrlSetData($Labelhands, $manisalvate)
		If WinExists($windows[$u][1]) Then

			analizza($u)
			$tavolimonitorati += 1
		EndIf
	Next
	;_ArrayDisplay($windows)
WEnd






Func analizza($n)
	

	$oIE = $windows[$n][0]
	If Not IsObj($oIE) Then
		$oIE = _IEAttach($windows[$n][1], "embedded", 3)
		$windows[$n][0] = $oIE
		;MsgBox(0,0,_IEBodyReadText($oIE))
		ConsoleWrite(@CRLF & " geppo 1 ")
		If @error Then Return
	EndIf
	If IsObj($oIE) Then
		ConsoleWrite(@CRLF & " geppo 2 ")
		$testo = _IEBodyReadText($oIE)
		If @error Then
			ConsoleWrite(@CRLF & " geppo 2 error ")
			$windows[$n][0] = ""
			Return
		EndIf
	Else
		ConsoleWrite(@CRLF & " geppo 3 ")
		$windows[$n][0] = ""
		Return
	EndIf
	If $windows[$n][2] <> "null" And StringInStr($testo, $windows[$n][2]) Then
		
		$testo = StringTrimLeft($testo, StringInStr($testo, $windows[$n][2]) - 10); tolgo intestazione di ultima mano giocata
		$p1 = StringInStr($testo, $swinner)
		$p2 = StringInStr($testo, $swinner2)
		$pos = getmin($p1, $p2)
		If $pos = 0 Then Return
		$testo = StringTrimLeft($testo, $pos + StringLen($swinner))
		$p2 = StringInStr($testo, $sbutton, 0, 2)
		If $p2 = 0 Then Return
		$testo = StringLeft($testo, $p2 - 2)
	Else
		$testo = StringTrimLeft($testo, StringInStr($testo, $sbutton) - 15); tolgo le inutilità da sopra
		$p1 = StringInStr($testo, $swinner)
		$p2 = StringInStr($testo, $swinner2)
		$pos = getmin($p1, $p2)
		If $pos = 0 Then Return
		$testo = StringTrimLeft($testo, $pos + StringLen($swinner)); tolgo le inutilità da sopra
		$p2 = StringInStr($testo, $sbutton, 0, 2)
		If $p2 = 0 Then Return
		$testo = StringLeft($testo, $p2 - 2)
	EndIf
	$manisalvate += 1
	;FileDelete("manodicazzo.txt")
	;FileWrite(TimerInit() & ".txt", $testo)
	$testo = StringReplace($testo, @CRLF, "!endline!")

	scrivimano($testo, $n);testo della mano , tavolo di riferimento
EndFunc   ;==>analizza

Func scrivimano($t, $n)
	If $windows[$n][3] = "null" Or (Not FileExists($savepath & "\" & $windows[$n][3])) Then ;---CREIAMO IL FILE
		$windows[$n][3] = TimerInit() & ".xml";_Now()
		$titolo = $windows[$n][1]
		$abvsd = $savepath & "\" & $windows[$n][3]
		_XMLCreateFile($savepath & "\" & $windows[$n][3], "session", True, True)

		_XMLFileOpen($savepath & "\" & $windows[$n][3], "", -1, False)
		_XMLCreateRootChild("general", "")
		_XMLCreateAttrib("session", "sessioncode", StringTrimRight($windows[$n][3], 5))
		$r = _XMLCreateChildNode("//general[1]", "mode", "real")
		_XMLCreateChildNode("//general[1]", "gametype", Getgametype($titolo))
		_XMLCreateChildNode("//general[1]", "tablename", GetTable($titolo))
		_XMLCreateChildNode("//general[1]", "duration", "22:06")
		_XMLCreateChildNode("//general[1]", "gamecount", "5500")
		_XMLCreateChildNode("//general[1]", "startdate", _NowCalc())
		_XMLCreateChildNode("//general[1]", "currency", "USD")
		_XMLCreateChildNode("//general[1]", "nickname", "Guardone")
		_XMLCreateChildNode("//general[1]", "bets", "$0")
		_XMLCreateChildNode("//general[1]", "wins", "$0")
		_XMLCreateChildNode("//general[1]", "chipsin", "$0")
		_XMLCreateChildNode("//general[1]", "chipsout", "$0")
		_XMLCreateChildNode("//general[1]", "ipoints", "0")
		_XMLSaveDoc()
	EndIf

	;----apriamo il file
	_XMLFileOpen($savepath & "\" & $windows[$n][3], "", -1, False)

	;game code e general section del gamecode
	$aLines = StringSplit($t, $sline, 1)
	$ok = 0
	For $g = 1 To $aLines[0]
		$pos = StringInStr($aLines[$g], $snewh)
		If $pos Then
			$gamecode = StringMid($aLines[$g], $pos + StringLen($snewh), 10)
			$ok = 1
			ExitLoop
		EndIf
	Next

	If $ok = 0 Then Return
	Dim $att[1] = ["gamecode"] ;array attributi
	Dim $attval[1] = [$gamecode] ;array valori
	_XMLCreateRootNodeWAttr("game", $att, $attval)
	$windows[$n][2] = $gamecode
	_XMLCreateChildNode("//game[@gamecode='" & $gamecode & "']", "general")
	_XMLCreateChildNode("//game[@gamecode='" & $gamecode & "']/general", "startdate", StringReplace(_NowCalc(), "/", "-"))
	_XMLCreateChildNode("//game[@gamecode='" & $gamecode & "']/general", "players")

	;_XMLCreateChildNode("//game[@gamecode='"&$gamecode&"']/general/players","player")

	;adesso dobbiamo ricavare i vari players
	;prima vediamo dove inizia la sezione preflop
	$noflop = 0
	$noturn = 0
	$noriver = 0
	$flopend = $aLines[0]
	$turnend = $aLines[0]
	$preflopstart = _ArraySearch($aLines, $spreflopstart, 1, 0, 0, 1, 1)
	If $preflopstart = -1 Then $preflopstart = 1
	$preflopend = _ArraySearch($aLines, $sdstflop, 1, 0, 0, 1) - 1
	If @error Then
		$preflopend = _ArraySearch($aLines, $swinner, 1, 0, 0, 1) - 1
		$noflop = 1
		$noturn = 1
		$noriver = 1
	Else
		$noflop = 0
		$noturn = 0
		$noriver = 0
		$flopend = _ArraySearch($aLines, $sdstturn, 1, 0, 0, 1) - 1
		If @error Then
			$flopend = $aLines[0]
			$noturn = 1
			$noriver = 1
		Else
			$turnend = _ArraySearch($aLines, $sdstriver, 1, 0, 0, 1) - 1
			If @error Then
				$turnend = $aLines[0]
				$noriver = 1
			EndIf
		EndIf
		
	EndIf

	;partiamo dal button
	Dim $players[15] ; in 0 c'è il numero di players
	$players[0] = 0
	;prima il button
	$ok = 0
	For $g = 1 To $aLines[0]
		$pos = StringInStr($aLines[$g], $sbutton)
		If $pos Then
			$button = StringReplace(StringLeft($aLines[$g], $pos), " ", "")
			$ok = 1
			ExitLoop
		EndIf
	Next
	If $ok = 0 Then Return
	$players[0] += 1
	$players[$players[0]] = $button
	$bbfound = 0
	$sbfound = 0
	For $a = 1 To $preflopend
		If StringInStr($aLines[$a], $scheck) Or StringInStr($aLines[$a], $sallin) Or StringInStr($aLines[$a], $sraise) Or StringInStr($aLines[$a], $sfold) Or StringInStr($aLines[$a], $scall) Or StringInStr($aLines[$a], $ssb) Or StringInStr($aLines[$a], $sbb) Then
			Select
				Case StringInStr($aLines[$a], $sbb)
					If $bbfound = 1 Then ContinueLoop
					$bbfound = 1
					
				Case StringInStr($aLines[$a], $ssb)
					If $sbfound = 1 Then ContinueLoop
					$sbfound = 1
			EndSelect
			$arr = StringSplit($aLines[$a], " ")
			$name = $arr[1]
			If $name = $players[1] Then ExitLoop
			$players[0] += 1
			$players[$players[0]] = $name
		EndIf
	Next

	WritePlayers($players, $aLines, $gamecode)
	;ora scriviamo round0
	;ora scriviamo round0

	WriteRoundZero($players, $aLines, $gamecode, $preflopend)

	;--ROUND 1
	WriteRoundOne($players, $aLines, $preflopstart, $preflopend, $gamecode)
	;_XMLSaveDoc()

	If $noflop = 0 Then
		WriteRound2($players, $aLines, $preflopend + 1, $flopend, $gamecode)

	EndIf
	If $noturn = 0 Then
		WriteRound3($players, $aLines, $flopend + 1, $turnend, $gamecode)

	EndIf
	If $noriver = 0 Then
		WriteRound4($players, $aLines, $turnend + 1, $aLines[0], $gamecode)

	EndIf
	_XMLSaveDoc()

EndFunc   ;==>scrivimano




Func Getgametype($stringa)
	$pos = StringInStr($stringa, "no limit")
	If $pos Then
		$type = "Holdem NL"
		$pos2 = StringInStr($stringa, "-", 0, 1, $pos)
		$limit = StringRight($stringa, StringLen($stringa) - $pos2)
	Else
		$type = "Holdem L"
		$pos2 = StringInStr($stringa, "-", 0, 1, $pos)
		$limit = StringRight($stringa, StringLen($stringa) - $pos2)
	EndIf
	Return $type & $limit
EndFunc   ;==>Getgametype

Func GetTable($stringa)
	$arr = StringSplit($stringa, ":-")
	Return $arr[2]
	
EndFunc   ;==>GetTable

Func WritePlayers(ByRef $aPlr, ByRef $aLn, $gamecode) ; array coi players , array mani
	For $j = 1 To $aPlr[0]
		If $j = 1 Then
			$dlr = 1
		Else
			$dlr = 0
		EndIf

		$wonsum = "$0"
		For $f = $aLn[0] To $preflopstart Step -1
			;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $preflopstart = ' & $preflopstart & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
			If (StringInStr($aLn[$f], $swinner) Or StringInStr($aLn[$f], $swinner2)) And StringInStr($aLn[$f], $aPlr[$j]) Then
				;$arr = StringSplit($aLn[$f]," ")
				;$aaaa = $aLn[$f]
				$won = _StringBetween($aLn[$f], '$', "!endline!") ;$arr[$arr[0]]
				$wonsum = "$" & $won[0]
				ExitLoop
			EndIf
		Next
		;_XMLSetAttrib("//game[@gamecode='" & $gamecode & "']/general/players/player[@name='" & $aPlr[$j] & "']", "win", $wonsum)
		
		$betsum = 0
		For $t = 1 To $aLn[0]
			$ssss = $aLn[$t]
			$ssss1 = $aPlr[$j]
			
			If StringInStr($aLn[$t], $aPlr[$j]) _
					And (StringInStr($aLn[$t], $scall) Or StringInStr($aLn[$t], $sraise) Or StringInStr($aLn[$t], $sbet)) _
					And Not (StringInStr($aLn[$t], $ssb) Or StringInStr($aLn[$t], $sbb)) Then
				;$arr = StringSplit($aLn[$t]," ")
				
				;_ArrayDisplay($arr)
				;$v = $arr[0]
				$2convert = _StringBetween($aLn[$t], '$', "!endline!") ;$arr[$arr[0]]
				$toadd = Round($2convert[0], 2)
				$betsum = $betsum + $toadd
				
			EndIf
		Next
		;_XMLSetAttrib("//game[@gamecode='" & $gamecode & "']/general/players/player[@name='" & $aPlr[$j] & "']", "bet", "$" & $betsum)
		Dim $aatt[6] = ["seat", "name", "chips", "dealer", "win", "bet"]
		Dim $aval[6] = [$j, $aPlr[$j], "$" & $stack, $dlr, $wonsum, "$" & $betsum]
		;_ArrayDisplay($aPlr)
		_XMLCreateChildWAttr("//game[@gamecode='" & $gamecode & "']/general/players", "player", $aatt, $aval)
		
	Next
EndFunc   ;==>WritePlayers


Func Button1Click()
	$savepath = FileSelectFolder("Select a folder", "", 7, @ScriptDir)
	GUICtrlSetData($Input1, $savepath)
EndFunc   ;==>Button1Click

Func ButtonStartClick()
	If $pause = 0 Then
		$pause = 1
		GUICtrlSetData($ButtonStart, "Start")
	Else
		$pause = 0
		GUICtrlSetData($ButtonStart, "Pause")
	EndIf
EndFunc   ;==>ButtonStartClick

Func ExitEvent()
	Exit
EndFunc   ;==>ExitEvent


Func Form2Close()
	GUISetState(@SW_HIDE, $Form2)
EndFunc   ;==>Form2Close
Func TrayClicked()
	GUISetState(@SW_SHOW, $Form2)
	GUISetState(@SW_SHOWDEFAULT, $Form2)
EndFunc   ;==>TrayClicked

Func stackhelp()
	Select
		Case GUICtrlRead($Combolanguage) = "Italiano"
			MsgBox(0, "Help", "Questo script non è capace di ottenere gli stack iniziali di ogni player," & @CRLF & _
					" questa informazione non è determinante per le statistiche di gioco, quindi viene scelto questo valore di" & @CRLF & _
					"default per tutti i players.")
		Case GUICtrlRead($Combolanguage) = "English"
			MsgBox(0, "Help", "This script isn't able to read the initial stacks of the players, " & @CRLF & _
					"however this information isn't decisive for calculating player 's statistics, so it will  " & @CRLF & _
					"assign a default initial stack to all players and u can specify it's value.")
	EndSelect
	
EndFunc   ;==>stackhelp

Func ButtonDonateClick()
	Do
		$donationamout = InputBox("Make a Donation", "Quanto vuoi donare?(US $ )")
		$donationamout = Int($donationamout)
		
	Until @error = 0
	ShellExecute($mbdonationurl & $donationamout)
EndFunc   ;==>ButtonDonateClick


Func ChangeLanguage()
	$language = GUICtrlRead($Combolanguage)
	If $curlanguage = $language Then Return
	$curlanguage = $language
	Select
		Case $language = "Italiano"
			$snewh = "Avvio di una nuova mano ("
			$sbutton = " è il mazziere"
			$sline = "banco: "
			$idwindows = "Texas Hold'em"
			$ssb = "punta il buio (small blind) "
			$sbb = "punta il controbuio (big blind) "
			$sdstflop = "Distribuzione carte flop"
			$sdstturn = "Distribuzione carta turn"
			$sdstriver = "Distribuzione carta river"
			$sraise = "lancia a"
			$sfold = "lascia"
			$scall = " vede" ; 3
			$sbet = " punta " ;
			$scheck = " passa" ;4
			$sallin = " va in All-in";7
			$swinner = "Il vincitore è "
			$swinner2 = " vince con"
			$sshow = " mostra"
			$sdstb = "Distribuzione"
			$slasciatoiltavolo = " lasciato"
			$ssbbb = " il Dead Small Blind" ;2
			$spreflopstart = "Distribuzione carte"
			GUICtrlSetData($Label3, "Se hai trovato utile questo programma, potresti prendere in considerazione una donazione tramite moneybookers :P )
			GUICtrlSetData($Label13, "Prima di avviare il salvataggio delle mani bisogna assicurarsi " & @CRLF & _
					"di spuntare solo le opzioni 'banco' e 'azioni del giocatore' della chat di Titan." & @CRLF & _
					"E' preferibile non cancellare o spostare le mani salvate mentre" & @CRLF & _
					"è in funzione il programma , se proprio dovete , mettetelo in pausa prima!")
			
		Case $language = "English"
			$snewh = "Starting a new hand (#"
			$sbutton = " is the dealer"
			$sline = "Dealer: "
			$idwindows = "Texas Hold'em"
			$ssb = " posts Small Blind"
			$sbb = " posts Big Blind"
			$sdstflop = "Dealing Flop"
			$sdstturn = "Dealing Turn"
			$sdstriver = "Dealing River"
			$sraise = " raises to"
			$sfold = " folds"
			$scall = " calls " ; 3
			$sbet = " bets " ;
			$scheck = " checks" ;4
			$sallin = " goes All-in";7
			$swinner = "Winner is "
			$swinner2 = " wins with"
			$sshow = " shows "
			$sdstb = "Dealing"
			$slasciatoiltavolo = " has left the "
			$ssbbb = "and Dead Small Blind" ;2
			$spreflopstart = "Dealing cards"
			GUICtrlSetData($Label3, "If you found this program useful , maybe you could take in account a donation by moneybookers:p ")
			GUICtrlSetData($Label13, "Before starting recording hands it's needed to check ONLY the options 'dealer' and 'player actions' of the chat!" & @CRLF & _
					"It's also preferable to not delete o move saved hand files during the recording process , if have to then put the program in pause first!")
			
	EndSelect
EndFunc   ;==>ChangeLanguage

Func getmin($p1, $p2)

	If $p1 > $p2 Then
		$r = $p2
		If $r = 0 Then $r = $p1
		Return $r
	EndIf
	$r = $p1
	Return $r
EndFunc   ;==>getmin

129 replies
SicilianWay
Joined: 02.05.2008

"MANSION"

entrando nel cashier--->my account--->tournament history.....poi selezioni il torneo/sit che hai giocato....spuntano tutte le mani del torneo...

in alto vedo un tasto "update local information"...se lo clicchi cosa succede?

fa riferimento a quello che dici tu?


Ops avevo dimenticato di dire che ancora non funziona per i sng :\
Poi magari se a qualcuno serve vedo di aggiungere questa possibilità.

Cmq no , questo script semplicemente registra le mani giocate sui tavoli osservati . Titan ad esempio non salva queste mani sul tuo pc , puoi vederle solo nella cronologia e quindi non puoi importarle nel db...


Update , corretti alcuni bugs e adesso funziona anche per client pokerroom in inglese.versione 1.1


Nekro se posso dare una mano sarei felice


Beh penso che ora come ora è soprattutto una questione di testing, quindi se trovate bugs me li potete segnalare qui .
Volendo sarebbe implementare l'apertura dei tavoli automatica , cioè io avvio il programma e lui apre tot tavoli di un dato limite che scelgo io ed inizia a registrare .... se vuoi ti puoi occupare di questa parte qui .
Come ho detto è scritto con autoit http://www.autoitscript.com/

Ho fatto un altro update... avevo messo una versione per il debugging che salvava alcuni file inutili :P


theperni
Joined: 28.08.2007

Grande iniziativa! :)
Domani lo provo.


Corretto altro piccolo bug


Osoter , se riusciamo a leggere i dati della lobby di tatn si potrebbe anche implementare una table selection (ad es tutti i tavoli co gf > 30% , piatto medio > tot ) , sarebbe davvero carina come cosa . Al momento non ci ho studiato molto , ma a primo acchitto non so come legger i dati dalla lobby


Finalmente lo script che cercavo da un po' :D

Grande N4rk0, gran bel lavoro!!!

Grazieee


SicilianWay
Joined: 02.05.2008

bravi....sfruttatele queste menti geniali!!! ;)

la prossima volta provate a scoprire come si vedono le carte degli avversari! :D


Magliagialla
Joined: 08.02.2008

Grandissimo N4ark0, sei davvero geniale. L'ho provato e funziona correttamente...


L'originale di SicilianWaybravi....sfruttatele queste menti geniali!!! ;)

la prossima volta provate a scoprire come si vedono le carte degli avversari! :D

Un tizio lo fece una volta , ma alla fine si fece beccare perchè chiamò un all in di un altro tizio su board 2paired con k alto in un torneo di quelli pesanti . Il tizio chiamato fece un reclamo e beccarono il cheater...
Cmq non penso che al giorno d'oggi si possa fare , le misure di sicurezza saranno molto migliori ... per evitare cheats del genere basta semplicemente che il server non mandi le carte avversarie al client prima della fine della mano, punto . Su unibet c'erano degli utenti che vedevano le carte ma , erano gli sviluppatori del server , quindi avevano implementato questo sistema nel server....

Cmq bando alle ciance ....

Direi di usare questo 3d per scambiarci le mani salvate , vi consiglio di usare mediafire per scambiare i file...voi postate e io magari aggiungo i link al post iniziale, magari dividendole per sezioni....


Grandissimi ragazzi stasera lo scarico e lo provo :) che su mansion ci gioco parecchio, almeno per il momento.


L'originale di N4rk0Osoter , se riusciamo a leggere i dati della lobby di tatn si potrebbe anche implementare una table selection (ad es tutti i tavoli co gf > 30% , piatto medio > tot ) , sarebbe davvero carina come cosa . Al momento non ci ho studiato molto , ma a primo acchitto non so come legger i dati dalla lobby

Appena riesco scarico l'editor. Per quanto riguarda il source code devo fare Reverse Engineering :D o lo posso pigliare direttamente dall'eseguibile?

PS: Mi sembra che AutoIt sia simile al basic, non ci ho mai messo mano, ma non è la prima volta che devo imparare linguaggi da capo. Ormai tengo una lista di linguaggi conosciuti che alle volte non so come dichiarare una variabile.


Nimesulide
Joined: 26.01.2008

cavolo che bella idea N4rk0,

guarda se riesci a fare uno script con queste caratteristiche per PS fai soldi, io ce l'ho per FT tipo questo http://www.fishscope.de/:

legge il nick sulla lobby passando sopra il cursore e automaticamente invia i tuoi dati con psw ecc a sharkscope e ti da le info sul player in modo da fare table selection HU, ovviamente per chi è registrato a shark...

se lo riesci a fare per ps e ipoker fai i soldi perchè lo stanno cercando in tanti


Ipoker è un pò una palla , i controls della lobby non si riescono a leggere , non so perchè.... a questo punto si potrebbe provare con una tecnica ocr per leggerli, in fondo leggere un nome non implica tanto lavoro . Poi per la parte di cercare sharkscope ecc dovrebbe essere abbastanza facile.


L'originale di Osoter

L'originale di N4rk0Osoter , se riusciamo a leggere i dati della lobby di tatn si potrebbe anche implementare una table selection (ad es tutti i tavoli co gf > 30% , piatto medio > tot ) , sarebbe davvero carina come cosa . Al momento non ci ho studiato molto , ma a primo acchitto non so come legger i dati dalla lobby

Appena riesco scarico l'editor. Per quanto riguarda il source code devo fare Reverse Engineering :D o lo posso pigliare direttamente dall'eseguibile?

PS: Mi sembra che AutoIt sia simile al basic, non ci ho mai messo mano, ma non è la prima volta che devo imparare linguaggi da capo. Ormai tengo una lista di linguaggi conosciuti che alle volte non so come dichiarare una variabile.

Il source per la parte che dovresti fare tu non serve a molto :P
Io potevo mettere anche il source qui , però preferisco non distribuirlo in rete dato che altri programmi simili sono a pagamento e non vorrei che a qualcuno ( non della community ) , gli venisse in mente di modificare il source e vendere il prog. Se facciamo qualcosa assieme sicuramente ti do anche il source della mia parte . Il linguaggio di autoit è molto facile e soprattutto c'è un help system molto ben fatto con la sintassi di tutte le funzioni e poi c'è il forum molto attivo , ad esempio le funzioni per la scrittura dei file xml le ho prese dal forum .

Ps
altro piccolo update


Ma quindi al momento il programma fa datamining ?
Perchè il sito che fa ranking dei tavoli già c'è ma quello per datamining no quindi potrebbe essere proprio una bella idea :)


mikyjazz
Joined: 07.12.2007

L'originale di sauzer00Ma quindi al momento il programma fa datamining ?
Perchè il sito che fa ranking dei tavoli già c'è ma quello per datamining no quindi potrebbe essere proprio una bella idea :)

ciao Sauzer!quale sito fa ranking dei tavoli titan?

Ps: N4 sei un grande!!!