p48 - removed some redundant bracketed values from tv

renamed cache fields and added more to be flexible for stud style games. note that tv is not updated yet
added forums and bugtracker to website sidebar
This commit is contained in:
steffen123 2008-08-17 13:13:42 +01:00
parent ea5db15e10
commit 5612ee6637
9 changed files with 531 additions and 509 deletions

View File

@ -3,19 +3,21 @@ Everything is subject to change and especially the order will often change. Patc
alpha2 (release by 17Aug) alpha2 (release by 17Aug)
====== ======
finish Cache generalisation from line 1814 onwards
add sf.net logo to webpage
change tabledesign VALIGN change tabledesign VALIGN
seperate and improve instructions for update seperate and improve instructions for update
verify link in release notes
split install instructions into OS-specific and OS-independent section. expand release creator to concatenate. split install instructions into OS-specific and OS-independent section. expand release creator to concatenate.
expand instructions for profile file, again, the release-creator will cat it. expand instructions for profile file, again, the release-creator will cat it.
delete old mailing list and create fpdb-announce add instructions for mailing list to contacts
finish updating filelist finish updating filelist
update abbreviations.txt
ebuild: symlink doesnt work, USE gtk, more automation, update install-in-gentoo.txt, set permissions in it, copy docs to correct place, use games eclass or whatever to get games group notice, print notice about install-in-gentoo.txt and mysql --config ebuild: symlink doesnt work, USE gtk, more automation, update install-in-gentoo.txt, set permissions in it, copy docs to correct place, use games eclass or whatever to get games group notice, print notice about install-in-gentoo.txt and mysql --config
add minimal instructions for developing to git-instructions add minimal instructions for developing to git-instructions
alpha3 alpha3
====== ======
make sure totalProfit shows actual profit rather than winnings.
update abbreviations.txt
(steffen) finish bringing back tourney (steffen) finish bringing back tourney
store raw hand in db store raw hand in db
export settings[hud-defaultInterval] to conf export settings[hud-defaultInterval] to conf

View File

