From 9e819f3ad24941510bf7af9593c9ccbc16d936a1 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Wed, 8 Oct 2008 05:47:47 +0100 Subject: [PATCH 1/9] p122 - started on table design for draw games --- docs/tabledesign.html | 9 +++++++-- pyfpdb/HUD_main.py | 0 pyfpdb/fpdb.py | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) mode change 100644 => 100755 pyfpdb/HUD_main.py diff --git a/docs/tabledesign.html b/docs/tabledesign.html index 8fcf4884..e326ce65 100644 --- a/docs/tabledesign.html +++ b/docs/tabledesign.html @@ -141,7 +141,8 @@ The program itself is licensed under AGPLv3, see agpl-3.0.txt

char(4)

The underlying structure. valid entries:
hold - Holdem and Omaha
- stud - Stud and Razz

+ stud - Stud and Razz
+ draw - (incl Badugi)

category

@@ -152,7 +153,11 @@ The program itself is licensed under AGPLv3, see agpl-3.0.txt

omahahilo=Omaha 8 or better
razz=Razz
studhi=7 Card Stud High only
- studhl=7 Card Stud 8 orbetter

+ studhilo=7 Card Stud 8 or better
+ fivedraw=Five Card Draw
+ 27sgldraw=2-7 Single Draw
+ 27tridraw=2-7 Tripple Draw
+ badugi=Badugi

limitType

diff --git a/pyfpdb/HUD_main.py b/pyfpdb/HUD_main.py old mode 100644 new mode 100755 diff --git a/pyfpdb/fpdb.py b/pyfpdb/fpdb.py index 841d71c0..56a24c5b 100755 --- a/pyfpdb/fpdb.py +++ b/pyfpdb/fpdb.py @@ -445,7 +445,7 @@ This program is licensed under the AGPL3, see docs"""+os.sep+"agpl-3.0.txt") ("/Viewers/_Player Stats (tabulated view) (todo)", None, self.not_implemented, 0, None ), ("/Viewers/Starting _Hands (todo)", None, self.not_implemented, 0, None ), ("/Viewers/_Session Replayer (todo)", None, self.not_implemented, 0, None ), - ("/Viewers/Poker_table Viewer (obselete)", "T", self.tab_table_viewer, 0, None ), + ("/Viewers/Poker_table Viewer", "T", self.tab_table_viewer, 0, None ), #( "/Viewers/Tourney Replayer ( "/_Database", None, None, 0, "" ), ( "/Database/Create or Delete _Database (todo)", None, self.dia_create_del_database, 0, None ), From b20c44d147db10c59d5d873c3bf7184860e0a242 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Wed, 8 Oct 2008 06:00:49 +0100 Subject: [PATCH 2/9] p123 - finished adapting table design for initial draw support. --- docs/tabledesign.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/tabledesign.html b/docs/tabledesign.html index e326ce65..47b7a72e 100644 --- a/docs/tabledesign.html +++ b/docs/tabledesign.html @@ -302,7 +302,7 @@ The program itself is licensed under AGPLv3, see agpl-3.0.txt

cardXValue

smallint

-

2-10=2-10, J=11, Q=12, K=13, A=14 (even in razz), unknown/no card=x

+

2-10=2-10, J=11, Q=12, K=13, A=14 (even in razz), unknown/no card=x, kept=k (draw only)

cardXSuit

@@ -312,7 +312,8 @@ The program itself is licensed under AGPLv3, see agpl-3.0.txt


Table HandsPlayers

-

cardX: can be 1 through 7, one for each card. In holdem/omaha this stores the hole cards so 3-7 or 5-7 are empty

+

cardX: can be 1 through 20, one for each card. In holdem only 1-2 of these are used, in omaha 1-4, in stud/razz 1-7, in single draw games 1-10 is used and in badugi 1-16 (4*4) is used.

+

For the draw games: the first 5 (badugi: 4) cards are the initial cards, the next 5 (badugi: 4) are after the first draw. If a player keeps some cards then those cards' spaces are filled with "k", short for "kept". E.g. if a player gets 2-6 spades for his first five cards and decides to throw away the 4 and then gets a 7 of spades then the first 10 fields of cardXValue would be as follows: 2, 3, 4, 5, 6, 7, k, k, k, k

I did not separate this into an extra table because I felt the lost space is not sufficiently large. Also the benefit for searching is far less relevant.

From e23ae25d0032f7a12127ec1a4fb1e24cd1877e74 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Wed, 8 Oct 2008 06:28:09 +0100 Subject: [PATCH 3/9] p124 - renamed categories for 27 single/tripple draw. updated abbreviations. --- docs/abbreviations.txt | 4 ++++ docs/tabledesign.html | 4 ++-- pyfpdb/fpdb.py | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/abbreviations.txt b/docs/abbreviations.txt index fd02a6b1..a1ca4f50 100644 --- a/docs/abbreviations.txt +++ b/docs/abbreviations.txt @@ -5,8 +5,11 @@ AF=Flop Bet/Raise percentage AT=River Bet/Raise percentage AR=Turn Bet/Raise percentage F3-7=3rd-7th street Fold percentage +FB=like FSB but for big blinds only FF=Flop Fold percentage FR=River Fold percentage +FSB=Fold to steal - combined of small and big blind (FSB means Fold Small Big). E.g. if a player faced a steal attempt in the SB 7 times and +FS=like FSB but for small blinds only. FT=Turn Fold percentage HD=Hands PF3B4B=Pre Flop 3Bet or 4Bet @@ -14,6 +17,7 @@ PFR=Pre Flop Raise Postf A=Postflop (ie. flop+turn+river) Aggression% Postf F=Postflop Fold % SD/F=Showdown/Flop=WtSD=How often player went to showdown when he saw the flop +ST=Steal chance (nobody had entered the pot before the player in question, and the player is in cutoff or button position) W$wsF=Won $ when he saw flop W$@SD=Won $ at showdown VPI3=Voluntary Put In on 3rd Street (ie. call+complete+raise) diff --git a/docs/tabledesign.html b/docs/tabledesign.html index 47b7a72e..45d09d5a 100644 --- a/docs/tabledesign.html +++ b/docs/tabledesign.html @@ -155,8 +155,8 @@ The program itself is licensed under AGPLv3, see agpl-3.0.txt

studhi=7 Card Stud High only
studhilo=7 Card Stud 8 or better
fivedraw=Five Card Draw
- 27sgldraw=2-7 Single Draw
- 27tridraw=2-7 Tripple Draw
+ 27_1draw=2-7 Single Draw
+ 27_3draw=2-7 Tripple Draw
badugi=Badugi

diff --git a/pyfpdb/fpdb.py b/pyfpdb/fpdb.py index 56a24c5b..da58e6ef 100755 --- a/pyfpdb/fpdb.py +++ b/pyfpdb/fpdb.py @@ -421,7 +421,7 @@ This program is licensed under the AGPL3, see docs"""+os.sep+"agpl-3.0.txt") self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.connect("delete_event", self.delete_event) self.window.connect("destroy", self.destroy) - self.window.set_title("Free Poker DB - version: alpha6+, p118 or higher") + self.window.set_title("Free Poker DB - version: alpha6+, p124 or higher") self.window.set_border_width(1) self.window.set_size_request(1020,400) self.window.set_resizable(True) @@ -445,7 +445,7 @@ This program is licensed under the AGPL3, see docs"""+os.sep+"agpl-3.0.txt") ("/Viewers/_Player Stats (tabulated view) (todo)", None, self.not_implemented, 0, None ), ("/Viewers/Starting _Hands (todo)", None, self.not_implemented, 0, None ), ("/Viewers/_Session Replayer (todo)", None, self.not_implemented, 0, None ), - ("/Viewers/Poker_table Viewer", "T", self.tab_table_viewer, 0, None ), + ("/Viewers/Poker_table Viewer (mostly obselete)", "T", self.tab_table_viewer, 0, None ), #( "/Viewers/Tourney Replayer ( "/_Database", None, None, 0, "" ), ( "/Database/Create or Delete _Database (todo)", None, self.dia_create_del_database, 0, None ), From 75ff2f7d429cedb038a2b971b35c797a38dfb6a1 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Wed, 8 Oct 2008 06:37:16 +0100 Subject: [PATCH 4/9] p125 - expanded explanation of cardXValue for draw --- docs/tabledesign.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/tabledesign.html b/docs/tabledesign.html index 45d09d5a..ce39d4bc 100644 --- a/docs/tabledesign.html +++ b/docs/tabledesign.html @@ -313,7 +313,10 @@ The program itself is licensed under AGPLv3, see agpl-3.0.txt


Table HandsPlayers

cardX: can be 1 through 20, one for each card. In holdem only 1-2 of these are used, in omaha 1-4, in stud/razz 1-7, in single draw games 1-10 is used and in badugi 1-16 (4*4) is used.

-

For the draw games: the first 5 (badugi: 4) cards are the initial cards, the next 5 (badugi: 4) are after the first draw. If a player keeps some cards then those cards' spaces are filled with "k", short for "kept". E.g. if a player gets 2-6 spades for his first five cards and decides to throw away the 4 and then gets a 7 of spades then the first 10 fields of cardXValue would be as follows: 2, 3, 4, 5, 6, 7, k, k, k, k

+

For the draw games: the first 5 (badugi: 4) cards are the initial cards, the next 5 (badugi: 4) are after the first draw. If a player keeps some cards then those cards' spaces are filled with "k", short for "kept".
+Example 1: If a player gets 2-6 spades for his first five cards and decides to throw away the 4 and then gets a 7 of spades then the first 10 fields of cardXValue would be as follows: 2, 3, 4, 5, 6, k, k, 7, k, k
+Example 2: If a player gets 2, 3, 5, 8, J of spades for his first five cards and decides to throw away the 2 and the 3 and then gets a Q and K of spades then the first 10 fields of cardXValue would be as follows: 2, 3, 5, 8, J, Q, K, k, k, k
+Note that it will k in the space of which card was there previously, so in example 2 where the player kept the last 3 cards, the last 3 fields of the first draw (ie. card8-10Value) are replaced with k.

I did not separate this into an extra table because I felt the lost space is not sufficiently large. Also the benefit for searching is far less relevant.

From ac525f4f17779882231a06a2b606d283f5c37d9d Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 9 Oct 2008 00:54:50 +0100 Subject: [PATCH 5/9] p126 - added windows installer sources from Michael --- docs/abbreviations.txt | 2 +- packaging/windows/fpdbEnvInstaller2.au3 | 182 ++++++++++++++++++++++++ 2 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 packaging/windows/fpdbEnvInstaller2.au3 diff --git a/docs/abbreviations.txt b/docs/abbreviations.txt index a1ca4f50..94fd5b16 100644 --- a/docs/abbreviations.txt +++ b/docs/abbreviations.txt @@ -17,7 +17,7 @@ PFR=Pre Flop Raise Postf A=Postflop (ie. flop+turn+river) Aggression% Postf F=Postflop Fold % SD/F=Showdown/Flop=WtSD=How often player went to showdown when he saw the flop -ST=Steal chance (nobody had entered the pot before the player in question, and the player is in cutoff or button position) +ST=Steal chance (nobody had entered the pot before the player in question, and the player is in cutoff, button or SB position) W$wsF=Won $ when he saw flop W$@SD=Won $ at showdown VPI3=Voluntary Put In on 3rd Street (ie. call+complete+raise) diff --git a/packaging/windows/fpdbEnvInstaller2.au3 b/packaging/windows/fpdbEnvInstaller2.au3 new file mode 100644 index 00000000..73b7cb92 --- /dev/null +++ b/packaging/windows/fpdbEnvInstaller2.au3 @@ -0,0 +1,182 @@ +;"%programfiles%\MySQL\MySQL Server 5.0\bin\mysqld" --remove +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Includes +#include + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Variables +Dim $rootPwd = "" +Dim $fpdbUserPwd = "" + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Welcome message and option to abort. Change of working dir to \fpdbEnv +Dim $welcomeBox = MsgBox(4100, "fpdb environment installation", "This installer will automatically create the environment which is needed to run fpdb." & @CRLF & @CRLF & _ +"This means installing and configuring MySQL and Python including some special modules," & @CRLF & "creating a directory for your fpdb user profile and adding gtk to your path." & @CRLF & @CRLF & _ +"You are advised to close all aplications before you proceed." & @CRLF & @CRLF & _ +"DON'T use the keyboard or the mouse during installation unless you are asked to! Just WAIT until the message box 'End of Installation' pops up!" & @CRLF & @CRLF & _ +"If you want to continue the installation click 'Yes'." & @CRLF & "If you want to abort the installation click 'No'.") +If $welcomeBox == 7 Then + Exit ;Exit Installation if 'No' button is clicked in message box +EndIf + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Ask user for mysql root password +GUICreate("FPDB Environment Installation", 600, 400) +GUICtrlCreateLabel("For the installation of the FPDB Environment the MySQL root password and your poker database password are needed.", 20, 25) +GUICtrlCreateLabel("In case MySQL and/or your fpdb poker database aren't installed on your computer, just pick a password.", 20, 50) +GUICtrlCreateLabel("MySQL Root Password:", 20, 100) +$rootPw = GUICtrlCreateInput("your password here", 150, 100, 100, 20) +GUICtrlCreateLabel("Retype password:", 290, 100) +$rootPwR = GUICtrlCreateInput("", 420, 100, 100, 20) +GUICtrlCreateLabel("Poker DB User Password:", 20, 150) +$userPw = GUICtrlCreateInput("your password here", 150, 150, 100, 20) +GUICtrlCreateLabel("Retype password:", 290, 150) +$userPwR = GUICtrlCreateInput("", 420, 150, 100, 20) +$okbutton = GUICtrlCreateButton("OK", 270, 200, 60, 20) +$status = GUICtrlCreateLabel("This is the status line. It describes what the installer is doing at the moment.", 20, 250, 560) +GUISetState(@SW_SHOW) +While 1 + $msg = GUIGetMsg() + Select + Case $msg = $okbutton + If Not(GUICtrlRead($rootPw) == GUICtrlRead($rootPwR)) OR GUICtrlRead($rootPw) == "" Then + MsgBox(16, "", "The passwords don't macht! Try again!", 20, 250) + ElseIf Not(GUICtrlRead($userPw) == GUICtrlRead($userPwR)) OR GUICtrlRead($userPw) == "" Then + MsgBox(16, "", "The passwords don't macht! Try again!", 20, 250) + Else + $rootPwd = GUICtrlRead($rootPw) + $fpdbUserPwd = GUICtrlRead($userPw) + GUICtrlSetState($okbutton, $GUI_DISABLE) + ExitLoop + EndIf + EndSelect +WEnd + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Files Needed +FileInstall("fpdb\7za.exe", "7za.exe") +FileInstall("fpdb\MySQL Server 5.0.7z", "MySQL Server 5.0.7z") +FileInstall("fpdb\gtk.7z", "gtk.7z") +FileInstall("fpdb\python-2.5.2.msi", "python-2.5.2.msi") +FileInstall("fpdb\pymysql.7z", "pymysql.7z") +FileInstall("fpdb\pycairo.7z", "pycairo.7z") +FileInstall("fpdb\pygobject.7z", "pygobject.7z") +FileInstall("fpdb\pygtk.7z", "pygtk.7z") +FileInstall("fpdb\psykopg2.7z", "psykopg2.7z") +FileInstall("fpdb\pywin32.7z", "pywin32.7z") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; MySQL Install and configuration +If NOT FileExists(EnvGet("programfiles") & "\MySQL\MySQL Server 5.0\bin\mysql.exe") Then + GUICtrlSetData($status, "Installing MySQL Database Management System and creating MySQL windows service.") + RunWait('7za.exe x "MySQL Server 5.0.7z" -o"' & EnvGet("programfiles") & '\MySQL\" -aoa', "", @SW_HIDE) + RunWait('"' & EnvGet("programfiles") & '\MySQL\MySQL Server 5.0\bin\mysqld" --install', "", @SW_HIDE) + RunWait("net start mysql", "", @SW_HIDE) + ProcessWait("mysqld.exe") + GUICtrlSetData($status, "Securing important MySQL user accounts.") + Sleep(5000) + FileWrite(EnvGet("programfiles") & "\MySQL\MySQL Server 5.0\bin\mysql1.txt", "DELETE FROM mysql.user WHERE User = '';" & @CRLF) + FileWrite(EnvGet("programfiles") & "\MySQL\MySQL Server 5.0\bin\mysql1.txt", "UPDATE mysql.user SET Password = PASSWORD('" & $rootPwd & "') WHERE User = 'root';" & @CRLF) + FileWrite(EnvGet("programfiles") & "\MySQL\MySQL Server 5.0\bin\mysql1.txt", "FLUSH PRIVILEGES;" & @CRLF) + RunWait(@ComSpec & ' /c mysql --user=root -e "source mysql1.txt"', EnvGet("programfiles") & '\MySQL\MySQL Server 5.0\bin\', @SW_HIDE) +EndIf +If NOT FileExists(EnvGet("programfiles") & "\MySQL\MySQL Server 5.0\data\fpdb") Then + GUICtrlSetData($status, "Creating fpdb database.") + FileWrite(EnvGet("programfiles") & "\MySQL\MySQL Server 5.0\bin\mysql2.txt", "create database fpdb;" & @CRLF) + RunWait(@ComSpec & ' /c mysql --user=root --password=' & $rootPwd & ' -e "source mysql2.txt"', EnvGet("programfiles") & '\MySQL\MySQL Server 5.0\bin\', @SW_HIDE) +EndIf +GUICtrlSetData($status, "Creating MySQL user 'fpdb' and granting privileges.") +FileWrite(EnvGet("programfiles") & "\MySQL\MySQL Server 5.0\bin\mysql3.txt", "GRANT ALL PRIVILEGES ON fpdb.* TO 'fpdb'@'localhost' IDENTIFIED BY '" & $fpdbUserPwd & "' WITH GRANT OPTION;" & @CRLF) +RunWait(@ComSpec & ' /c mysql --user=root --password=' & $rootPwd & ' -e "source mysql3.txt"', EnvGet("programfiles") & '\MySQL\MySQL Server 5.0\bin\', @SW_HIDE) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; GTK +GUICtrlSetData($status, "Installing GTK.") +RunWait('7za.exe x "gtk.7z" -oc:\ -aoa', "", @SW_HIDE) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Python 2.5 Installation +GUICtrlSetData($status, "Installing Python 2.5.2") +RunWait("msiexec /quiet /i python-2.5.2.msi", "", @SW_HIDE) ;Install Python without user interaction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; pymysql +GUICtrlSetData($status, "Installing pymysql") +RunWait('7za.exe x "pymysql.7z" -oC:\Python25\Lib\site-packages -aoa', "", @SW_HIDE) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; pycairo +GUICtrlSetData($status, "Installing pycairo") +RunWait('7za.exe x "pycairo.7z" -oC:\ -aoa', "", @SW_HIDE) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; pygobject +GUICtrlSetData($status, "Installing pygobject") +RunWait('7za.exe x "pygobject.7z" -oC:\ -aoa', "", @SW_HIDE) +RunWait(@ComSpec & ' /c C:\Python25\python.exe pygobject_postinstall.py -install', "C:\Python25\SCRIPTS", @SW_HIDE) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; pygtk +GUICtrlSetData($status, "Installing pygtk") +RunWait('7za.exe x "pygtk.7z" -oC:\ -aoa', "", @SW_HIDE) +RunWait(@ComSpec & ' /c C:\Python25\python.exe pygtk_postinstall.py -install', "C:\Python25\SCRIPTS", @SW_HIDE) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; psykopg2 +GUICtrlSetData($status, "Installing psykopg2") +RunWait('7za.exe x "psykopg2.7z" -oC:\ -aoa', "", @SW_HIDE) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; pywin32 +GUICtrlSetData($status, "Installing pywin32 for Python 2.5") +RunWait('7za.exe x "pywin32.7z" -oC:\ -aoa', "", @SW_HIDE) +RunWait(@ComSpec & ' /c C:\Python25\python.exe pywin32_postinstall.py -install', "C:\Python25\SCRIPTS", @SW_HIDE) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Creating directory for default.conf and coping the file into it +GUICtrlSetData($status, "Creating and installing default.conf file.") +$file = FileOpen("default.conf", 1) +FileWriteLine($file, "db-backend=2" & @CRLF) +FileWriteLine($file, "db-host=localhost" & @CRLF) +FileWriteLine($file, "db-databaseName=fpdb" & @CRLF) +FileWriteLine($file, "db-user=fpdb" & @CRLF) +FileWriteLine($file, "db-password=" & $fpdbUserPwd & @CRLF) +FileWriteLine($file, "tv-combinedStealFold=True" & @CRLF) +FileWriteLine($file, "tv-combined2B3B=True" & @CRLF) +FileWriteLine($file, "tv-combinedPostflop=True" & @CRLF) +FileWriteLine($file, "bulkImport-defaultPath=default" & @CRLF) +FileWriteLine($file, "hud-defaultPath=default" & @CRLF) +FileWriteLine($file, "imp-callFpdbHud=True" & @CRLF) +FileClose($file) +FileCopy("default.conf", EnvGet("appdata") & "\fpdb\", 9) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Registry +GUICtrlSetData($status, "Creating backup of path variable and adding GTK and Python to path variable.") +RegWrite("HKEY_CURRENT_USER\Environment", "PathBackup", "REG_SZ", RegRead("HKEY_CURRENT_USER\Environment", "path")) +RegWrite("HKEY_CURRENT_USER\Environment", "path", "REG_SZ", RegRead("HKEY_CURRENT_USER\Environment", "path") & ';C:\gtk\bin;C:\Python25') + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Delete installation files +GUICtrlSetData($status, "Deleting temporary installation files.") +FileDelete("7za.exe") +FileDelete("MySQL Server 5.0.7z") +FileDelete("gtk.7z") +FileDelete("python-2.5.2.msi") +FileDelete("pymysql.7z") +FileDelete("pycairo.7z") +FileDelete("pygobject.7z") +FileDelete("pygtk.7z") +FileDelete("psykopg2.7z") +FileDelete("pywin32.7z") +FileDelete("default.conf") + +$goodbyeBox = MsgBox(4100, "End of Installation", "The Computer needs to be restarted for the installation to be complete." & @CRLF & _ + "After that you can start fpdb by double clicking the file fpdb.py which is located in the folder pyfpdb of the fpdb build you downloaded." & @CRLF & _ + "If you haven't downloaded fpdb yet you can do it here: http://ovh.dl.sourceforge.net/sourceforge/fpdb/fpdb-alpha2-p68.zip" & @CRLF & @CRLF & _ + "If you want to restart the computer now click 'Yes'." & @CRLF & _ + "If you want to restart the computer later click 'No'.") +If $goodbyeBox == 7 Then + Exit ;Exit Installation if 'No' button is clicked in message box +EndIf +Run("shutdown.exe -r -t 0") \ No newline at end of file From bc76d4baf099ce405f3be075ae4dd379cf579049 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 9 Oct 2008 05:04:31 +0100 Subject: [PATCH 6/9] p127 - fixed stud importer bugs missing hole cards and added one blackbox hand verification for studhilo. --- pyfpdb/fpdb_parse_logic.py | 4 ++ pyfpdb/fpdb_simple.py | 21 ++++-- regression-test/ps-studhilo-ring-showdown.txt | 67 +++++++++++++++++++ regression-test/ps.15043388146.expected.txt | 43 ++++++++++++ regression-test/regression-test.sh | 26 +++---- 5 files changed, 140 insertions(+), 21 deletions(-) create mode 100644 regression-test/ps-studhilo-ring-showdown.txt create mode 100644 regression-test/ps.15043388146.expected.txt diff --git a/pyfpdb/fpdb_parse_logic.py b/pyfpdb/fpdb_parse_logic.py index 8ee8f5b2..c6e9ad9f 100644 --- a/pyfpdb/fpdb_parse_logic.py +++ b/pyfpdb/fpdb_parse_logic.py @@ -86,6 +86,10 @@ def mainParser(db, cursor, site, category, hand): for i in range(len(hand)): if (lineTypes[i]=="cards"): fpdb_simple.parseCardLine (site, category, lineStreets[i], hand[i], names, cardValues, cardSuits, boardValues, boardSuits) + #if category=="studhilo": + # print "hand[i]:", hand[i] + # print "cardValues:", cardValues + # print "cardSuits:", cardSuits elif (lineTypes[i]=="action"): fpdb_simple.parseActionLine (site, base, isTourney, hand[i], lineStreets[i], playerIDs, names, actionTypes, allIns, actionAmounts, actionNos, actionTypeByNo) elif (lineTypes[i]=="win"): diff --git a/pyfpdb/fpdb_simple.py b/pyfpdb/fpdb_simple.py index 5d26df28..6187d536 100644 --- a/pyfpdb/fpdb_simple.py +++ b/pyfpdb/fpdb_simple.py @@ -730,18 +730,31 @@ def parseCardLine(site, category, street, line, names, cardValues, cardSuits, bo raise FpdbError("read too many/too few holecards in parseCardLine") elif (category=="razz" or category=="studhi" or category=="studhilo"): if (line.find("shows")==-1): - cardValues[playerNo][street-1]=line[pos:pos+1] - cardSuits[playerNo][street-1]=line[pos+1:pos+2] + #print "parseCardLine(in stud if), street:", street + if line[pos+2]=="]": #-> not (hero and 3rd street) + cardValues[playerNo][street+2]=line[pos:pos+1] + cardSuits[playerNo][street+2]=line[pos+1:pos+2] + else: + #print "hero card1:", line[pos:pos+2], "hero card2:", line[pos+3:pos+5], "hero card3:", line[pos+6:pos+8], + cardValues[playerNo][street]=line[pos:pos+1] + cardSuits[playerNo][street]=line[pos+1:pos+2] + cardValues[playerNo][street+1]=line[pos+3:pos+4] + cardSuits[playerNo][street+1]=line[pos+4:pos+5] + cardValues[playerNo][street+2]=line[pos+6:pos+7] + cardSuits[playerNo][street+2]=line[pos+7:pos+8] else: + print "parseCardLine(in stud else), street:", street cardValues[playerNo][0]=line[pos:pos+1] cardSuits[playerNo][0]=line[pos+1:pos+2] pos+=3 cardValues[playerNo][1]=line[pos:pos+1] cardSuits[playerNo][1]=line[pos+1:pos+2] - if street==7: - pos+=15 + if street==4: + pos=pos=line.rfind("]")-2 cardValues[playerNo][6]=line[pos:pos+1] cardSuits[playerNo][6]=line[pos+1:pos+2] + print "cardValues:", cardValues + print "cardSuits:", cardSuits else: print "line:",line,"street:",street raise FpdbError("invalid category") diff --git a/regression-test/ps-studhilo-ring-showdown.txt b/regression-test/ps-studhilo-ring-showdown.txt new file mode 100644 index 00000000..7c69615b --- /dev/null +++ b/regression-test/ps-studhilo-ring-showdown.txt @@ -0,0 +1,67 @@ +PokerStars Game #15043388146: 7 Card Stud Hi/Lo Limit ($0.10/$0.20) - 2008/02/03 - 22:04:15 (ET) +Table 'Lydia' 8-max +Seat 2: olimpicon99 ($5.31 in chips) +Seat 4: PokerPig55 ($1.58 in chips) +Seat 5: VISTA GIRL ($0.83 in chips) +Seat 6: br1an ($5.10 in chips) +Seat 7: steffen780 ($4 in chips) +Seat 8: willowdale ($3.92 in chips) +olimpicon99: posts the ante $0.02 +PokerPig55: posts the ante $0.02 +VISTA GIRL: posts the ante $0.02 +br1an: posts the ante $0.02 +steffen780: posts the ante $0.02 +willowdale: posts the ante $0.02 +*** 3rd STREET *** +Dealt to olimpicon99 [8c] +Dealt to PokerPig55 [Kh] +Dealt to VISTA GIRL [8h] +Dealt to br1an [2d] +Dealt to steffen780 [Kc 9h 9c] +Dealt to willowdale [5s] +br1an: brings in for $0.05 +steffen780: calls $0.05 +willowdale: calls $0.05 +olimpicon99: folds +olimpicon99 leaves the table +PokerPig55: folds +VISTA GIRL: folds +*** 4th STREET *** +Dealt to br1an [2d] [Qh] +Dealt to steffen780 [Kc 9h 9c] [5c] +Dealt to willowdale [5s] [4s] +br1an: checks +steffen780: checks +willowdale: checks +*** 5th STREET *** +Dealt to br1an [2d Qh] [6d] +Dealt to steffen780 [Kc 9h 9c 5c] [8s] +Dealt to willowdale [5s 4s] [Ad] +willowdale: bets $0.20 +br1an: calls $0.20 +steffen780: folds +*** 6th STREET *** +Dealt to br1an [2d Qh 6d] [6h] +Dealt to willowdale [5s 4s Ad] [5h] +br1an: checks +willowdale: checks +*** RIVER *** +br1an: checks +willowdale: bets $0.20 +br1an: calls $0.20 +*** SHOW DOWN *** +willowdale: shows [3s 4d 5s 4s Ad 5h 2c] (HI: a straight, Ace to Five; LO: 5,4,3,2,A) +br1an: shows [4c 7d 2d Qh 6d 6h 2h] (HI: two pair, Sixes and Deuces) +willowdale collected $0.51 from pot +willowdale collected $0.51 from pot +*** SUMMARY *** +Total pot $1.07 | Rake $0.05 +Seat 2: olimpicon99 folded on the 3rd Street (didn't bet) +Seat 4: PokerPig55 folded on the 3rd Street (didn't bet) +Seat 5: VISTA GIRL folded on the 3rd Street (didn't bet) +Seat 6: br1an showed [4c 7d 2d Qh 6d 6h 2h] and lost with HI: two pair, Sixes and Deuces +Seat 7: steffen780 folded on the 5th Street +Seat 8: willowdale showed [3s 4d 5s 4s Ad 5h 2c] and won ($1.02) with HI: a straight, Ace to Five; LO: 5,4,3,2,A + + + diff --git a/regression-test/ps.15043388146.expected.txt b/regression-test/ps.15043388146.expected.txt new file mode 100644 index 00000000..639baa1f --- /dev/null +++ b/regression-test/ps.15043388146.expected.txt @@ -0,0 +1,43 @@ +Connected to MySQL on localhost. Print Hand Utility +options.site: PokerStars siteId: 2 + +From Table Hands +================ +handId: 4 tableName: Lydia siteHandNo: 15043388146 gametypeId: 2 handStart: 2008-02-04 03:04:15 seats: 6 maxSeats: 8 + +From Table Gametypes +==================== +type: ring base: stud category: studhilo limitType: fl hiLo: s + sbet: 10 bbet: 20 + +From Table BoardCards +===================== + +From Table HandsPlayers +======================= +playerName:olimpicon99 playerStartcash:531 ante:2 cards:?? ?? 8c ?? ?? ?? ?? winnings:0 rake:0 +playerName:PokerPig55 playerStartcash:158 ante:2 cards:?? ?? Kh ?? ?? ?? ?? winnings:0 rake:0 +playerName:VISTA GIRL playerStartcash:83 ante:2 cards:?? ?? 8 ?? ?? ?? ??h winnings:0 rake:0 +playerName:br1an playerStartcash:510 ante:2 cards:4c 7d 2d Qh 6d 6h 2h winnings:0 rake:0 +playerName:steffen780 playerStartcash:400 ante:2 cards:Kc 9h 9c 5c 8s ?? ?? winnings:0 rake:0 +playerName:willowdale playerStartcash:392 ante:2 cards:3s 4d 5s 4s Ad 5h 2c winnings:102 rake:5 + +From Table HandsActions +======================= +#playerName:olimpicon99 street:0 streetActionNo:3 action:fold amount:0 +#playerName:PokerPig55 street:0 streetActionNo:4 action:fold amount:0 +#playerName:VISTA GIRL street:0 streetActionNo:5 action:fold amount:0 +#playerName:br1an street:0 streetActionNo:0 action:blind amount:0 +#playerName:br1an street:1 streetActionNo:0 action:check amount:0 +#playerName:br1an street:2 streetActionNo:1 action:call amount:0 +#playerName:br1an street:3 streetActionNo:0 action:check amount:0 +#playerName:br1an street:4 streetActionNo:0 action:check amount:0 +#playerName:br1an street:4 streetActionNo:2 action:call amount:0 +#playerName:steffen780 street:0 streetActionNo:1 action:call amount:0 +#playerName:steffen780 street:1 streetActionNo:1 action:check amount:0 +#playerName:steffen780 street:2 streetActionNo:2 action:fold amount:0 +#playerName:willowdale street:0 streetActionNo:2 action:call amount:0 +#playerName:willowdale street:1 streetActionNo:2 action:check amount:0 +#playerName:willowdale street:2 streetActionNo:0 action:bet amount:0 +#playerName:willowdale street:3 streetActionNo:1 action:check amount:0 +#playerName:willowdale street:4 streetActionNo:1 action:bet amount:0 diff --git a/regression-test/regression-test.sh b/regression-test/regression-test.sh index 5bf93149..1609b8b8 100755 --- a/regression-test/regression-test.sh +++ b/regression-test/regression-test.sh @@ -20,30 +20,22 @@ echo "Please note for this to work you need to work on an empty database, otherw rm *.found.txt ../pyfpdb/fpdb_import.py -p$1 --file=ps-lhe-ring-3hands.txt -x ../pyfpdb/fpdb_import.py -p$1 --file=ps-lhe-ring-3hands.txt -x -#../pyfpdb/fpdb_import.py -p$1 --file=ftp-stud-hilo-ring-001.txt -x -#../pyfpdb/fpdb_import.py -p$1 --file=ftp-omaha-hi-pl-ring-001-005.txt -x +../pyfpdb/fpdb_import.py -p$1 --file=ps-studhilo-ring-showdown.txt -x echo "it should've reported first that it stored 3, then that it had 3 duplicates" -#echo " then 1 stored, then 5 stored" +echo " then 1 stored" -./PrintHand.py -p$1 --hand=14519394979 > ps.14519394979.found.txt && colordiff ps.14519394979.found.txt ps.14519394979.expected.txt -./PrintHand.py -p$1 --hand=14519420999 > ps.14519420999.found.txt && colordiff ps.14519420999.found.txt ps.14519420999.expected.txt -./PrintHand.py -p$1 --hand=14519433154 > ps.14519433154.found.txt && colordiff ps.14519433154.found.txt ps.14519433154.expected.txt +#./PrintHand.py -p$1 --hand=14519394979 > ps.14519394979.found.txt && colordiff ps.14519394979.found.txt ps.14519394979.expected.txt +#./PrintHand.py -p$1 --hand=14519420999 > ps.14519420999.found.txt && colordiff ps.14519420999.found.txt ps.14519420999.expected.txt +#./PrintHand.py -p$1 --hand=14519433154 > ps.14519433154.found.txt && colordiff ps.14519433154.found.txt ps.14519433154.expected.txt +./PrintHand.py -p$1 --hand=15043388146 > ps.15043388146.found.txt && colordiff ps.15043388146.found.txt ps.15043388146.expected.txt -./PrintPlayerHudData.py -p$1 -oM > ps-flags-M-2hands.found.txt && colordiff ps-flags-M-2hands.found.txt ps-flags-M-2hands.expected.txt -./PrintPlayerHudData.py -p$1 -nPlayer_5 -oB > ps-flags-B-1hands.found.txt && colordiff ps-flags-B-1hands.found.txt ps-flags-B-1hands.expected.txt +#./PrintPlayerHudData.py -p$1 -oM > ps-flags-M-2hands.found.txt && colordiff ps-flags-M-2hands.found.txt ps-flags-M-2hands.expected.txt +#./PrintPlayerHudData.py -p$1 -nPlayer_5 -oB > ps-flags-B-1hands.found.txt && colordiff ps-flags-B-1hands.found.txt ps-flags-B-1hands.expected.txt ../pyfpdb/fpdb_import.py -p$1 --file=ps-lhe-ring-call-3B-preflop-cb-no2b.txt -x echo "it should've now reported another successful store of 1 hand" -./PrintPlayerHudData.py -p$1 -nplayer3 -oE -e10 -b25 > ps-flags-CBflop.found.txt && colordiff ps-flags-CBflop.found.txt ps-flags-CBflop.expected.txt - -#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6367428246 > ftp.6367428246.found.txt && colordiff ftp.6367428246.found.txt ftp.6367428246.expected.txt - -#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929537410 > ftp.6929537410.found.txt && colordiff ftp.6929537410.found.txt ftp.6929537410.expected.txt -#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929553738 > ftp.6929553738.found.txt && colordiff ftp.6929553738.found.txt ftp.6929553738.expected.txt -#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929572212 > ftp.6929572212.found.txt && colordiff ftp.6929572212.found.txt ftp.6929572212.expected.txt -#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929576743 > ftp.6929576743.found.txt && colordiff ftp.6929576743.found.txt ftp.6929576743.expected.txt -#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929587483 > ftp.6929587483.found.txt && colordiff ftp.6929587483.found.txt ftp.6929587483.expected.txt +#./PrintPlayerHudData.py -p$1 -nplayer3 -oE -e10 -b25 > ps-flags-CBflop.found.txt && colordiff ps-flags-CBflop.found.txt ps-flags-CBflop.expected.txt echo "if everything was printed as expected this worked" From 5dfa5061cf02e9a5756d4ca1bc7304b1ec73f2db Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 9 Oct 2008 05:30:09 +0100 Subject: [PATCH 7/9] p128 - corrected 2 bugs in PrintHand.py. finished stud blackbox testdata. --- pyfpdb/fpdb_parse_logic.py | 1 + pyfpdb/fpdb_save_to_db.py | 1 + pyfpdb/fpdb_simple.py | 10 +++--- regression-test/PrintHand.py | 4 +-- regression-test/ps.15043388146.expected.txt | 38 ++++++++++----------- regression-test/regression-test.sh | 21 +++++++----- 6 files changed, 41 insertions(+), 34 deletions(-) diff --git a/pyfpdb/fpdb_parse_logic.py b/pyfpdb/fpdb_parse_logic.py index c6e9ad9f..2408516e 100644 --- a/pyfpdb/fpdb_parse_logic.py +++ b/pyfpdb/fpdb_parse_logic.py @@ -112,6 +112,7 @@ def mainParser(db, cursor, site, category, hand): tableResult=fpdb_simple.parseTableLine(site, base, hand[0]) maxSeats=tableResult['maxSeats'] tableName=tableResult['tableName'] + #print "before part5, antes:", antes #part 5: final preparations, then call fpdb_save_to_db.saveHoldem with # the arrays as they are - that file will fill them. diff --git a/pyfpdb/fpdb_save_to_db.py b/pyfpdb/fpdb_save_to_db.py index 5a06b1aa..9033c2bb 100644 --- a/pyfpdb/fpdb_save_to_db.py +++ b/pyfpdb/fpdb_save_to_db.py @@ -26,6 +26,7 @@ def ring_stud(cursor, base, category, site_hand_no, gametype_id, hand_start_time hands_id=fpdb_simple.storeHands(cursor, site_hand_no, gametype_id, hand_start_time, names, tableName, maxSeats) + #print "before calling store_hands_players_stud, antes:", antes hands_players_ids=fpdb_simple.store_hands_players_stud(cursor, hands_id, player_ids, start_cashes, antes, card_values, card_suits, winnings, rakes, seatNos) diff --git a/pyfpdb/fpdb_simple.py b/pyfpdb/fpdb_simple.py index 6187d536..ea9a4ee4 100644 --- a/pyfpdb/fpdb_simple.py +++ b/pyfpdb/fpdb_simple.py @@ -579,6 +579,7 @@ def parseActionAmount(line, atype, site, isTourney): else: if not isTourney: pos=line.rfind("$")+1 + #print "parseActionAmount, line:", line, "line[pos:]:", line[pos:] amount=float2int(line[pos:]) else: #print "line:"+line+"EOL" @@ -676,7 +677,6 @@ def parseActionType(line): #parses the ante out of the given line and checks which player paid it, updates antes accordingly. def parseAnteLine(line, site, isTourney, names, antes): - #print "parseAnteLine line: ",line for i in range(len(names)): if (line.startswith(names[i].encode("latin-1"))): #found the ante'er pos=line.rfind("$")+1 @@ -690,6 +690,7 @@ def parseAnteLine(line, site, isTourney, names, antes): pos1=line.rfind("ante")+5 pos2=line.find(" ",pos1) antes[i]+=int(line[pos1:pos2]) + #print "parseAnteLine line: ", line, "antes[i]", antes[i], "antes", antes #end def parseAntes #returns the buyin of a tourney in cents @@ -743,7 +744,7 @@ def parseCardLine(site, category, street, line, names, cardValues, cardSuits, bo cardValues[playerNo][street+2]=line[pos+6:pos+7] cardSuits[playerNo][street+2]=line[pos+7:pos+8] else: - print "parseCardLine(in stud else), street:", street + #print "parseCardLine(in stud else), street:", street cardValues[playerNo][0]=line[pos:pos+1] cardSuits[playerNo][0]=line[pos+1:pos+2] pos+=3 @@ -753,8 +754,8 @@ def parseCardLine(site, category, street, line, names, cardValues, cardSuits, bo pos=pos=line.rfind("]")-2 cardValues[playerNo][6]=line[pos:pos+1] cardSuits[playerNo][6]=line[pos+1:pos+2] - print "cardValues:", cardValues - print "cardSuits:", cardSuits + #print "cardValues:", cardValues + #print "cardSuits:", cardSuits else: print "line:",line,"street:",street raise FpdbError("invalid category") @@ -1280,6 +1281,7 @@ def store_hands_players_stud(cursor, hands_id, player_ids, start_cashes, antes, card_values, card_suits, winnings, rakes, seatNos): #stores hands_players rows for stud/razz games. returns an array of the resulting IDs result=[] + #print "before inserts in store_hands_players_stud, antes:", antes for i in range (len(player_ids)): cursor.execute ("""INSERT INTO HandsPlayers (handId, playerId, startCash, ante, diff --git a/regression-test/PrintHand.py b/regression-test/PrintHand.py index e29414ba..c8ecf67f 100755 --- a/regression-test/PrintHand.py +++ b/regression-test/PrintHand.py @@ -148,7 +148,7 @@ for i in range (len(handsPlayers)): else: printstr+=ful.cards2String(line[5:13]) elif (category=="razz" or category=="studhi" or category=="studhilo"): - printstr+=" ante:"+str(line[3])+" cards:" + printstr+=" ante:"+str(line[4])+" cards:" printstr+=ful.cards2String(line[5:19]) else: print "TODO: raise error, print_hand.py" @@ -167,7 +167,7 @@ for i in range (len(handsPlayers)): line=handsActions[j][2:] printstr="playerName:"+playerNames[i] printstr+=" street:"+ful.street_int2String(category, line[0])+" streetActionNo:"+str(line[1])+" action:"+line[2] - printstr+=" amount:"+str(line[3]) + printstr+=" amount:"+str(line[4]) print printstr cursor.close() diff --git a/regression-test/ps.15043388146.expected.txt b/regression-test/ps.15043388146.expected.txt index 639baa1f..300af5ed 100644 --- a/regression-test/ps.15043388146.expected.txt +++ b/regression-test/ps.15043388146.expected.txt @@ -3,7 +3,7 @@ options.site: PokerStars siteId: 2 From Table Hands ================ -handId: 4 tableName: Lydia siteHandNo: 15043388146 gametypeId: 2 handStart: 2008-02-04 03:04:15 seats: 6 maxSeats: 8 +handId: 5 tableName: Lydia siteHandNo: 15043388146 gametypeId: 3 handStart: 2008-02-04 03:04:15 seats: 6 maxSeats: 8 From Table Gametypes ==================== @@ -17,27 +17,27 @@ From Table HandsPlayers ======================= playerName:olimpicon99 playerStartcash:531 ante:2 cards:?? ?? 8c ?? ?? ?? ?? winnings:0 rake:0 playerName:PokerPig55 playerStartcash:158 ante:2 cards:?? ?? Kh ?? ?? ?? ?? winnings:0 rake:0 -playerName:VISTA GIRL playerStartcash:83 ante:2 cards:?? ?? 8 ?? ?? ?? ??h winnings:0 rake:0 +playerName:VISTA GIRL playerStartcash:83 ante:2 cards:?? ?? 8h ?? ?? ?? ?? winnings:0 rake:0 playerName:br1an playerStartcash:510 ante:2 cards:4c 7d 2d Qh 6d 6h 2h winnings:0 rake:0 playerName:steffen780 playerStartcash:400 ante:2 cards:Kc 9h 9c 5c 8s ?? ?? winnings:0 rake:0 playerName:willowdale playerStartcash:392 ante:2 cards:3s 4d 5s 4s Ad 5h 2c winnings:102 rake:5 From Table HandsActions ======================= -#playerName:olimpicon99 street:0 streetActionNo:3 action:fold amount:0 -#playerName:PokerPig55 street:0 streetActionNo:4 action:fold amount:0 -#playerName:VISTA GIRL street:0 streetActionNo:5 action:fold amount:0 -#playerName:br1an street:0 streetActionNo:0 action:blind amount:0 -#playerName:br1an street:1 streetActionNo:0 action:check amount:0 -#playerName:br1an street:2 streetActionNo:1 action:call amount:0 -#playerName:br1an street:3 streetActionNo:0 action:check amount:0 -#playerName:br1an street:4 streetActionNo:0 action:check amount:0 -#playerName:br1an street:4 streetActionNo:2 action:call amount:0 -#playerName:steffen780 street:0 streetActionNo:1 action:call amount:0 -#playerName:steffen780 street:1 streetActionNo:1 action:check amount:0 -#playerName:steffen780 street:2 streetActionNo:2 action:fold amount:0 -#playerName:willowdale street:0 streetActionNo:2 action:call amount:0 -#playerName:willowdale street:1 streetActionNo:2 action:check amount:0 -#playerName:willowdale street:2 streetActionNo:0 action:bet amount:0 -#playerName:willowdale street:3 streetActionNo:1 action:check amount:0 -#playerName:willowdale street:4 streetActionNo:1 action:bet amount:0 +playerName:olimpicon99 street:0 streetActionNo:3 action:fold amount:0 +playerName:PokerPig55 street:0 streetActionNo:4 action:fold amount:0 +playerName:VISTA GIRL street:0 streetActionNo:5 action:fold amount:0 +playerName:br1an street:0 streetActionNo:0 action:blind amount:5 +playerName:br1an street:1 streetActionNo:0 action:check amount:0 +playerName:br1an street:2 streetActionNo:1 action:call amount:20 +playerName:br1an street:3 streetActionNo:0 action:check amount:0 +playerName:br1an street:4 streetActionNo:0 action:check amount:0 +playerName:br1an street:4 streetActionNo:2 action:call amount:20 +playerName:steffen780 street:0 streetActionNo:1 action:call amount:5 +playerName:steffen780 street:1 streetActionNo:1 action:check amount:0 +playerName:steffen780 street:2 streetActionNo:2 action:fold amount:0 +playerName:willowdale street:0 streetActionNo:2 action:call amount:5 +playerName:willowdale street:1 streetActionNo:2 action:check amount:0 +playerName:willowdale street:2 streetActionNo:0 action:bet amount:20 +playerName:willowdale street:3 streetActionNo:1 action:check amount:0 +playerName:willowdale street:4 streetActionNo:1 action:bet amount:20 diff --git a/regression-test/regression-test.sh b/regression-test/regression-test.sh index 1609b8b8..6ef45066 100755 --- a/regression-test/regression-test.sh +++ b/regression-test/regression-test.sh @@ -20,22 +20,25 @@ echo "Please note for this to work you need to work on an empty database, otherw rm *.found.txt ../pyfpdb/fpdb_import.py -p$1 --file=ps-lhe-ring-3hands.txt -x ../pyfpdb/fpdb_import.py -p$1 --file=ps-lhe-ring-3hands.txt -x -../pyfpdb/fpdb_import.py -p$1 --file=ps-studhilo-ring-showdown.txt -x echo "it should've reported first that it stored 3, then that it had 3 duplicates" -echo " then 1 stored" -#./PrintHand.py -p$1 --hand=14519394979 > ps.14519394979.found.txt && colordiff ps.14519394979.found.txt ps.14519394979.expected.txt -#./PrintHand.py -p$1 --hand=14519420999 > ps.14519420999.found.txt && colordiff ps.14519420999.found.txt ps.14519420999.expected.txt -#./PrintHand.py -p$1 --hand=14519433154 > ps.14519433154.found.txt && colordiff ps.14519433154.found.txt ps.14519433154.expected.txt -./PrintHand.py -p$1 --hand=15043388146 > ps.15043388146.found.txt && colordiff ps.15043388146.found.txt ps.15043388146.expected.txt +./PrintHand.py -p$1 --hand=14519394979 > ps.14519394979.found.txt && colordiff ps.14519394979.found.txt ps.14519394979.expected.txt +./PrintHand.py -p$1 --hand=14519420999 > ps.14519420999.found.txt && colordiff ps.14519420999.found.txt ps.14519420999.expected.txt +./PrintHand.py -p$1 --hand=14519433154 > ps.14519433154.found.txt && colordiff ps.14519433154.found.txt ps.14519433154.expected.txt -#./PrintPlayerHudData.py -p$1 -oM > ps-flags-M-2hands.found.txt && colordiff ps-flags-M-2hands.found.txt ps-flags-M-2hands.expected.txt -#./PrintPlayerHudData.py -p$1 -nPlayer_5 -oB > ps-flags-B-1hands.found.txt && colordiff ps-flags-B-1hands.found.txt ps-flags-B-1hands.expected.txt +./PrintPlayerHudData.py -p$1 -oM > ps-flags-M-2hands.found.txt && colordiff ps-flags-M-2hands.found.txt ps-flags-M-2hands.expected.txt +./PrintPlayerHudData.py -p$1 -nPlayer_5 -oB > ps-flags-B-1hands.found.txt && colordiff ps-flags-B-1hands.found.txt ps-flags-B-1hands.expected.txt ../pyfpdb/fpdb_import.py -p$1 --file=ps-lhe-ring-call-3B-preflop-cb-no2b.txt -x echo "it should've now reported another successful store of 1 hand" -#./PrintPlayerHudData.py -p$1 -nplayer3 -oE -e10 -b25 > ps-flags-CBflop.found.txt && colordiff ps-flags-CBflop.found.txt ps-flags-CBflop.expected.txt +./PrintPlayerHudData.py -p$1 -nplayer3 -oE -e10 -b25 > ps-flags-CBflop.found.txt && colordiff ps-flags-CBflop.found.txt ps-flags-CBflop.expected.txt + + +../pyfpdb/fpdb_import.py -p$1 --file=ps-studhilo-ring-showdown.txt -x +echo "it should've now reported another successful store of 1 hand" +./PrintHand.py -p$1 --hand=15043388146 > ps.15043388146.found.txt && colordiff ps.15043388146.found.txt ps.15043388146.expected.txt + echo "if everything was printed as expected this worked" From 14eb29f70283f799a5eed66f74ab2224835b2557 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 9 Oct 2008 06:15:50 +0100 Subject: [PATCH 8/9] p129 - fixed stud river in HudCache generation PrintPlayerHud... now uses bigbet rather than bigblind to determine gametype. --- pyfpdb/fpdb_simple.py | 42 ++++++++++-- regression-test/PrintPlayerHudData.py | 8 +-- .../ps-flags-B-1hands.expected.txt | 6 +- regression-test/ps-flags-CBflop.expected.txt | 2 +- .../ps-flags-M-2hands.expected.txt | 2 +- .../ps-flags-studhilo.expected.txt | 68 +++++++++++++++++++ regression-test/regression-test.sh | 3 +- 7 files changed, 117 insertions(+), 14 deletions(-) create mode 100644 regression-test/ps-flags-studhilo.expected.txt diff --git a/pyfpdb/fpdb_simple.py b/pyfpdb/fpdb_simple.py index ea9a4ee4..b63405fe 100644 --- a/pyfpdb/fpdb_simple.py +++ b/pyfpdb/fpdb_simple.py @@ -1526,10 +1526,26 @@ def generateHudCacheData(player_ids, base, category, action_types, allIns, actio if (len(action_types[3][player])>0 or isAllIn): myStreet3Seen=True - mySawShowdown=True - for count in range (len(action_types[3][player])): - if action_types[3][player][count]=="fold": - mySawShowdown=False + print "base:", base + if base=="hold": + mySawShowdown=True + for count in range (len(action_types[3][player])): + if action_types[3][player][count]=="fold": + mySawShowdown=False + else: + print "in else" + for i in range(len(allIns[3][player])): + if allIns[3][player][i]: + isAllIn=True + if (len(action_types[4][player])>0 or isAllIn): + print "in if" + myStreet4Seen=True + + mySawShowdown=True + for count in range (len(action_types[4][player])): + if action_types[4][player][count]=="fold": + mySawShowdown=False + #flop stuff street=1 @@ -1585,6 +1601,24 @@ def generateHudCacheData(player_ids, base, category, action_types, allIns, actio if action_types[street][player][countOtherFold]=="fold": myFoldToOtherRaisedStreet3=True + #stud river stuff - copy of flop with different vars + street=4 + if myStreet4Seen: + for count in range(len(action_types[street][player])): + if action_types[street][player][count]=="bet": + myStreet4Aggr=True + + for otherPlayer in range (len(player_ids)): + if player==otherPlayer: + pass + else: + for countOther in range (len(action_types[street][otherPlayer])): + if action_types[street][otherPlayer][countOther]=="bet": + myOtherRaisedStreet4=True + for countOtherFold in range (len(action_types[street][player])): + if action_types[street][player][countOtherFold]=="fold": + myFoldToOtherRaisedStreet4=True + if winnings[player]!=0: if myStreet1Seen: myWonWhenSeenStreet1=winnings[player]/float(totalWinnings) diff --git a/regression-test/PrintPlayerHudData.py b/regression-test/PrintPlayerHudData.py index 5b4b0599..af4e60c9 100755 --- a/regression-test/PrintPlayerHudData.py +++ b/regression-test/PrintPlayerHudData.py @@ -23,7 +23,7 @@ from optparse import OptionParser import fpdb_util_lib as ful parser = OptionParser() -parser.add_option("-b", "--bigblind", default="2", type="int", help="big blinds in cent") +parser.add_option("-b", "--bigBet", default="4", type="int", help="big bet in cent") parser.add_option("-c", "--cat", "--category", default="holdem", help="Category, e.g. holdem or studhilo") parser.add_option("-e", "--seats", default="7", type="int", help="number of active seats") parser.add_option("-g", "--gameType", default="ring", help="Whether its a ringgame (ring) or a tournament (tour)") @@ -42,19 +42,19 @@ print "Connected to MySQL on localhost. Print Player Flags Utility" print "" print "Basic Data" print "==========" -print "bigblind:",options.bigblind, "category:",options.cat, "limitType:", options.limit, "name:", options.name, "gameType:", options.gameType, "site:", options.site +print "bigBet:",options.bigBet, "category:",options.cat, "limitType:", options.limit, "name:", options.name, "gameType:", options.gameType, "site:", options.site cursor.execute("SELECT id FROM Sites WHERE name=%s", (options.site,)) siteId=cursor.fetchone()[0] -cursor.execute("SELECT id FROM Gametypes WHERE bigBlind=%s AND category=%s AND siteId=%s AND limitType=%s AND type=%s", (options.bigblind, options.cat, siteId, options.limit, options.gameType)) +cursor.execute("SELECT id FROM Gametypes WHERE bigBet=%s AND category=%s AND siteId=%s AND limitType=%s AND type=%s", (options.bigBet, options.cat, siteId, options.limit, options.gameType)) gametypeId=cursor.fetchone()[0] cursor.execute("SELECT id FROM Players WHERE name=%s", (options.name,)) playerId=cursor.fetchone()[0] -cursor.execute("SELECT id FROM HudCache WHERE gametypeId=%s AND playerId=%s AND activeSeats=%s AND position=%s",(gametypeId, playerId, options.seats, options.position)) #print "debug: gametypeId:", gametypeId, "playerId:", playerId, "options.seats:", options.seats, "options.position:", options.position +cursor.execute("SELECT id FROM HudCache WHERE gametypeId=%s AND playerId=%s AND activeSeats=%s AND position=%s",(gametypeId, playerId, options.seats, options.position)) hudDataId=cursor.fetchone()[0] print "siteId:", siteId, "gametypeId:", gametypeId, "playerId:", playerId, "hudDataId:", hudDataId diff --git a/regression-test/ps-flags-B-1hands.expected.txt b/regression-test/ps-flags-B-1hands.expected.txt index 9b134e91..fc3d1642 100644 --- a/regression-test/ps-flags-B-1hands.expected.txt +++ b/regression-test/ps-flags-B-1hands.expected.txt @@ -2,7 +2,7 @@ Connected to MySQL on localhost. Print Player Flags Utility Basic Data ========== -bigblind: 2 category: holdem limitType: fl name: Player_5 gameType: ring site: PokerStars +bigBet: 4 category: holdem limitType: fl name: Player_5 gameType: ring site: PokerStars siteId: 2 gametypeId: 1 playerId: 5 hudDataId: 12 HUD Raw Hand Counts @@ -33,8 +33,8 @@ foldToOtherRaisedStreet2: 0 foldToOtherRaisedStreet3: 0 foldToOtherRaisedStreet4: 0 -wonWhenSeenStreet1: 0 -wonAtSD: 0 +wonWhenSeenStreet1: 0.0 +wonAtSD: 0.0 stealAttemptChance: 0 stealAttempted: 0 foldBbToStealChance: 0 diff --git a/regression-test/ps-flags-CBflop.expected.txt b/regression-test/ps-flags-CBflop.expected.txt index 7fea235d..a7f9469f 100644 --- a/regression-test/ps-flags-CBflop.expected.txt +++ b/regression-test/ps-flags-CBflop.expected.txt @@ -2,7 +2,7 @@ Connected to MySQL on localhost. Print Player Flags Utility Basic Data ========== -bigblind: 25 category: holdem limitType: fl name: player3 gameType: ring site: PokerStars +bigBet: 50 category: holdem limitType: fl name: player3 gameType: ring site: PokerStars siteId: 2 gametypeId: 2 playerId: 11 hudDataId: 22 HUD Raw Hand Counts diff --git a/regression-test/ps-flags-M-2hands.expected.txt b/regression-test/ps-flags-M-2hands.expected.txt index aa55e1c5..1169e488 100644 --- a/regression-test/ps-flags-M-2hands.expected.txt +++ b/regression-test/ps-flags-M-2hands.expected.txt @@ -2,7 +2,7 @@ Connected to MySQL on localhost. Print Player Flags Utility Basic Data ========== -bigblind: 2 category: holdem limitType: fl name: Player_1 gameType: ring site: PokerStars +bigBet: 4 category: holdem limitType: fl name: Player_1 gameType: ring site: PokerStars siteId: 2 gametypeId: 1 playerId: 1 hudDataId: 8 HUD Raw Hand Counts diff --git a/regression-test/ps-flags-studhilo.expected.txt b/regression-test/ps-flags-studhilo.expected.txt new file mode 100644 index 00000000..11839d76 --- /dev/null +++ b/regression-test/ps-flags-studhilo.expected.txt @@ -0,0 +1,68 @@ +Connected to MySQL on localhost. Print Player Flags Utility + +Basic Data +========== +bigBet: 20 category: studhilo limitType: fl name: br1an gameType: ring site: PokerStars +siteId: 2 gametypeId: 3 playerId: 21 hudDataId: 32 + +HUD Raw Hand Counts +=================== +HDs: 1 +street0VPI: 0 +street0Aggr: 0 +street0_3B4BChance: 0 +street0_3B4BDone: 0 + +street1Seen: 1 +street2Seen: 1 +street3Seen: 1 +street4Seen: 1 +sawShowdown: 1 + +street1Aggr: 0 +street2Aggr: 0 +street3Aggr: 0 +street4Aggr: 0 + +otherRaisedStreet1: 0 +otherRaisedStreet2: 1 +otherRaisedStreet3: 0 +otherRaisedStreet4: 1 +foldToOtherRaisedStreet1: 0 +foldToOtherRaisedStreet2: 0 +foldToOtherRaisedStreet3: 0 +foldToOtherRaisedStreet4: 0 + +wonWhenSeenStreet1: 0.0 +wonAtSD: 0.0 +stealAttemptChance: 0 +stealAttempted: 0 +foldBbToStealChance: 0 +foldedBbToSteal: 0 +foldSbToStealChance: 0 +foldedSbToSteal: 0 +street1CBChance: 0 +street1CBDone: 0 +street2CBChance: 0 +street2CBDone: 0 +street3CBChance: 0 +street3CBDone: 0 +street4CBChance: 0 +street4CBDone: 0 +foldToStreet1CBChance: 0 +foldToStreet1CBDone: 0 +foldToStreet2CBChance: 0 +foldToStreet2CBDone: 0 +foldToStreet3CBChance: 0 +foldToStreet3CBDone: 0 +foldToStreet4CBChance: 0 +foldToStreet4CBDone: 0 +totalProfit: -0.47 +street1CheckCallRaiseChance: 0 +street1CheckCallRaiseDone: 0 +street2CheckCallRaiseChance: 0 +street2CheckCallRaiseDone: 0 +street3CheckCallRaiseChance: 0 +street3CheckCallRaiseDone: 0 +street4CheckCallRaiseChance: 1 +street4CheckCallRaiseDone: 0 diff --git a/regression-test/regression-test.sh b/regression-test/regression-test.sh index 6ef45066..3cc6078e 100755 --- a/regression-test/regression-test.sh +++ b/regression-test/regression-test.sh @@ -33,12 +33,13 @@ echo "it should've reported first that it stored 3, then that it had 3 duplicate ../pyfpdb/fpdb_import.py -p$1 --file=ps-lhe-ring-call-3B-preflop-cb-no2b.txt -x echo "it should've now reported another successful store of 1 hand" -./PrintPlayerHudData.py -p$1 -nplayer3 -oE -e10 -b25 > ps-flags-CBflop.found.txt && colordiff ps-flags-CBflop.found.txt ps-flags-CBflop.expected.txt +./PrintPlayerHudData.py -p$1 -nplayer3 -oE -e10 -b50 > ps-flags-CBflop.found.txt && colordiff ps-flags-CBflop.found.txt ps-flags-CBflop.expected.txt ../pyfpdb/fpdb_import.py -p$1 --file=ps-studhilo-ring-showdown.txt -x echo "it should've now reported another successful store of 1 hand" ./PrintHand.py -p$1 --hand=15043388146 > ps.15043388146.found.txt && colordiff ps.15043388146.found.txt ps.15043388146.expected.txt +./PrintPlayerHudData.py -p$1 -nbr1an -o0 -e6 -b20 -cstudhilo> ps-flags-studhilo.found.txt && colordiff ps-flags-studhilo.found.txt ps-flags-studhilo.expected.txt echo "if everything was printed as expected this worked" From 96664d009cf9b772cc8f798383057a770f376058 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 9 Oct 2008 07:17:18 +0100 Subject: [PATCH 9/9] p130 - stud/razz tourneys run again, but completely unverified (like holdem/omaha tourneys changed fpdb_import slightly to not die if a file had 0 stored hands --- pyfpdb/fpdb_import.py | 17 +++++++++++------ pyfpdb/fpdb_parse_logic.py | 9 +++------ pyfpdb/fpdb_save_to_db.py | 22 +++++++++------------- pyfpdb/fpdb_simple.py | 24 ++++++++++++------------ 4 files changed, 35 insertions(+), 37 deletions(-) diff --git a/pyfpdb/fpdb_import.py b/pyfpdb/fpdb_import.py index 9c52d6bc..3758c0b0 100755 --- a/pyfpdb/fpdb_import.py +++ b/pyfpdb/fpdb_import.py @@ -185,17 +185,22 @@ def import_file_dict(options, settings, callHud=False): startpos=endpos print "Total stored:", stored, "duplicates:", duplicates, "partial:", partial, "errors:", errors - if stored==0 and duplicates>0: - for line_no in range(len(lines)): - if lines[line_no].find("Game #")!=-1: - final_game_line=lines[line_no] - handsId=fpdb_simple.parseSiteHandNo(final_game_line) - #todo: this will cause return of an unstored hand number if the last hadn was error or partial + if stored==0: + if duplicates>0: + for line_no in range(len(lines)): + if lines[line_no].find("Game #")!=-1: + final_game_line=lines[line_no] + handsId=fpdb_simple.parseSiteHandNo(final_game_line) + else: + print "failed to read a single hand from file:", inputFile + handsId=0 + #todo: this will cause return of an unstored hand number if the last hand was error or partial db.commit() inputFile.close() cursor.close() db.close() return handsId +#end def import_file_dict if __name__ == "__main__": diff --git a/pyfpdb/fpdb_parse_logic.py b/pyfpdb/fpdb_parse_logic.py index 2408516e..ec9a53f6 100644 --- a/pyfpdb/fpdb_parse_logic.py +++ b/pyfpdb/fpdb_parse_logic.py @@ -114,7 +114,7 @@ def mainParser(db, cursor, site, category, hand): tableName=tableResult['tableName'] #print "before part5, antes:", antes - #part 5: final preparations, then call fpdb_save_to_db.saveHoldem with + #part 5: final preparations, then call fpdb_save_to_db.* with # the arrays as they are - that file will fill them. fpdb_simple.convertCardValues(cardValues) if base=="hold": @@ -145,11 +145,8 @@ def mainParser(db, cursor, site, category, hand): result = fpdb_save_to_db.tourney_holdem_omaha(cursor, base, category, siteTourneyNo, buyin, fee, knockout, entries, prizepool, tourneyStartTime, payin_amounts, ranks, tourneyTypeId, siteID, siteHandNo, gametypeID, handStartTime, names, playerIDs, startCashes, positions, cardValues, cardSuits, boardValues, boardSuits, winnings, rakes, actionTypes, allIns, actionAmounts, actionNos, hudImportData, maxSeats, tableName, seatNos) elif base=="stud": - result = fpdb_save_to_db.tourney_stud(cursor, base, category, siteTourneyNo, buyin, fee, - knockout, entries, prizepool, tourneyStartTime, payin_amounts, ranks, - siteHandNo, siteID, gametypeID, handStartTime, names, playerIDs, - startCashes, antes, cardValues, cardSuits, winnings, rakes, - actionTypes, allIns, actionAmounts, actionNos, hudImportData, maxSeats, tableName, seatNos) + result = fpdb_save_to_db.tourney_stud(cursor, base, category, siteTourneyNo, buyin, fee, knockout, entries, prizepool, tourneyStartTime, payin_amounts, ranks, tourneyTypeId, siteID, + siteHandNo, gametypeID, handStartTime, names, playerIDs, startCashes, antes, cardValues, cardSuits, winnings, rakes, actionTypes, allIns, actionAmounts, actionNos, hudImportData, maxSeats, tableName, seatNos) else: raise fpdb_simple.FpdbError ("unrecognised category") else: diff --git a/pyfpdb/fpdb_save_to_db.py b/pyfpdb/fpdb_save_to_db.py index 9033c2bb..af6ab09d 100644 --- a/pyfpdb/fpdb_save_to_db.py +++ b/pyfpdb/fpdb_save_to_db.py @@ -74,25 +74,21 @@ def tourney_holdem_omaha(cursor, base, category, siteTourneyNo, buyin, fee, knoc return hands_id #end def tourney_holdem_omaha -def tourney_stud(cursor, base, category, site_tourney_no, buyin, fee, knockout, entries, prizepool, - tourney_start, payin_amounts, ranks, #end of tourney specific params - site_hand_no, site_id, gametype_id, hand_start_time, names, player_ids, - start_cashes, antes, card_values, card_suits, winnings, rakes, - action_types, allIns, action_amounts, hudImportData): +def tourney_stud(cursor, base, category, siteTourneyNo, buyin, fee, knockout, entries, prizepool, tourneyStartTime, payin_amounts, ranks, tourneyTypeId, siteId, + siteHandNo, gametypeId, handStartTime, names, playerIds, startCashes, antes, cardValues, cardSuits, winnings, rakes, actionTypes, allIns, actionAmounts, actionNos, hudImportData, maxSeats, tableName, seatNos): #stores a tourney stud/razz hand into the database - fpdb_simple.fillCardArrays(len(names), base, category, card_values, card_suits) + fpdb_simple.fillCardArrays(len(names), base, category, cardValues, cardSuits) - tourney_id=fpdb_simple.store_tourneys(cursor, site_id, site_tourney_no, buyin, fee, knockout, entries, prizepool, tourney_start) + tourney_id=fpdb_simple.store_tourneys(cursor, tourneyTypeId, siteTourneyNo, entries, prizepool, tourneyStartTime) - tourneys_players_ids=fpdb_simple.store_tourneys_players(cursor, tourney_id, player_ids, payin_amounts, ranks, winnings) + tourneys_players_ids=fpdb_simple.store_tourneys_players(cursor, tourney_id, playerIds, payin_amounts, ranks, winnings) - hands_id=fpdb_simple.storeHands(cursor, site_hand_no, gametype_id, hand_start_time, names) + hands_id=fpdb_simple.storeHands(cursor, siteHandNo, gametypeId, handStartTime, names, tableName, maxSeats) - hands_players_ids=fpdb_simple.store_hands_players_stud_tourney(cursor, hands_id, player_ids, - start_cashes, antes, card_values, card_suits, winnings, rakes, tourneys_players_ids) + hands_players_ids=fpdb_simple.store_hands_players_stud_tourney(cursor, hands_id, playerIds, startCashes, antes, cardValues, cardSuits, winnings, rakes, seatNos, tourneys_players_ids) - fpdb_simple.storeHudData(cursor, base, category, player_ids, hudImportData) + fpdb_simple.storeHudCache(cursor, base, category, gametypeId, playerIds, hudImportData) - fpdb_simple.storeActions(cursor, hands_players_ids, action_types, allIns, action_amounts) + fpdb_simple.storeActions(cursor, hands_players_ids, actionTypes, allIns, actionAmounts, actionNos) return hands_id #end def tourney_stud diff --git a/pyfpdb/fpdb_simple.py b/pyfpdb/fpdb_simple.py index b63405fe..39de0c9e 100644 --- a/pyfpdb/fpdb_simple.py +++ b/pyfpdb/fpdb_simple.py @@ -1334,24 +1334,24 @@ def store_hands_players_holdem_omaha_tourney(cursor, category, hands_id, player_ #end def store_hands_players_holdem_omaha_tourney def store_hands_players_stud_tourney(cursor, hands_id, player_ids, start_cashes, - antes, card_values, card_suits, winnings, rakes, tourneys_players_ids): + antes, card_values, card_suits, winnings, rakes, seatNos, tourneys_players_ids): #stores hands_players for tourney stud/razz hands result=[] for i in range (len(player_ids)): cursor.execute ("""INSERT INTO HandsPlayers - (hand_id, player_id, player_startcash, ante, - card1_value, card1_suit, card2_value, card2_suit, - card3_value, card3_suit, card4_value, card4_suit, - card5_value, card5_suit, card6_value, card6_suit, - card7_value, card7_suit, winnings, rake, tourneys_players_id) + (handId, playerId, startCash, ante, + card1Value, card1Suit, card2Value, card2Suit, + card3Value, card3Suit, card4Value, card4Suit, + card5Value, card5Suit, card6Value, card6Suit, + card7Value, card7Suit, winnings, rake, tourneysPlayersId, seatNo) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, - %s, %s, %s, %s, %s)""", + %s, %s, %s, %s, %s, %s)""", (hands_id, player_ids[i], start_cashes[i], antes[i], card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1], card_values[i][2], card_suits[i][2], card_values[i][3], card_suits[i][3], card_values[i][4], card_suits[i][4], card_values[i][5], card_suits[i][5], - card_values[i][6], card_suits[i][6], winnings[i], rakes[i], tourneys_players_ids[i])) - cursor.execute("SELECT id FROM hands_players WHERE hand_id=%s AND player_id=%s", (hands_id, player_ids[i])) + card_values[i][6], card_suits[i][6], winnings[i], rakes[i], tourneys_players_ids[i], seatNos[i])) + cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId=%s", (hands_id, player_ids[i])) result.append(cursor.fetchall()[0][0]) return result #end def store_hands_players_stud_tourney @@ -1526,19 +1526,19 @@ def generateHudCacheData(player_ids, base, category, action_types, allIns, actio if (len(action_types[3][player])>0 or isAllIn): myStreet3Seen=True - print "base:", base + #print "base:", base if base=="hold": mySawShowdown=True for count in range (len(action_types[3][player])): if action_types[3][player][count]=="fold": mySawShowdown=False else: - print "in else" + #print "in else" for i in range(len(allIns[3][player])): if allIns[3][player][i]: isAllIn=True if (len(action_types[4][player])>0 or isAllIn): - print "in if" + #print "in if" myStreet4Seen=True mySawShowdown=True