@ -1,139 +0,0 @@
I recommend using a free/libre operating system, meaning a GNU/Linux distribution or a BSD variant (e.g. Gentoo GNU/Linux or OpenBSD) for ethical and practical reasons. Would you buy a car where you're prohibited from opening the bonnet under threat of jail? If the answer is no you should by the same logic not use closed source software for real money Poker :)
Unfortunately you will always need one piece of unfree software: The poker client itself. Although not a direct dependency of fpdb you obviously will have a hard time putting this to productive use without running some poker client. As far as I know, only unfree clients are available. If you know better please let me know ASAP!
If you can be bothered please do contact your poker site(s) and ask them to release free/libre clients, even if it is only for Windows. But lets be realistic, the chance of a positive answer is very low.
Before I start the list a note on the databases, as of git96 I have yet to try using this with PostgreSQL, but if I'm not mistaken it should actually work by now (the stuff in fpdb-python at least).
If you use a package management system (e.g. if you have GNU/Linux or *BSD) just check that you have mysql, mysql-python and pygtk or postgresql, pygresql and pygtk. Your package manager will take care of the rest for you.
Make new entries in this format:
X. Program Name
===============
a. Optional?
b. Required Version and Why
c. Project Webpage
d. License
1. MySQL
========
a. Optional?
Choose MySQL or PostgreSQL
b. Required Version and Why
At least 3.23 required due to mysql-python.
I use 5.0.54 and 5.0.60-r1 (GNU/Linux) and 5.0.51b (Windows).
c. Project Webpage
http://www.mysql.com
d. License
GPL2
2. PostgreSQL
=============
a. Optional?
Choose MySQL or PostgreSQL
b. Required Version and Why
I use 8.0.15 (GNU/Linux) and 8.3.3 (Windows) but I am not aware of any incompatibilities
with older or newer versions, pls report success/failure.
c. Project Webpage
http://www.postgresql.org
d. License
BSD License
3. mysql-python
===============
a. Optional?
Required if you want to use MySQL backend
b. Required Version and Why
I use 1.2.2 but I am not aware of any incompatibilities with older or newer versions, pls report success/failure.
c. Project Webpage
http://sourceforge.net/projects/mysql-python/
d. License
SF lists GNU General Public License (GPL), Python License (CNRI Python License), Zope Public License.
Project states GPL without version in Pkg-info.
4. pygresql
===========
a. Optional?
Required if you want to use PostgreSQL backend
b. Required Version and Why
I use 3.6.2 but I am not aware of any incompatibilities with older or newer versions, pls report success/failure.
c. Project Webpage
http://www.pygresql.org/
d. License
http://www.pygresql.org/readme.html#copyright-notice (BSD License?)
Summary: "Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written agreement
is hereby granted[...]" plus Disclaimer.
5. Python
=========
a. Optional?
Required.
b. Required Version and Why
I use 2.4.4 and 2.5.2 but I am not aware of any incompatibilities with older or newer versions, pls report success/failure.
c. Project Webpage
http://www.python.org
d. License
Python License
6. GTK+ and dependencies
=======
a. Optional?
Required.
b. Required Version and Why
I use 2.12.9 but it should run with 2.10 or higher. That is needed as I used MessageDialog updates
c. Project Webpage
Main: http://www.gtk.org/
API spec: http://library.gnome.org/devel/gtk/2.12/
Windows DLs (get the bundle unless you know what you're doing): http://www.gtk.org/download-windows.html
d. License
LGPL2
7. PyCairo
==========
a. Optional?
Required.
b. Required Version and Why
?
c. Project Webpage
main: http://www.pygtk.org
d. License
LGPL2.1
8. PyGObject
============
a. Optional?
Required.
b. Required Version and Why
?
c. Project Webpage
main: http://www.pygtk.org
d. License
LGPL2.1
9. PyGTK
========
a. Optional?
Required.
b. Required Version and Why
?
c. Project Webpage
main: http://www.pygtk.org
d. License
LGPL2.1
License (of this file)
=======
Trademarks of third parties have been used under Fair Use or similar laws.
Copyright 2008 Steffen Jobbagy-Felso
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.2 as published by the Free Software Foundation; with
no Invariant Sections, no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license can be found in fdl-1.2.txt
The program itself is licensed under AGPLv3, see agpl-3.0.txt

View File

@ -383,7 +383,7 @@ The program itself is licensed under AGPLv3, see agpl-3.0.txt</p>
</TR> </TR>
</TABLE> </TABLE>
<p><BR></P> <p><BR></P>
<P><B>Table HudDataHoldemOmaha</B></P> <P><B>Table HudCache</B></P>
<TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0> <TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P><b>Field Name</b></P></TD> <TD><P><b>Field Name</b></P></TD>
@ -410,45 +410,61 @@ The program itself is licensed under AGPLv3, see agpl-3.0.txt</p>
<TD><P>smallint</P></TD> <TD><P>smallint</P></TD>
<TD><P>range 2-10</P></TD> <TD><P>range 2-10</P></TD>
</TR> </TR>
<TR VALIGN=TOP>
<TD><P>position</P></TD>
<TD><P>char(1)</P></TD>
<TD><P>Position for which this row applies. In this table this can be B(BB), S(SB), D(Dealer/Button), C(Cutoff), M(Middle - the 3 before cutoff) or E (Early - the 3 before Middle)</P></TD>
</TR>
<TR VALIGN=TOP>
<TD><P>tourneysGametypeId</P></TD>
<TD><P>smallint</P></TD>
<TD><P>References TourneysGametypes.id</P></TD>
</TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>HDs</P></TD> <TD><P>HDs</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands this player played in this gametype with this number of seats</P></TD> <TD><P>number of hands this player played in this gametype with this number of seats</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>VPIP</P></TD> <TD><P>street0VPI</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where player paid to see flop</P></TD> <TD><P>number of hands where player paid to see flop</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>PFR</P></TD> <TD><P>street0Aggr</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where player raised before flop</P></TD> <TD><P>number of hands where player raised before flop</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>PF3B4BChance</P></TD> <TD><P>street0_3B4BChance</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where player had chance to 3B or 4B</P></TD> <TD><P>number of hands where player had chance to 3B or 4B</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>PF3B4B</P></TD> <TD><P>street0_3B4BDone</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where player 3bet/4bet before flop</P></TD> <TD><P>number of hands where player 3bet/4bet before flop</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>sawFlop</P></TD> <TD><P>street1Seen</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where player saw flop</P></TD> <TD><P>number of hands where player saw flop/street4</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>sawTurn</P></TD> <TD><P>street2Seen</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where player saw turn</P></TD> <TD><P>number of hands where player saw turn/street5</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>sawRiver</P></TD> <TD><P>street3Seen</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where player saw river</P></TD> <TD><P>number of hands where player saw river/street6</P></TD>
</TR>
<TR VALIGN=TOP>
<TD><P>street4Seen</P></TD>
<TD><P>int</P></TD>
<TD><P>number of hands where player saw street7</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>sawShowdown</P></TD> <TD><P>sawShowdown</P></TD>
@ -456,60 +472,75 @@ The program itself is licensed under AGPLv3, see agpl-3.0.txt</p>
<TD><P>number of hands where player saw showdown</P></TD> <TD><P>number of hands where player saw showdown</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>raisedFlop</P></TD> <TD><P>street1Aggr</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where player raised flop</P></TD> <TD><P>number of hands where player raised flop/street4</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>raisedTurn</P></TD> <TD><P>street2Aggr</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where player raised turn</P></TD> <TD><P>number of hands where player raised turn/street5</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>raisedRiver</P></TD> <TD><P>street3Aggr</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where player raised river</P></TD> <TD><P>number of hands where player raised river/street6</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>otherRaisedFlop</P></TD> <TD><P>street4Aggr</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where someone else raised flop</P></TD> <TD><P>number of hands where player raised street7</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>otherRaisedFlopFold</P></TD> <TD><P>otherRaisedStreet1</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where someone else raised flop and the player folded</P></TD> <TD><P>number of hands where someone else raised flop/street4</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>otherRaisedTurn</P></TD> <TD><P>otherRaisedStreet2</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where someone else raised Turn</P></TD> <TD><P>number of hands where someone else raised turn/street5</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>otherRaisedTurnFold</P></TD> <TD><P>otherRaisedStreet3</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where someone else raised Turn and the player folded</P></TD> <TD><P>number of hands where someone else raised river/street6</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>otherRaisedRiver</P></TD> <TD><P>otherRaisedStreet4</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where someone else raised River</P></TD> <TD><P>number of hands where someone else raised street7</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>otherRaisedRiverFold</P></TD> <TD><P>foldToOtherRaisedStreet1</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>number of hands where someone else raised River and the player folded</P></TD> <TD><P>number of hands where someone else raised flop/street4 and the player folded</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>wonWhenSeenFlop</P></TD> <TD><P>foldToOtherRaisedStreet2</P></TD>
<TD><P>int</P></TD>
<TD><P>number of hands where someone else raised Turn/street5 and the player folded</P></TD>
</TR>
<TR VALIGN=TOP>
<TD><P>foldToOtherRaisedStreet3</P></TD>
<TD><P>int</P></TD>
<TD><P>number of hands where someone else raised River/street6 and the player folded</P></TD>
</TR>
<TR VALIGN=TOP>
<TD><P>foldToOtherRaisedStreet4</P></TD>
<TD><P>int</P></TD>
<TD><P>number of hands where someone else raised street7 and the player folded</P></TD>
</TR>
<TR VALIGN=TOP>
<TD><P>wonWhenSeenStreet1</P></TD>
<TD><P>float</P></TD> <TD><P>float</P></TD>
<TD><P>How many hands the player won after seeing the flop - this can be a "partial win" if the pot is split.<br> <TD><P>How many hands the player won after seeing the flop/street4 - this can be a "partial win" if the pot is split.<br>
To be completely clear, this stores a hand count, NOT a money amount.</P></TD> To be completely clear, this stores a hand count, NOT a money amount.</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>wonAtSD</P></TD> <TD><P>wonAtSD</P></TD>
<TD><P>float</P></TD> <TD><P>float</P></TD>
<TD><P>As wonWhenSeenFlop, but for showdown.</P></TD> <TD><P>As wonWhenSeenStreet1, but for showdown.</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
@ -544,76 +575,85 @@ The program itself is licensed under AGPLv3, see agpl-3.0.txt</p>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>contBetChance</P></TD> <TD><P>street1CBChance</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>Player had chance to make continuation bet</P></TD> <TD><P>Player had chance to make continuation bet on flop/street4</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>contBetDone</P></TD> <TD><P>street1CBDone</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>Player used chance to make continuation bet</P></TD> <TD><P>Player used chance to make continuation bet on flop/street4</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>secondBarrelChance</P></TD> <TD><P>street2CBChance</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>Player had chance to make second barrel bet</P></TD> <TD><P>Player had chance to make continuation bet on turn/street5</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>secondBarrelDone</P></TD> <TD><P>street2CBDone</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>Player used chance to make second barrel bet</P></TD> <TD><P>Player used chance to make continuation bet on turn/street5</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>thirdBarrelChance</P></TD> <TD><P>street3CBChance</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>Player had chance to make third barrel bet</P></TD> <TD><P>Player had chance to make continuation bet on river/street6</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>thirdBarrelDone</P></TD> <TD><P>street3CBDone</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>Player used chance to make third barrel bet</P></TD> <TD><P>Player used chance to make continuation bet on river/street6</P></TD>
</TR>
<TR VALIGN=TOP>
<TD><P>street4CBChance</P></TD>
<TD><P>int</P></TD>
<TD><P>Player had chance to make continuation bet on street7</P></TD>
</TR>
<TR VALIGN=TOP>
<TD><P>street4CBDone</P></TD>
<TD><P>int</P></TD>
<TD><P>Player used chance to make continuation bet on street7</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>position</P></TD> <TD><P>foldToStreet1CBChance</P></TD>
<TD><P>char(1)</P></TD>
<TD><P>Position for which this row applies. In this table this can be B(BB), S(SB), D(Dealer/Button), C(Cutoff), M(Middle - the 3 before cutoff) or E (Early - the 3 before Middle)</P></TD>
</TR>
<TR VALIGN=TOP>
<TD><P>tourneysGametypeId</P></TD>
<TD><P>smallint</P></TD>
<TD><P>References TourneysGametypes.id</P></TD>
</TR>
<TR VALIGN=TOP>
<TD><P>foldToContBetChance</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>Player had chance to fold to continuation bet</P></TD> <TD><P>Player had chance to fold to continuation bet on this street</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>foldToContBetDone</P></TD> <TD><P>foldToStreet1CBDone</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>Player used chance to fold to continuation bet</P></TD> <TD><P>Player used chance to fold to continuation bet on this street</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>foldToSecondBarrelChance</P></TD> <TD><P>foldToStreet2CBChance</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>Player had chance to fold to second barrel bet</P></TD> <TD><P>Player had chance to fold to continuation bet on this street</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>foldToSecondBarrelDone</P></TD> <TD><P>foldToStreet2CBDone</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>Player used chance to fold to second barrel bet</P></TD> <TD><P>Player used chance to fold to continuation bet on this street</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>foldToThirdBarrelChance</P></TD> <TD><P>foldToStreet3CBChance</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>Player had chance to fold to third barrel bet</P></TD> <TD><P>Player had chance to fold to continuation bet on this street</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>foldToThirdBarrelDone</P></TD> <TD><P>foldToStreet3CBDone</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>Player used chance to fold to third barrel bet</P></TD> <TD><P>Player used chance to fold to continuation bet on this street</P></TD>
</TR>
<TR VALIGN=TOP>
<TD><P>foldToStreet4CBChance</P></TD>
<TD><P>int</P></TD>
<TD><P>Player had chance to fold to continuation bet on this street</P></TD>
</TR>
<TR VALIGN=TOP>
<TD><P>foldToStreet4CBDone</P></TD>
<TD><P>int</P></TD>
<TD><P>Player used chance to fold to continuation bet on this street</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
@ -623,34 +663,44 @@ The program itself is licensed under AGPLv3, see agpl-3.0.txt</p>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>flopCheckCallRaiseChance</P></TD> <TD><P>street1CheckCallRaiseChance</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>How often player had the chance to do a check-raise or a call-raise on the flop</P></TD> <TD><P>How often player had the chance to do a check-raise or a call-raise on this street</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>flopCheckCallRaiseDone</P></TD> <TD><P>street1CheckCallRaiseDone</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>How often player used the chance to do a check-raise or a call-raise on the flop</P></TD> <TD><P>How often player used the chance to do a check-raise or a call-raise on this street</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>turnCheckCallRaiseChance</P></TD> <TD><P>street2CheckCallRaiseChance</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>How often player had the chance to do a check-raise or a call-raise on the turn</P></TD> <TD><P>How often player had the chance to do a check-raise or a call-raise on this street</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>turnCheckCallRaiseDone</P></TD> <TD><P>street2CheckCallRaiseDone</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>How often player used the chance to do a check-raise or a call-raise on the turn</P></TD> <TD><P>How often player used the chance to do a check-raise or a call-raise on this street</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>riverCheckCallRaiseChance</P></TD> <TD><P>street3CheckCallRaiseChance</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>How often player had the chance to do a check-raise or a call-raise on the river</P></TD> <TD><P>How often player had the chance to do a check-raise or a call-raise on this street</P></TD>
</TR> </TR>
<TR VALIGN=TOP> <TR VALIGN=TOP>
<TD><P>riverCheckCallRaiseDone</P></TD> <TD><P>street3CheckCallRaiseDone</P></TD>
<TD><P>int</P></TD> <TD><P>int</P></TD>
<TD><P>How often player used the chance to do a check-raise or a call-raise on the river</P></TD> <TD><P>How often player used the chance to do a check-raise or a call-raise on this street</P></TD>
</TR>
<TR VALIGN=TOP>
<TD><P>street4CheckCallRaiseChance</P></TD>
<TD><P>int</P></TD>
<TD><P>How often player had the chance to do a check-raise or a call-raise on this street</P></TD>
</TR>
<TR VALIGN=TOP>
<TD><P>street4CheckCallRaiseDone</P></TD>
<TD><P>int</P></TD>
<TD><P>How often player used the chance to do a check-raise or a call-raise on this street</P></TD>
</TR> </TR>
</TABLE> </TABLE>

View File

@ -156,8 +156,8 @@ class GuiTableViewer (threading.Thread):
tmp.append(self.hudDivide(row[15],row[11])+" ("+str(row[11])+")") #AR tmp.append(self.hudDivide(row[15],row[11])+" ("+str(row[11])+")") #AR
tmp.append(self.hudDivide(row[21],row[20])+" ("+str(row[20])+")") #FR tmp.append(self.hudDivide(row[21],row[20])+" ("+str(row[20])+")") #FR
tmp.append(self.hudDivide(row[12],row[9])+" ("+str(row[9])+")") #SD/F tmp.append(self.hudDivide(row[12],row[9])) #WtSD
tmp.append(self.hudDivide(row[22],row[9])+" ("+str(row[9])+")") #W$wSF tmp.append(self.hudDivide(row[22],row[9])) #W$wSF
tmp.append(self.hudDivide(row[23],row[12])+" ("+str(row[12])+")") #W$@SD tmp.append(self.hudDivide(row[23],row[12])+" ("+str(row[12])+")") #W$@SD
arr.append(tmp) arr.append(tmp)

View File

@ -293,7 +293,7 @@ class fpdb:
elif lines[i].startswith("#"): elif lines[i].startswith("#"):
pass #comment - dont parse pass #comment - dont parse
else: else:
raise fpdb_simple.FpdbError("invalid line in profile file: "+lines[i]) raise fpdb_simple.FpdbError("invalid line in profile file: "+lines[i]+" if you don't know what to do just remove it from "+filename)
if self.db!=None: if self.db!=None:
self.db.disconnect() self.db.disconnect()
@ -370,7 +370,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 = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect("delete_event", self.delete_event) self.window.connect("delete_event", self.delete_event)
self.window.connect("destroy", self.destroy) self.window.connect("destroy", self.destroy)
self.window.set_title("Free Poker DB - version: alpha1+, p46") self.window.set_title("Free Poker DB - version: alpha1+, p48")
self.window.set_border_width(1) self.window.set_border_width(1)
self.window.set_size_request(1020,400) self.window.set_size_request(1020,400)
self.window.set_resizable(True) self.window.set_resizable(True)

View File

@ -47,7 +47,7 @@ class fpdb_db:
try: try:
self.cursor.execute("SELECT * FROM Settings") self.cursor.execute("SELECT * FROM Settings")
settings=self.cursor.fetchone() settings=self.cursor.fetchone()
if settings[0]!=45: if settings[0]!=48:
print "outdated or too new database version - please recreate tables" print "outdated or too new database version - please recreate tables"
except:# _mysql_exceptions.ProgrammingError: except:# _mysql_exceptions.ProgrammingError:
print "failed to read settings table - please recreate tables" print "failed to read settings table - please recreate tables"
@ -112,8 +112,11 @@ class fpdb_db:
self.cursor.execute("DROP TABLE IF EXISTS gametypes;") self.cursor.execute("DROP TABLE IF EXISTS gametypes;")
self.cursor.execute("DROP TABLE IF EXISTS sites;") self.cursor.execute("DROP TABLE IF EXISTS sites;")
if oldDbVersion>34 and oldDbVersion<=45:
self.cursor.execute("DROP TABLE IF EXISTS HudDataHoldemOmaha;")
self.cursor.execute("DROP TABLE IF EXISTS Settings;") self.cursor.execute("DROP TABLE IF EXISTS Settings;")
self.cursor.execute("DROP TABLE IF EXISTS HudDataHoldemOmaha;") self.cursor.execute("DROP TABLE IF EXISTS HudCache;")
self.cursor.execute("DROP TABLE IF EXISTS Autorates;") self.cursor.execute("DROP TABLE IF EXISTS Autorates;")
self.cursor.execute("DROP TABLE IF EXISTS BoardCards;") self.cursor.execute("DROP TABLE IF EXISTS BoardCards;")
self.cursor.execute("DROP TABLE IF EXISTS HandsActions;") self.cursor.execute("DROP TABLE IF EXISTS HandsActions;")
@ -278,30 +281,37 @@ class fpdb_db:
comment TEXT, comment TEXT,
commentTs DATETIME)""") commentTs DATETIME)""")
self.create_table("""HudDataHoldemOmaha ( self.create_table("""HudCache (
id BIGINT UNSIGNED UNIQUE AUTO_INCREMENT, PRIMARY KEY (id), id BIGINT UNSIGNED UNIQUE AUTO_INCREMENT, PRIMARY KEY (id),
gametypeId SMALLINT UNSIGNED, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id), gametypeId SMALLINT UNSIGNED, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
playerId INT UNSIGNED, FOREIGN KEY (playerId) REFERENCES Players(id), playerId INT UNSIGNED, FOREIGN KEY (playerId) REFERENCES Players(id),
activeSeats SMALLINT, activeSeats SMALLINT,
position CHAR(1),
tourneysGametypeId SMALLINT UNSIGNED, FOREIGN KEY (tourneysGametypeId) REFERENCES TourneysGametypes(id),
HDs INT, HDs INT,
VPIP INT, street0VPI INT,
PFR INT, street0Aggr INT,
PF3B4BChance INT, street0_3B4BChance INT,
PF3B4B INT, street0_3B4BDone INT,
sawFlop INT, street1Seen INT,
sawTurn INT, street2Seen INT,
sawRiver INT, street3Seen INT,
street4Seen INT,
sawShowdown INT, sawShowdown INT,
raisedFlop INT, street1Aggr INT,
raisedTurn INT, street2Aggr INT,
raisedRiver INT, street3Aggr INT,
otherRaisedFlop INT, street4Aggr INT,
otherRaisedFlopFold INT, otherRaisedStreet1 INT,
otherRaisedTurn INT, otherRaisedStreet2 INT,
otherRaisedTurnFold INT, otherRaisedStreet3 INT,
otherRaisedRiver INT, otherRaisedStreet4 INT,
otherRaisedRiverFold INT, foldToOtherRaisedStreet1 INT,
wonWhenSeenFlop FLOAT, foldToOtherRaisedStreet2 INT,
foldToOtherRaisedStreet3 INT,
foldToOtherRaisedStreet4 INT,
wonWhenSeenStreet1 FLOAT,
wonAtSD FLOAT, wonAtSD FLOAT,
stealAttemptChance INT, stealAttemptChance INT,
@ -311,33 +321,36 @@ class fpdb_db:
foldSbToStealChance INT, foldSbToStealChance INT,
foldedSbToSteal INT, foldedSbToSteal INT,
contBetChance INT, street1CBChance INT,
contBetDone INT, street1CBDone INT,
secondBarrelChance INT, street2CBChance INT,
secondBarrelDone INT, street2CBDone INT,
thirdBarrelChance INT, street3CBChance INT,
thirdBarrelDone INT, street3CBDone INT,
street4CBChance INT,
street4CBDone INT,
position CHAR(1), foldToStreet1CBChance INT,
tourneysGametypeId SMALLINT UNSIGNED, FOREIGN KEY (tourneysGametypeId) REFERENCES TourneysGametypes(id), foldToStreet1CBDone INT,
foldToStreet2CBChance INT,
foldToContBetChance INT, foldToStreet2CBDone INT,
foldToContBetDone INT, foldToStreet3CBChance INT,
foldToSecondBarrelChance INT, foldToStreet3CBDone INT,
foldToSecondBarrelDone INT, foldToStreet4CBChance INT,
foldToThirdBarrelChance INT, foldToStreet4CBDone INT,
foldToThirdBarrelDone INT,
totalProfit INT, totalProfit INT,
flopCheckCallRaiseChance INT, street1CheckCallRaiseChance INT,
flopCheckCallRaiseDone INT, street1CheckCallRaiseDone INT,
turnCheckCallRaiseChance INT, street2CheckCallRaiseChance INT,
turnCheckCallRaiseDone INT, street2CheckCallRaiseDone INT,
riverCheckCallRaiseChance INT, street3CheckCallRaiseChance INT,
riverCheckCallRaiseDone INT)""") street3CheckCallRaiseDone INT,
street4CheckCallRaiseChance INT,
street4CheckCallRaiseDone INT)""")
self.cursor.execute("INSERT INTO Settings VALUES (45);") self.cursor.execute("INSERT INTO Settings VALUES (48);")
self.cursor.execute("INSERT INTO Sites VALUES (DEFAULT, \"Full Tilt Poker\", 'USD');") self.cursor.execute("INSERT INTO Sites VALUES (DEFAULT, \"Full Tilt Poker\", 'USD');")
self.cursor.execute("INSERT INTO Sites VALUES (DEFAULT, \"PokerStars\", 'USD');") self.cursor.execute("INSERT INTO Sites VALUES (DEFAULT, \"PokerStars\", 'USD');")
self.cursor.execute("INSERT INTO TourneysGametypes (id) VALUES (DEFAULT);") self.cursor.execute("INSERT INTO TourneysGametypes (id) VALUES (DEFAULT);")

View File

@ -54,7 +54,7 @@ def ring_holdem_omaha(cursor, category, site_hand_no, gametype_id, hand_start_ti
hands_players_ids=fpdb_simple.store_hands_players_holdem_omaha(cursor, category, hands_id, player_ids, start_cashes, positions, card_values, card_suits, winnings, rakes, seatNos) hands_players_ids=fpdb_simple.store_hands_players_holdem_omaha(cursor, category, hands_id, player_ids, start_cashes, positions, card_values, card_suits, winnings, rakes, seatNos)
fpdb_simple.storeHudData(cursor, category, gametype_id, player_ids, hudImportData) fpdb_simple.storeHudCache(cursor, category, gametype_id, player_ids, hudImportData)
fpdb_simple.store_board_cards(cursor, hands_id, board_values, board_suits) fpdb_simple.store_board_cards(cursor, hands_id, board_values, board_suits)

View File

@ -1246,24 +1246,29 @@ def store_hands_players_stud_tourney(cursor, hands_id, player_ids, start_cashes,
def generateHudData(player_ids, category, action_types, actionTypeByNo, winnings, totalWinnings, positions): def generateHudData(player_ids, category, action_types, actionTypeByNo, winnings, totalWinnings, positions):
"""calculates data for the HUD during import. IMPORTANT: if you change this method make sure to also change the following storage method and table_viewer.prepare_data if necessary""" """calculates data for the HUD during import. IMPORTANT: if you change this method make sure to also change the following storage method and table_viewer.prepare_data if necessary"""
#setup subarrays of the result dictionary. #setup subarrays of the result dictionary.
VPIP=[] street0VPI=[]
PFR=[] street0Aggr=[]
PF3B4BChance=[] street0_3B4BChance=[]
PF3B4B=[] street0_3B4BDone=[]
sawFlop=[] street1Seen=[]
sawTurn=[] street2Seen=[]
sawRiver=[] street3Seen=[]
street4Seen=[]
sawShowdown=[] sawShowdown=[]
raisedFlop=[] street1Aggr=[]
raisedTurn=[] street2Aggr=[]
raisedRiver=[] street3Aggr=[]
otherRaisedFlop=[] street4Aggr=[]
otherRaisedFlopFold=[] otherRaisedStreet1=[]
otherRaisedTurn=[] otherRaisedStreet2=[]
otherRaisedTurnFold=[] otherRaisedStreet3=[]
otherRaisedRiver=[] otherRaisedStreet4=[]
otherRaisedRiverFold=[] foldToOtherRaisedStreet1=[]
wonWhenSeenFlop=[] foldToOtherRaisedStreet2=[]
foldToOtherRaisedStreet3=[]
foldToOtherRaisedStreet4=[]
wonWhenSeenStreet1=[]
wonAtSD=[] wonAtSD=[]
stealAttemptChance=[] stealAttemptChance=[]
stealAttempted=[] stealAttempted=[]
@ -1308,24 +1313,28 @@ def generateHudData(player_ids, category, action_types, actionTypeByNo, winnings
#run a loop for each player preparing the actual values that will be commited to SQL #run a loop for each player preparing the actual values that will be commited to SQL
for player in range (len(player_ids)): for player in range (len(player_ids)):
#set default values #set default values
myVPIP=False myStreet0VPI=False
myPFR=False myStreet0Aggr=False
myPF3B4BChance=False myStreet0_3B4BChance=False
myPF3B4B=False myStreet0_3B4BDone=False
mySawFlop=False myStreet1Seen=False
mySawTurn=False myStreet2Seen=False
mySawRiver=False myStreet3Seen=False
myStreet4Seen=False
mySawShowdown=False mySawShowdown=False
myRaisedFlop=False myStreet1Aggr=False
myRaisedTurn=False myStreet2Aggr=False
myRaisedRiver=False myStreet3Aggr=False
myOtherRaisedFlop=False myStreet4Aggr=False
myOtherRaisedFlopFold=False myOtherRaisedStreet1=False
myOtherRaisedTurn=False myOtherRaisedStreet2=False
myOtherRaisedTurnFold=False myOtherRaisedStreet3=False
myOtherRaisedRiver=False myOtherRaisedStreet4=False
myOtherRaisedRiverFold=False myFoldToOtherRaisedStreet1=False
myWonWhenSeenFlop=0.0 myFoldToOtherRaisedStreet2=False
myFoldToOtherRaisedStreet3=False
myFoldToOtherRaisedStreet4=False
myWonWhenSeenStreet1=0.0
myWonAtSD=0.0 myWonAtSD=0.0
myStealAttemptChance=False myStealAttemptChance=False
myStealAttempted=False myStealAttempted=False
@ -1336,9 +1345,9 @@ def generateHudData(player_ids, category, action_types, actionTypeByNo, winnings
for count in range (len(action_types[street][player])):#finally individual actions for count in range (len(action_types[street][player])):#finally individual actions
currentAction=action_types[street][player][count] currentAction=action_types[street][player][count]
if currentAction=="bet": if currentAction=="bet":
myPFR=True myStreet0Aggr=True
if (currentAction=="bet" or currentAction=="call"): if (currentAction=="bet" or currentAction=="call"):
myVPIP=True myStreet0VPI=True
#PF3B4BChance and PF3B4B #PF3B4BChance and PF3B4B
pfFold=-1 pfFold=-1
@ -1351,11 +1360,10 @@ def generateHudData(player_ids, category, action_types, actionTypeByNo, winnings
if actionTypeByNo[0][i][1]=="fold" and pfFold==-1: if actionTypeByNo[0][i][1]=="fold" and pfFold==-1:
pfFold=i pfFold=i
if pfFold==-1 or pfFold>firstPfRaiseByNo: if pfFold==-1 or pfFold>firstPfRaiseByNo:
myPF3B4BChance=True myStreet0_3B4BChance=True
if pfRaise>firstPfRaiseByNo: if pfRaise>firstPfRaiseByNo:
myPF3B4B=True myStreet0_3B4BDone=True
#myStealAttemptChance myStealAttempted myFoldBbToStealChance myFoldedBbToSteal myFoldSbToStealChance myFoldedSbToSteal
#steal calculations #steal calculations
if len(player_ids)>=5: #no point otherwise if len(player_ids)>=5: #no point otherwise
if positions[player]==1: if positions[player]==1:
@ -1384,11 +1392,11 @@ def generateHudData(player_ids, category, action_types, actionTypeByNo, winnings
#calculate saw* values #calculate saw* values
if (len(action_types[1][player])>0): if (len(action_types[1][player])>0):
mySawFlop=True myStreet1Seen=True
if (len(action_types[2][player])>0): if (len(action_types[2][player])>0):
mySawTurn=True myStreet2Seen=True
if (len(action_types[3][player])>0): if (len(action_types[3][player])>0):
mySawRiver=True myStreet3Seen=True
mySawShowdown=True mySawShowdown=True
for count in range (len(action_types[3][player])): for count in range (len(action_types[3][player])):
if action_types[3][player][count]=="fold": if action_types[3][player][count]=="fold":
@ -1396,84 +1404,87 @@ def generateHudData(player_ids, category, action_types, actionTypeByNo, winnings
#flop stuff #flop stuff
street=1 street=1
if mySawFlop: if myStreet1Seen:
for count in range(len(action_types[street][player])): for count in range(len(action_types[street][player])):
if action_types[street][player][count]=="bet": if action_types[street][player][count]=="bet":
myRaisedFlop=True myStreet1Aggr=True
for otherPlayer in range (len(player_ids)): for otherPlayer in range (len(player_ids)):
if player==otherPlayer or myOtherRaisedFlop: if player==otherPlayer:
pass pass
else: else:
for countOther in range (len(action_types[street][otherPlayer])): for countOther in range (len(action_types[street][otherPlayer])):
if action_types[street][otherPlayer][countOther]=="bet": if action_types[street][otherPlayer][countOther]=="bet":
myOtherRaisedFlop=True myOtherRaisedStreet1=True
for countOtherFold in range (len(action_types[street][player])): for countOtherFold in range (len(action_types[street][player])):
if action_types[street][player][countOtherFold]=="fold": if action_types[street][player][countOtherFold]=="fold":
myOtherRaisedFlopFold=True myFoldToOtherRaisedStreet1=True
#turn stuff - copy of flop with different vars #turn stuff - copy of flop with different vars
street=2 street=2
if mySawTurn: if myStreet2Seen:
for count in range(len(action_types[street][player])): for count in range(len(action_types[street][player])):
if action_types[street][player][count]=="bet": if action_types[street][player][count]=="bet":
myRaisedTurn=True myStreet2Aggr=True
for otherPlayer in range (len(player_ids)): for otherPlayer in range (len(player_ids)):
if player==otherPlayer or myOtherRaisedTurn: if player==otherPlayer:
pass pass
else: else:
for countOther in range (len(action_types[street][otherPlayer])): for countOther in range (len(action_types[street][otherPlayer])):
if action_types[street][otherPlayer][countOther]=="bet": if action_types[street][otherPlayer][countOther]=="bet":
myOtherRaisedTurn=True myOtherRaisedStreet2=True
for countOtherFold in range (len(action_types[street][player])): for countOtherFold in range (len(action_types[street][player])):
if action_types[street][player][countOtherFold]=="fold": if action_types[street][player][countOtherFold]=="fold":
myOtherRaisedTurnFold=True myFoldToOtherRaisedStreet2=True
#turn stuff - copy of flop with different vars #river stuff - copy of flop with different vars
street=3 street=3
if mySawRiver: if myStreet3Seen:
for count in range(len(action_types[street][player])): for count in range(len(action_types[street][player])):
if action_types[street][player][count]=="bet": if action_types[street][player][count]=="bet":
myRaisedRiver=True myStreet3Aggr=True
for otherPlayer in range (len(player_ids)): for otherPlayer in range (len(player_ids)):
if player==otherPlayer or myOtherRaisedRiver: if player==otherPlayer:
pass pass
else: else:
for countOther in range (len(action_types[street][otherPlayer])): for countOther in range (len(action_types[street][otherPlayer])):
if action_types[street][otherPlayer][countOther]=="bet": if action_types[street][otherPlayer][countOther]=="bet":
myOtherRaisedRiver=True myOtherRaisedStreet3=True
for countOtherFold in range (len(action_types[street][player])): for countOtherFold in range (len(action_types[street][player])):
if action_types[street][player][countOtherFold]=="fold": if action_types[street][player][countOtherFold]=="fold":
myOtherRaisedRiverFold=True myFoldToOtherRaisedStreet3=True
if winnings[player]!=0: if winnings[player]!=0:
if mySawFlop: if myStreet1Seen:
myWonWhenSeenFlop=winnings[player]/float(totalWinnings) myWonWhenSeenStreet1=winnings[player]/float(totalWinnings)
#print "myWonWhenSeenFlop:",myWonWhenSeenFlop
if mySawShowdown: if mySawShowdown:
myWonAtSD=myWonWhenSeenFlop myWonAtSD=myWonWhenSeenStreet1
#add each value to the appropriate array #add each value to the appropriate array
VPIP.append(myVPIP) street0VPI.append(myStreet0VPI)
PFR.append(myPFR) street0Aggr.append(myStreet0Aggr)
PF3B4BChance.append(myPF3B4BChance) street0_3B4BChance.append(myStreet0_3B4BChance)
PF3B4B.append(myPF3B4B) street0_3B4BDone.append(myStreet0_3B4BDone)
sawFlop.append(mySawFlop) street1Seen.append(myStreet1Seen)
sawTurn.append(mySawTurn) street2Seen.append(myStreet2Seen)
sawRiver.append(mySawRiver) street3Seen.append(myStreet3Seen)
street4Seen.append(myStreet4Seen)
sawShowdown.append(mySawShowdown) sawShowdown.append(mySawShowdown)
raisedFlop.append(myRaisedFlop) street1Aggr.append(myStreet1Aggr)
raisedTurn.append(myRaisedTurn) street2Aggr.append(myStreet2Aggr)
raisedRiver.append(myRaisedRiver) street3Aggr.append(myStreet3Aggr)
otherRaisedFlop.append(myOtherRaisedFlop) street4Aggr.append(myStreet4Aggr)
otherRaisedFlopFold.append(myOtherRaisedFlopFold) otherRaisedStreet1.append(myOtherRaisedStreet1)
otherRaisedTurn.append(myOtherRaisedTurn) otherRaisedStreet2.append(myOtherRaisedStreet2)
otherRaisedTurnFold.append(myOtherRaisedTurnFold) otherRaisedStreet3.append(myOtherRaisedStreet3)
otherRaisedRiver.append(myOtherRaisedRiver) otherRaisedStreet4.append(myOtherRaisedStreet4)
otherRaisedRiverFold.append(myOtherRaisedRiverFold) foldToOtherRaisedStreet1.append(myFoldToOtherRaisedStreet1)
wonWhenSeenFlop.append(myWonWhenSeenFlop) foldToOtherRaisedStreet2.append(myFoldToOtherRaisedStreet2)
foldToOtherRaisedStreet3.append(myFoldToOtherRaisedStreet3)
foldToOtherRaisedStreet4.append(myFoldToOtherRaisedStreet4)
wonWhenSeenStreet1.append(myWonWhenSeenStreet1)
wonAtSD.append(myWonAtSD) wonAtSD.append(myWonAtSD)
stealAttemptChance.append(myStealAttemptChance) stealAttemptChance.append(myStealAttemptChance)
stealAttempted.append(myStealAttempted) stealAttempted.append(myStealAttempted)
@ -1494,29 +1505,34 @@ def generateHudData(player_ids, category, action_types, actionTypeByNo, winnings
raise FpdbError("invalid position") raise FpdbError("invalid position")
#add each array to the to-be-returned dictionary #add each array to the to-be-returned dictionary
result={'VPIP':VPIP} result={'street0VPI':street0VPI}
result['PFR']=PFR result['street0Aggr']=street0Aggr
result['PF3B4BChance']=PF3B4BChance result['street0_3B4BChance']=street0_3B4BChance
result['PF3B4B']=PF3B4B result['street0_3B4BDone']=street0_3B4BDone
result['sawFlop']=sawFlop result['street1Seen']=street1Seen
result['sawTurn']=sawTurn result['street2Seen']=street2Seen
result['sawRiver']=sawRiver result['street3Seen']=street3Seen
result['street4Seen']=street4Seen
result['sawShowdown']=sawShowdown result['sawShowdown']=sawShowdown
result['raisedFlop']=raisedFlop
result['otherRaisedFlop']=otherRaisedFlop result['street1Aggr']=street1Aggr
result['otherRaisedFlopFold']=otherRaisedFlopFold result['otherRaisedStreet1']=otherRaisedStreet1
result['raisedTurn']=raisedTurn result['foldToOtherRaisedStreet1']=foldToOtherRaisedStreet1
result['otherRaisedTurn']=otherRaisedTurn result['street2Aggr']=street2Aggr
result['otherRaisedTurnFold']=otherRaisedTurnFold result['otherRaisedStreet2']=otherRaisedStreet2
result['raisedRiver']=raisedRiver result['foldToOtherRaisedStreet2']=foldToOtherRaisedStreet2
result['otherRaisedRiver']=otherRaisedRiver result['street3Aggr']=street3Aggr
result['otherRaisedRiverFold']=otherRaisedRiverFold result['otherRaisedStreet3']=otherRaisedStreet3
result['wonWhenSeenFlop']=wonWhenSeenFlop result['foldToOtherRaisedStreet3']=foldToOtherRaisedStreet3
result['street4Aggr']=street4Aggr
result['otherRaisedStreet4']=otherRaisedStreet4
result['foldToOtherRaisedStreet4']=foldToOtherRaisedStreet4
result['wonWhenSeenStreet1']=wonWhenSeenStreet1
result['wonAtSD']=wonAtSD result['wonAtSD']=wonAtSD
result['stealAttemptChance']=stealAttemptChance result['stealAttemptChance']=stealAttemptChance
result['stealAttempted']=stealAttempted result['stealAttempted']=stealAttempted
#after having calculated the above we now do second level calculations, so far just steal attempts. #now the various steal values
foldBbToStealChance=[] foldBbToStealChance=[]
foldedBbToSteal=[] foldedBbToSteal=[]
foldSbToStealChance=[] foldSbToStealChance=[]
@ -1549,130 +1565,158 @@ def generateHudData(player_ids, category, action_types, actionTypeByNo, winnings
result['foldSbToStealChance']=foldSbToStealChance result['foldSbToStealChance']=foldSbToStealChance
result['foldedSbToSteal']=foldedSbToSteal result['foldedSbToSteal']=foldedSbToSteal
#now CB/2B/3B #now CB
contBetChance=[] street1CBChance=[]
contBetDone=[] street1CBDone=[]
for player in range (len(player_ids)): for player in range (len(player_ids)):
myContBetChance=False myStreet1CBChance=False
myContBetDone=False myStreet1CBDone=False
if PFR[player]: if street0VPI[player]:
myContBetChance=True myStreet1CBChance=True
if raisedFlop[player]: if street1Aggr[player]:
myContBetDone=True myStreet1CBDone=True
contBetChance.append(myContBetChance) street1CBChance.append(myStreet1CBChance)
contBetDone.append(myContBetDone) street1CBDone.append(myStreet1CBDone)
result['contBetChance']=contBetChance result['street1CBChance']=street1CBChance
result['contBetDone']=contBetDone result['street1CBDone']=street1CBDone
#now 2B #now 2B
secondBarrelChance=[] street2CBChance=[]
secondBarrelDone=[] street2CBDone=[]
for player in range (len(player_ids)): for player in range (len(player_ids)):
mySecondBarrelChance=False myStreet2CBChance=False
mySecondBarrelDone=False myStreet2CBDone=False
if contBetDone[player]: if street1CBDone[player]:
mySecondBarrelChance=True myStreet2CBChance=True
if raisedTurn[player]: if street2Aggr[player]:
mySecondBarrelDone=True myStreet2CBDone=True
secondBarrelChance.append(mySecondBarrelChance) street2CBChance.append(myStreet2CBChance)
secondBarrelDone.append(mySecondBarrelDone) street2CBDone.append(myStreet2CBDone)
result['secondBarrelChance']=secondBarrelChance result['street2CBChance']=street2CBChance
result['secondBarrelDone']=secondBarrelDone result['street2CBDone']=street2CBDone
#now 3B #now 3B
thirdBarrelChance=[] street3CBChance=[]
thirdBarrelDone=[] street3CBDone=[]
for player in range (len(player_ids)): for player in range (len(player_ids)):
myThirdBarrelChance=False myStreet3CBChance=False
myThirdBarrelDone=False myStreet3CBDone=False
if secondBarrelDone[player]: if street2CBDone[player]:
myThirdBarrelChance=True myStreet3CBChance=True
if raisedRiver[player]: if street3Aggr[player]:
myThirdBarrelDone=True myStreet3CBDone=True
street3CBChance.append(myStreet3CBChance)
street3CBDone.append(myStreet3CBDone)
result['street3CBChance']=street3CBChance
result['street3CBDone']=street3CBDone
#4B - todo, implement for stud/razz
street4CBChance=[]
street4CBDone=[]
for player in range (len(player_ids)):
myStreet4CBChance=False
myStreet4CBDone=False
street4CBChance.append(myStreet4CBChance)
street4CBDone.append(myStreet4CBDone)
result['street4CBChance']=street4CBChance
result['street4CBDone']=street4CBDone
thirdBarrelChance.append(myThirdBarrelChance)
thirdBarrelDone.append(myThirdBarrelDone)
result['thirdBarrelChance']=thirdBarrelChance
result['thirdBarrelDone']=thirdBarrelDone
result['position']=hudDataPositions result['position']=hudDataPositions
foldToStreet1CBChance=[]
foldToContBetChance=[] foldToStreet1CBDone=[]
foldToContBetDone=[] foldToStreet2CBChance=[]
foldToSecondBarrelChance=[] foldToStreet2CBDone=[]
foldToSecondBarrelDone=[] foldToStreet3CBChance=[]
foldToThirdBarrelChance=[] foldToStreet3CBDone=[]
foldToThirdBarrelDone=[] foldToStreet4CBChance=[]
foldToStreet4CBDone=[]
totalProfit=[] totalProfit=[]
flopCheckCallRaiseChance=[] street1CheckCallRaiseChance=[]
flopCheckCallRaiseDone=[] street1CheckCallRaiseDone=[]
turnCheckCallRaiseChance=[] street2CheckCallRaiseChance=[]
turnCheckCallRaiseDone=[] street2CheckCallRaiseDone=[]
riverCheckCallRaiseChance=[] street3CheckCallRaiseChance=[]
riverCheckCallRaiseDone=[] street3CheckCallRaiseDone=[]
street4CheckCallRaiseChance=[]
street4CheckCallRaiseDone=[]
for player in range (len(player_ids)): for player in range (len(player_ids)):
myFoldToContBetChance=False myFoldToStreet1CBChance=False
myFoldToContBetDone=False myFoldToStreet1CBDone=False
myFoldToSecondBarrelChance=False myFoldToStreet2CBChance=False
myFoldToSecondBarrelDone=False myFoldToStreet2CBDone=False
myFoldToThirdBarrelChance=False myFoldToStreet3CBChance=False
myFoldToThirdBarrelDone=False myFoldToStreet3CBDone=False
myFoldToStreet4CBChance=False
myFoldToStreet4CBDone=False
myTotalProfit=0 myTotalProfit=0
myFlopCheckCallRaiseChance=False myStreet1CheckCallRaiseChance=False
myFlopCheckCallRaiseDone=False myStreet1CheckCallRaiseDone=False
myTurnCheckCallRaiseChance=False myStreet2CheckCallRaiseChance=False
myTurnCheckCallRaiseDone=False myStreet2CheckCallRaiseDone=False
myRiverCheckCallRaiseChance=False myStreet3CheckCallRaiseChance=False
myRiverCheckCallRaiseDone=False myStreet3CheckCallRaiseDone=False
myStreet4CheckCallRaiseChance=False
myStreet4CheckCallRaiseDone=False
foldToContBetChance.append(myFoldToContBetChance) foldToStreet1CBChance.append(myFoldToStreet1CBChance)
foldToContBetDone.append(myFoldToContBetDone) foldToStreet1CBDone.append(myFoldToStreet1CBDone)
foldToSecondBarrelChance.append(myFoldToSecondBarrelChance) foldToStreet2CBChance.append(myFoldToStreet2CBChance)
foldToSecondBarrelDone.append(myFoldToSecondBarrelDone) foldToStreet2CBDone.append(myFoldToStreet2CBDone)
foldToThirdBarrelChance.append(myFoldToThirdBarrelChance) foldToStreet3CBChance.append(myFoldToStreet3CBChance)
foldToThirdBarrelDone.append(myFoldToThirdBarrelDone) foldToStreet3CBDone.append(myFoldToStreet3CBDone)
foldToStreet4CBChance.append(myFoldToStreet4CBChance)
foldToStreet4CBDone.append(myFoldToStreet4CBDone)
totalProfit.append(myTotalProfit) totalProfit.append(myTotalProfit)
flopCheckCallRaiseChance.append(myFlopCheckCallRaiseChance) street1CheckCallRaiseChance.append(myStreet1CheckCallRaiseChance)
flopCheckCallRaiseDone.append(myFlopCheckCallRaiseDone) street1CheckCallRaiseDone.append(myStreet1CheckCallRaiseDone)
turnCheckCallRaiseChance.append(myTurnCheckCallRaiseChance) street2CheckCallRaiseChance.append(myStreet2CheckCallRaiseChance)
turnCheckCallRaiseDone.append(myTurnCheckCallRaiseDone) street2CheckCallRaiseDone.append(myStreet2CheckCallRaiseDone)
riverCheckCallRaiseChance.append(myRiverCheckCallRaiseChance) street3CheckCallRaiseChance.append(myStreet3CheckCallRaiseChance)
riverCheckCallRaiseDone.append(myRiverCheckCallRaiseDone) street3CheckCallRaiseDone.append(myStreet3CheckCallRaiseDone)
street4CheckCallRaiseChance.append(myStreet4CheckCallRaiseChance)
street4CheckCallRaiseDone.append(myStreet4CheckCallRaiseDone)
result['foldToContBetChance']=foldToContBetChance result['foldToStreet1CBChance']=foldToStreet1CBChance
result['foldToContBetDone']=foldToContBetDone result['foldToStreet1CBDone']=foldToStreet1CBDone
result['foldToSecondBarrelChance']=foldToSecondBarrelChance result['foldToStreet2CBChance']=foldToStreet2CBChance
result['foldToSecondBarrelDone']=foldToSecondBarrelDone result['foldToStreet2CBDone']=foldToStreet2CBDone
result['foldToThirdBarrelChance']=foldToThirdBarrelChance result['foldToStreet3CBChance']=foldToStreet3CBChance
result['foldToThirdBarrelDone']=foldToThirdBarrelDone result['foldToStreet3CBDone']=foldToStreet3CBDone
result['foldToStreet4CBChance']=foldToStreet4CBChance
result['foldToStreet4CBDone']=foldToStreet4CBDone
result['totalProfit']=totalProfit result['totalProfit']=totalProfit
result['flopCheckCallRaiseChance']=flopCheckCallRaiseChance result['street1CheckCallRaiseChance']=street1CheckCallRaiseChance
result['flopCheckCallRaiseDone']=flopCheckCallRaiseDone result['street1CheckCallRaiseDone']=street1CheckCallRaiseDone
result['turnCheckCallRaiseChance']=turnCheckCallRaiseChance result['street2CheckCallRaiseChance']=street2CheckCallRaiseChance
result['turnCheckCallRaiseDone']=turnCheckCallRaiseDone result['street2CheckCallRaiseDone']=street2CheckCallRaiseDone
result['riverCheckCallRaiseChance']=riverCheckCallRaiseChance result['street3CheckCallRaiseChance']=street3CheckCallRaiseChance
result['riverCheckCallRaiseDone']=riverCheckCallRaiseDone result['street3CheckCallRaiseDone']=street3CheckCallRaiseDone
result['street4CheckCallRaiseChance']=street4CheckCallRaiseChance
result['street4CheckCallRaiseDone']=street4CheckCallRaiseDone
return result return result
#end def calculateHudImport #end def calculateHudImport
def storeHudData(cursor, category, gametypeId, playerIds, hudImportData): def storeHudCache(cursor, category, gametypeId, playerIds, hudImportData):
if (category=="holdem" or category=="omahahi" or category=="omahahilo"): if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
for player in range (len(playerIds)): for player in range (len(playerIds)):
cursor.execute("SELECT * FROM HudDataHoldemOmaha WHERE gametypeId=%s AND playerId=%s AND activeSeats=%s AND position=%s", (gametypeId, playerIds[player], len(playerIds), hudImportData['position'][player])) cursor.execute("SELECT * FROM HudCache WHERE gametypeId=%s AND playerId=%s AND activeSeats=%s AND position=%s", (gametypeId, playerIds[player], len(playerIds), hudImportData['position'][player]))
row=cursor.fetchone() row=cursor.fetchone()
#print "gametypeId:", gametypeId, "playerIds[player]",playerIds[player], "len(playerIds):",len(playerIds), "row:",row #print "gametypeId:", gametypeId, "playerIds[player]",playerIds[player], "len(playerIds):",len(playerIds), "row:",row
@ -1688,8 +1732,7 @@ def storeHudData(cursor, category, gametypeId, playerIds, hudImportData):
row.append(gametypeId) row.append(gametypeId)
row.append(playerIds[player]) row.append(playerIds[player])
row.append(len(playerIds))#seats row.append(len(playerIds))#seats
row.append(0)#HDs for i in range(len(hudImportData)+2):
for i in range(len(hudImportData)):
row.append(0) row.append(0)
else: else:
@ -1699,70 +1742,121 @@ def storeHudData(cursor, category, gametypeId, playerIds, hudImportData):
newrow.append(row[i]) newrow.append(row[i])
row=newrow row=newrow
row[4]+=1 #HDs row[4]=hudImportData['position'][player]
if hudImportData['VPIP'][player]: row[5]+=1 row[5]=1 #tourneysGametypeId
if hudImportData['PFR'][player]: row[6]+=1 row[6]+=1 #HDs
if hudImportData['PF3B4BChance'][player]: row[7]+=1 if hudImportData['street0VPI'][player]: row[7]+=1
if hudImportData['PF3B4B'][player]: row[8]+=1 if hudImportData['street0Aggr'][player]: row[8]+=1
if hudImportData['sawFlop'][player]: row[9]+=1 if hudImportData['street0_3B4BChance'][player]: row[9]+=1
if hudImportData['sawTurn'][player]: row[10]+=1 if hudImportData['street0_3B4BDone'][player]: row[10]+=1
if hudImportData['sawRiver'][player]: row[11]+=1 if hudImportData['street1Seen'][player]: row[11]+=1
if hudImportData['sawShowdown'][player]: row[12]+=1 if hudImportData['street2Seen'][player]: row[12]+=1
if hudImportData['raisedFlop'][player]: row[13]+=1 if hudImportData['street3Seen'][player]: row[13]+=1
if hudImportData['raisedTurn'][player]: row[14]+=1 if hudImportData['street4Seen'][player]: row[14]+=1
if hudImportData['raisedRiver'][player]: row[15]+=1 if hudImportData['sawShowdown'][player]: row[15]+=1
if hudImportData['otherRaisedFlop'][player]: row[16]+=1 if hudImportData['street1Aggr'][player]: row[16]+=1
if hudImportData['otherRaisedFlopFold'][player]: row[17]+=1 if hudImportData['street2Aggr'][player]: row[17]+=1
if hudImportData['otherRaisedTurn'][player]: row[18]+=1 if hudImportData['street3Aggr'][player]: row[18]+=1
if hudImportData['otherRaisedTurnFold'][player]: row[19]+=1 if hudImportData['street4Aggr'][player]: row[19]+=1
if hudImportData['otherRaisedRiver'][player]: row[20]+=1 if hudImportData['otherRaisedStreet1'][player]: row[20]+=1
if hudImportData['otherRaisedRiverFold'][player]: row[21]+=1 if hudImportData['otherRaisedStreet2'][player]: row[21]+=1
if hudImportData['wonWhenSeenFlop'][player]!=0.0: row[22]+=hudImportData['wonWhenSeenFlop'][player] if hudImportData['otherRaisedStreet3'][player]: row[22]+=1
if hudImportData['wonAtSD'][player]!=0.0: row[23]+=hudImportData['wonAtSD'][player] if hudImportData['otherRaisedStreet4'][player]: row[23]+=1
if hudImportData['stealAttemptChance'][player]: row[24]+=1 if hudImportData['foldToOtherRaisedStreet1'][player]: row[24]+=1
if hudImportData['stealAttempted'][player]: row[25]+=1 if hudImportData['foldToOtherRaisedStreet2'][player]: row[25]+=1
if hudImportData['foldBbToStealChance'][player]: row[26]+=1 if hudImportData['foldToOtherRaisedStreet3'][player]: row[26]+=1
if hudImportData['foldedBbToSteal'][player]: row[27]+=1 if hudImportData['foldToOtherRaisedStreet4'][player]: row[27]+=1
if hudImportData['foldSbToStealChance'][player]: row[28]+=1 if hudImportData['wonWhenSeenStreet1'][player]!=0.0: row[28]+=hudImportData['wonWhenSeenStreet1'][player]
if hudImportData['foldedSbToSteal'][player]: row[29]+=1 if hudImportData['wonAtSD'][player]!=0.0: row[29]+=hudImportData['wonAtSD'][player]
if hudImportData['stealAttemptChance'][player]: row[30]+=1
if hudImportData['stealAttempted'][player]: row[31]+=1
if hudImportData['foldBbToStealChance'][player]: row[32]+=1
if hudImportData['foldedBbToSteal'][player]: row[33]+=1
if hudImportData['foldSbToStealChance'][player]: row[34]+=1
if hudImportData['foldedSbToSteal'][player]: row[35]+=1
if hudImportData['contBetChance'][player]: row[30]+=1 if hudImportData['street1CBChance'][player]: row[36]+=1
if hudImportData['contBetDone'][player]: row[31]+=1 if hudImportData['street1CBDone'][player]: row[37]+=1
if hudImportData['secondBarrelChance'][player]: row[32]+=1 if hudImportData['street2CBChance'][player]: row[38]+=1
if hudImportData['secondBarrelDone'][player]: row[33]+=1 if hudImportData['street2CBDone'][player]: row[39]+=1
if hudImportData['thirdBarrelChance'][player]: row[34]+=1 if hudImportData['street3CBChance'][player]: row[40]+=1
if hudImportData['thirdBarrelDone'][player]: row[35]+=1 if hudImportData['street3CBDone'][player]: row[41]+=1
row[36]=hudImportData['position'][player] if hudImportData['street4CBChance'][player]: row[42]+=1
if hudImportData['street4CBDone'][player]: row[43]+=1
if hudImportData['foldToContBetChance'][player]: row[37]+=1 if hudImportData['foldToStreet1CBChance'][player]: row[44]+=1
if hudImportData['foldToContBetDone'][player]: row[38]+=1 if hudImportData['foldToStreet1CBDone'][player]: row[45]+=1
if hudImportData['foldToSecondBarrelChance'][player]: row[39]+=1 if hudImportData['foldToStreet2CBChance'][player]: row[46]+=1
if hudImportData['foldToSecondBarrelDone'][player]: row[40]+=1 if hudImportData['foldToStreet2CBDone'][player]: row[47]+=1
if hudImportData['foldToThirdBarrelChance'][player]: row[41]+=1 if hudImportData['foldToStreet3CBChance'][player]: row[48]+=1
if hudImportData['foldToThirdBarrelDone'][player]: row[42]+=1 if hudImportData['foldToStreet3CBDone'][player]: row[49]+=1
if hudImportData['foldToStreet4CBChance'][player]: row[50]+=1
if hudImportData['foldToStreet4CBDone'][player]: row[51]+=1
row[43]+=hudImportData['totalProfit'][player] row[52]+=hudImportData['totalProfit'][player]
if hudImportData['flopCheckCallRaiseChance'][player]: row[44]+=1 if hudImportData['street1CheckCallRaiseChance'][player]: row[53]+=1
if hudImportData['flopCheckCallRaiseDone'][player]: row[45]+=1 if hudImportData['street1CheckCallRaiseDone'][player]: row[54]+=1
if hudImportData['turnCheckCallRaiseChance'][player]: row[46]+=1 if hudImportData['street2CheckCallRaiseChance'][player]: row[55]+=1
if hudImportData['turnCheckCallRaiseDone'][player]: row[47]+=1 if hudImportData['street2CheckCallRaiseDone'][player]: row[56]+=1
if hudImportData['riverCheckCallRaiseChance'][player]: row[48]+=1 if hudImportData['street3CheckCallRaiseChance'][player]: row[57]+=1
if hudImportData['riverCheckCallRaiseDone'][player]: row[49]+=1 if hudImportData['street3CheckCallRaiseDone'][player]: row[58]+=1
if hudImportData['street4CheckCallRaiseChance'][player]: row[59]+=1
if hudImportData['street4CheckCallRaiseDone'][player]: row[60]+=1
if doInsert: if doInsert:
#print "playerid before insert:",row[2] #print "playerid before insert:",row[2]
cursor.execute("""INSERT INTO HudDataHoldemOmaha cursor.execute("""INSERT INTO HudCache
(gametypeId, playerId, activeSeats, HDs, VPIP, PFR, PF3B4BChance, PF3B4B, sawFlop, sawTurn, sawRiver, sawShowdown, raisedFlop, raisedTurn, raisedRiver, otherRaisedFlop, otherRaisedFlopFold, otherRaisedTurn, otherRaisedTurnFold, otherRaisedRiver, otherRaisedRiverFold, wonWhenSeenFlop, wonAtSD, stealAttemptChance, stealAttempted, foldBbToStealChance, foldedBbToSteal, foldSbToStealChance, foldedSbToSteal, contBetChance, contBetDone, secondBarrelChance, secondBarrelDone, thirdBarrelChance, thirdBarrelDone, position, tourneysGametypeId, foldToContBetChance, foldToContBetDone, foldToSecondBarrelChance, foldToSecondBarrelDone, foldToThirdBarrelChance, foldToThirdBarrelDone, totalProfit, flopCheckCallRaiseChance, flopCheckCallRaiseDone, turnCheckCallRaiseChance, turnCheckCallRaiseDone, riverCheckCallRaiseChance, riverCheckCallRaiseDone) (gametypeId, playerId, activeSeats, position, tourneysGametypeId,
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, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""", (row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19], row[20], row[21], row[22], row[23], row[24], row[25], row[26], row[27], row[28], row[29], row[30], row[31], row[32], row[33], row[34], row[35], row[36], 1, row[37], row[38], row[39], row[40], row[41], row[42], row[43], row[44], row[45], row[46], row[47], row[48], row[49])) HDs, street0VPI, street0Aggr, street0_3B4BChance, street0_3B4BDone,
street1Seen, street2Seen, street3Seen, street4Seen, sawShowdown,
street1Aggr, street2Aggr, street3Aggr, street4Aggr, otherRaisedStreet1,
otherRaisedStreet2, otherRaisedStreet3, otherRaisedStreet4, foldToOtherRaisedStreet1, foldToOtherRaisedStreet2,
foldToOtherRaisedStreet3, foldToOtherRaisedStreet4, wonWhenSeenStreet1, wonAtSD, stealAttemptChance,
stealAttempted, foldBbToStealChance, foldedBbToSteal, foldSbToStealChance, foldedSbToSteal,
street1CBChance, street1CBDone, street2CBChance, street2CBDone, street3CBChance,
street3CBDone, street4CBChance, street4CBDone, foldToStreet1CBChance, foldToStreet1CBDone,
foldToStreet2CBChance, foldToStreet2CBDone, foldToStreet3CBChance, foldToStreet3CBDone, foldToStreet4CBChance,
foldToStreet4CBDone, totalProfit, street1CheckCallRaiseChance, street1CheckCallRaiseDone, street2CheckCallRaiseChance,
street2CheckCallRaiseDone, street3CheckCallRaiseChance, street3CheckCallRaiseDone, street4CheckCallRaiseChance, street4CheckCallRaiseDone)
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, %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, %s,
%s, %s, %s, %s, %s)""", (row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19], row[20], row[21], row[22], row[23], row[24], row[25], row[26], row[27], row[28], row[29], row[30], row[31], row[32], row[33], row[34], row[35], row[36], row[37], row[38], row[39], row[40], row[41], row[42], row[43], row[44], row[45], row[46], row[47], row[48], row[49], row[50], row[51], row[52], row[53], row[54], row[55], row[56], row[57], row[58], row[59], row[60]))
else: else:
#print "storing updated hud data line" #print "storing updated hud data line"
cursor.execute("""UPDATE HudDataHoldemOmaha cursor.execute("""UPDATE HudCache
SET HDs=%s, VPIP=%s, PFR=%s, PF3B4BChance=%s, PF3B4B=%s, sawFlop=%s, sawTurn=%s, sawRiver=%s, sawShowdown=%s, raisedFlop=%s, raisedTurn=%s, raisedRiver=%s, otherRaisedFlop=%s, otherRaisedFlopFold=%s, otherRaisedTurn=%s, otherRaisedTurnFold=%s, otherRaisedRiver=%s, otherRaisedRiverFold=%s, wonWhenSeenFlop=%s, wonAtSD=%s, stealAttemptChance=%s, stealAttempted=%s, foldBbToStealChance=%s, foldedBbToSteal=%s, foldSbToStealChance=%s, foldedSbToSteal=%s, contBetChance=%s, contBetDone=%s, secondBarrelChance=%s, secondBarrelDone=%s, thirdBarrelChance=%s, thirdBarrelDone=%s, tourneysGametypeId=%s, foldToContBetChance=%s, foldToContBetDone=%s, foldToSecondBarrelChance=%s, foldToSecondBarrelDone=%s, foldToThirdBarrelChance=%s, foldToThirdBarrelDone=%s, totalProfit=%s, flopCheckCallRaiseChance=%s, flopCheckCallRaiseDone=%s, turnCheckCallRaiseChance=%s, turnCheckCallRaiseDone=%s, riverCheckCallRaiseChance=%s, riverCheckCallRaiseDone=%s SET HDs=%s, street0VPI=%s, street0Aggr=%s, street0_3B4BChance=%s, street0_3B4BDone=%s,
WHERE gametypeId=%s AND playerId=%s AND activeSeats=%s AND position=%s""", (row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19], row[20], row[21], row[22], row[23], row[24], row[25], row[26], row[27], row[28], row[29], row[30], row[31], row[32], row[33], row[34], row[35], 1, row[37], row[38], row[39], row[40], row[41], row[42], row[43], row[44], row[45], row[46], row[47], row[48], row[49], row[1], row[2], row[3], row[36])) street1Seen=%s, street2Seen=%s, street3Seen=%s, street4Seen=%s, sawShowdown=%s,
street1Aggr=%s, street2Aggr=%s, street3Aggr=%s, street4Aggr=%s, otherRaisedStreet1=%s,
otherRaisedStreet2=%s, otherRaisedStreet3=%s, otherRaisedStreet4=%s, foldToOtherRaisedStreet1=%s, foldToOtherRaisedStreet2=%s,
foldToOtherRaisedStreet3=%s, foldToOtherRaisedStreet4=%s, wonWhenSeenStreet1=%s, wonAtSD=%s, stealAttemptChance=%s,
stealAttempted=%s, foldBbToStealChance=%s, foldedBbToSteal=%s, foldSbToStealChance=%s, foldedSbToSteal=%s,
street1CBChance=%s, street1CBDone=%s, street2CBChance=%s, street2CBDone=%s, street3CBChance=%s,
street3CBDone=%s, street4CBChance=%s, street4CBDone=%s, foldToStreet1CBChance=%s, foldToStreet1CBDone=%s,
foldToStreet2CBChance=%s, foldToStreet2CBDone=%s, foldToStreet3CBChance=%s, foldToStreet3CBDone=%s, foldToStreet4CBChance=%s,
foldToStreet4CBDone=%s, totalProfit=%s, street1CheckCallRaiseChance=%s, street1CheckCallRaiseDone=%s, street2CheckCallRaiseChance=%s,
street2CheckCallRaiseDone=%s, street3CheckCallRaiseChance=%s, street3CheckCallRaiseDone=%s, street4CheckCallRaiseChance=%s, street4CheckCallRaiseDone=%s
WHERE gametypeId=%s AND playerId=%s AND activeSeats=%s AND position=%s AND tourneysGametypeId=%s""", (row[6], row[7], row[8], row[9], row[10],
row[11], row[12], row[13], row[14], row[15],
row[16], row[17], row[18], row[19], row[20],
row[21], row[22], row[23], row[24], row[25],
row[26], row[27], row[28], row[29], row[30],
row[31], row[32], row[33], row[34], row[35], row[36], row[37], row[38], row[39], row[40],
row[41], row[42], row[43], row[44], row[45], row[46], row[47], row[48], row[49], row[50],
row[51], row[52], row[53], row[54], row[55], row[56], row[57], row[58], row[59], row[60],
row[1], row[2], row[3], row[4], row[5]))
else: else:
raise FpdbError("todo") raise FpdbError("todo")
#end def storeHudData #end def storeHudCache
def store_tourneys(cursor, site_id, site_tourney_no, buyin, fee, knockout, entries, prizepool, start_time): def store_tourneys(cursor, site_id, site_tourney_no, buyin, fee, knockout, entries, prizepool, start_time):
cursor.execute("SELECT id FROM Tourneys WHERE siteTourneyNo=%s AND siteId=%s", (site_tourney_no, site_id)) cursor.execute("SELECT id FROM Tourneys WHERE siteTourneyNo=%s AND siteId=%s", (site_tourney_no, site_id))

View File

@ -7,5 +7,7 @@
<li><a href="<?php echo SITE_URL ?>docs.php">Documentation</a></li> <li><a href="<?php echo SITE_URL ?>docs.php">Documentation</a></li>
<li><a href="<?php echo SITE_URL ?>license.php">License</a></li> <li><a href="<?php echo SITE_URL ?>license.php">License</a></li>
<li><a href="<?php echo SITE_URL ?>contact.php">Contact</a></li> <li><a href="<?php echo SITE_URL ?>contact.php">Contact</a></li>
<li><a href="https://sourceforge.net/forum/?group_id=226872">Forums</a></li>
<li><a href="https://sourceforge.net/tracker/?group_id=226872">Bug/Request Tracker</a></li>
</ul> </ul>
</div> </div>