Merge branch 'master' of git://git.assembla.com/fpdb
This commit is contained in:
		
						commit
						bfe3325c9a
					
				|  | @ -30,14 +30,17 @@ py2exe 0.6.9 ... http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2ex | |||
| psycopg2 ... http://www.stickpeople.com/projects/python/win-psycopg/psycopg2-2.2.1.win32-py2.6-pg8.4.3-release.exe | ||||
| (Note: stickpeople is the offical repository, not a community build) | ||||
| 
 | ||||
| (py)pokereval v138 ... http://sourceforge.net/projects/fpdb/files/fpdb/pypoker-eval-win32/pokereval-138.win32.exe/download | ||||
| (Note: There are no official windows builds, this installer is built from source.  A walkthrough is in the same directory as this walkthrough. | ||||
| 
 | ||||
| 1.2/ MySQL  | ||||
| 
 | ||||
| MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe ... http://www.mediafire.com/file/iodnnnznmj1/MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe | ||||
| Install the following file: | ||||
| 
 | ||||
| This is an intaller built from source by gimick.  There are no official mysql-python2.6 builds for windows. | ||||
| MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe ... http://sourceforge.net/projects/fpdb/files/fpdb/MySQL-python-1.2.3-win32-py2.6/MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe/download | ||||
| 
 | ||||
| Community builds are also available from some developers.  see www.codegood.com for example. | ||||
| Note: This is an intaller built from source by gimick.  A walkthrough to build this installer is in the same directory as this walkthrough. | ||||
| Note: There is no official mysql-python2.6 build for windows.  Community builds are available from some developers.  see www.codegood.com for example. | ||||
| 
 | ||||
| 
 | ||||
| 1.3/ pytz fixup to work in an executable package | ||||
|  |  | |||
|  | @ -68,7 +68,6 @@ import matplotlib | |||
| import shutil | ||||
| #from datetime import date | ||||
| 
 | ||||
| 
 | ||||
| def isSystemDLL(pathname): | ||||
|         #dwmapi appears to be vista-specific file, not XP  | ||||
|         if os.path.basename(pathname).lower() in ("dwmapi.dll"): | ||||
|  | @ -112,7 +111,7 @@ def copy_file(source,destination): | |||
|     shutil.copy( source, destination ) | ||||
| 
 | ||||
| 
 | ||||
| fpdbver = '0.20.906' | ||||
| fpdbver = '0.21.rc1' | ||||
| 
 | ||||
| distdir = r'fpdb-' + fpdbver | ||||
| rootdir = r'../../' #cwd is normally /packaging/windows | ||||
|  | @ -120,6 +119,7 @@ pydir = rootdir+'pyfpdb/' | |||
| gfxdir = rootdir+'gfx/' | ||||
| sys.path.append( pydir )  # allows fpdb modules to be found by options/includes below | ||||
| 
 | ||||
| 
 | ||||
| print "\n" + r"Output will be created in "+distdir | ||||
| 
 | ||||
| print "*** Cleaning working folders ***" | ||||
|  | @ -142,15 +142,19 @@ setup( | |||
|                   {'script': pydir+'Configuration.py', } | ||||
|               ], | ||||
| 
 | ||||
|     console = [   {'script': pydir+'Stove.py', } | ||||
|               ], | ||||
| 
 | ||||
|     options = {'py2exe': { | ||||
|                       'packages'    : ['encodings', 'matplotlib'], | ||||
|                       'includes'    : ['gio', 'cairo', 'pango', 'pangocairo', 'atk', 'gobject'     | ||||
|                                       ,'matplotlib.numerix.random_array' | ||||
|                                       ,'AbsoluteToFpdb',      'BetfairToFpdb' | ||||
|                                       ,'CarbonToFpdb',        'EverleafToFpdb' | ||||
|                                       ,'FulltiltToFpdb',      'OnGameToFpdb' | ||||
|                                       ,'PartyPokerToFpdb',    'PokerStarsToFpdb' | ||||
|                                       ,'UltimateBetToFpdb',   'Win2dayToFpdb' | ||||
|                                       ,'FulltiltToFpdb',      'iPokerToFpdb' | ||||
|                                       ,'OnGameToFpdb',        'PartyPokerToFpdb' | ||||
|                                       ,'PkrToFpdb',           'PokerStarsToFpdb' | ||||
|                                       ,'Win2dayToFpdb',       'WinamaxToFpdb' | ||||
|                                       ], | ||||
|                       'excludes'    : ['_tkagg', '_agg2', 'cocoaagg', 'fltkagg'], | ||||
|                       'dll_excludes': ['libglade-2.0-0.dll', 'libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll' | ||||
|  |  | |||
							
								
								
									
										191
									
								
								packaging/windows/pypoker138walkthrough.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										191
									
								
								packaging/windows/pypoker138walkthrough.txt
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,191 @@ | |||
| pypokereval build for windows stepbystep guide | ||||
| ---------------------------------------------- | ||||
| 
 | ||||
| Created by Gimick on 3rd December 2010  | ||||
| 
 | ||||
| This walkthrough is derived with the assistance of EricBlade and the build notes | ||||
| supplied by Loic Dachary <loic@dachary.org> http://dachary.org/ | ||||
| 
 | ||||
| Content is available under the the GNU Affero General Public License version 3 | ||||
| 
 | ||||
| 
 | ||||
| 0. Build environ | ||||
| ---------------- | ||||
| 
 | ||||
| We are building against the 2008 runtime because Python 2.6 | ||||
|    has the same dependency (msvcr90.dll version 9.0.21022.8) | ||||
| 
 | ||||
| Using winXPhome 32 bit | ||||
| 
 | ||||
| 1 Visual studio | ||||
| --------------- | ||||
| 
 | ||||
| 1.1/ Get the ISO CD from here ... http://www.microsoft.com/express/Downloads/#2008-All | ||||
| 
 | ||||
| 1.2/ Run and install Visual C++ only, don't bother with the additional packages offered | ||||
| 
 | ||||
| This package will run 30 days before registration is needed | ||||
| 
 | ||||
| 2. Python runtime | ||||
| ----------------- | ||||
| 
 | ||||
| 2.1/ Install python runtime from here ...  | ||||
| 
 | ||||
| Python 2.6.5 ... http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi | ||||
| 
 | ||||
| 3. Source install | ||||
| ----------------- | ||||
| 
 | ||||
| 3.1/ grab sources from here | ||||
| 
 | ||||
| pypoker-eval v138 ... http://download.gna.org/pokersource/sources/pypoker-eval-138.0.tar.gz | ||||
| poker-eval v138 ... http://download.gna.org/pokersource/sources/poker-eval-138.0.tar.gz | ||||
| 
 | ||||
| 3.2/   unpack and place the pypoker-eval-138 directory in c:\ | ||||
| 3.2.1/ rename to pypoker-eval | ||||
| 
 | ||||
| 3.3/ unpack and place the poker-eval-138 directory in c:\ | ||||
| 3.3.1/ rename to poker-eval | ||||
| 
 | ||||
| Important: the build will fail with bizarre missing header files if the project is placed | ||||
|  in a directory containing a space character - you have been warned! | ||||
| 
 | ||||
| 4. Update source file | ||||
| --------------------- | ||||
| 
 | ||||
| 4.1/ dos> write c:/pypoker-eval/pypokereval.c | ||||
| 
 | ||||
| change this: | ||||
| 
 | ||||
| #define VERSION_NAME(W) W##2_4 | ||||
| #define PYTHON_VERSION "2_4" | ||||
| 
 | ||||
| to be this: | ||||
| 
 | ||||
| #define VERSION_NAME(W) W##2_6 | ||||
| #define PYTHON_VERSION "2_6" | ||||
| 
 | ||||
| 4.2/ save and exit | ||||
| 
 | ||||
| 4.3/ dos> write c:/pypoker-eval/pokereval.py | ||||
| 
 | ||||
| Comment-out this line: | ||||
| 
 | ||||
| _pokereval = __import__('_pokereval_' + sys.version[0] + '_' + sys.version[2]) | ||||
| 
 | ||||
| Insert this one in its' place: | ||||
| 
 | ||||
| import _pokereval_2_6 as _pokereval | ||||
| 
 | ||||
| 
 | ||||
| 4.4/ save and exit | ||||
| 
 | ||||
| 
 | ||||
| 5. Build pre-preparation | ||||
| ------------------------ | ||||
| 
 | ||||
| (Here we are converting the two project definition files to 2008) | ||||
| 
 | ||||
| 5.1 navigate to directory c:/poker-eval | ||||
| 5.1.1 double click poker-eval.vcproj | ||||
| 5.1.2 Visual studio will launch and make a conversion - accept all defaults | ||||
| 5.1.3 exit and save | ||||
| 
 | ||||
| 5.2 navigate to directory c:/pypoker-eval | ||||
| 5.2.1 double click pypoker-eval.vcproj | ||||
| 5.2.2 Visual studio will launch and make a conversion - accept all defaults | ||||
| 5.2.3 exit | ||||
| 
 | ||||
| 6. build preparation | ||||
| -------------------- | ||||
| 
 | ||||
| 6.2 navigate to directory c:/pypoker-eval | ||||
| 6.2.1 double click pypoker-eval.vcproj - visual studio should launch | ||||
| 
 | ||||
| 6.2.3 Select Build...configuration manager... | ||||
|   Select "active solution configuration" to "Release" | ||||
|   (The configuration for both projects will change to "Release") | ||||
| 
 | ||||
| 6.2.3 Close the configuration manager | ||||
| 
 | ||||
| 6.2.4 In the solution explorer window, hilight pythonpoker-eval / right mouse / properties... | ||||
| 
 | ||||
| 6.2.5 In the pythonpoker-eval properties dialog,  | ||||
| 
 | ||||
| change references to "python24" to "python26" in the following: | ||||
| 
 | ||||
|  =  C/C++/Additional Include Directories/ | ||||
|  =  linker/general/Additional library directories | ||||
|  =  linker/input/Additional Dependencies | ||||
| 
 | ||||
| Change the following | ||||
| 
 | ||||
|  =  linker/generate debug info - set to No | ||||
|  =  linker/debugging/Generate debug info - set to No | ||||
| 
 | ||||
| 6.2.6 Apply all changes to the properties dialog and close | ||||
| 
 | ||||
| 6.3 Exit from visual studio | ||||
| 
 | ||||
| 7. Build poker eval | ||||
| ------------------- | ||||
| 
 | ||||
| 7.1 navigate to directory c:/poker-eval | ||||
| 7.1.1 double click poker-eval.vcproj | ||||
| 7.1.2 Visual studio will launch | ||||
| 
 | ||||
| 7.2 In the solution explorer window, hilight poker-eval / right mouse / build | ||||
| 
 | ||||
| 7.3 There should be no errors | ||||
| 
 | ||||
| 7.4 Exit from visual studio | ||||
| 
 | ||||
| 
 | ||||
| 8. Build pypoker eval | ||||
| --------------------- | ||||
| 
 | ||||
| 8.1 navigate to directory c:/pypoker-eval | ||||
| 8.1.1 double click pypoker-eval.vcproj | ||||
| 8.1.2 Visual studio will launch | ||||
| 
 | ||||
| 8.2 In the solution explorer window, hilight pythonpoker-eval / right mouse / build | ||||
| 
 | ||||
| 8.3 There should be no errors (but a few warnings) | ||||
| 
 | ||||
| 8.4 Exit from visual studio | ||||
| 
 | ||||
| 9. packaging | ||||
| ------------ | ||||
| 
 | ||||
| 9.1 Navigate to c:/pypoker-eval/release  | ||||
| 9.2 the output file is pypokereval.dll | ||||
| 9.3 rename this file to _pokereval_2_6.pyd | ||||
| 
 | ||||
| 9.4 create a zip file containing : | ||||
| 
 | ||||
| _pokereval_2_6.pyd from releases | ||||
| test.py from pypoker-eval-138.0 | ||||
| pokereval.py from pypoker-eval-138.0 | ||||
| poker-eval.vcproj from c:\poker-eval | ||||
| pypoker-eval.vcproj from c:\pypoker-eval | ||||
| pypokereval.c from c:\pypoker-eval | ||||
| 
 | ||||
| Remember to include the version (138), python 265 and win32 in the package filename | ||||
| 
 | ||||
| 10. Installation and Testing | ||||
| ---------------------------- | ||||
| 
 | ||||
| Python 2.6.5 must be installed | ||||
| 
 | ||||
| 10.1 Extract this package to directory | ||||
| 10.2 Change directory to the directory in 10.1 | ||||
| 10.3 execute dos> c:\Python26\python.exe test.py | ||||
| 10.4 hand-output should scroll down the screen | ||||
| 10.5 start the python interpreter | ||||
| 10.6 >>> import pokereval | ||||
| 10.7 No errors should be seen | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										159
									
								
								packaging/windows/pypokereval-win32-packaging-walkthrough.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								packaging/windows/pypokereval-win32-packaging-walkthrough.txt
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,159 @@ | |||
| pypokereval packaging for fpdb project | ||||
| -------------------------------------- | ||||
| 
 | ||||
| Created by Gimick on 11th December 2010  | ||||
| Content is available under the the GNU Affero General Public License version 3 | ||||
| 
 | ||||
| Background | ||||
| ---------- | ||||
| 
 | ||||
| The walktrough builds an unoffical python installer package for pypokereval. | ||||
| 
 | ||||
| In a previous walkthrough, the pypokereval dll(pyd) was built from source. | ||||
| In this walkthrough, we are going to generate a windows package which will allow  | ||||
| the sources to be installed through distutils onto a client computer | ||||
| 
 | ||||
| The current situation is that there is no windows build or windows installer provided | ||||
| by the package authors. | ||||
| 
 | ||||
| Until a package is available, the fpdb project needs some method of providing a windows | ||||
| installation for the pypokereval module.  This walkthrough will therefore be obsolete once | ||||
| an official package becomes available. | ||||
| 
 | ||||
| Actually, for windows fpdb users, the majority will use a pre-built fpdb executable (which contains the   | ||||
| pypokereval package)  Therefore, pypokereval installation will only be needed for two groups of people: | ||||
|  i) anyone wanting to build an fpdb package using py2exe | ||||
|  ii) anyone wanting to run fpdb on windows from source | ||||
| 
 | ||||
| Credits | ||||
| ------- | ||||
| 
 | ||||
| To loic@dachary.org at pokersource http://pokersource.sourceforge.net/ | ||||
| To donn.ingle@gmail.com for the tutorial here ... http://wiki.python.org/moin/Distutils/Tutorial | ||||
| Official python reference here ... http://docs.python.org/distutils/index.html | ||||
| 
 | ||||
| Assumptions | ||||
| ----------- | ||||
| 
 | ||||
| The underlying dll(pyd) and pokereval library is built for win32 x86 platform only, so we will assume | ||||
| 32bit only in this walkthrough.  Contributions for a x86-64 build are most welcome. | ||||
| 
 | ||||
| Similarly, the underlying package is built against the python 2-6 library and is valid only for that version. | ||||
| The underlying package was not built with sse enabled, and therefore should work for legacy systems. | ||||
| 
 | ||||
| 
 | ||||
| 1. Install pre-requisites | ||||
| ------------------------- | ||||
| 
 | ||||
| System used for building is winXP home | ||||
| 
 | ||||
| 1.1/ Install python runtime from here ...  | ||||
| 
 | ||||
| Python 2.6.5 ... http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi | ||||
| 
 | ||||
| 1.2/ Grab pypokereval stuff from fpdb project here ... | ||||
| 
 | ||||
| pypokereval ... http://sourceforge.net/projects/fpdb/files/fpdb/pypoker-eval-win32/dev/pypokereval-138-win32-py265-fpdb-1.1.exe/download | ||||
| 
 | ||||
| 1.3/ Double click the pypokereval-138-win32-py265-fpdb-1.1.exe and extract the folder to the desktop | ||||
| 
 | ||||
| 
 | ||||
| 2. Prepare a folder containing the items needing packaging | ||||
| ---------------------------------------------------------- | ||||
| 
 | ||||
| dos>cd desktop | ||||
| dos>mkdir temp | ||||
| dos>cd temp | ||||
| dos>mkdir pokereval | ||||
| dos>cd pokereval | ||||
| 
 | ||||
| dos>copy ..\..\pypokereval-138-win32-py265-fpdb-1.1\_pokereval_2_6.pyd | ||||
| dos>copy ..\..\pypokereval-138-win32-py265-fpdb-1.1\pokereval.py | ||||
| 
 | ||||
| dos>mkdir utils | ||||
| dos>cd utils | ||||
| dos>copy ..\..\..\pypokereval-138-win32-py265-fpdb-1.1\test.py | ||||
| dos>cd .. | ||||
| 
 | ||||
| The next step is to rename the pokereval.py file to __init__.py.  The reason for doing this | ||||
| is that site-packages require an __init__ file to be found when the module is imported at runtime | ||||
| Inserting a dummy __init__.py which simply imports pokereval does not work, the reason being that the  | ||||
| PokerEval class is not seen by the caller.  Syntax such as "from pokereval import PokerEval" | ||||
| does not work unless the pokereval.py (which defines the PokerEval class) is renamed to __init__.py. | ||||
| 
 | ||||
| dos> rename pokereval.py __init__.py | ||||
| 
 | ||||
| 3. Prepare the additional packaging files | ||||
| ----------------------------------------- | ||||
| 
 | ||||
| dos>cd desktop | ||||
| dos>cd temp | ||||
| 
 | ||||
| 3.1/ setup.py | ||||
| ------------- | ||||
| 
 | ||||
| dos> edit setup.py | ||||
| 
 | ||||
| Include the following python code: | ||||
| 
 | ||||
| #================================================== | ||||
| 
 | ||||
| from distutils.core import setup | ||||
| 
 | ||||
| filelist = ["utils/*", "_pokereval_2_6.pyd"] | ||||
| 
 | ||||
| setup(name = "pokereval", | ||||
| version = "138", | ||||
| description = "pypokereval installer (unofficial)", | ||||
| author = "project fpdb", | ||||
| author_email = "Fpdb-main@lists.sourceforge.net", | ||||
| url = "fpdb.sourceforge.net", | ||||
| packages = ['pokereval'], | ||||
| package_data = {'pokereval' : filelist }, | ||||
| long_description = """An unofficial and experimental installer for pypokereval v138 | ||||
| Built for 32bit windows and python v2.6.5 | ||||
| pokereval official project page is at http://www.pokersource.info/""" | ||||
| ) | ||||
| 
 | ||||
| #================================================== | ||||
| 
 | ||||
| 3.2 / review directory tree | ||||
| --------------------------- | ||||
| 
 | ||||
| The following structure should now exist. | ||||
| 
 | ||||
| temp | ||||
|   |--setup.py | ||||
|   |--pokereval | ||||
|        |--_pokereval_2_6.pyd | ||||
|        |--__init__.py | ||||
|        |--utils | ||||
|             |--test.py | ||||
|          | ||||
| 
 | ||||
| 3.3 Build | ||||
| --------- | ||||
| 
 | ||||
| Navigate to the desktop/temp directory | ||||
| 
 | ||||
| dos>c:\Python26\python.exe setup.py bdist_wininst --plat-name=win32 --user-access-control force | ||||
| 
 | ||||
| Note: UAC auto seems to cause lockup on my win7 system | ||||
| 
 | ||||
| 3.4 Complete | ||||
| ------------ | ||||
| 
 | ||||
| The executable file pokereval-138.win32.exe will be in the newly-created dist folder. | ||||
| 
 | ||||
| 3.5 Install and test | ||||
| -------------------- | ||||
| 
 | ||||
| Double click to install | ||||
| Navigate to c:\python26\lib\site-packages\pokereval\test | ||||
| 
 | ||||
| execute dos>c:\Python26\python.exe test.py | ||||
| 
 | ||||
| Output should scroll down the screen | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -211,7 +211,7 @@ class HandInternal(DerivedStats): | |||
|     def isDuplicate(self, session): | ||||
|         """Checks if current hand already exists in db | ||||
|          | ||||
|         siteHandNo ans gameTypeId have to be setted | ||||
|         siteHandNo ans gametypeId have to be setted | ||||
|         """ | ||||
|         return session.query(HandInternal).filter_by( | ||||
|                 siteHandNo=self.siteHandNo, gametypeId=self.gametypeId).count()!=0 | ||||
|  |  | |||
							
								
								
									
										2
									
								
								pyfpdb/Anonymise.py
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										2
									
								
								pyfpdb/Anonymise.py
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							|  | @ -26,6 +26,8 @@ import HandHistoryConverter | |||
| import Configuration | ||||
| import sys | ||||
| 
 | ||||
| #   command line is: | ||||
| #  ./Anonymise.py -f <valid path to HH file> -k <name of input filter> | ||||
| 
 | ||||
| (options, argv) = Options.fpdb_options() | ||||
| config = Configuration.Config() | ||||
|  |  | |||
|  | @ -66,7 +66,7 @@ class Carbon(HandHistoryConverter): | |||
|     # Static regexes | ||||
|     re_SplitHands = re.compile(r'</game>\n+(?=<game)') | ||||
|     re_TailSplitHands = re.compile(r'(</game>)') | ||||
|     re_GameInfo = re.compile(r'<description type="(?P<GAME>[a-zA-Z ]+)" stakes="(?P<LIMIT>[a-zA-Z ]+) ?\(\$(?P<SB>[.0-9]+)/\$(?P<BB>[.0-9]+)?\)"/>', re.MULTILINE) | ||||
|     re_GameInfo = re.compile(r'<description type="(?P<GAME>[a-zA-Z ]+)" stakes="(?P<LIMIT>[a-zA-Z ]+) \(\$(?P<SB>[.0-9]+)/\$(?P<BB>[.0-9]+)\)"/>', re.MULTILINE) | ||||
|     re_HandInfo = re.compile(r'<game id="(?P<HID1>[0-9]+)-(?P<HID2>[0-9]+)" starttime="(?P<DATETIME>[0-9]+)" numholecards="2" gametype="2" realmoney="true" data="[0-9]+\|(?P<TABLE>[^\(]+)', re.MULTILINE) | ||||
|     re_Button = re.compile(r'<players dealer="(?P<BUTTON>[0-9]+)">') | ||||
|     re_PlayerInfo = re.compile(r'<player seat="(?P<SEAT>[0-9]+)" nickname="(?P<PNAME>.+)" balance="\$(?P<CASH>[.0-9]+)" dealtin="(?P<DEALTIN>(true|false))" />', re.MULTILINE) | ||||
|  |  | |||
|  | @ -303,6 +303,7 @@ def encodeRazzStartHand(cards): | |||
|     encodeRazzList = {  | ||||
|     '(00)A':-13,'(00)2':-12,'(00)3':-11,'(00)4':-10,'(00)5':-9,'(00)6':-8,'(00)7':-7,'(00)8':-6,'(00)9':-5,'(00)T':-4, | ||||
|     '(00)J':-3,'(00)Q':-2,'(00)K':-1, | ||||
|     '(00)0':0, | ||||
|     '(32)A':1,'(3A)2':2,'(2A)3':3,'(42)A':4,'(4A)2':5,'(2A)4':6,'(43)A':7,'(4A)3':8,'(3A)4':9, | ||||
|     '(43)2':10,'(42)3':11,'(32)4':12,'(52)A':13,'(5A)2':14,'(2A)5':15,'(53)A':16,'(5A)3':17,'(3A)5':18,'(53)2':19, | ||||
|     '(52)3':20,'(32)5':21,'(54)A':22,'(5A)4':23,'(4A)5':24,'(54)2':25,'(52)4':26,'(42)5':27,'(54)3':28,'(53)4':29, | ||||
|  |  | |||
|  | @ -479,12 +479,14 @@ class Import: | |||
|         self.hhArchiveBase = node.getAttribute("hhArchiveBase") | ||||
|         self.hhBulkPath = node.getAttribute("hhBulkPath") | ||||
|         self.saveActions = string_to_bool(node.getAttribute("saveActions"), default=False) | ||||
|         self.cacheSessions = string_to_bool(node.getAttribute("cacheSessions"), default=False) | ||||
|         self.sessionTimeout = string_to_bool(node.getAttribute("sessionTimeout"), default=30) | ||||
|         self.fastStoreHudCache = string_to_bool(node.getAttribute("fastStoreHudCache"), default=False) | ||||
|         self.saveStarsHH = string_to_bool(node.getAttribute("saveStarsHH"), default=False) | ||||
| 
 | ||||
|     def __str__(self): | ||||
|         return "    interval = %s\n    callFpdbHud = %s\n    hhArchiveBase = %s\n    saveActions = %s\n    fastStoreHudCache = %s\n" \ | ||||
|             % (self.interval, self.callFpdbHud, self.hhArchiveBase, self.saveActions, self.fastStoreHudCache) | ||||
|             % (self.interval, self.callFpdbHud, self.hhArchiveBase, self.saveActions, self.cacheSessions, self.sessionTimeout, self.fastStoreHudCache) | ||||
| 
 | ||||
| class HudUI: | ||||
|     def __init__(self, node): | ||||
|  | @ -1259,6 +1261,12 @@ class Config: | |||
| 
 | ||||
|         try:    imp['saveActions']     = self.imp.saveActions | ||||
|         except:  imp['saveActions']     = False | ||||
|          | ||||
|         try:    imp['cacheSessions']     = self.imp.cacheSessions | ||||
|         except:  imp['cacheSessions']     = False | ||||
|          | ||||
|         try:    imp['sessionTimeout']     = self.imp.sessionTimeout | ||||
|         except:  imp['sessionTimeout']     = 30 | ||||
| 
 | ||||
|         try:    imp['saveStarsHH'] = self.imp.saveStarsHH | ||||
|         except:  imp['saveStarsHH'] = False | ||||
|  |  | |||
|  | @ -73,7 +73,7 @@ except ImportError: | |||
|     use_numpy = False | ||||
| 
 | ||||
| 
 | ||||
| DB_VERSION = 144 | ||||
| DB_VERSION = 147 | ||||
| 
 | ||||
| 
 | ||||
| # Variance created as sqlite has a bunch of undefined aggregate functions. | ||||
|  | @ -255,6 +255,13 @@ class Database: | |||
|         self.database = db_params['db-databaseName'] | ||||
|         self.host = db_params['db-host'] | ||||
|         self.db_path = '' | ||||
|         gen = c.get_general_params() | ||||
|         self.day_start = 0 | ||||
|          | ||||
|         if 'day_start' in gen: | ||||
|             self.day_start = float(gen['day_start']) | ||||
|              | ||||
|         self.sessionTimeout = float(self.import_options['sessionTimeout']) | ||||
| 
 | ||||
|         # where possible avoid creating new SQL instance by using the global one passed in | ||||
|         if sql is None: | ||||
|  | @ -307,7 +314,7 @@ class Database: | |||
| 
 | ||||
|         tables=self.cursor.execute(self.sql.query['list_tables']) | ||||
|         tables=self.cursor.fetchall() | ||||
|         for table in (u'Actions', u'Autorates', u'Backings', u'Gametypes', u'Hands', u'HandsActions', u'HandsPlayers', u'HudCache', u'Players', u'RawHands', u'RawTourneys', u'Settings', u'Sites', u'TourneyTypes', u'Tourneys', u'TourneysPlayers'): | ||||
|         for table in (u'Actions', u'Autorates', u'Backings', u'Gametypes', u'Hands', u'HandsActions', u'HandsPlayers', u'HudCache', u'SessionsCache', u'Players', u'RawHands', u'RawTourneys', u'Settings', u'Sites', u'TourneyTypes', u'Tourneys', u'TourneysPlayers'): | ||||
|             print "table:", table | ||||
|             result+="###################\nTable "+table+"\n###################\n" | ||||
|             rows=self.cursor.execute(self.sql.query['get'+table]) | ||||
|  | @ -689,12 +696,16 @@ class Database: | |||
|         else: | ||||
|             if row and row[0]: | ||||
|                 self.hand_1day_ago = int(row[0]) | ||||
| 
 | ||||
|         d = timedelta(days=hud_days) | ||||
|                  | ||||
|         tz = datetime.utcnow() - datetime.today() | ||||
|         tz_offset = tz.seconds/3600 | ||||
|         tz_day_start_offset = self.day_start + tz_offset | ||||
|          | ||||
|         d = timedelta(days=hud_days, hours=tz_day_start_offset) | ||||
|         now = datetime.utcnow() - d | ||||
|         self.date_ndays_ago = "d%02d%02d%02d" % (now.year - 2000, now.month, now.day) | ||||
| 
 | ||||
|         d = timedelta(days=h_hud_days) | ||||
|          | ||||
|         d = timedelta(days=h_hud_days, hours=tz_day_start_offset) | ||||
|         now = datetime.utcnow() - d | ||||
|         self.h_date_ndays_ago = "d%02d%02d%02d" % (now.year - 2000, now.month, now.day) | ||||
| 
 | ||||
|  | @ -788,7 +799,7 @@ class Database: | |||
|         elif h_hud_style == 'S': | ||||
|             h_stylekey = 'zzzzzzz'  # all stylekey values should be lower than this | ||||
|         else: | ||||
|             h_stylekey = '000000' | ||||
|             h_stylekey = '00000000' | ||||
|             log.info('h_hud_style: %s' % h_hud_style) | ||||
| 
 | ||||
|         #elif h_hud_style == 'H': | ||||
|  | @ -904,6 +915,56 @@ class Database: | |||
|         result = c.fetchall() | ||||
|         return result | ||||
| 
 | ||||
|     def resetPlayerIDs(self): | ||||
|         self.pcache = None | ||||
| 
 | ||||
|     def getSqlPlayerIDs(self, pnames, siteid): | ||||
|         result = {} | ||||
|         if(self.pcache == None): | ||||
|             self.pcache = LambdaDict(lambda  key:self.insertPlayer(key[0], key[1])) | ||||
| 
 | ||||
|         for player in pnames: | ||||
|             result[player] = self.pcache[(player,siteid)] | ||||
|             # NOTE: Using the LambdaDict does the same thing as: | ||||
|             #if player in self.pcache: | ||||
|             #    #print "DEBUG: cachehit" | ||||
|             #    pass | ||||
|             #else: | ||||
|             #    self.pcache[player] = self.insertPlayer(player, siteid) | ||||
|             #result[player] = self.pcache[player] | ||||
| 
 | ||||
|         return result | ||||
| 
 | ||||
|     def insertPlayer(self, name, site_id): | ||||
|         result = None | ||||
|         _name = Charset.to_db_utf8(name) | ||||
|         c = self.get_cursor() | ||||
|         q = "SELECT name, id FROM Players WHERE siteid=%s and name=%s" | ||||
|         q = q.replace('%s', self.sql.query['placeholder']) | ||||
| 
 | ||||
|         #NOTE/FIXME?: MySQL has ON DUPLICATE KEY UPDATE | ||||
|         #Usage: | ||||
|         #        INSERT INTO `tags` (`tag`, `count`) | ||||
|         #         VALUES ($tag, 1) | ||||
|         #           ON DUPLICATE KEY UPDATE `count`=`count`+1; | ||||
| 
 | ||||
| 
 | ||||
|         #print "DEBUG: name: %s site: %s" %(name, site_id) | ||||
| 
 | ||||
|         c.execute (q, (site_id, _name)) | ||||
| 
 | ||||
|         tmp = c.fetchone() | ||||
|         if (tmp == None): #new player | ||||
|             c.execute ("INSERT INTO Players (name, siteId) VALUES (%s, %s)".replace('%s',self.sql.query['placeholder']) | ||||
|                       ,(_name, site_id)) | ||||
|             #Get last id might be faster here. | ||||
|             #c.execute ("SELECT id FROM Players WHERE name=%s", (name,)) | ||||
|             result = self.get_last_insert_id(c) | ||||
|         else: | ||||
|             result = tmp[1] | ||||
|         return result | ||||
| 
 | ||||
| 
 | ||||
|     def get_last_insert_id(self, cursor=None): | ||||
|         ret = None | ||||
|         try: | ||||
|  | @ -1168,6 +1229,7 @@ class Database: | |||
|             c.execute(self.sql.query['createHandsPlayersTable']) | ||||
|             c.execute(self.sql.query['createHandsActionsTable']) | ||||
|             c.execute(self.sql.query['createHudCacheTable']) | ||||
|             c.execute(self.sql.query['createSessionsCacheTable']) | ||||
|             c.execute(self.sql.query['createBackingsTable']) | ||||
|             c.execute(self.sql.query['createRawHands']) | ||||
|             c.execute(self.sql.query['createRawTourneys']) | ||||
|  | @ -1534,6 +1596,11 @@ class Database: | |||
|             print _("Error rebuilding hudcache:"), str(sys.exc_value) | ||||
|             print err | ||||
|     #end def rebuild_hudcache | ||||
|      | ||||
|     def rebuild_sessionscache(self, h_start=None, v_start=None): | ||||
|         """clears sessionscache and rebuilds from the individual handsplayers records""" | ||||
|         #Will get to this soon | ||||
|         pass | ||||
| 
 | ||||
|     def get_hero_hudcache_start(self): | ||||
|         """fetches earliest stylekey from hudcache for one of hero's player ids""" | ||||
|  | @ -1625,7 +1692,13 @@ class Database: | |||
| # NEWIMPORT CODE | ||||
| ########################### | ||||
| 
 | ||||
|     def storeHand(self, p): | ||||
|     def storeHand(self, p, printdata = False): | ||||
|         if printdata: | ||||
|             print _("######## Hands ##########") | ||||
|             import pprint | ||||
|             pp = pprint.PrettyPrinter(indent=4) | ||||
|             pp.pprint(p) | ||||
|             print _("###### End Hands ########") | ||||
|         #stores into table hands: | ||||
|         q = self.sql.query['store_hand'] | ||||
| 
 | ||||
|  | @ -1635,7 +1708,7 @@ class Database: | |||
| 
 | ||||
|         c.execute(q, ( | ||||
|                 p['tableName'], | ||||
|                 p['gameTypeId'], | ||||
|                 p['gametypeId'], | ||||
|                 p['siteHandNo'], | ||||
|                 p['tourneyId'], | ||||
|                 p['startTime'], | ||||
|  | @ -1793,10 +1866,12 @@ class Database: | |||
| 
 | ||||
|     def storeHandsActions(self, hid, pids, hpid, adata, printdata = False): | ||||
|         #print "DEBUG: %s %s %s" %(hid, pids, adata) | ||||
|         if printdata: | ||||
|             import pprint | ||||
|             pp = pprint.PrettyPrinter(indent=4) | ||||
|             pp.pprint(adata) | ||||
| 
 | ||||
|         # This can be used to generate test data. Currently unused | ||||
|         #if printdata: | ||||
|         #    import pprint | ||||
|         #    pp = pprint.PrettyPrinter(indent=4) | ||||
|         #    pp.pprint(adata) | ||||
| 
 | ||||
|         inserts = [] | ||||
|         for a in adata: | ||||
|  | @ -1823,8 +1898,15 @@ class Database: | |||
|     def storeHudCache(self, gid, pids, starttime, pdata): | ||||
|         """Update cached statistics. If update fails because no record exists, do an insert.""" | ||||
| 
 | ||||
|         tz = datetime.utcnow() - datetime.today() | ||||
|         tz_offset = tz.seconds/3600 | ||||
|         tz_day_start_offset = self.day_start + tz_offset | ||||
|          | ||||
|         d = timedelta(hours=tz_day_start_offset) | ||||
|         starttime_offset = starttime - d | ||||
|          | ||||
|         if self.use_date_in_hudcache: | ||||
|             styleKey = datetime.strftime(starttime, 'd%y%m%d') | ||||
|             styleKey = datetime.strftime(starttime_offset, 'd%y%m%d') | ||||
|             #styleKey = "d%02d%02d%02d" % (hand_start_time.year-2000, hand_start_time.month, hand_start_time.day) | ||||
|         else: | ||||
|             # hard-code styleKey as 'A000000' (all-time cache, no key) for now | ||||
|  | @ -1950,6 +2032,127 @@ class Database: | |||
|             else: | ||||
|                 #print "DEBUG: Successfully updated HudCacho using UPDATE" | ||||
|                 pass | ||||
|              | ||||
|     def storeSessionsCache(self, pids, startTime, game, pdata): | ||||
|         """Update cached sessions. If update fails because no record exists, do an insert""" | ||||
|          | ||||
|         THRESHOLD = timedelta(seconds=int(self.sessionTimeout * 60)) | ||||
|         bigBet = int(Decimal(game['bb'])*200) | ||||
|          | ||||
|         select_sessionscache = self.sql.query['select_sessionscache'] | ||||
|         select_sessionscache = select_sessionscache.replace('%s', self.sql.query['placeholder']) | ||||
|         select_sessionscache_mid = self.sql.query['select_sessionscache_mid'] | ||||
|         select_sessionscache_mid = select_sessionscache_mid.replace('%s', self.sql.query['placeholder']) | ||||
|         select_sessionscache_start = self.sql.query['select_sessionscache_start'] | ||||
|         select_sessionscache_start = select_sessionscache_start.replace('%s', self.sql.query['placeholder']) | ||||
|      | ||||
|         update_sessionscache_mid = self.sql.query['update_sessionscache_mid'] | ||||
|         update_sessionscache_mid = update_sessionscache_mid.replace('%s', self.sql.query['placeholder']) | ||||
|         update_sessionscache_start = self.sql.query['update_sessionscache_start'] | ||||
|         update_sessionscache_start = update_sessionscache_start.replace('%s', self.sql.query['placeholder']) | ||||
|         update_sessionscache_end = self.sql.query['update_sessionscache_end'] | ||||
|         update_sessionscache_end = update_sessionscache_end.replace('%s', self.sql.query['placeholder']) | ||||
|          | ||||
|         insert_sessionscache = self.sql.query['insert_sessionscache'] | ||||
|         insert_sessionscache = insert_sessionscache.replace('%s', self.sql.query['placeholder']) | ||||
|         merge_sessionscache = self.sql.query['merge_sessionscache'] | ||||
|         merge_sessionscache = merge_sessionscache.replace('%s', self.sql.query['placeholder']) | ||||
|         delete_sessions = self.sql.query['delete_sessions'] | ||||
|         delete_sessions = delete_sessions.replace('%s', self.sql.query['placeholder']) | ||||
|          | ||||
|         #Grab playerIds using hero names in HUD_Config.xml | ||||
|         try: | ||||
|             # derive list of program owner's player ids | ||||
|             self.hero = {}                               # name of program owner indexed by site id | ||||
|             self.hero_ids = [] | ||||
|                                                          # make sure at least two values in list | ||||
|                                                          # so that tuple generation creates doesn't use | ||||
|                                                          # () or (1,) style | ||||
|             for site in self.config.get_supported_sites(): | ||||
|                 result = self.get_site_id(site) | ||||
|                 if result: | ||||
|                     site_id = result[0][0] | ||||
|                     self.hero[site_id] = self.config.supported_sites[site].screen_name | ||||
|                     p_id = self.get_player_id(self.config, site, self.hero[site_id]) | ||||
|                     if p_id: | ||||
|                         self.hero_ids.append(int(p_id)) | ||||
| 
 | ||||
|         except: | ||||
|             err = traceback.extract_tb(sys.exc_info()[2])[-1] | ||||
|             print _("Error aquiring hero ids:"), str(sys.exc_value) | ||||
|             print err | ||||
| 
 | ||||
|         inserts = [] | ||||
|         for p in pdata: | ||||
|             if pids[p] in self.hero_ids: | ||||
|                 line = [0]*5 | ||||
|      | ||||
|                 if (game['type']=='ring'): line[0] = 1 # count ring hands | ||||
|                 if (game['type']=='tour'): line[1] = 1 # count tour hands | ||||
|                 if (game['type']=='ring'): line[2] = pdata[p]['totalProfit'] #sum of profit | ||||
|                 if (game['type']=='ring'): line[3] = float(Decimal(pdata[p]['totalProfit'])/Decimal(bigBet)) #sum of big bets won | ||||
|                 line[4] = startTime | ||||
|                 inserts.append(line) | ||||
| 
 | ||||
|         cursor = self.get_cursor() | ||||
| 
 | ||||
|         for row in inserts: | ||||
|             threshold = [] | ||||
|             threshold.append(row[-1]-THRESHOLD) | ||||
|             threshold.append(row[-1]+THRESHOLD) | ||||
|             cursor.execute(select_sessionscache, threshold) | ||||
|             num = cursor.rowcount | ||||
|             if (num == 1): | ||||
|                 # Try to do the update first: | ||||
|                 #print "DEBUG: found 1 record to update" | ||||
|                 update_mid = row + row[-1:] | ||||
|                 cursor.execute(select_sessionscache_mid, update_mid[-2:]) | ||||
|                 mid = cursor.rowcount | ||||
|                 if (mid == 0): | ||||
|                     update_startend = row[-1:] + row + threshold | ||||
|                     cursor.execute(select_sessionscache_start, update_startend[-3:]) | ||||
|                     start = cursor.rowcount | ||||
|                     if (start == 0): | ||||
|                         #print "DEBUG:", start, " start record found. Update stats and start time" | ||||
|                         cursor.execute(update_sessionscache_end, update_startend)                  | ||||
|                     else: | ||||
|                         #print "DEBUG: 1 end record found. Update stats and end time time" | ||||
|                         cursor.execute(update_sessionscache_start, update_startend)  | ||||
|                 else: | ||||
|                     #print "DEBUG: update stats mid-session" | ||||
|                     cursor.execute(update_sessionscache_mid, update_mid) | ||||
|             elif (num > 1): | ||||
|                 # Multiple matches found - merge them into one session and update: | ||||
|                 #print "DEBUG:", num, "matches found" | ||||
|                 cursor.execute(merge_sessionscache, threshold) | ||||
|                 merge = cursor.fetchone() | ||||
|                 cursor.execute(delete_sessions, threshold) | ||||
|                 cursor.execute(insert_sessionscache, merge) | ||||
|                 update_mid = row + row[-1:] | ||||
|                 cursor.execute(select_sessionscache_mid, update_mid[-2:]) | ||||
|                 mid = cursor.rowcount | ||||
|                 if (mid == 0): | ||||
|                     update_startend = row[-1:] + row + threshold | ||||
|                     cursor.execute(select_sessionscache_start, update_startend[-3:]) | ||||
|                     start = cursor.rowcount | ||||
|                     if (start == 0): | ||||
|                         #print "DEBUG:", start, " start record found. Update stats and start time" | ||||
|                         cursor.execute(update_sessionscache_end, update_startend)                  | ||||
|                     else: | ||||
|                         #print "DEBUG: 1 end record found. Update stats and end time time" | ||||
|                         cursor.execute(update_sessionscache_start, update_startend)  | ||||
|                 else: | ||||
|                     #print "DEBUG: update stats mid-session" | ||||
|                     cursor.execute(update_sessionscache_mid, update_mid) | ||||
|             elif (num == 0): | ||||
|                 # No matches found, insert new session: | ||||
|                 insert = row + row[-1:] | ||||
|                 insert = insert[-2:] + insert[:-2] | ||||
|                 #print "DEBUG: No matches found. Insert record", insert | ||||
|                 cursor.execute(insert_sessionscache, insert) | ||||
|             else: | ||||
|                 # Something bad happened | ||||
|                 pass     | ||||
| 
 | ||||
|     def isDuplicate(self, gametypeID, siteHandNo): | ||||
|         dup = False | ||||
|  | @ -1978,54 +2181,6 @@ class Database: | |||
|                                     #FIXME: recognise currency | ||||
|         return tmp[0] | ||||
| 
 | ||||
|     def resetPlayerIDs(self): | ||||
|         self.pcache = None | ||||
| 
 | ||||
|     def getSqlPlayerIDs(self, pnames, siteid): | ||||
|         result = {} | ||||
|         if(self.pcache == None): | ||||
|             self.pcache = LambdaDict(lambda  key:self.insertPlayer(key[0], key[1])) | ||||
| 
 | ||||
|         for player in pnames: | ||||
|             result[player] = self.pcache[(player,siteid)] | ||||
|             # NOTE: Using the LambdaDict does the same thing as: | ||||
|             #if player in self.pcache: | ||||
|             #    #print "DEBUG: cachehit" | ||||
|             #    pass | ||||
|             #else: | ||||
|             #    self.pcache[player] = self.insertPlayer(player, siteid) | ||||
|             #result[player] = self.pcache[player] | ||||
| 
 | ||||
|         return result | ||||
| 
 | ||||
|     def insertPlayer(self, name, site_id): | ||||
|         result = None | ||||
|         _name = Charset.to_db_utf8(name) | ||||
|         c = self.get_cursor() | ||||
|         q = "SELECT name, id FROM Players WHERE siteid=%s and name=%s" | ||||
|         q = q.replace('%s', self.sql.query['placeholder']) | ||||
| 
 | ||||
|         #NOTE/FIXME?: MySQL has ON DUPLICATE KEY UPDATE | ||||
|         #Usage: | ||||
|         #        INSERT INTO `tags` (`tag`, `count`) | ||||
|         #         VALUES ($tag, 1) | ||||
|         #           ON DUPLICATE KEY UPDATE `count`=`count`+1; | ||||
| 
 | ||||
| 
 | ||||
|         #print "DEBUG: name: %s site: %s" %(name, site_id) | ||||
| 
 | ||||
|         c.execute (q, (site_id, _name)) | ||||
| 
 | ||||
|         tmp = c.fetchone() | ||||
|         if (tmp == None): #new player | ||||
|             c.execute ("INSERT INTO Players (name, siteId) VALUES (%s, %s)".replace('%s',self.sql.query['placeholder']) | ||||
|                       ,(_name, site_id)) | ||||
|             #Get last id might be faster here. | ||||
|             #c.execute ("SELECT id FROM Players WHERE name=%s", (name,)) | ||||
|             result = self.get_last_insert_id(c) | ||||
|         else: | ||||
|             result = tmp[1] | ||||
|         return result | ||||
| 
 | ||||
|     def insertGameTypes(self, row): | ||||
|         c = self.get_cursor() | ||||
|  |  | |||
|  | @ -135,7 +135,7 @@ class DerivedStats(): | |||
|         #print "DEBUG: vpip: %s" %(self.hands['playersVpi']) | ||||
|         self.playersAtStreetX(hand) # Gives playersAtStreet1..4 and Showdown | ||||
|         #print "DEBUG: playersAtStreet 1:'%s' 2:'%s' 3:'%s' 4:'%s'" %(self.hands['playersAtStreet1'],self.hands['playersAtStreet2'],self.hands['playersAtStreet3'],self.hands['playersAtStreet4']) | ||||
|         self.streetXRaises(hand) # Empty function currently | ||||
|         self.streetXRaises(hand) | ||||
| 
 | ||||
|     def assembleHandsPlayers(self, hand): | ||||
|         #street0VPI/vpip already called in Hand | ||||
|  |  | |||
|  | @ -106,7 +106,10 @@ or None if we fail to get the info """ | |||
| 
 | ||||
|         m = self.re_GameInfo.search(handText) | ||||
|         if not m: | ||||
|             return None | ||||
|             tmp = handText[0:100] | ||||
|             log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp) | ||||
|             log.error(_("determineGameType: Raising FpdbParseError")) | ||||
|             raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp) | ||||
| 
 | ||||
|         mg = m.groupdict() | ||||
| 
 | ||||
|  |  | |||
|  | @ -33,6 +33,7 @@ class FullTiltPokerSummary(TourneySummary): | |||
|     games = {                          # base, category | ||||
|                               "Hold'em" : ('hold','holdem'),  | ||||
|                                 'Omaha' : ('hold','omahahi'), | ||||
|                             'Omahai Hi' : ('hold','omahahi'), | ||||
|                           'Omaha Hi/Lo' : ('hold','omahahilo'), | ||||
|                                  'Razz' : ('stud','razz'),  | ||||
|                                  'RAZZ' : ('stud','razz'), | ||||
|  | @ -55,7 +56,7 @@ class FullTiltPokerSummary(TourneySummary): | |||
|     re_TourneyInfo = re.compile(u""" | ||||
|                         \s.* | ||||
|                         (?P<TYPE>Tournament|Sit\s\&\sGo)\s\((?P<TOURNO>[0-9]+)\)(\s+)? | ||||
|                         (?P<GAME>Hold\'em|Razz|RAZZ|7\sCard\sStud|7\sCard\sStud\sHi/Lo|Omaha|Omaha\sHi/Lo|Badugi|Triple\sDraw\s2\-7\sLowball|5\sCard\sDraw)\s+ | ||||
|                         (?P<GAME>Hold\'em|Razz|RAZZ|7\sCard\sStud|7\sCard\sStud\sHi/Lo|Omaha|Omaha\sHi|Omaha\sHi/Lo|Badugi|Triple\sDraw\s2\-7\sLowball|5\sCard\sDraw)\s+ | ||||
|                         (?P<LIMIT>No\sLimit|Limit|LIMIT|Pot\sLimit)\s+ | ||||
|                         (Buy-In:\s\$(?P<BUYIN>[.\d]+)(\s\+\s\$(?P<FEE>[.\d]+))?\s+)? | ||||
|                         (Buy-In\sChips:\s(?P<CHIPS>\d+)\s+)? | ||||
|  |  | |||
|  | @ -63,10 +63,10 @@ class Fulltilt(HandHistoryConverter): | |||
|                                     [%(LS)s]?(?P<SB>[.0-9]+)/[%(LS)s]?(?P<BB>[.0-9]+)\s(Ante\s[%(LS)s]?(?P<ANTE>[.0-9]+)\s)?-\s | ||||
|                                     [%(LS)s]?(?P<CAP>[.0-9]+\sCap\s)? | ||||
|                                     (?P<GAMETYPE>[-\da-zA-Z\/\'\s]+)\s-\s | ||||
|                                     (?P<DATETIME>\d+:\d+:\d+\s(?P<TZ1>\w+)\s-\s\d+/\d+/\d+|\d+:\d+\s(?P<TZ2>\w+)\s-\s\w+\,\s\w+\s\d+\,\s\d+) | ||||
|                                     (?P<DATETIME>.*$) | ||||
|                                     (?P<PARTIAL>\(partial\))?\n | ||||
|                                     (?:.*?\n(?P<CANCELLED>Hand\s\#(?P=HID)\shas\sbeen\scanceled))? | ||||
|                                  ''' % substitutions, re.VERBOSE|re.DOTALL) | ||||
|                                  ''' % substitutions, re.MULTILINE|re.VERBOSE) | ||||
|     re_TourneyExtraInfo  = re.compile('''(((?P<TOURNEY_NAME>[^$]+)? | ||||
|                                          (?P<CURRENCY>[%(LS)s])?(?P<BUYIN>[.0-9]+)?\s*\+\s*[%(LS)s]?(?P<FEE>[.0-9]+)? | ||||
|                                          (\s(?P<SPECIAL>(KO|Heads\sUp|Matrix\s\dx|Rebuy|Madness)))? | ||||
|  | @ -123,6 +123,7 @@ class Fulltilt(HandHistoryConverter): | |||
|     re_Mixed        = re.compile(r'\s\-\s(?P<MIXED>HA|HORSE|HOSE)\s\-\s', re.VERBOSE) | ||||
|     re_Max          = re.compile("(?P<MAX>\d+)( max)?", re.MULTILINE) | ||||
|     # NB: if we ever match "Full Tilt Poker" we should also match "FullTiltPoker", which PT Stud erroneously exports. | ||||
|     re_DateTime     = re.compile("""((?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)\s(?P<TZ>\w+)\s-\s(?P<Y>[0-9]{4})\/(?P<M>[0-9]{2})\/(?P<D>[0-9]{2})|(?P<H2>[0-9]+):(?P<MIN2>[0-9]+)\s(?P<TZ2>\w+)\s-\s\w+\,\s(?P<M2>\w+)\s(?P<D2>\d+)\,\s(?P<Y2>[0-9]{4}))""", re.MULTILINE) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -225,18 +226,24 @@ class Fulltilt(HandHistoryConverter): | |||
|         hand.handid = m.group('HID') | ||||
|         hand.tablename = m.group('TABLE') | ||||
| 
 | ||||
|         timezone = "ET" | ||||
|         if m.group('TZ1') == "CET" or m.group('TZ2') == "CET": | ||||
|             timezone = "CET" | ||||
|         try: | ||||
|             stringformat = "%H:%M:%S " + m.group('TZ1') + " - %Y/%m/%d" | ||||
|             hand.startTime = datetime.datetime.strptime(m.group('DATETIME'), stringformat) | ||||
|         except: | ||||
|             stringformat = "%H:%M " + m.group('TZ2') + " - %a, %B %d, %Y" | ||||
|             hand.startTime = datetime.datetime.strptime(m.group('DATETIME'), stringformat) | ||||
|         if m.group('DATETIME'): | ||||
|             # This section of code should match either a single date (which is ET) or | ||||
|             # the last date in the header, which is also recorded in ET. | ||||
|             timezone = "ET" | ||||
|             m1 = self.re_DateTime.finditer(m.group('DATETIME')) | ||||
|             datetimestr = "2000/01/01 00:00:00" | ||||
|             for a in m1: | ||||
|                 if a.group('TZ2') == None: | ||||
|                     datetimestr = "%s/%s/%s %s:%s:%s" % (a.group('Y'), a.group('M'),a.group('D'),a.group('H'),a.group('MIN'),a.group('S')) | ||||
|                     timezone = a.group('TZ') | ||||
|                     hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%m/%d %H:%M:%S") | ||||
|                 else: # Short-lived date format | ||||
|                     datetimestr = "%s/%s/%s %s:%s" % (a.group('Y2'), a.group('M2'),a.group('D2'),a.group('H2'),a.group('MIN2')) | ||||
|                     timezone = a.group('TZ2') | ||||
|                     hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%B/%d %H:%M") | ||||
| 
 | ||||
|             hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, timezone, "UTC") | ||||
| 
 | ||||
|         hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, timezone, "UTC") | ||||
|          | ||||
|         if m.group("CANCELLED") or m.group("PARTIAL"): | ||||
|             raise FpdbParseError(hid=m.group('HID')) | ||||
| 
 | ||||
|  |  | |||
|  | @ -204,15 +204,18 @@ class GuiAutoImport (threading.Thread): | |||
| #    That is not correct.  It should open another dir for importing while piping the | ||||
| #    results to the same pipe.  This means that self.path should be a a list of dirs | ||||
| #    to watch. | ||||
|         if widget.get_active(): # toggled on | ||||
|         if data == "autostart" or (widget == self.startButton and self.startButton.get_active()): | ||||
|             self.startButton.set_active(True) | ||||
|             # - Does the lock acquisition need to be more sophisticated for multiple dirs? | ||||
|             # (see comment above about what to do if pipe already open) | ||||
|             # - Ideally we want to release the lock if the auto-import is killed by some | ||||
|             # kind of exception - is this possible? | ||||
|             if self.settings['global_lock'].acquire(False):   # returns false immediately if lock not acquired | ||||
|             if self.settings['global_lock'].acquire(wait=False, source="AutoImport"):   # returns false immediately if lock not acquired | ||||
|                 self.addText(_("\nGlobal lock taken ... Auto Import Started.\n")) | ||||
|                 self.doAutoImportBool = True | ||||
|                 widget.set_label(_(u'  _Stop Auto Import  ')) | ||||
|                 self.startButton.set_label(_(u'  _Stop Auto Import  ')) | ||||
|                 while gtk.events_pending(): # change the label NOW don't wait for the pipe to open | ||||
|                     gtk.main_iteration(False) | ||||
|                 if self.pipe_to_hud is None: | ||||
|                     if Configuration.FROZEN:    # if py2exe, run hud_main.exe | ||||
|                         path = Configuration.EXEC_PATH | ||||
|  | @ -224,15 +227,14 @@ class GuiAutoImport (threading.Thread): | |||
|                             command = 'pythonw "'+path+'\\HUD_main.pyw" ' + self.settings['cl_options'] | ||||
|                         else: | ||||
|                             command = 'python "'+path+'\\HUD_main.pyw" ' + self.settings['cl_options'] | ||||
|                         # uncomment above line if you want hud_main stdout to work ... and make sure you are running fpdb.py using python.exe not pythonw.exe | ||||
|                         bs = 0 | ||||
|                     else: | ||||
|                         command = os.path.join(sys.path[0], 'HUD_main.pyw') | ||||
|                         command = [command, ] + string.split(self.settings['cl_options']) | ||||
|                         bs = 1 | ||||
| 
 | ||||
|                     try: | ||||
|                         print _("opening pipe to HUD") | ||||
|                     try: | ||||
|                         if Configuration.FROZEN or (os.name == "nt" and win32console.GetConsoleWindow()) == 0: | ||||
|                             self.pipe_to_hud = subprocess.Popen(command, bufsize=bs, | ||||
|                                                                 stdin=subprocess.PIPE, | ||||
|  | @ -242,8 +244,6 @@ class GuiAutoImport (threading.Thread): | |||
|                                                                ) | ||||
|                         else: | ||||
|                             self.pipe_to_hud = subprocess.Popen(command, bufsize=bs, stdin=subprocess.PIPE, universal_newlines=True) | ||||
|                         #self.pipe_to_hud.stdout.close() | ||||
|                         #self.pipe_to_hud.stderr.close() | ||||
|                     except: | ||||
|                         err = traceback.extract_tb(sys.exc_info()[2])[-1] | ||||
|                         #self.addText( "\n*** GuiAutoImport Error opening pipe: " + err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1])) | ||||
|  | @ -268,8 +268,9 @@ class GuiAutoImport (threading.Thread): | |||
|             if self.pipe_to_hud.poll() is not None: | ||||
|                 self.addText(_("\n * Stop Auto Import: HUD already terminated")) | ||||
|             else: | ||||
|                 self.pipe_to_hud.terminate() | ||||
|                 #print >>self.pipe_to_hud.stdin, "\n" | ||||
|                 self.pipe_to_hud.communicate('\n') # waits for process to terminate | ||||
|                 # self.pipe_to_hud.communicate('\n') # waits for process to terminate | ||||
|             self.pipe_to_hud = None | ||||
|             self.startButton.set_label(_(u'  Start _Auto Import  ')) | ||||
| 
 | ||||
|  |  | |||
|  | @ -224,9 +224,6 @@ class GuiGraphViewer (threading.Thread): | |||
|                 self.graphBox.add(self.canvas) | ||||
|                 self.canvas.show() | ||||
|                 self.canvas.draw() | ||||
| 
 | ||||
|                 #TODO: Do something useful like alert user | ||||
|                 #print "No hands returned by graph query" | ||||
|             else: | ||||
|                 self.ax.set_title(_("Profit graph for ring games"+names),fontsize=12) | ||||
| 
 | ||||
|  | @ -340,7 +337,10 @@ class GuiGraphViewer (threading.Thread): | |||
|         if len(winnings) == 0: | ||||
|             return (None, None, None) | ||||
| 
 | ||||
|         green = map(lambda x:float(x[1]), winnings) | ||||
|         #Insert a 0th entry into winnings so graph starts 'zerod' | ||||
|         winnings.insert(0, (0,0,0)) | ||||
| 
 | ||||
|         green = map(lambda x: float(x[1]), winnings) | ||||
|         blue  = map(lambda x: float(x[1]) if x[2] == True  else 0.0, winnings) | ||||
|         red   = map(lambda x: float(x[1]) if x[2] == False else 0.0, winnings) | ||||
|         greenline = cumsum(green) | ||||
|  |  | |||
|  | @ -397,7 +397,7 @@ class GuiPositionalStats (threading.Thread): | |||
|             query = query.replace("<selectgt.bigBlind>", bigblindselect) | ||||
|             query = query.replace("<groupbygt.bigBlind>", "") | ||||
|             query = query.replace("<hcgametypeId>", "-1") | ||||
|             query = query.replace("<hgameTypeId>", "-1") | ||||
|             query = query.replace("<hgametypeId>", "-1") | ||||
|         else: | ||||
|             if self.db.backend == self.MYSQL_INNODB: | ||||
|                 bigblindselect = """concat('$', trim(leading ' ' from | ||||
|  | @ -416,7 +416,7 @@ class GuiPositionalStats (threading.Thread): | |||
|             query = query.replace("<selectgt.bigBlind>", bigblindselect) | ||||
|             query = query.replace("<groupbygt.bigBlind>", ",gt.bigBlind") | ||||
|             query = query.replace("<hcgametypeId>", "hc.gametypeId") | ||||
|             query = query.replace("<hgameTypeId>", "h.gameTypeId") | ||||
|             query = query.replace("<hgametypeId>", "h.gametypeId") | ||||
| 
 | ||||
|         # Filter on dates | ||||
|         query = query.replace("<datestest>", " between '" + dates[0] + "' and '" + dates[1] + "'") | ||||
|  |  | |||
							
								
								
									
										338
									
								
								pyfpdb/GuiReplayer.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										338
									
								
								pyfpdb/GuiReplayer.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,338 @@ | |||
| #!/usr/bin/env python | ||||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| #Copyright 2010 Maxime Grandchamp | ||||
| #This program is free software: you can redistribute it and/or modify | ||||
| #it under the terms of the GNU Affero General Public License as published by | ||||
| #the Free Software Foundation, version 3 of the License. | ||||
| # | ||||
| #This program is distributed in the hope that it will be useful, | ||||
| #but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
| #GNU General Public License for more details. | ||||
| # | ||||
| #You should have received a copy of the GNU Affero General Public License | ||||
| #along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
| #In the "official" distribution you can find the license in agpl-3.0.txt. | ||||
| 
 | ||||
| import L10n | ||||
| _ = L10n.get_translation() | ||||
| 
 | ||||
| 
 | ||||
| from Hand import * | ||||
| import Configuration | ||||
| import Database | ||||
| import SQL | ||||
| import fpdb_import | ||||
| import Filters | ||||
| import pygtk | ||||
| pygtk.require('2.0') | ||||
| import gtk | ||||
| import math | ||||
| import gobject | ||||
| 
 | ||||
| 
 | ||||
| class GuiReplayer: | ||||
|     def __init__(self, config, querylist, mainwin, options = None, debug=True): | ||||
|         self.debug = debug | ||||
|         self.conf = config | ||||
|         self.main_window = mainwin | ||||
|         self.sql = querylist | ||||
| 
 | ||||
|         # These are temporary variables until it becomes possible | ||||
|         # to select() a Hand object from the database | ||||
|         self.filename="regression-test-files/cash/Stars/Flop/NLHE-FR-USD-0.01-0.02-201005.microgrind.txt" | ||||
|         self.site="PokerStars" | ||||
| 
 | ||||
|         if options.filename != None: | ||||
|             self.filename = options.filename | ||||
|         if options.sitename != None: | ||||
|             self.site = options.sitename | ||||
| 
 | ||||
|         self.db = Database.Database(self.conf, sql=self.sql) | ||||
| 
 | ||||
|         filters_display = { "Heroes"    : True, | ||||
|                     "Sites"     : False, | ||||
|                     "Games"     : False, | ||||
|                     "Limits"    : False, | ||||
|                     "LimitSep"  : False, | ||||
|                     "LimitType" : False, | ||||
|                     "Type"      : False, | ||||
|                     "Seats"     : False, | ||||
|                     "SeatSep"   : False, | ||||
|                     "Dates"     : True, | ||||
|                     "Groups"    : False, | ||||
|                     "GroupsAll" : False, | ||||
|                     "Button1"   : True, | ||||
|                     "Button2"   : False | ||||
|                   } | ||||
| 
 | ||||
| 
 | ||||
|         self.filters = Filters.Filters(self.db, self.conf, self.sql, display = filters_display) | ||||
|         #self.filters.registerButton1Name(_("Import Hand")) | ||||
|         #self.filters.registerButton1Callback(self.importhand) | ||||
|         #self.filters.registerButton2Name(_("temp")) | ||||
|         #self.filters.registerButton2Callback(self.temp()) | ||||
| 
 | ||||
|         # hierarchy:  self.mainHBox / self.hpane / self.replayBox / self.area | ||||
| 
 | ||||
|         self.mainHBox = gtk.HBox(False, 0) | ||||
|         self.mainHBox.show() | ||||
| 
 | ||||
|         self.leftPanelBox = self.filters.get_vbox() | ||||
| 
 | ||||
|         self.hpane = gtk.HPaned() | ||||
|         self.hpane.pack1(self.leftPanelBox) | ||||
|         self.mainHBox.add(self.hpane) | ||||
| 
 | ||||
|         self.replayBox = gtk.VBox(False, 0) | ||||
|         self.replayBox.show() | ||||
| 
 | ||||
|         self.hpane.pack2(self.replayBox) | ||||
|         self.hpane.show() | ||||
| 
 | ||||
|         self.area=gtk.DrawingArea() | ||||
|         self.pangolayout = self.area.create_pango_layout("") | ||||
|         self.area.connect("expose-event", self.area_expose) | ||||
|         self.style = self.area.get_style() | ||||
|         self.gc = self.style.fg_gc[gtk.STATE_NORMAL] | ||||
|         self.area.show() | ||||
| 
 | ||||
|         self.replayBox.pack_start(self.area) | ||||
| 
 | ||||
|         self.MyHand = self.importhand() | ||||
| 
 | ||||
|         self.maxseats=self.MyHand.maxseats | ||||
| 
 | ||||
|         if self.MyHand.gametype['currency']=="USD":    #TODO: check if there are others .. | ||||
|             self.currency="$" | ||||
|         elif self.MyHand.gametype['currency']=="EUR": | ||||
|             self.currency="€" | ||||
| 
 | ||||
| 
 | ||||
|         self.table={}     #create table with positions, player names, status (live/folded), stacks and chips on table | ||||
|         for i in range(0,self.maxseats):     # radius: 200, center: 250,250 | ||||
|             x= int (round(250+200*math.cos(2*i*math.pi/self.maxseats))) | ||||
|             y= int (round(250+200*math.sin(2*i*math.pi/self.maxseats))) | ||||
|             try: | ||||
|                 self.table[i]={"name":self.MyHand.players[i][1],"stack":Decimal(self.MyHand.players[i][2]),"x":x,"y":y,"chips":0,"status":"live"}               #save coordinates of each player | ||||
|                 try: | ||||
|                     self.table[i]['holecards']=self.MyHand.holecards["PREFLOP"][self.MyHand.players[i][1]][1]+' '+self.MyHand.holecards["PREFLOP"][self.MyHand.players[i][1]][2] | ||||
|                     print "holecards: ",self.table[i]['holecards'] | ||||
|                 except: | ||||
|                     self.table[i]['holecards']='' | ||||
|             except IndexError:  #if seat is empty | ||||
|                 print "seat ",i+1," out of ",self.maxseats," empty" | ||||
| 
 | ||||
|         self.actions=[]     #create list with all actions | ||||
| 
 | ||||
|         if isinstance(self.MyHand, HoldemOmahaHand): | ||||
|             if self.MyHand.gametype['category'] == 'holdem': | ||||
|                 self.play_holdem() | ||||
| 
 | ||||
|         self.action_number=0 | ||||
|         self.action_level=0 | ||||
|         self.pot=0 | ||||
|         gobject.timeout_add(1000,self.draw_action) | ||||
| 
 | ||||
| 
 | ||||
|     def area_expose(self, area, event): | ||||
|         self.style = self.area.get_style() | ||||
|         self.gc = self.style.fg_gc[gtk.STATE_NORMAL] | ||||
| 
 | ||||
|         playerid='999'  #makes sure we have an error if player is not recognised | ||||
|         for i in range(0,len(self.table)):  #surely there must be a better way to find the player id in the table... | ||||
|             if self.table[i]['name']==self.actions[self.action_number][1]: | ||||
|                 playerid=i | ||||
| 
 | ||||
|         if self.actions[self.action_number][2]=="folds": | ||||
|             self.table[playerid]["status"]="folded" | ||||
| 
 | ||||
|         if self.actions[self.action_number][3]: | ||||
|             self.table[playerid]["stack"] -= Decimal(self.actions[self.action_number][3])  #decreases stack if player bets | ||||
|             self.pot += Decimal(self.actions[self.action_number][3]) #increase pot | ||||
|             self.table[playerid]["chips"] += Decimal(self.actions[self.action_number][3]) #increase player's chips on table | ||||
| 
 | ||||
| 
 | ||||
|         cm = self.gc.get_colormap() #create colormap toi be able to play with colours | ||||
| 
 | ||||
|         color = cm.alloc_color("black") #defaults to black | ||||
|         self.gc.set_foreground(color) | ||||
| 
 | ||||
|         self.area.window.draw_arc(self.gc, 0, 125, 125, 300, 300, 0, 360*64) #table | ||||
| 
 | ||||
|         for i in self.table: | ||||
|             if self.table[i]["status"]=="folded": | ||||
|                 color = cm.alloc_color("grey") #player has folded => greyed out | ||||
|                 self.gc.set_foreground(color) | ||||
|             else: | ||||
|                 color = cm.alloc_color("black") #player is live | ||||
|                 self.gc.set_foreground(color) | ||||
|             self.pangolayout.set_text(self.table[i]["name"]+self.table[i]["holecards"])     #player names + holecards | ||||
|             self.area.window.draw_layout(self.gc, self.table[i]["x"],self.table[i]["y"], self.pangolayout) | ||||
|             self.pangolayout.set_text('$'+str(self.table[i]["stack"]))     #player stacks | ||||
|             self.area.window.draw_layout(self.gc, self.table[i]["x"]+10,self.table[i]["y"]+20, self.pangolayout) | ||||
| 
 | ||||
|         color = cm.alloc_color("green") | ||||
|         self.gc.set_foreground(color) | ||||
| 
 | ||||
|         self.pangolayout.set_text(self.currency+str(self.pot)) #displays pot | ||||
|         self.area.window.draw_layout(self.gc,270,270, self.pangolayout) | ||||
| 
 | ||||
|         if self.actions[self.action_number][0]>1:   #displays flop | ||||
|             self.pangolayout.set_text(self.MyHand.board['FLOP'][0]+" "+self.MyHand.board['FLOP'][1]+" "+self.MyHand.board['FLOP'][2]) | ||||
|             self.area.window.draw_layout(self.gc,210,240, self.pangolayout) | ||||
|         if self.actions[self.action_number][0]>2:   #displays turn | ||||
|             self.pangolayout.set_text(self.MyHand.board['TURN'][0]) | ||||
|             self.area.window.draw_layout(self.gc,270,240, self.pangolayout) | ||||
|         if self.actions[self.action_number][0]>3:   #displays river | ||||
|             self.pangolayout.set_text(self.MyHand.board['RIVER'][0]) | ||||
|             self.area.window.draw_layout(self.gc,290,240, self.pangolayout) | ||||
| 
 | ||||
|         color = cm.alloc_color("red")   #highlights the action | ||||
|         self.gc.set_foreground(color) | ||||
| 
 | ||||
|         self.pangolayout.set_text(self.actions[self.action_number][2]) #displays action | ||||
|         self.area.window.draw_layout(self.gc, self.table[playerid]["x"]+10,self.table[playerid]["y"]+35, self.pangolayout) | ||||
|         if self.actions[self.action_number][3]:  #displays amount | ||||
|             self.pangolayout.set_text(self.currency+self.actions[self.action_number][3]) | ||||
|             self.area.window.draw_layout(self.gc, self.table[playerid]["x"]+10,self.table[playerid]["y"]+55, self.pangolayout) | ||||
| 
 | ||||
|         color = cm.alloc_color("black")      #we don't want to draw the filters and others in red | ||||
|         self.gc.set_foreground(color) | ||||
| 
 | ||||
|     def play_holdem(self): | ||||
|         actions=('BLINDSANTES','PREFLOP','FLOP','TURN','RIVER') | ||||
|         for action in actions: | ||||
|             for i in range(0,len(self.MyHand.actions[action])): | ||||
|                 player=self.MyHand.actions[action][i][0] | ||||
|                 act=self.MyHand.actions[action][i][1] | ||||
|                 try: | ||||
|                     amount=str(self.MyHand.actions[action][i][2]) | ||||
|                 except: | ||||
|                     amount=''   #no amount | ||||
|                 self.actions.append([actions.index(action),player,act,amount])  #create table with all actions | ||||
| 
 | ||||
| 
 | ||||
|     def draw_action(self): | ||||
|         if self.action_number==len(self.actions)-1:     #no more actions, we exit the loop | ||||
|             return False | ||||
| 
 | ||||
|         if self.actions[self.action_number][0]!=self.action_level:  #have we changed street ? | ||||
|             self.action_level=self.actions[self.action_number][0] #record the new street | ||||
|             if self.action_level>1: #we don't want to refresh if simply moving from antes/blinds to preflop action | ||||
|                 alloc = self.area.get_allocation() | ||||
|                 rect = gtk.gdk.Rectangle(0, 0, alloc.width, alloc.height) | ||||
|                 self.area.window.invalidate_rect(rect, True)    #make sure we refresh the whole screen | ||||
| 
 | ||||
|         self.action_number+=1 | ||||
|         if self.area.window: | ||||
|             playerid='999'  #makes sure we have an error if player is not recognised | ||||
|             for i in range(0,len(self.table)):  #surely there must be a better way to find the player id in the table... | ||||
|                 if self.table[i]['name']==self.actions[self.action_number][1]: | ||||
|                     playerid=i | ||||
|                     rect = gtk.gdk.Rectangle(self.table[playerid]["x"],self.table[playerid]["y"],100,100) | ||||
|                     self.area.window.invalidate_rect(rect, True)    #refresh player area of the screen | ||||
|                     rect = gtk.gdk.Rectangle(270,270,100,50) | ||||
|                     self.area.window.invalidate_rect(rect, True)    #refresh pot area | ||||
|             self.area.window.process_updates(True) | ||||
|         print "draw action: ",self.action_number,self.actions[self.action_number][1],self.actions[self.action_number][2],self.actions[self.action_number][3] | ||||
|         return True | ||||
| 
 | ||||
| 
 | ||||
|     def get_vbox(self): | ||||
|         """returns the vbox of this thread""" | ||||
|         return self.mainHBox | ||||
| 
 | ||||
|     def importhand(self, handnumber=1): | ||||
|         """Temporary function that grabs a Hand object from a specified file. Obviously this will | ||||
|         be replaced by a function to select a hand from the db in the not so distant future. | ||||
|         This code has been shamelessly stolen from Carl | ||||
|         """ | ||||
|         if True: | ||||
|             settings = {} | ||||
|             settings.update(self.conf.get_db_parameters()) | ||||
|             settings.update(self.conf.get_import_parameters()) | ||||
|             settings.update(self.conf.get_default_paths()) | ||||
| 
 | ||||
|             importer = fpdb_import.Importer(False, settings, self.conf, None) | ||||
|             importer.setDropIndexes("don't drop") | ||||
|             importer.setFailOnError(True) | ||||
|             importer.setThreads(-1) | ||||
|             importer.setCallHud(False) | ||||
|             importer.setFakeCacheHHC(True) | ||||
| 
 | ||||
|             print "DEBUG: self.filename: '%s' self.site: '%s'" %(self.filename, self.site) | ||||
|             importer.addBulkImportImportFileOrDir(self.filename, site=self.site) | ||||
|             (stored, dups, partial, errs, ttime) = importer.runImport() | ||||
| 
 | ||||
|             hhc = importer.getCachedHHC() | ||||
|             handlist = hhc.getProcessedHands() | ||||
| 
 | ||||
|             return handlist[0] | ||||
|         else: | ||||
|             # Fetch hand info | ||||
|             # We need at least sitename, gametype, handid | ||||
|             # for the Hand.__init__ | ||||
| 
 | ||||
|             ####### Shift this section in Database.py for all to use ###### | ||||
|             handid = 40 | ||||
|             q = self.sql.query['get_gameinfo_from_hid'] | ||||
|             q = q.replace('%s', self.sql.query['placeholder']) | ||||
| 
 | ||||
|             c = self.db.get_cursor() | ||||
| 
 | ||||
|             c.execute(q, (handid,)) | ||||
|             res = c.fetchone() | ||||
|             gametype = {'category':res[1],'base':res[2],'type':res[3],'limitType':res[4],'hilo':res[5],'sb':res[6],'bb':res[7], 'currency':res[10]} | ||||
|             #FIXME: smallbet and bigbet are res[8] and res[9] respectively | ||||
|             ###### End section ######## | ||||
|             print "DEBUG: gametype: %s" % gametype | ||||
|             if gametype['base'] == 'hold': | ||||
|                 h = HoldemOmahaHand(config = self.conf, hhc = None, sitename=res[0], gametype = gametype, handText=None, builtFrom = "DB", handid=handid) | ||||
|                 h.select(self.db, handid) | ||||
|             elif gametype['base'] == 'stud': | ||||
|                 print "DEBUG: Create stud hand here" | ||||
|             elif gametype['base'] == 'draw': | ||||
|                 print "DEBUG: Create draw hand here" | ||||
| 
 | ||||
|     def temp(self): | ||||
|         pass | ||||
| 
 | ||||
| def main(argv=None): | ||||
|     """main can also be called in the python interpreter, by supplying the command line as the argument.""" | ||||
|     if argv is None: | ||||
|         argv = sys.argv[1:] | ||||
| 
 | ||||
|     def destroy(*args):  # call back for terminating the main eventloop | ||||
|         gtk.main_quit() | ||||
| 
 | ||||
|     import Options | ||||
| 
 | ||||
|     (options, argv) = Options.fpdb_options() | ||||
| 
 | ||||
|     if options.usage == True: | ||||
|         #Print usage examples and exit | ||||
|         sys.exit(0) | ||||
| 
 | ||||
|     if options.sitename: | ||||
|         options.sitename = Options.site_alias(options.sitename) | ||||
|         if options.sitename == False: | ||||
|             usage() | ||||
| 
 | ||||
|     config = Configuration.Config(file = "HUD_config.test.xml") | ||||
|     db = Database.Database(config) | ||||
|     sql = SQL.Sql(db_server = 'sqlite') | ||||
| 
 | ||||
|     main_window = gtk.Window() | ||||
|     main_window.connect('destroy', destroy) | ||||
| 
 | ||||
|     replayer = GuiReplayer(config, sql, main_window, options=options, debug=True) | ||||
| 
 | ||||
|     main_window.add(replayer.get_vbox()) | ||||
|     main_window.set_default_size(800,800) | ||||
|     main_window.show() | ||||
|     gtk.main() | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     sys.exit(main()) | ||||
|  | @ -75,10 +75,6 @@ onlinehelp = {'Game':_('Type of Game'), | |||
| class DemoTips(TreeViewTooltips): | ||||
| 
 | ||||
|     def __init__(self, customer_column): | ||||
|         # customer_column is an instance of gtk.TreeViewColumn and | ||||
|         # is being used in the gtk.TreeView to show customer names. | ||||
|         # self.cust_col = customer_column | ||||
| 
 | ||||
|         # call base class init | ||||
|         TreeViewTooltips.__init__(self) | ||||
| 
 | ||||
|  | @ -91,11 +87,6 @@ class DemoTips(TreeViewTooltips): | |||
|         return (display) | ||||
| 
 | ||||
|     def location(self, x, y, w, h): | ||||
|         # rename me to "location" so I override the base class | ||||
|         # method.  This will demonstrate being able to change | ||||
|         # where the tooltip window popups, relative to the | ||||
|         # pointer. | ||||
| 
 | ||||
|         # this will place the tooltip above and to the right | ||||
|         return x + 30, y - (h + 10) | ||||
|          | ||||
|  | @ -661,18 +652,18 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats): | |||
|         query = query.replace("<gtbigBlind_test>", bbtest) | ||||
| 
 | ||||
|         if holecards:  # re-use level variables for hole card query | ||||
|             query = query.replace("<hgameTypeId>", "hp.startcards") | ||||
|             query = query.replace("<orderbyhgameTypeId>" | ||||
|             query = query.replace("<hgametypeId>", "hp.startcards") | ||||
|             query = query.replace("<orderbyhgametypeId>" | ||||
|                                  , ",case when floor((hp.startcards-1)/13) >= mod((hp.startcards-1),13) then hp.startcards + 0.1 " | ||||
|                                    +    " else 13*mod((hp.startcards-1),13) + floor((hp.startcards-1)/13) + 1 " | ||||
|                                    +    " end desc ") | ||||
|         else: | ||||
|             query = query.replace("<orderbyhgameTypeId>", "") | ||||
|             query = query.replace("<orderbyhgametypeId>", "") | ||||
|             groupLevels = "show" not in str(limits) | ||||
|             if groupLevels: | ||||
|                 query = query.replace("<hgameTypeId>", "p.name")  # need to use p.name for sqlite posn stats to work | ||||
|                 query = query.replace("<hgametypeId>", "p.name")  # need to use p.name for sqlite posn stats to work | ||||
|             else: | ||||
|                 query = query.replace("<hgameTypeId>", "h.gameTypeId") | ||||
|                 query = query.replace("<hgametypeId>", "h.gametypeId") | ||||
| 
 | ||||
|         # process self.detailFilters (a list of tuples) | ||||
|         flagtest = '' | ||||
|  |  | |||
|  | @ -37,8 +37,6 @@ try: | |||
|     from matplotlib.finance import candlestick2 | ||||
| 
 | ||||
|     from numpy import diff, nonzero, sum, cumsum, max, min, append | ||||
| #    from matplotlib.dates import  DateFormatter, WeekdayLocator, HourLocator, \ | ||||
| #     DayLocator, MONDAY, timezone | ||||
| 
 | ||||
| except ImportError, inst: | ||||
|     print _("""Failed to load numpy and/or matplotlib in Session Viewer""") | ||||
|  | @ -157,15 +155,10 @@ class GuiSessionViewer (threading.Thread): | |||
|         # make sure Hand column is not displayed | ||||
|         #[x for x in self.columns if x[0] == 'hand'][0][1] = False | ||||
|         if DEBUG == False: | ||||
|             warning_string = """ | ||||
| Session Viewer is proof of concept code only, and contains many bugs. | ||||
| 
 | ||||
| Feel free to use the viewer, but there is no guarantee that the data is accurate. | ||||
| 
 | ||||
| If you are interested in developing the code further please contact us via the usual channels. | ||||
| 
 | ||||
| Thankyou | ||||
| """ | ||||
|             warning_string = _("Session Viewer is proof of concept code only, and contains many bugs.\n") | ||||
|             warning_string += _("Feel free to use the viewer, but there is no guarantee that the data is accurate.\n") | ||||
|             warning_string += _("If you are interested in developing the code further please contact us via the usual channels.\n") | ||||
|             warning_string += _("Thankyou") | ||||
|             self.warning_box(warning_string) | ||||
| 
 | ||||
|     def warning_box(self, str, diatitle=_("FPDB WARNING")): | ||||
|  | @ -265,8 +258,9 @@ Thankyou | |||
|     #end def fillStatsFrame(self, vbox): | ||||
| 
 | ||||
|     def generateDatasets(self, playerids, sitenos, limits, seats): | ||||
|         THRESHOLD = 1800                    # Minimum number of seconds between consecutive hands before being considered a new session | ||||
|         PADDING   = 5                       # Additional time in minutes to add to a session, session startup, shutdown etc (FiXME: user configurable) | ||||
|         print "DEBUG: Starting generateDatasets" | ||||
|         THRESHOLD = 1800     # Min # of secs between consecutive hands before being considered a new session | ||||
|         PADDING   = 5        # Additional time in minutes to add to a session, session startup, shutdown etc | ||||
| 
 | ||||
|         # Get a list of all handids and their timestampts | ||||
|         #FIXME: Query still need to filter on blind levels | ||||
|  | @ -284,10 +278,15 @@ Thankyou | |||
|         self.db.cursor.execute(q) | ||||
|         hands = self.db.cursor.fetchall() | ||||
| 
 | ||||
|         hands.insert(0, (hands[0][0], 0, 0, 0, 0)) | ||||
| 
 | ||||
|         # Take that list and create an array of the time between hands | ||||
|         times = map(lambda x:long(x[0]), hands) | ||||
|         handids = map(lambda x:int(x[1]), hands) | ||||
|         winnings = map(lambda x:float(x[4]), hands) | ||||
|         #print "DEBUG: times   : %s" % times | ||||
|         #print "DEBUG: handids : %s" % handids | ||||
|         #print "DEBUG: winnings: %s" % winnings | ||||
|         #print "DEBUG: len(times) %s" %(len(times)) | ||||
|         diffs = diff(times)                      # This array is the difference in starttime between consecutive hands | ||||
|         diffs2 = append(diffs,THRESHOLD + 1)     # Append an additional session to the end of the diffs, so the next line | ||||
|  | @ -318,8 +317,9 @@ Thankyou | |||
|         cum_sum = cum_sum/100 | ||||
|         sid = 1 | ||||
|         # Take all results and format them into a list for feeding into gui model. | ||||
|         #print "DEBUG: range(len(index[0]): %s" % range(len(index[0])) | ||||
|         for i in range(len(index[0])): | ||||
|             hds = index[0][i] - first_idx + 1                                        # Number of hands in session | ||||
|             hds = index[0][i] - first_idx                                       # Number of hands in session | ||||
|             if hds > 0: | ||||
|                 stime = strftime("%d/%m/%Y %H:%M", localtime(times[first_idx]))      # Formatted start time | ||||
|                 etime = strftime("%d/%m/%Y %H:%M", localtime(times[index[0][i]]))   # Formatted end time | ||||
|  | @ -328,12 +328,14 @@ Thankyou | |||
|                     minutesplayed = 1 | ||||
|                 minutesplayed = minutesplayed + PADDING | ||||
|                 hph = hds*60/minutesplayed # Hands per hour | ||||
|                 won = sum(winnings[first_idx:index[0][i]])/100.0 | ||||
|                 hwm = max(cum_sum[first_idx:index[0][i]]) | ||||
|                 lwm = min(cum_sum[first_idx:index[0][i]]) | ||||
|                 end_idx = first_idx+hds+1 | ||||
|                 won = sum(winnings[first_idx:end_idx])/100.0 | ||||
|                 #print "DEBUG: winnings[%s:%s]: %s" % (first_idx, end_idx, winnings[first_idx:end_idx]) | ||||
|                 hwm = max(cum_sum[first_idx:end_idx]) | ||||
|                 lwm = min(cum_sum[first_idx:end_idx]) | ||||
|                 open = (sum(winnings[:first_idx]))/100 | ||||
|                 close = (sum(winnings[:index[0][i]]))/100 | ||||
|                 #print "DEBUG: range: (%s, %s) - (min, max): (%s, %s) - (open,close): (%s, %s)" %(first_idx, index[0][i], lwm, hwm, open, close) | ||||
|                 close = (sum(winnings[:end_idx]))/100 | ||||
|                 #print "DEBUG: range: (%s, %s) - (min, max): (%s, %s) - (open,close): (%s, %s)" %(first_idx, end_idx, lwm, hwm, open, close) | ||||
|              | ||||
|                 results.append([sid, hds, stime, etime, hph, won]) | ||||
|                 opens.append(open) | ||||
|  | @ -374,17 +376,17 @@ Thankyou | |||
|     def generateGraph(self, opens, closes, highs, lows): | ||||
|         self.clearGraphData() | ||||
| 
 | ||||
| #        print "DEBUG:" | ||||
| #        print "highs = %s" % highs | ||||
| #        print "lows = %s" % lows | ||||
| #        print "opens = %s" % opens | ||||
| #        print "closes = %s" % closes | ||||
| #        print "len(highs): %s == len(lows): %s" %(len(highs), len(lows)) | ||||
| #        print "len(opens): %s == len(closes): %s" %(len(opens), len(closes)) | ||||
| # | ||||
| #        for i in range(len(highs)): | ||||
| #            print "DEBUG: (%s, %s, %s, %s)" %(lows[i], opens[i], closes[i], highs[i]) | ||||
| #            print "DEBUG: diffs h/l: %s o/c: %s" %(lows[i] - highs[i], opens[i] - closes[i]) | ||||
|         #print "DEBUG:" | ||||
|         #print "\thighs = %s" % highs | ||||
|         #print "\tlows = %s" % lows | ||||
|         #print "\topens = %s" % opens | ||||
|         #print "\tcloses = %s" % closes | ||||
|         #print "\tlen(highs): %s == len(lows): %s" %(len(highs), len(lows)) | ||||
|         #print "\tlen(opens): %s == len(closes): %s" %(len(opens), len(closes)) | ||||
| 
 | ||||
|         #for i in range(len(highs)): | ||||
|         #    print "DEBUG: (%s, %s, %s, %s)" %(lows[i], opens[i], closes[i], highs[i]) | ||||
|         #    print "DEBUG: diffs h/l: %s o/c: %s" %(lows[i] - highs[i], opens[i] - closes[i]) | ||||
| 
 | ||||
|         self.ax = self.fig.add_subplot(111) | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										222
									
								
								pyfpdb/GuiStove.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										222
									
								
								pyfpdb/GuiStove.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,222 @@ | |||
| #!/usr/bin/python | ||||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| #Copyright 2008-2010 Steffen Schaumburg | ||||
| #This program is free software: you can redistribute it and/or modify | ||||
| #it under the terms of the GNU Affero General Public License as published by | ||||
| #the Free Software Foundation, version 3 of the License. | ||||
| # | ||||
| #This program is distributed in the hope that it will be useful, | ||||
| #but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
| #GNU General Public License for more details. | ||||
| # | ||||
| #You should have received a copy of the GNU Affero General Public License | ||||
| #along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
| #In the "official" distribution you can find the license in agpl-3.0.txt. | ||||
| 
 | ||||
| import L10n | ||||
| _ = L10n.get_translation() | ||||
| 
 | ||||
| import pygtk | ||||
| pygtk.require('2.0') | ||||
| import gtk | ||||
| import os | ||||
| import sys | ||||
| 
 | ||||
| import Charset | ||||
| 
 | ||||
| DEBUG = False | ||||
| 
 | ||||
| class GuiStove(): | ||||
| 
 | ||||
|     def __init__(self, config, parent, debug=True): | ||||
|         """Constructor for GraphViewer""" | ||||
|         self.conf = config | ||||
|         self.parent = parent | ||||
| 
 | ||||
|         self.mainHBox = gtk.HBox(False, 0) | ||||
| 
 | ||||
|         # hierarchy:  self.mainHBox / self.notebook | ||||
| 
 | ||||
|         self.notebook = gtk.Notebook() | ||||
|         self.notebook.set_tab_pos(gtk.POS_TOP) | ||||
|         self.notebook.set_show_tabs(True) | ||||
|         self.notebook.set_show_border(True) | ||||
| 
 | ||||
|         self.createFlopTab() | ||||
|         self.createStudTab() | ||||
|         self.createDrawTab() | ||||
| 
 | ||||
| 
 | ||||
|         self.mainHBox.add(self.notebook) | ||||
| 
 | ||||
|         self.mainHBox.show_all() | ||||
| 
 | ||||
|         if DEBUG == False: | ||||
|             warning_string = _("Stove is a GUI mockup of a EV calculation page, and completely non functional.\n") | ||||
|             warning_string = _("Unless you are interested in developing this feature, please ignore this page.\n") | ||||
|             warning_string = _("If you are interested in developing the code further see GuiStove.py and Stove.py\n") | ||||
|             warning_string = _("Thank you\n") | ||||
|             self.warning_box(warning_string) | ||||
| 
 | ||||
| 
 | ||||
|     def warning_box(self, str, diatitle=_("FPDB WARNING")): | ||||
|         diaWarning = gtk.Dialog(title=diatitle, parent=self.parent, flags=gtk.DIALOG_DESTROY_WITH_PARENT, buttons=(gtk.STOCK_OK,gtk.RESPONSE_OK)) | ||||
| 
 | ||||
|         label = gtk.Label(str) | ||||
|         diaWarning.vbox.add(label) | ||||
|         label.show() | ||||
| 
 | ||||
|         response = diaWarning.run() | ||||
|         diaWarning.destroy() | ||||
|         return response | ||||
| 
 | ||||
| 
 | ||||
|     def get_active_text(combobox): | ||||
|         model = combobox.get_model() | ||||
|         active = combobox.get_active() | ||||
|         if active < 0: | ||||
|             return None | ||||
|         return model[active][0] | ||||
| 
 | ||||
|     def create_combo_box(self, strings): | ||||
|         combobox = gtk.combo_box_new_text() | ||||
|         for label in strings: | ||||
|             combobox.append_text(label) | ||||
|         combobox.set_active(0) | ||||
|         return combobox | ||||
| 
 | ||||
|     def createDrawTab(self): | ||||
|         tab_title = "Draw" | ||||
|         label = gtk.Label(tab_title) | ||||
| 
 | ||||
|         ddbox = gtk.VBox(False, 0) | ||||
|         self.notebook.append_page(ddbox, label) | ||||
| 
 | ||||
|     def createStudTab(self): | ||||
|         tab_title = "Stud" | ||||
|         label = gtk.Label(tab_title) | ||||
| 
 | ||||
|         ddbox = gtk.VBox(False, 0) | ||||
|         self.notebook.append_page(ddbox, label) | ||||
| 
 | ||||
|     def createFlopTab(self): | ||||
|         # hierarchy: hbox / ddbox     / ddhbox / Label + flop_games_cb | label + players_cb | ||||
|         #                 / gamehbox / in_frame / table / | ||||
|         #                            / out_frame | ||||
| 
 | ||||
|         tab_title = "Flop" | ||||
|         label = gtk.Label(tab_title) | ||||
| 
 | ||||
|         ddbox = gtk.VBox(False, 0) | ||||
|         self.notebook.append_page(ddbox, label) | ||||
| 
 | ||||
|         ddhbox = gtk.HBox(False, 0) | ||||
|         gamehbox = gtk.HBox(False, 0) | ||||
| 
 | ||||
|         ddbox.add(ddhbox) | ||||
|         ddbox.add(gamehbox) | ||||
| 
 | ||||
|         # Combo boxes in the top row | ||||
| 
 | ||||
|         games =   [ "Holdem", "Omaha", "Omaha 8", ] | ||||
|         players = [ "2", "3", "4", "5", "6", "7", "8", "9", "10" ] | ||||
|         flop_games_cb = self.create_combo_box(games) | ||||
|         players_cb = self.create_combo_box(players) | ||||
| 
 | ||||
|         label = gtk.Label("Gametype:") | ||||
|         ddhbox.add(label) | ||||
|         ddhbox.add(flop_games_cb) | ||||
|         label = gtk.Label("Players:") | ||||
|         ddhbox.add(label) | ||||
|         ddhbox.add(players_cb) | ||||
| 
 | ||||
|         # Frames for Stove input and output | ||||
| 
 | ||||
|         in_frame = gtk.Frame("Input:") | ||||
|         out_frame = gtk.Frame("Output:") | ||||
| 
 | ||||
|         gamehbox.add(in_frame) | ||||
|         gamehbox.add(out_frame) | ||||
| 
 | ||||
|         outstring = """ | ||||
| No board given. Using Monte-Carlo simulation... | ||||
| Enumerated 2053443 possible plays. | ||||
| Your hand: (Ad Ac) | ||||
| Against the range: { | ||||
|                     AhAd, AhAs, AdAs, KhKd, KhKs,  | ||||
|                     KhKc, KdKs, KdKc, KsKc, QhQd,  | ||||
|                     QhQs, QhQc, QdQs, QdQc, QsQc,  | ||||
|                     JhJd, JhJs, JhJc, JdJs, JdJc,  | ||||
|                     JsJc | ||||
|                    } | ||||
| 
 | ||||
|   Win       Lose       Tie | ||||
|  69.91%    15.83%    14.26% | ||||
| 
 | ||||
| """ | ||||
|         self.outputlabel = gtk.Label(outstring) | ||||
|         out_frame.add(self.outputlabel) | ||||
| 
 | ||||
|         # Input Frame | ||||
|         table = gtk.Table(4, 4, True) | ||||
|         label = gtk.Label("Board:") | ||||
|         board = gtk.Entry() | ||||
|         board.connect("changed", self.set_board_flop, board) | ||||
| 
 | ||||
|         btn1 = gtk.Button() | ||||
|         btn1.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON)) | ||||
|         #btn.connect('clicked', self._some_function, arg) | ||||
|         table.attach(label, 0, 1, 0, 1, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) | ||||
|         table.attach(board, 1, 2, 0, 1, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) | ||||
|         table.attach(btn1, 2, 3, 0, 1, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) | ||||
| 
 | ||||
| 
 | ||||
|         label = gtk.Label("Player1:") | ||||
|         board = gtk.Entry() | ||||
|         board.connect("changed", self.set_hero_cards_flop, board) | ||||
|         btn2 = gtk.Button() | ||||
|         btn2.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON)) | ||||
|         #btn.connect('clicked', self._some_function, arg) | ||||
|         btn3 = gtk.Button() | ||||
|         btn3.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON)) | ||||
|         #btn.connect('clicked', self._some_function, arg) | ||||
|         table.attach(label, 0, 1, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) | ||||
|         table.attach(board, 1, 2, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) | ||||
|         table.attach(btn2, 2, 3, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) | ||||
|         table.attach(btn3, 3, 4, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) | ||||
| 
 | ||||
| 
 | ||||
|         label = gtk.Label("Player2:") | ||||
|         board = gtk.Entry() | ||||
|         board.connect("changed", self.set_villain_cards_flop, board) | ||||
|         btn4 = gtk.Button() | ||||
|         btn4.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON)) | ||||
|         #btn.connect('clicked', self._some_function, arg) | ||||
|         btn5 = gtk.Button() | ||||
|         btn5.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON)) | ||||
|         #btn.connect('clicked', self._some_function, arg) | ||||
|         table.attach(label, 0, 1, 2, 3, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) | ||||
|         table.attach(board, 1, 2, 2, 3, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) | ||||
|         table.attach(btn4, 2, 3, 2, 3, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) | ||||
|         table.attach(btn5, 3, 4, 2, 3, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) | ||||
|          | ||||
|         #table.attach(label, i, i+1, j, j+1,) | ||||
|         in_frame.add(table) | ||||
| 
 | ||||
|     def set_board_flop(self, caller, string): | ||||
|         print "DEBUG: called set_board_flop: '%s' '%s'" %(caller ,string) | ||||
| 
 | ||||
|     def set_hero_cards_flop(self, caller, string): | ||||
|         print "DEBUG: called set_hero_cards_flop" | ||||
| 
 | ||||
|     def set_villain_cards_flop(self, caller, string): | ||||
|         print "DEBUG: called set_villain_cards_flop" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     def get_vbox(self): | ||||
|         """returns the vbox of this thread""" | ||||
|         return self.mainHBox | ||||
|     #end def get_vbox | ||||
|  | @ -382,7 +382,7 @@ class GuiTourneyPlayerStats (GuiPlayerStats.GuiPlayerStats): | |||
|          | ||||
|         #query = query.replace("<gtbigBlind_test>", bbtest) | ||||
| 
 | ||||
|         #query = query.replace("<orderbyhgameTypeId>", "") | ||||
|         #query = query.replace("<orderbyhgametypeId>", "") | ||||
|          | ||||
|         # process self.detailFilters (a list of tuples) | ||||
|         flagtest = '' | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
| 
 | ||||
| <FreePokerToolsConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FreePokerToolsConfig.xsd"> | ||||
| 
 | ||||
|     <import callFpdbHud = "True" interval = "10"  fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="True"></import> | ||||
|     <import callFpdbHud = "True" interval = "10"  fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="True" cacheSessions="True" sessionTimeout="30"></import> | ||||
| 
 | ||||
| <!-- These values determine what stats are displayed in the HUD | ||||
| 
 | ||||
|  | @ -104,9 +104,9 @@ Left-Drag to Move" | |||
|         <site enabled="True" | ||||
|               site_name="PokerStars" | ||||
|               table_finder="PokerStars.exe" | ||||
|               screen_name="YOUR SCREEN NAME HERE" | ||||
|               screen_name="Hero" | ||||
|               site_path="C:/Program Files/PokerStars/" | ||||
|               HH_path="C:/Program Files/PokerStars/HandHistory/YOUR SCREEN NAME HERE/" | ||||
|               HH_path="C:/Program Files/PokerStars/HandHistory/Hero/" | ||||
|               decoder="pokerstars_decode_table" | ||||
|               converter="PokerStarsToFpdb" | ||||
|               bgcolor="#000000" | ||||
|  | @ -165,9 +165,9 @@ Left-Drag to Move" | |||
|         <site enabled="True" | ||||
|               site_name="Full Tilt Poker" | ||||
|               table_finder="FullTiltPoker" | ||||
|               screen_name="YOUR SCREEN NAME HERE" | ||||
|               screen_name="Hero" | ||||
|               site_path="C:/Program Files/Full Tilt Poker/" | ||||
|               HH_path="C:/Program Files/Full Tilt Poker/HandHistory/YOUR SCREEN NAME HERE/" | ||||
|               HH_path="C:/Program Files/Full Tilt Poker/HandHistory/Hero/" | ||||
|               decoder="fulltilt_decode_table" | ||||
|               converter="FulltiltToFpdb" | ||||
|               bgcolor="#000000" | ||||
|  | @ -214,7 +214,7 @@ Left-Drag to Move" | |||
|         <site enabled="False" | ||||
|               site_name="Everleaf" | ||||
|               table_finder="Everleaf.exe" | ||||
|               screen_name="YOUR SCREEN NAME HERE" | ||||
|               screen_name="Hero" | ||||
|               site_path="" | ||||
|               HH_path="" | ||||
|               decoder="everleaf_decode_table" | ||||
|  | @ -258,7 +258,7 @@ Left-Drag to Move" | |||
|         <site enabled="False" | ||||
|               site_name="Win2day" | ||||
|               table_finder="Win2day.exe" | ||||
|               screen_name="YOUR SCREEN NAME HERE" | ||||
|               screen_name="Hero" | ||||
|               site_path="" | ||||
|               HH_path="" | ||||
|               decoder="everleaf_decode_table" | ||||
|  | @ -303,7 +303,7 @@ Left-Drag to Move" | |||
|         <site enabled="False" | ||||
|               site_name="Absolute" | ||||
|               table_finder="AbsolutePoker.exe" | ||||
|               screen_name="YOUR SCREEN NAME HERE" | ||||
|               screen_name="Hero" | ||||
|               site_path="" | ||||
|               HH_path="" | ||||
|               decoder="everleaf_decode_table" | ||||
|  | @ -348,9 +348,9 @@ Left-Drag to Move" | |||
|         <site enabled="False" | ||||
|               site_name="PartyPoker" | ||||
|               table_finder="PartyGaming.exe" | ||||
|               screen_name="YOUR SCREEN NAME HERE" | ||||
|               screen_name="Hero" | ||||
|               site_path="C:/Program Files/PartyGaming/PartyPoker" | ||||
|               HH_path="C:/Program Files/PartyGaming/PartyPoker/HandHistory/YOUR SCREEN NAME HERE/" | ||||
|               HH_path="C:/Program Files/PartyGaming/PartyPoker/HandHistory/Hero/" | ||||
|               decoder="everleaf_decode_table" | ||||
|               converter="PartyPokerToFpdb" | ||||
|               supported_games="holdem"> | ||||
|  | @ -393,9 +393,9 @@ Left-Drag to Move" | |||
|         <site enabled="False" | ||||
|               site_name="Betfair" | ||||
|               table_finder="Betfair Poker.exe" | ||||
|               screen_name="YOUR SCREEN NAME HERE" | ||||
|               screen_name="Hero" | ||||
|               site_path="C:/Program Files/Betfair/Betfair Poker/" | ||||
|               HH_path="C:/Program Files/Betfair/Betfair Poker/HandHistory/YOUR SCREEN NAME HERE/" | ||||
|               HH_path="C:/Program Files/Betfair/Betfair Poker/HandHistory/Hero/" | ||||
|               decoder="everleaf_decode_table" | ||||
|               converter="BetfairToFpdb" | ||||
|               supported_games="holdem"> | ||||
|  |  | |||
|  | @ -12,7 +12,7 @@ | |||
|              config_difficulty="expert" | ||||
|              /> | ||||
| 
 | ||||
|     <import callFpdbHud = "True" interval = "10"  fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="True"></import> | ||||
|     <import callFpdbHud = "True" interval = "10"  fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="True" cacheSessions="False" sessionTimeout="30"></import> | ||||
| 
 | ||||
|     <gui_cash_stats> | ||||
|         <col col_name="game"       disp_all="True"  disp_posn="True"  col_title="Game"     xalignment="0.0" field_format="%s"    field_type="str" /> | ||||
|  |  | |||
|  | @ -23,42 +23,33 @@ | |||
| 
 | ||||
| Main for FreePokerTools HUD. | ||||
| """ | ||||
| #    TODO allow window resizing | ||||
| #    TODO hud to echo, but ignore non numbers | ||||
| #    TODO no stat window for hero | ||||
| #    TODO things to add to config.xml | ||||
| 
 | ||||
| #    Standard Library modules | ||||
| import sys | ||||
| import os | ||||
| import Options | ||||
| import traceback | ||||
| 
 | ||||
| (options, argv) = Options.fpdb_options() | ||||
| 
 | ||||
| import thread | ||||
| import time | ||||
| import string | ||||
| import re | ||||
| 
 | ||||
| #    pyGTK modules | ||||
| import pygtk | ||||
| import gtk | ||||
| import gobject | ||||
| 
 | ||||
| #    FreePokerTools modules | ||||
| import Configuration | ||||
| 
 | ||||
| 
 | ||||
| import Database | ||||
| from HandHistoryConverter import getTableTitleRe | ||||
| #    get the correct module for the current os | ||||
| if os.name == 'posix': | ||||
|     import XTables as Tables | ||||
| elif os.name == 'nt': | ||||
|     import WinTables as Tables | ||||
| #import Tables | ||||
| import Hud | ||||
| import Options | ||||
| 
 | ||||
| (options, argv) = Options.fpdb_options() | ||||
| 
 | ||||
| #    get the correct module for the current os | ||||
| if sys.platform == 'linux2': | ||||
|     import XTables as Tables | ||||
| elif sys.platform == 'darwin': | ||||
|     import OSXTables as Tables | ||||
| else: # This is bad--figure out the values for the various windows flavors | ||||
|     import WinTables as Tables | ||||
| 
 | ||||
| import locale | ||||
| lang = locale.getdefaultlocale()[0][0:2] | ||||
|  | @ -79,28 +70,23 @@ else: | |||
| c = Configuration.Config(file=options.config, dbname=options.dbname) | ||||
| log = Configuration.get_logger("logging.conf", "hud", log_dir=c.dir_log, log_file='HUD-log.txt') | ||||
| 
 | ||||
| 
 | ||||
| class HUD_main(object): | ||||
|     """A main() object to own both the read_stdin thread and the gui.""" | ||||
| #    This class mainly provides state for controlling the multiple HUDs. | ||||
| 
 | ||||
|     def __init__(self, db_name='fpdb'): | ||||
|         print _("\nHUD_main: starting ...") | ||||
|         self.db_name = db_name | ||||
|         self.config = c | ||||
|         print _("Logfile is ") + os.path.join(self.config.dir_log, 'HUD-log.txt') | ||||
|         log.info(_("HUD_main starting: using db name = %s") % (db_name)) | ||||
|         log.info("HUD_main starting: using db name = %s" % (db_name)) | ||||
| 
 | ||||
|         try: | ||||
|             if not options.errorsToConsole: | ||||
|                 fileName = os.path.join(self.config.dir_log, 'HUD-errors.txt') | ||||
|                 print _("Note: error output is being diverted to:\n") + fileName \ | ||||
|                       + _("\nAny major error will be reported there _only_.\n") | ||||
|                 log.info(_("Note: error output is being diverted to:") + fileName) | ||||
|                 log.info(_("Any major error will be reported there _only_.")) | ||||
|                 log.info("Note: error output is being diverted to:" + fileName) | ||||
|                 log.info("Any major error will be reported there _only_.") | ||||
|                 errorFile = open(fileName, 'w', 0) | ||||
|                 sys.stderr = errorFile | ||||
|                 sys.stderr.write(_("HUD_main: starting ...\n")) | ||||
|                 sys.stderr.write("HUD_main: starting ...\n") | ||||
| 
 | ||||
|             self.hud_dict = {} | ||||
|             self.hud_params = self.config.get_hud_ui_parameters() | ||||
|  | @ -111,6 +97,17 @@ class HUD_main(object): | |||
| 
 | ||||
|     #    a main window | ||||
|             self.main_window = gtk.Window() | ||||
|             if options.minimized: | ||||
|                 self.main_window.iconify() | ||||
|             if options.hidden: | ||||
|                 self.main_window.hide()         | ||||
|              | ||||
|             if options.xloc is not None or options.yloc is not None: | ||||
|                 if options.xloc is None: | ||||
|                     options.xloc = 0 | ||||
|                 if options.yloc is None: | ||||
|                     options.yloc = 0 | ||||
|                 self.main_window.move(options.xloc,options.yloc) | ||||
|             self.main_window.connect("client_moved", self.client_moved) | ||||
|             self.main_window.connect("client_resized", self.client_resized) | ||||
|             self.main_window.connect("client_destroyed", self.client_destroyed) | ||||
|  | @ -118,10 +115,10 @@ class HUD_main(object): | |||
|             self.main_window.connect("table_changed", self.table_changed) | ||||
|             self.main_window.connect("destroy", self.destroy) | ||||
|             self.vb = gtk.VBox() | ||||
|             self.label = gtk.Label(_('Closing this window will exit from the HUD.')) | ||||
|             self.label = gtk.Label('Closing this window will exit from the HUD.') | ||||
|             self.vb.add(self.label) | ||||
|             self.main_window.add(self.vb) | ||||
|             self.main_window.set_title(_("HUD Main Window")) | ||||
|             self.main_window.set_title("HUD Main Window") | ||||
|             cards = os.path.join(os.getcwd(), '..','gfx','fpdb-cards.png') | ||||
|             if os.path.exists(cards): | ||||
|                 self.main_window.set_icon_from_file(cards) | ||||
|  | @ -129,91 +126,60 @@ class HUD_main(object): | |||
|                 self.main_window.set_icon_from_file('/usr/share/pixmaps/fpdb-cards.png') | ||||
|             else: | ||||
|                 self.main_window.set_icon_stock(gtk.STOCK_HOME) | ||||
|             self.main_window.show_all() | ||||
|             gobject.timeout_add(100, self.check_tables) | ||||
|             if not options.hidden: | ||||
|                 self.main_window.show_all() | ||||
| #            gobject.timeout_add(100, self.check_tables) | ||||
| 
 | ||||
|         except: | ||||
|             log.error("*** Exception in HUD_main.init() *** ") | ||||
|             for e in traceback.format_tb(sys.exc_info()[2]): | ||||
|                 log.error(e) | ||||
|             log.exception("Error initializing main_window") | ||||
|             gtk.main_quit()   # we're hosed, just terminate | ||||
| 
 | ||||
|     def client_moved(self, widget, hud): | ||||
|         hud.up_update_table_position() | ||||
| 
 | ||||
|     def client_resized(self, widget, hud): | ||||
|         pass | ||||
|         gobject.idle_add(idle_resize, hud) | ||||
| 
 | ||||
|     def client_destroyed(self, widget, hud): # call back for terminating the main eventloop | ||||
|         self.kill_hud(None, hud.table.name) | ||||
|         self.kill_hud(None, hud.table.key) | ||||
| 
 | ||||
|     def game_changed(self, widget, hud): | ||||
|         print _("hud_main: Game changed.") | ||||
|         print "hud_main: Game changed." | ||||
| 
 | ||||
|     def table_changed(self, widget, hud): | ||||
|         print _("hud_main: Table changed.") | ||||
|         self.kill_hud(None, hud.table.name) | ||||
|         self.kill_hud(None, hud.table.key) | ||||
| 
 | ||||
|     def destroy(self, *args):             # call back for terminating the main eventloop | ||||
|         log.info(_("Terminating normally.")) | ||||
|         log.info("Terminating normally.") | ||||
|         gtk.main_quit() | ||||
| 
 | ||||
|     def kill_hud(self, event, table): | ||||
| #    called by an event in the HUD, to kill this specific HUD | ||||
|         if table in self.hud_dict: | ||||
|             self.hud_dict[table].kill() | ||||
|             self.hud_dict[table].main_window.destroy() | ||||
|             self.vb.remove(self.hud_dict[table].tablehudlabel) | ||||
|             del(self.hud_dict[table]) | ||||
|         self.main_window.resize(1, 1) | ||||
| 
 | ||||
|         gobject.idle_add(idle_kill, self, table) | ||||
|      | ||||
|     def check_tables(self): | ||||
|         for hud in self.hud_dict.keys(): | ||||
|             self.hud_dict[hud].table.check_table(self.hud_dict[hud]) | ||||
|         return True | ||||
| 
 | ||||
|     def create_HUD(self, new_hand_id, table, table_name, max, poker_game, type, stat_dict, cards): | ||||
|     def create_HUD(self, new_hand_id, table, temp_key, max, poker_game, type, stat_dict, cards): | ||||
|         """type is "ring" or "tour" used to set hud_params""" | ||||
| 
 | ||||
|         def idle_func(): | ||||
| 
 | ||||
|             gtk.gdk.threads_enter() | ||||
|             try: | ||||
|                 table.gdkhandle = gtk.gdk.window_foreign_new(table.number) | ||||
|                 newlabel = gtk.Label("%s - %s" % (table.site, table_name)) | ||||
|                 self.vb.add(newlabel) | ||||
|                 newlabel.show() | ||||
|                 self.main_window.resize_children() | ||||
| 
 | ||||
|                 self.hud_dict[table_name].tablehudlabel = newlabel | ||||
|                 self.hud_dict[table_name].create(new_hand_id, self.config, stat_dict, cards) | ||||
|                 for m in self.hud_dict[table_name].aux_windows: | ||||
|                     m.create() | ||||
|                     m.update_gui(new_hand_id) | ||||
|                 self.hud_dict[table_name].update(new_hand_id, self.config) | ||||
|                 self.hud_dict[table_name].reposition_windows() | ||||
|             except: | ||||
|                 log.error("*** Exception in HUD_main::idle_func() *** " + str(sys.exc_info())) | ||||
|                 for e in traceback.format_tb(sys.exc_info()[2]): | ||||
|                     log.error(e) | ||||
|             finally: | ||||
|                 gtk.gdk.threads_leave() | ||||
|                 return False | ||||
| 
 | ||||
|         self.hud_dict[table_name] = Hud.Hud(self, table, max, poker_game, self.config, self.db_connection) | ||||
|         self.hud_dict[table_name].table_name = table_name | ||||
|         self.hud_dict[table_name].stat_dict = stat_dict | ||||
|         self.hud_dict[table_name].cards = cards | ||||
| 
 | ||||
|         self.hud_dict[temp_key] = Hud.Hud(self, table, max, poker_game, self.config, self.db_connection) | ||||
|         self.hud_dict[temp_key].table_name = temp_key | ||||
|         self.hud_dict[temp_key].stat_dict = stat_dict | ||||
|         self.hud_dict[temp_key].cards = cards | ||||
|         table.hud = self.hud_dict[temp_key] | ||||
|          | ||||
|         # set agg_bb_mult so that aggregate_tour and aggregate_ring can be ignored, | ||||
|         # agg_bb_mult == 1 means no aggregation after these if statements: | ||||
|         if type == "tour" and self.hud_params['aggregate_tour'] == False: | ||||
|             self.hud_dict[table_name].hud_params['agg_bb_mult'] = 1 | ||||
|             self.hud_dict[temp_key].hud_params['agg_bb_mult'] = 1 | ||||
|         elif type == "ring" and self.hud_params['aggregate_ring'] == False: | ||||
|             self.hud_dict[table_name].hud_params['agg_bb_mult'] = 1 | ||||
|             self.hud_dict[temp_key].hud_params['agg_bb_mult'] = 1 | ||||
|         if type == "tour" and self.hud_params['h_aggregate_tour'] == False: | ||||
|             self.hud_dict[table_name].hud_params['h_agg_bb_mult'] = 1 | ||||
|             self.hud_dict[temp_key].hud_params['h_agg_bb_mult'] = 1 | ||||
|         elif type == "ring" and self.hud_params['h_aggregate_ring'] == False: | ||||
|             self.hud_dict[table_name].hud_params['h_agg_bb_mult'] = 1 | ||||
|             self.hud_dict[temp_key].hud_params['h_agg_bb_mult'] = 1 | ||||
|         # sqlcoder: I forget why these are set to true (aren't they ignored from now on?) | ||||
|         # but I think it's needed: | ||||
|         self.hud_params['aggregate_ring'] = True | ||||
|  | @ -222,28 +188,12 @@ class HUD_main(object): | |||
|         self.hud_params['aggregate_tour'] = True | ||||
|         self.hud_params['h_aggregate_tour'] = True | ||||
| 
 | ||||
|         [aw.update_data(new_hand_id, self.db_connection) for aw in self.hud_dict[table_name].aux_windows] | ||||
|         gobject.idle_add(idle_func) | ||||
|         [aw.update_data(new_hand_id, self.db_connection) for aw in self.hud_dict[temp_key].aux_windows] | ||||
|         gobject.idle_add(idle_create, self, new_hand_id, table, temp_key, max, poker_game, type, stat_dict, cards) | ||||
| 
 | ||||
|     def update_HUD(self, new_hand_id, table_name, config): | ||||
|         """Update a HUD gui from inside the non-gui read_stdin thread.""" | ||||
| #    This is written so that only 1 thread can touch the gui--mainly | ||||
| #    for compatibility with Windows. This method dispatches the | ||||
| #    function idle_func() to be run by the gui thread, at its leisure. | ||||
|         def idle_func(): | ||||
|             gtk.gdk.threads_enter() | ||||
|             try: | ||||
|                 self.hud_dict[table_name].update(new_hand_id, config) | ||||
|             # The HUD could get destroyed in the above call ^^, which leaves us with a KeyError here vv | ||||
|             # if we ever get an error we need to expect ^^ then we need to handle it vv - Eric | ||||
|                 [aw.update_gui(new_hand_id) for aw in self.hud_dict[table_name].aux_windows] | ||||
|             except KeyError: | ||||
|                 pass | ||||
|             finally: | ||||
|                 gtk.gdk.threads_leave() | ||||
|                 return False | ||||
| 
 | ||||
|         gobject.idle_add(idle_func) | ||||
|         gobject.idle_add(idle_update, self, new_hand_id, table_name, config) | ||||
| 
 | ||||
|     def read_stdin(self):            # This is the thread function | ||||
|         """Do all the non-gui heavy lifting for the HUD program.""" | ||||
|  | @ -260,14 +210,17 @@ class HUD_main(object): | |||
| 
 | ||||
|         while 1:    # wait for a new hand number on stdin | ||||
|             new_hand_id = sys.stdin.readline() | ||||
|             t0 = time.time() | ||||
|             t1 = t2 = t3 = t4 = t5 = t6 = t0 | ||||
|             new_hand_id = string.rstrip(new_hand_id) | ||||
|             log.debug(_("Received hand no %s") % new_hand_id) | ||||
|             log.debug("Received hand no %s" % new_hand_id) | ||||
|             if new_hand_id == "":           # blank line means quit | ||||
|                 self.destroy() | ||||
|                 break # this thread is not always killed immediately with gtk.main_quit() | ||||
| 
 | ||||
| #    This block cannot be hoisted outside the while loop, because it would | ||||
| #    cause a problem when auto importing into an empty db. | ||||
| 
 | ||||
| #    FIXME: This doesn't work in the case of the player playing on 2 | ||||
| #    sites at once (???)  Eratosthenes | ||||
|             if not found: | ||||
|                 for site in self.config.get_supported_sites(): | ||||
|                     result = self.db_connection.get_site_id(site) | ||||
|  | @ -282,17 +235,16 @@ class HUD_main(object): | |||
| 
 | ||||
| #        get basic info about the new hand from the db | ||||
| #        if there is a db error, complain, skip hand, and proceed | ||||
|             log.info(_("HUD_main.read_stdin: hand processing starting ...")) | ||||
|             log.info("HUD_main.read_stdin: hand processing starting ...") | ||||
|             try: | ||||
|                 (table_name, max, poker_game, type, site_id, site_name, num_seats, tour_number, tab_number) = \ | ||||
|                                 self.db_connection.get_table_info(new_hand_id) | ||||
|             except Exception: | ||||
|                 log.error(_("db error: skipping %s" % new_hand_id)) | ||||
|                 log.exception("db error: skipping %s" % new_hand_id) | ||||
|                 continue | ||||
|             t1 = time.time() | ||||
| 
 | ||||
|             if type == "tour":   # hand is from a tournament | ||||
|                 temp_key = tour_number | ||||
|                 temp_key = "%s Table %s" % (tour_number, tab_number) | ||||
|             else: | ||||
|                 temp_key = table_name | ||||
| 
 | ||||
|  | @ -301,26 +253,19 @@ class HUD_main(object): | |||
|                 # get stats using hud's specific params and get cards | ||||
|                 self.db_connection.init_hud_stat_vars( self.hud_dict[temp_key].hud_params['hud_days'] | ||||
|                                                      , self.hud_dict[temp_key].hud_params['h_hud_days']) | ||||
|                 t2 = time.time() | ||||
|                 stat_dict = self.db_connection.get_stats_from_hand(new_hand_id, type, self.hud_dict[temp_key].hud_params, | ||||
|                                                                    self.hero_ids[site_id], num_seats) | ||||
|                 t3 = time.time() | ||||
| 
 | ||||
|                 try: | ||||
|                     self.hud_dict[temp_key].stat_dict = stat_dict | ||||
|                 except KeyError:    # HUD instance has been killed off, key is stale | ||||
|                     log.error(_('hud_dict[%s] was not found\n') % temp_key) | ||||
|                     log.error(_('will not send hand\n')) | ||||
|                     log.error('hud_dict[%s] was not found\n' % temp_key) | ||||
|                     log.error('will not send hand\n') | ||||
|                     # Unlocks table, copied from end of function | ||||
|                     self.db_connection.connection.rollback() | ||||
|                     return | ||||
|                 cards = self.db_connection.get_cards(new_hand_id) | ||||
|                 t4 = time.time() | ||||
|                 comm_cards = self.db_connection.get_common_cards(new_hand_id) | ||||
|                 t5 = time.time() | ||||
|                 if comm_cards != {}: # stud! | ||||
|                     cards['common'] = comm_cards['common'] | ||||
|                 self.hud_dict[temp_key].cards = cards | ||||
| 
 | ||||
|                 self.hud_dict[temp_key].cards = self.get_cards(new_hand_id) | ||||
|                 [aw.update_data(new_hand_id, self.db_connection) for aw in self.hud_dict[temp_key].aux_windows] | ||||
|                 self.update_HUD(new_hand_id, temp_key, self.config) | ||||
| 
 | ||||
|  | @ -330,19 +275,16 @@ class HUD_main(object): | |||
|                 self.db_connection.init_hud_stat_vars( self.hud_params['hud_days'], self.hud_params['h_hud_days'] ) | ||||
|                 stat_dict = self.db_connection.get_stats_from_hand(new_hand_id, type, self.hud_params, | ||||
|                                                                    self.hero_ids[site_id], num_seats) | ||||
|                 cards      = self.db_connection.get_cards(new_hand_id) | ||||
|                 comm_cards = self.db_connection.get_common_cards(new_hand_id) | ||||
|                 if comm_cards != {}: # stud! | ||||
|                     cards['common'] = comm_cards['common'] | ||||
| 
 | ||||
|                 cards = self.get_cards(new_hand_id) | ||||
|                 table_kwargs = dict(table_name=table_name, tournament=tour_number, table_number=tab_number) | ||||
|                 tablewindow = Tables.Table(self.config, site_name, **table_kwargs) | ||||
|                 if tablewindow is None: | ||||
| #        If no client window is found on the screen, complain and continue | ||||
|                     if type == "tour": | ||||
|                         table_name = "%s %s" % (tour_number, tab_number) | ||||
|                     log.error(_("HUD create: table name %s not found, skipping.") % table_name) | ||||
|                     log.error("HUD create: table name %s not found, skipping." % table_name) | ||||
|                 else: | ||||
|                     tablewindow.key = temp_key | ||||
|                     tablewindow.max = max | ||||
|                     tablewindow.site = site_name | ||||
|                     # Test that the table window still exists | ||||
|  | @ -350,14 +292,90 @@ class HUD_main(object): | |||
|                         self.create_HUD(new_hand_id, tablewindow, temp_key, max, poker_game, type, stat_dict, cards) | ||||
|                     else: | ||||
|                         log.error(_('Table "%s" no longer exists\n') % table_name) | ||||
|                         return | ||||
| 
 | ||||
|             t6 = time.time() | ||||
|             log.info(_("HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%4.3f,%4.3f)") | ||||
|                      % (t6 - t0,t1 - t0,t2 - t0,t3 - t0,t4 - t0,t5 - t0,t6 - t0)) | ||||
|             self.db_connection.connection.rollback() | ||||
| #            if type == "tour": | ||||
| #                tablewindow.check_table_no(None) | ||||
| #            # Ray!! tablewindow::check_table_no expects a HUD as an argument! | ||||
|             if type == "tour": | ||||
|                 try: | ||||
|                     self.hud_dict[temp_key].table.check_table_no(self.hud_dict[temp_key]) | ||||
|                 except KeyError: | ||||
|                     pass | ||||
| 
 | ||||
|     def get_cards(self, new_hand_id): | ||||
|         cards = self.db_connection.get_cards(new_hand_id) | ||||
|         comm_cards = self.db_connection.get_common_cards(new_hand_id) | ||||
|         if comm_cards != {}: # stud! | ||||
|             cards['common'] = comm_cards['common'] | ||||
|         return cards | ||||
| ###################################################################### | ||||
| #   idle FUNCTIONS | ||||
| # | ||||
| #    These are passed to the event loop by the non-gui thread to do | ||||
| #    gui things in a thread-safe way. They are passed to the event | ||||
| #    loop using the gobject.idle_add() function. | ||||
| # | ||||
| #    A general rule for gtk is that only 1 thread should be messing | ||||
| #    with the gui. | ||||
| 
 | ||||
| def idle_resize(hud): | ||||
|     gtk.gdk.threads_enter() | ||||
|     try: | ||||
|         [aw.update_card_positions() for aw in hud.aux_windows] | ||||
|         hud.resize_windows() | ||||
|     except: | ||||
|         log.exception(_("Error resizing HUD for table: %s.") % hud.table.title) | ||||
|     finally: | ||||
|         gtk.gdk.threads_leave() | ||||
| 
 | ||||
| def idle_kill(hud_main, table): | ||||
|     gtk.gdk.threads_enter() | ||||
|     try: | ||||
|         if table in hud_main.hud_dict: | ||||
|             hud_main.vb.remove(hud_main.hud_dict[table].tablehudlabel) | ||||
|             hud_main.hud_dict[table].main_window.destroy() | ||||
|             hud_main.hud_dict[table].kill() | ||||
|             del(hud_main.hud_dict[table]) | ||||
|         hud_main.main_window.resize(1, 1) | ||||
|     except: | ||||
|         log.exception(_("Error killing HUD for table: %s.") % table.title) | ||||
|     finally: | ||||
|         gtk.gdk.threads_leave() | ||||
| 
 | ||||
| def idle_create(hud_main, new_hand_id, table, temp_key, max, poker_game, type, stat_dict, cards): | ||||
| 
 | ||||
|     gtk.gdk.threads_enter() | ||||
|     try: | ||||
|         if table.gdkhandle is not None:  # on windows this should already be set | ||||
|             table.gdkhandle = gtk.gdk.window_foreign_new(table.number) | ||||
|         newlabel = gtk.Label("%s - %s" % (table.site, temp_key)) | ||||
|         hud_main.vb.add(newlabel) | ||||
|         newlabel.show() | ||||
|         hud_main.main_window.resize_children() | ||||
| 
 | ||||
|         hud_main.hud_dict[temp_key].tablehudlabel = newlabel | ||||
|         hud_main.hud_dict[temp_key].create(new_hand_id, hud_main.config, stat_dict, cards) | ||||
|         for m in hud_main.hud_dict[temp_key].aux_windows: | ||||
|             m.create() | ||||
|             m.update_gui(new_hand_id) | ||||
|         hud_main.hud_dict[temp_key].update(new_hand_id, hud_main.config) | ||||
|         hud_main.hud_dict[temp_key].reposition_windows() | ||||
|     except: | ||||
|         log.exception(_("Error creating HUD for hand %s.") % new_hand_id) | ||||
|     finally: | ||||
|         gtk.gdk.threads_leave() | ||||
|     return False | ||||
| 
 | ||||
| def idle_update(hud_main, new_hand_id, table_name, config): | ||||
|     gtk.gdk.threads_enter() | ||||
|     try: | ||||
|         hud_main.hud_dict[table_name].update(new_hand_id, config) | ||||
|         [aw.update_gui(new_hand_id) for aw in hud_main.hud_dict[table_name].aux_windows] | ||||
|     except: | ||||
|         log.exception(_("Error updating HUD for hand %s.") % new_hand_id) | ||||
|     finally: | ||||
|         gtk.gdk.threads_leave() | ||||
|         return False | ||||
| 
 | ||||
| if __name__== "__main__": | ||||
| 
 | ||||
| #    start the HUD_main object | ||||
|  |  | |||
							
								
								
									
										230
									
								
								pyfpdb/Hand.py
									
									
									
									
									
								
							
							
						
						
									
										230
									
								
								pyfpdb/Hand.py
									
									
									
									
									
								
							|  | @ -261,11 +261,11 @@ db: a connected Database object""" | |||
| 
 | ||||
|         if not db.isDuplicate(self.dbid_gt, hh['siteHandNo']): | ||||
|             # Hands - Summary information of hand indexed by handId - gameinfo | ||||
|             hh['gameTypeId'] = self.dbid_gt | ||||
|             hh['gametypeId'] = self.dbid_gt | ||||
|             # seats TINYINT NOT NULL, | ||||
|             hh['seats'] = len(self.dbid_pids) | ||||
| 
 | ||||
|             self.dbid_hands = db.storeHand(hh) | ||||
|             self.dbid_hands = db.storeHand(hh, printdata = printtest) | ||||
|             self.dbid_hpid = db.storeHandsPlayers(self.dbid_hands, self.dbid_pids,  | ||||
|                                                   self.stats.getHandsPlayers(), printdata = printtest) | ||||
|             if self.saveActions: | ||||
|  | @ -278,76 +278,14 @@ db: a connected Database object""" | |||
| 
 | ||||
|     def updateHudCache(self, db): | ||||
|         db.storeHudCache(self.dbid_gt, self.dbid_pids, self.startTime, self.stats.getHandsPlayers()) | ||||
|          | ||||
|     def updateSessionsCache(self, db): | ||||
|         db.storeSessionsCache(self.dbid_pids, self.startTime, self.gametype, self.stats.getHandsPlayers()) | ||||
| 
 | ||||
|     def select(self, handId): | ||||
|     def select(self, db, handId): | ||||
|         """ Function to create Hand object from database """ | ||||
|         c = cnxn.cursor() | ||||
| 
 | ||||
|         # We need at least sitename, gametype, handid | ||||
|         # for the Hand.__init__ | ||||
|         c.execute("""SELECT | ||||
|                         s.name, | ||||
|                         g.category, | ||||
|                         g.base, | ||||
|                         g.type, | ||||
|                         g.limitType, | ||||
|                         g.hilo, | ||||
|                         round(g.smallBlind / 100.0,2), | ||||
|                         round(g.bigBlind / 100.0,2), | ||||
|                         round(g.smallBet / 100.0,2), | ||||
|                         round(g.bigBet / 100.0,2), | ||||
|                         s.currency, | ||||
|                         h.boardcard1, | ||||
|                         h.boardcard2, | ||||
|                         h.boardcard3, | ||||
|                         h.boardcard4, | ||||
|                         h.boardcard5 | ||||
|                     FROM | ||||
|                         hands as h, | ||||
|                         sites as s, | ||||
|                         gametypes as g, | ||||
|                         handsplayers as hp, | ||||
|                         players as p | ||||
|                     WHERE | ||||
|                         h.id = %(handid)s | ||||
|                     and g.id = h.gametypeid | ||||
|                     and hp.handid = h.id | ||||
|                     and p.id = hp.playerid | ||||
|                     and s.id = p.siteid | ||||
|                     limit 1""", {'handid':handid}) | ||||
|         #TODO: siteid should be in hands table - we took the scenic route through players here. | ||||
|         res = c.fetchone() | ||||
|         gametype = {'category':res[1],'base':res[2],'type':res[3],'limitType':res[4],'hilo':res[5],'sb':res[6],'bb':res[7], 'currency':res[10]} | ||||
|         c = Configuration.Config() | ||||
|         h = HoldemOmahaHand(config = c, hhc = None, sitename=res[0], gametype = gametype, handText=None, builtFrom = "DB", handid=handid) | ||||
|         cards = map(Card.valueSuitFromCard, res[11:16] ) | ||||
|         if cards[0]: | ||||
|             h.setCommunityCards('FLOP', cards[0:3]) | ||||
|         if cards[3]: | ||||
|             h.setCommunityCards('TURN', [cards[3]]) | ||||
|         if cards[4]: | ||||
|             h.setCommunityCards('RIVER', [cards[4]]) | ||||
|         #[Card.valueSuitFromCard(x) for x in cards] | ||||
| 
 | ||||
|         # HandInfo : HID, TABLE | ||||
|         # BUTTON - why is this treated specially in Hand? | ||||
|         # answer: it is written out in hand histories | ||||
|         # still, I think we should record all the active seat positions in a seat_order array | ||||
|         c.execute("""SELECT | ||||
|                         h.sitehandno as hid, | ||||
|                         h.tablename as table, | ||||
|                         h.startTime as startTime | ||||
|                     FROM | ||||
|                         hands as h | ||||
|                     WHERE h.id = %(handid)s | ||||
|                     """, {'handid':handid}) | ||||
|         res = c.fetchone() | ||||
|         h.handid = res[0] | ||||
|         h.tablename = res[1] | ||||
|         h.startTime = res[2] # automatically a datetime | ||||
| 
 | ||||
|         # PlayerStacks | ||||
|         c.execute("""SELECT | ||||
|         c = db.get_cursor() | ||||
|         q = """SELECT | ||||
|                         hp.seatno, | ||||
|                         round(hp.winnings / 100.0,2) as winnings, | ||||
|                         p.name, | ||||
|  | @ -355,69 +293,101 @@ db: a connected Database object""" | |||
|                         hp.card1,hp.card2, | ||||
|                         hp.position | ||||
|                     FROM | ||||
|                         handsplayers as hp, | ||||
|                         players as p | ||||
|                         HandsPlayers as hp, | ||||
|                         Players as p | ||||
|                     WHERE | ||||
|                         hp.handid = %(handid)s | ||||
|                         hp.handId = %s | ||||
|                         and p.id = hp.playerid | ||||
|                 """, {'handid':handid}) | ||||
|                 """ | ||||
|         q = q.replace('%s', db.sql.query['placeholder']) | ||||
| 
 | ||||
|         # PlayerStacks | ||||
|         c.execute(q, (handId,)) | ||||
|         for (seat, winnings, name, chips, card1,card2, position) in c.fetchall(): | ||||
|             h.addPlayer(seat,name,chips) | ||||
|             if card1 and card2: | ||||
|                 h.addHoleCards(map(Card.valueSuitFromCard, (card1,card2)), name, dealt=True) | ||||
|             if winnings > 0: | ||||
|                 h.addCollectPot(name, winnings) | ||||
|             if position == 'B': | ||||
|                 h.buttonpos = seat | ||||
|             print "DEBUG: seat: '%s'\tname: '%s'\tchips: '%s'" % (seat, name, chips) | ||||
|             self.addPlayer(seat,name,str(chips)) | ||||
|             #if card1 and card2: | ||||
|             #    self.addHoleCards(map(Card.valueSuitFromCard, (card1,card2)), name, dealt=True) | ||||
|             #if winnings > 0: | ||||
|             #    self.addCollectPot(name, winnings) | ||||
|             #if position == 'B': | ||||
|             #    self.buttonpos = seat | ||||
| 
 | ||||
| 
 | ||||
|         # HandInfo : HID, TABLE | ||||
|         # BUTTON - why is this treated specially in Hand? | ||||
|         # answer: it is written out in hand histories | ||||
|         # still, I think we should record all the active seat positions in a seat_order array | ||||
|         #c.execute("""SELECT | ||||
|         #                h.sitehandno as hid, | ||||
|         #                h.tablename as table, | ||||
|         #                h.startTime as startTime | ||||
|         #            FROM | ||||
|         #                Hands as h | ||||
|         #            WHERE h.id = %(handid)s | ||||
|         #            """, {'handid':handid}) | ||||
|         #res = c.fetchone() | ||||
|         #h.handid = res[0] | ||||
|         #h.tablename = res[1] | ||||
|         #h.startTime = res[2] # automatically a datetime | ||||
| 
 | ||||
| 
 | ||||
|         #cards = map(Card.valueSuitFromCard, res[11:16] ) | ||||
|         #if cards[0]: | ||||
|         #    h.setCommunityCards('FLOP', cards[0:3]) | ||||
|         #if cards[3]: | ||||
|         #    h.setCommunityCards('TURN', [cards[3]]) | ||||
|         #if cards[4]: | ||||
|         #    h.setCommunityCards('RIVER', [cards[4]]) | ||||
|         #[Card.valueSuitFromCard(x) for x in cards] | ||||
| 
 | ||||
| 
 | ||||
|         # actions | ||||
|         c.execute("""SELECT | ||||
|                         (ha.street,ha.actionno) as actnum, | ||||
|                         p.name, | ||||
|                         ha.street, | ||||
|                         ha.action, | ||||
|                         ha.allin, | ||||
|                         round(ha.amount / 100.0,2) | ||||
|                     FROM | ||||
|                         handsplayers as hp, | ||||
|                         handsactions as ha, | ||||
|                         players as p | ||||
|                     WHERE | ||||
|                         hp.handid = %(handid)s | ||||
|                         and ha.handsplayerid = hp.id | ||||
|                         and p.id = hp.playerid | ||||
|                     ORDER BY | ||||
|                         ha.street,ha.actionno | ||||
|                     """, {'handid':handid}) | ||||
|         res = c.fetchall() | ||||
|         for (actnum,player, streetnum, act, allin, amount) in res: | ||||
|             act=act.strip() | ||||
|             street = h.allStreets[streetnum+1] | ||||
|             if act==u'blind': | ||||
|                 h.addBlind(player, 'big blind', amount) | ||||
|                 # TODO: The type of blind is not recorded in the DB. | ||||
|                 # TODO: preflop street name anomalies in Hand | ||||
|             elif act==u'fold': | ||||
|                 h.addFold(street,player) | ||||
|             elif act==u'call': | ||||
|                 h.addCall(street,player,amount) | ||||
|             elif act==u'bet': | ||||
|                 h.addBet(street,player,amount) | ||||
|             elif act==u'check': | ||||
|                 h.addCheck(street,player) | ||||
|             elif act==u'unbet': | ||||
|                 pass | ||||
|             else: | ||||
|                 print act, player, streetnum, allin, amount | ||||
|             # TODO : other actions | ||||
|         #c.execute("""SELECT | ||||
|         #                (ha.street,ha.actionno) as actnum, | ||||
|         #                p.name, | ||||
|         #                ha.street, | ||||
|         #                ha.action, | ||||
|         #                ha.allin, | ||||
|         #                round(ha.amount / 100.0,2) | ||||
|         #            FROM | ||||
|         #                handsplayers as hp, | ||||
|         #                handsactions as ha, | ||||
|         #                players as p | ||||
|         #            WHERE | ||||
|         #                hp.handid = %(handid)s | ||||
|         #                and ha.handsplayerid = hp.id | ||||
|         #                and p.id = hp.playerid | ||||
|         #            ORDER BY | ||||
|         #                ha.street,ha.actionno | ||||
|         #            """, {'handid':handid}) | ||||
|         #res = c.fetchall() | ||||
|         #for (actnum,player, streetnum, act, allin, amount) in res: | ||||
|         #    act=act.strip() | ||||
|         #    street = h.allStreets[streetnum+1] | ||||
|         #    if act==u'blind': | ||||
|         #        h.addBlind(player, 'big blind', amount) | ||||
|         #        # TODO: The type of blind is not recorded in the DB. | ||||
|         #        # TODO: preflop street name anomalies in Hand | ||||
|         #    elif act==u'fold': | ||||
|         #        h.addFold(street,player) | ||||
|         #    elif act==u'call': | ||||
|         #        h.addCall(street,player,amount) | ||||
|         #    elif act==u'bet': | ||||
|         #        h.addBet(street,player,amount) | ||||
|         #    elif act==u'check': | ||||
|         #        h.addCheck(street,player) | ||||
|         #    elif act==u'unbet': | ||||
|         #        pass | ||||
|         #    else: | ||||
|         #        print act, player, streetnum, allin, amount | ||||
|         #    # TODO : other actions | ||||
| 
 | ||||
|         #hhc.readShowdownActions(self) | ||||
|         #hc.readShownCards(self) | ||||
|         h.totalPot() | ||||
|         h.rake = h.totalpot - h.totalcollected | ||||
|         #h.totalPot() | ||||
|         #h.rake = h.totalpot - h.totalcollected | ||||
| 
 | ||||
|         return h | ||||
| 
 | ||||
|     def addPlayer(self, seat, name, chips): | ||||
|         """\ | ||||
|  | @ -850,10 +820,11 @@ class HoldemOmahaHand(Hand): | |||
|             hhc.readOther(self) | ||||
|             #print "\nHand:\n"+str(self) | ||||
|         elif builtFrom == "DB": | ||||
|             if handid is not None: | ||||
|                 self.select(handid) # Will need a handId | ||||
|             else: | ||||
|                 log.warning(_("HoldemOmahaHand.__init__:Can't assemble hand from db without a handid")) | ||||
|             #if handid is not None: | ||||
|             #    self.select(handid) # Will need a handId | ||||
|             #else: | ||||
|             #    log.warning(_("HoldemOmahaHand.__init__:Can't assemble hand from db without a handid")) | ||||
|             print "DEBUG: HoldemOmaha hand initialised for select()" | ||||
|         else: | ||||
|             log.warning(_("HoldemOmahaHand.__init__:Neither HHC nor DB+handid provided")) | ||||
|             pass | ||||
|  | @ -1577,6 +1548,11 @@ Add a complete on [street] by [player] to [amountTo] | |||
|             else: | ||||
|                 log.warning(_("join_holecards: # of holecards should be either < 4, 4 or 7 - 5 and 6 should be impossible for anyone who is not a hero")) | ||||
|                 log.warning(_("join_holcards: holecards(%s): %s") %(player, holecards)) | ||||
|             if holecards == [u'0x', u'0x']: | ||||
|                 log.warning(_("join_holecards: Player '%s' appears not to have been dealt a card")) | ||||
|                 # If a player is listed but not dealt a card in a cash game this can occur | ||||
|                 # Noticed in FTP Razz hand. Return 3 empty cards in this case | ||||
|                 holecards = [u'0x', u'0x', u'0x'] | ||||
|             return holecards | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -664,7 +664,7 @@ or None if we fail to get the info """ | |||
|     def getTableTitleRe(type, table_name=None, tournament = None, table_number=None): | ||||
|         "Returns string to search in windows titles" | ||||
|         if type=="tour": | ||||
|             return "%s.+Table.+%s" % (tournament, table_number) | ||||
|             return "%s.+Table %s" % (tournament, table_number) | ||||
|         else: | ||||
|             return table_name | ||||
| 
 | ||||
|  |  | |||
|  | @ -32,6 +32,8 @@ import sys | |||
| import pygtk | ||||
| import gtk | ||||
| import gobject | ||||
| import L10n | ||||
| _ = L10n.get_translation() | ||||
| 
 | ||||
| #    FreePokerTools modules | ||||
| from Mucked import Aux_Window | ||||
|  |  | |||
|  | @ -536,6 +536,16 @@ class Hud: | |||
|             aux.destroy() | ||||
|         self.aux_windows = [] | ||||
| 
 | ||||
|     def resize_windows(self, *args): | ||||
|         for w in self.stat_windows.itervalues(): | ||||
|             if type(w) == int: | ||||
|                 continue | ||||
|             rel_x = (w.x - self.table.x) * self.table.width  / self.table.oldwidth | ||||
|             rel_y = (w.y - self.table.y) * self.table.height / self.table.oldheight | ||||
|             w.x = self.table.x + rel_x | ||||
|             w.y = self.table.y + rel_y | ||||
|             w.window.move(w.x, w.y)  | ||||
| 
 | ||||
|     def reposition_windows(self, *args): | ||||
|         self.update_table_position() | ||||
|         for w in self.stat_windows.itervalues(): | ||||
|  |  | |||
							
								
								
									
										244
									
								
								pyfpdb/IdentifySite.py
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										244
									
								
								pyfpdb/IdentifySite.py
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							|  | @ -1,122 +1,122 @@ | |||
| #!/usr/bin/python | ||||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| #Copyright 2010 Chaz Littlejohn | ||||
| #This program is free software: you can redistribute it and/or modify | ||||
| #it under the terms of the GNU Affero General Public License as published by | ||||
| #the Free Software Foundation, version 3 of the License. | ||||
| # | ||||
| #This program is distributed in the hope that it will be useful, | ||||
| #but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
| #GNU General Public License for more details. | ||||
| # | ||||
| #You should have received a copy of the GNU Affero General Public License | ||||
| #along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
| #In the "official" distribution you can find the license in agpl-3.0.txt. | ||||
| 
 | ||||
| import L10n | ||||
| _ = L10n.get_translation() | ||||
| 
 | ||||
| import re | ||||
| import sys | ||||
| import os | ||||
| import os.path | ||||
| from optparse import OptionParser | ||||
| import codecs | ||||
| import Configuration | ||||
| import Database | ||||
| 
 | ||||
| __ARCHIVE_PRE_HEADER_REGEX='^Hand #(\d+)\s*$|\*{20}\s#\s\d+\s\*+\s+' | ||||
| re_SplitArchive = re.compile(__ARCHIVE_PRE_HEADER_REGEX) | ||||
| 
 | ||||
| 
 | ||||
| class IdentifySite: | ||||
|     def __init__(self, config, in_path = '-'): | ||||
|         self.in_path = in_path | ||||
|         self.config = config | ||||
|         self.db = Database.Database(config) | ||||
|         self.sitelist = {} | ||||
|         self.filelist = {} | ||||
|         self.generateSiteList() | ||||
|         self.walkDirectory(self.in_path, self.sitelist) | ||||
|          | ||||
|     def generateSiteList(self): | ||||
|         """Generates a ordered dictionary of site, filter and filter name for each site in hhcs""" | ||||
|         for site, hhc in self.config.hhcs.iteritems(): | ||||
|             filter = hhc.converter | ||||
|             filter_name = filter.replace("ToFpdb", "") | ||||
|             result = self.db.get_site_id(site) | ||||
|             if len(result) == 1: | ||||
|                 self.sitelist[result[0][0]] = (site, filter, filter_name) | ||||
|             else: | ||||
|                 pass | ||||
| 
 | ||||
|     def walkDirectory(self, dir, sitelist): | ||||
|         """Walks a directory, and executes a callback on each file""" | ||||
|         dir = os.path.abspath(dir) | ||||
|         for file in [file for file in os.listdir(dir) if not file in [".",".."]]: | ||||
|             nfile = os.path.join(dir,file) | ||||
|             if os.path.isdir(nfile): | ||||
|                 self.walkDirectory(nfile, sitelist) | ||||
|             else: | ||||
|                 self.idSite(nfile, sitelist) | ||||
|                  | ||||
|     def __listof(self, x): | ||||
|         if isinstance(x, list) or isinstance(x, tuple): | ||||
|             return x | ||||
|         else: | ||||
|             return [x] | ||||
|      | ||||
|     def idSite(self, file, sitelist): | ||||
|         """Identifies the site the hh file originated from""" | ||||
|         if file.endswith('.txt'): | ||||
|             self.filelist[file] = '' | ||||
|             archive = False | ||||
|             for site, info in sitelist.iteritems(): | ||||
|                 mod = __import__(info[1]) | ||||
|                 obj = getattr(mod, info[2], None) | ||||
|                  | ||||
|                 for kodec in self.__listof(obj.codepage): | ||||
|                     try: | ||||
|                         in_fh = codecs.open(file, 'r', kodec) | ||||
|                         whole_file = in_fh.read() | ||||
|                         in_fh.close() | ||||
|                  | ||||
|                         if info[2] in ('OnGame', 'Winamax'): | ||||
|                             m = obj.re_HandInfo.search(whole_file) | ||||
|                         elif info[2] in ('PartyPoker'): | ||||
|                             m = obj.re_GameInfoRing.search(whole_file) | ||||
|                             if not m: | ||||
|                                 m = obj.re_GameInfoTrny.search(whole_file) | ||||
|                         else: | ||||
|                             m = obj.re_GameInfo.search(whole_file) | ||||
|                             if re_SplitArchive.search(whole_file): | ||||
|                                 archive = True | ||||
|                         if m: | ||||
|                             self.filelist[file] = [info[0]] + [info[1]] + [kodec] + [archive] | ||||
|                             break | ||||
|                     except: | ||||
|                         pass | ||||
|              | ||||
| def main(argv=None): | ||||
|     if argv is None: | ||||
|         argv = sys.argv[1:] | ||||
|          | ||||
| 	config = Configuration.Config(file = "HUD_config.test.xml") | ||||
|     in_path = 'regression-test-files/' | ||||
|     IdSite = IdentifySite(config, in_path) | ||||
| 
 | ||||
|     print "\n----------- SITE LIST -----------" | ||||
|     for site, info in IdSite.sitelist.iteritems(): | ||||
|         print site, info | ||||
|     print "----------- END SITE LIST -----------" | ||||
|      | ||||
|     print "\n----------- ID REGRESSION FILES -----------" | ||||
|     for file, site in IdSite.filelist.iteritems(): | ||||
|         print file, site | ||||
|     print "----------- END ID REGRESSION FILES -----------" | ||||
| 	 | ||||
|      | ||||
| if __name__ == '__main__': | ||||
|     sys.exit(main()) | ||||
| #!/usr/bin/python | ||||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| #Copyright 2010 Chaz Littlejohn | ||||
| #This program is free software: you can redistribute it and/or modify | ||||
| #it under the terms of the GNU Affero General Public License as published by | ||||
| #the Free Software Foundation, version 3 of the License. | ||||
| # | ||||
| #This program is distributed in the hope that it will be useful, | ||||
| #but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
| #GNU General Public License for more details. | ||||
| # | ||||
| #You should have received a copy of the GNU Affero General Public License | ||||
| #along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
| #In the "official" distribution you can find the license in agpl-3.0.txt. | ||||
| 
 | ||||
| import L10n | ||||
| _ = L10n.get_translation() | ||||
| 
 | ||||
| import re | ||||
| import sys | ||||
| import os | ||||
| import os.path | ||||
| from optparse import OptionParser | ||||
| import codecs | ||||
| import Configuration | ||||
| import Database | ||||
| 
 | ||||
| __ARCHIVE_PRE_HEADER_REGEX='^Hand #(\d+)\s*$|\*{20}\s#\s\d+\s\*+\s+' | ||||
| re_SplitArchive = re.compile(__ARCHIVE_PRE_HEADER_REGEX) | ||||
| 
 | ||||
| 
 | ||||
| class IdentifySite: | ||||
|     def __init__(self, config, in_path = '-'): | ||||
|         self.in_path = in_path | ||||
|         self.config = config | ||||
|         self.db = Database.Database(config) | ||||
|         self.sitelist = {} | ||||
|         self.filelist = {} | ||||
|         self.generateSiteList() | ||||
|         self.walkDirectory(self.in_path, self.sitelist) | ||||
|          | ||||
|     def generateSiteList(self): | ||||
|         """Generates a ordered dictionary of site, filter and filter name for each site in hhcs""" | ||||
|         for site, hhc in self.config.hhcs.iteritems(): | ||||
|             filter = hhc.converter | ||||
|             filter_name = filter.replace("ToFpdb", "") | ||||
|             result = self.db.get_site_id(site) | ||||
|             if len(result) == 1: | ||||
|                 self.sitelist[result[0][0]] = (site, filter, filter_name) | ||||
|             else: | ||||
|                 pass | ||||
| 
 | ||||
|     def walkDirectory(self, dir, sitelist): | ||||
|         """Walks a directory, and executes a callback on each file""" | ||||
|         dir = os.path.abspath(dir) | ||||
|         for file in [file for file in os.listdir(dir) if not file in [".",".."]]: | ||||
|             nfile = os.path.join(dir,file) | ||||
|             if os.path.isdir(nfile): | ||||
|                 self.walkDirectory(nfile, sitelist) | ||||
|             else: | ||||
|                 self.idSite(nfile, sitelist) | ||||
|                  | ||||
|     def __listof(self, x): | ||||
|         if isinstance(x, list) or isinstance(x, tuple): | ||||
|             return x | ||||
|         else: | ||||
|             return [x] | ||||
|      | ||||
|     def idSite(self, file, sitelist): | ||||
|         """Identifies the site the hh file originated from""" | ||||
|         if file.endswith('.txt'): | ||||
|             self.filelist[file] = '' | ||||
|             archive = False | ||||
|             for site, info in sitelist.iteritems(): | ||||
|                 mod = __import__(info[1]) | ||||
|                 obj = getattr(mod, info[2], None) | ||||
|                  | ||||
|                 for kodec in self.__listof(obj.codepage): | ||||
|                     try: | ||||
|                         in_fh = codecs.open(file, 'r', kodec) | ||||
|                         whole_file = in_fh.read() | ||||
|                         in_fh.close() | ||||
|                  | ||||
|                         if info[2] in ('OnGame', 'Winamax'): | ||||
|                             m = obj.re_HandInfo.search(whole_file) | ||||
|                         elif info[2] in ('PartyPoker'): | ||||
|                             m = obj.re_GameInfoRing.search(whole_file) | ||||
|                             if not m: | ||||
|                                 m = obj.re_GameInfoTrny.search(whole_file) | ||||
|                         else: | ||||
|                             m = obj.re_GameInfo.search(whole_file) | ||||
|                             if re_SplitArchive.search(whole_file): | ||||
|                                 archive = True | ||||
|                         if m: | ||||
|                             self.filelist[file] = [info[0]] + [info[1]] + [kodec] + [archive] | ||||
|                             break | ||||
|                     except: | ||||
|                         pass | ||||
|              | ||||
| def main(argv=None): | ||||
|     if argv is None: | ||||
|         argv = sys.argv[1:] | ||||
|          | ||||
| 	config = Configuration.Config(file = "HUD_config.test.xml") | ||||
|     in_path = 'regression-test-files/' | ||||
|     IdSite = IdentifySite(config, in_path) | ||||
| 
 | ||||
|     print "\n----------- SITE LIST -----------" | ||||
|     for site, info in IdSite.sitelist.iteritems(): | ||||
|         print site, info | ||||
|     print "----------- END SITE LIST -----------" | ||||
|      | ||||
|     print "\n----------- ID REGRESSION FILES -----------" | ||||
|     for file, site in IdSite.filelist.iteritems(): | ||||
|         print file, site | ||||
|     print "----------- END ID REGRESSION FILES -----------" | ||||
| 	 | ||||
|      | ||||
| if __name__ == '__main__': | ||||
|     sys.exit(main()) | ||||
|  |  | |||
							
								
								
									
										19
									
								
								pyfpdb/Mucked.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										19
									
								
								pyfpdb/Mucked.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							|  | @ -25,17 +25,17 @@ Mucked cards display for FreePokerTools HUD. | |||
| #    to do | ||||
| 
 | ||||
| #    Standard Library modules | ||||
| import sys | ||||
| import pprint | ||||
| #import sys | ||||
| #import pprint | ||||
| 
 | ||||
| #    pyGTK modules | ||||
| import pygtk | ||||
| #import pygtk | ||||
| import gtk | ||||
| import gobject | ||||
| 
 | ||||
| #    FreePokerTools modules | ||||
| import Configuration | ||||
| import Database | ||||
| #import Configuration | ||||
| #import Database | ||||
| import Card | ||||
| 
 | ||||
| class Aux_Window(object): | ||||
|  | @ -415,9 +415,12 @@ class Aux_Seats(Aux_Window): | |||
| #   Methods likely to be of use for any Seat_Window implementation | ||||
|     def destroy(self): | ||||
|         """Destroy all of the seat windows.""" | ||||
|         for i in self.m_windows.keys(): | ||||
|             self.m_windows[i].destroy() | ||||
|             del(self.m_windows[i]) | ||||
|         try: | ||||
|             for i in self.m_windows.keys(): | ||||
|                 self.m_windows[i].destroy() | ||||
|                 del(self.m_windows[i]) | ||||
|         except AttributeError: | ||||
|             pass | ||||
| 
 | ||||
| #   Methods likely to be useful for mucked card windows (or similar) only | ||||
|     def hide(self): | ||||
|  |  | |||
							
								
								
									
										90
									
								
								pyfpdb/OSXTables.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								pyfpdb/OSXTables.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,90 @@ | |||
| #!/usr/bin/env python | ||||
| # -*- coding: utf-8 -*- | ||||
| """XWindows specific methods for TableWindows Class. | ||||
| """ | ||||
| #    Copyright 2008 - 2010, Ray E. Barker | ||||
| 
 | ||||
| #    This program is free software; you can redistribute it and/or modify | ||||
| #    it under the terms of the GNU General Public License as published by | ||||
| #    the Free Software Foundation; either version 2 of the License, or | ||||
| #    (at your option) any later version. | ||||
| #     | ||||
| #    This program is distributed in the hope that it will be useful, | ||||
| #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
| #    GNU General Public License for more details. | ||||
| #     | ||||
| #    You should have received a copy of the GNU General Public License | ||||
| #    along with this program; if not, write to the Free Software | ||||
| #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
| 
 | ||||
| ######################################################################## | ||||
| 
 | ||||
| import L10n | ||||
| _ = L10n.get_translation() | ||||
| 
 | ||||
| #    Standard Library modules | ||||
| import re | ||||
| import os | ||||
| 
 | ||||
| #    pyGTK modules | ||||
| import gtk | ||||
| 
 | ||||
| #    Other Library modules | ||||
| from Quartz.CoreGraphics import * | ||||
| 
 | ||||
| #    FPDB modules | ||||
| from TableWindow import Table_Window | ||||
| 
 | ||||
| class Table(Table_Window): | ||||
| 
 | ||||
|     def find_table_parameters(self): | ||||
| 
 | ||||
| #    This is called by __init__(). Find the poker table window of interest, | ||||
| #    given the self.search_string. Then populate self.number, self.title,  | ||||
| #    self.window, and self.parent (if required). | ||||
| 
 | ||||
|         self.number = None | ||||
|         WinList = CGWindowListCreate(0,0) | ||||
|         WinListDict = CGWindowListCreateDescriptionFromArray(WinList) | ||||
| 
 | ||||
|         for d in WinListDict: | ||||
|             if re.search(self.search_string, d.get(kCGWindowName, ""), re.I): | ||||
|                 title = d[kCGWindowName] | ||||
|                 if self.check_bad_words(title): continue | ||||
|                 self.number = d[kCGWindowNumber] | ||||
|                 self.title = title | ||||
|         if self.number is None: | ||||
|             return None | ||||
|    | ||||
|     def get_geometry(self): | ||||
| 
 | ||||
|         WinList = CGWindowListCreate(0,0) | ||||
|         WinListDict = CGWindowListCreateDescriptionFromArray(WinList) | ||||
| 
 | ||||
|         for d in WinListDict: | ||||
|             if d[CGWindowNumber] == self.number: | ||||
|                 return {'x'      : d[kCGWindowBounds][X], | ||||
|                         'y'      : d[kCGWindowBounds][Y], | ||||
|                         'width'  : d[kCGWindowBounds][Width], | ||||
|                         'height' : d[kCGWindowBounds][Height] | ||||
|                        } | ||||
|         return None | ||||
| 
 | ||||
|     def get_window_title(self): | ||||
|         WinList = CGWindowListCreate(0,0) | ||||
|         WinListDict = CGWindowListCreateDescriptionFromArray(WinList) | ||||
| 
 | ||||
|         for d in WinListDict: | ||||
|             if d[kCGWindowNumber] == self.number: | ||||
|                 return d[kCGWindowName] | ||||
|         return None | ||||
| 
 | ||||
|     def topify(self, window): | ||||
| #    The idea here is to call set_transient_for on the HUD window, with the table window | ||||
| #    as the argument. This should keep the HUD window on top of the table window, as if  | ||||
| #    the hud window was a dialog belonging to the table. | ||||
| 
 | ||||
| #    This is the gdkhandle for the HUD window | ||||
|         gdkwindow = gtk.gdk.window_foreign_new(window.number) | ||||
|         gdkwindow.set_transient_for(self.gdkhandle) | ||||
|  | @ -42,11 +42,12 @@ class OnGame(HandHistoryConverter): | |||
|     siteId   = 5 # Needs to match id entry in Sites database | ||||
| 
 | ||||
|     mixes = { } # Legal mixed games | ||||
|     sym = {'USD': "\$", 'CAD': "\$", 'T$': "", "EUR": "\xe2\x82\xac", "GBP": "\xa3"}         # ADD Euro, Sterling, etc HERE | ||||
|     sym = {'USD': "\$", 'CAD': "\$", 'T$': "", "EUR": u"\u20ac", "GBP": "\xa3"}         # ADD Euro, Sterling, etc HERE | ||||
|     substitutions = { | ||||
|                      'LEGAL_ISO' : "USD|EUR|GBP|CAD|FPP",    # legal ISO currency codes | ||||
|                             'LS' : "\$|\xe2\x82\xac|"        # legal currency symbols - Euro(cp1252, utf-8) | ||||
|                             'LS' : u"\$|\xe2\x82\xac|\u20ac"        # legal currency symbols - Euro(cp1252, utf-8) | ||||
|                     } | ||||
|     currencies = { u'\u20ac':'EUR', u'\xe2\x82\xac':'EUR', '$':'USD', '':'T$' } | ||||
| 
 | ||||
|     limits = { 'NO_LIMIT':'nl', 'LIMIT':'fl'} | ||||
| 
 | ||||
|  | @ -89,10 +90,10 @@ class OnGame(HandHistoryConverter): | |||
|             ( | ||||
|             (?P<LIMIT>NO_LIMIT|Limit|LIMIT|Pot\sLimit)\s | ||||
|             (?P<GAME>TEXAS_HOLDEM|OMAHA_HI|SEVEN_CARD_STUD|SEVEN_CARD_STUD_HI_LO|RAZZ|FIVE_CARD_DRAW)\s | ||||
|             (%(LS)s)?(?P<SB>[.0-9]+)/ | ||||
|             (?P<CURRENCY>%(LS)s|)?(?P<SB>[.0-9]+)/ | ||||
|             (%(LS)s)?(?P<BB>[.0-9]+) | ||||
|             )? | ||||
|             """ % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE) | ||||
|             """ % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE) #TODO: detect play money (identified by "Play money" rather than "Real money" and set currency accordingly | ||||
| 
 | ||||
|     re_TailSplitHands = re.compile(u'(\*\*\*\*\*\sEnd\sof\shand\s[-A-Z\d]+.*\n)(?=\*)') | ||||
|     re_Button       = re.compile('Button: seat (?P<BUTTON>\d+)', re.MULTILINE)  # Button: seat 2 | ||||
|  | @ -174,7 +175,8 @@ class OnGame(HandHistoryConverter): | |||
|         mg = m.groupdict() | ||||
| 
 | ||||
|         info['type'] = 'ring' | ||||
|         info['currency'] = 'USD' | ||||
|         if 'CURRENCY' in mg: | ||||
|             info['currency'] = self.currencies[mg['CURRENCY']] | ||||
| 
 | ||||
|         if 'LIMIT' in mg: | ||||
|             if mg['LIMIT'] in self.limits: | ||||
|  | @ -326,7 +328,7 @@ class OnGame(HandHistoryConverter): | |||
|     def readAction(self, hand, street): | ||||
|         m = self.re_Action.finditer(hand.streets[street]) | ||||
|         for action in m: | ||||
|             acts = action.groupdict() | ||||
|             #acts = action.groupdict() | ||||
|             #log.debug("readaction: acts: %s" %acts) | ||||
|             if action.group('ATYPE') == ' raises': | ||||
|                 hand.addRaiseBy( street, action.group('PNAME'), action.group('BET') ) | ||||
|  |  | |||
|  | @ -41,6 +41,9 @@ def fpdb_options(): | |||
|     parser.add_option("-k", "--konverter", | ||||
|                       dest="hhc", default="PokerStarsToFpdb", | ||||
|                       help=_("Module name for Hand History Converter")) | ||||
|     parser.add_option("-s", "--sitename", | ||||
|                       dest="sitename", default=None, | ||||
|                       help=_("A sitename")) | ||||
|     parser.add_option("-l", "--logging", | ||||
|                       dest = "log_level",  | ||||
|                       choices = ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL', 'EMPTY'), | ||||
|  | @ -59,11 +62,51 @@ def fpdb_options(): | |||
|                     help=_("File to be split is a PokerStars or Full Tilt Poker archive file")) | ||||
|     parser.add_option("-n", "--numhands", dest="hands", default="100", type="int", | ||||
|                     help=_("How many hands do you want saved to each file. Default is 100")) | ||||
|     parser.add_option("--xloc", dest="xloc", default=None, type="int", | ||||
|                       help=_("X location to open window")) | ||||
|     parser.add_option("--yloc", dest="yloc", default=None, type="int", | ||||
|                       help=_("Y location to open Window")) | ||||
|     parser.add_option("--autoimport", action="store_true", dest="autoimport", | ||||
|                       help=_("Auto-start Auto-import")) | ||||
|     parser.add_option("--minimized", action="store_true", dest="minimized", | ||||
|                       help=_("Start Minimized")) | ||||
|     parser.add_option("--hidden", action="store_true", dest="hidden", | ||||
|                       help=_("Start Hidden")) | ||||
| 
 | ||||
| 
 | ||||
|     (options, argv) = parser.parse_args() | ||||
|     return (options, argv) | ||||
| 
 | ||||
| def site_alias(alias): | ||||
|     """Function for converting various site aliases to the FPDB name""" | ||||
|     tmp = alias | ||||
|     aliases = { | ||||
|                 "PokerStars"     : "PokerStars", | ||||
|                 "Full Tilt Poker": "Full Tilt Poker", | ||||
|                 "PartyPoker"     : "PartyPoker", | ||||
|                 "Betfair"        : "Betfair", | ||||
|                 "OnGame"         : "OnGame", | ||||
|                 "Absolute"       : "Absolute", | ||||
|                 "UltimateBet"    : "UltimateBet", | ||||
|                 "Everleaf"       : "Everleaf", | ||||
|                 "Carbon"         : "Carbon", | ||||
|                 "iPoker"         : "iPoker", | ||||
|                 "Winamax"        : "Winamax", | ||||
|                 "Win2day"        : "Win2day", | ||||
|                 "Stars"          : "PokerStars", | ||||
|                 "FTP"            : "Full Tilt Poker", | ||||
|                 "Party"          : "PartyPoker", | ||||
|                 "AP"             : "Absolute", | ||||
|                 "UB"             : "UltimateBet", | ||||
|               } | ||||
|     try: | ||||
|         tmp = aliases[alias] | ||||
|     except KeyError, e: | ||||
|         tmp = False | ||||
|         print _("Alias '%s' unknown" % alias) | ||||
| 
 | ||||
|     return tmp | ||||
| 
 | ||||
| if __name__== "__main__": | ||||
|     (options, argv) = fpdb_options() | ||||
|     print "errorsToConsole =", options.errorsToConsole | ||||
|  |  | |||
|  | @ -45,22 +45,27 @@ class PartyPoker(HandHistoryConverter): | |||
|     codepage = "utf8" | ||||
|     siteId = 9 | ||||
|     filetype = "text" | ||||
|     sym = {'USD': "\$", } | ||||
|     sym        = {'USD': "\$", 'EUR': u"\u20ac", 'T$': ""} | ||||
|     currencies = {"\$": "USD", "$": "USD", u"\xe2\x82\xac": "EUR", u"\u20ac": "EUR", '': "T$"} | ||||
|     substitutions = { | ||||
|                      'LEGAL_ISO' : "USD|EUR",            # legal ISO currency codes | ||||
|                             'LS' : "\$|\u20AC|\xe2\x82\xac|"    # legal currency symbols - Euro(cp1252, utf-8) | ||||
|                     } | ||||
| 
 | ||||
|     # Static regexes | ||||
|     # $5 USD NL Texas Hold'em - Saturday, July 25, 07:53:52 EDT 2009 | ||||
|     # NL Texas Hold'em $1 USD Buy-in Trny:45685440 Level:8  Blinds-Antes(600/1 200 -50) - Sunday, May 17, 11:25:07 MSKS 2009 | ||||
|     re_GameInfoRing     = re.compile(""" | ||||
|             (?P<CURRENCY>\$|)\s*(?P<RINGLIMIT>[.,0-9]+)([.,0-9/$]+)?\s*(?:USD)?\s* | ||||
|     re_GameInfoRing     = re.compile(u""" | ||||
|             (?P<CURRENCY>[%(LS)s])\s*(?P<RINGLIMIT>[.,0-9]+)([.,0-9/$]+)?\s*(?:%(LEGAL_ISO)s)?\s* | ||||
|             (?P<LIMIT>(NL|PL|))\s* | ||||
|             (?P<GAME>(Texas\ Hold\'em|Omaha|7 Card Stud Hi-Lo)) | ||||
|             (?P<GAME>(Texas\ Hold\'em|Omaha|7\ Card\ Stud\ Hi-Lo)) | ||||
|             \s*\-\s* | ||||
|             (?P<DATETIME>.+) | ||||
|             """, re.VERBOSE | re.UNICODE) | ||||
|             """ % substitutions, re.VERBOSE | re.UNICODE) | ||||
|     re_GameInfoTrny     = re.compile(""" | ||||
|             (?P<LIMIT>(NL|PL|))\s* | ||||
|             (?P<GAME>(Texas\ Hold\'em|Omaha))\s+ | ||||
|             (?:(?P<BUYIN>\$?[.,0-9]+)\s*(?P<BUYIN_CURRENCY>USD)?\s*Buy-in\s+)? | ||||
|             (?:(?P<BUYIN>\$?[.,0-9]+)\s*(?P<BUYIN_CURRENCY>%(LEGAL_ISO)s)?\s*Buy-in\s+)? | ||||
|             Trny:\s?(?P<TOURNO>\d+)\s+ | ||||
|             Level:\s*(?P<LEVEL>\d+)\s+ | ||||
|             ((Blinds|Stakes)(?:-Antes)?)\( | ||||
|  | @ -70,15 +75,14 @@ class PartyPoker(HandHistoryConverter): | |||
|             \) | ||||
|             \s*\-\s* | ||||
|             (?P<DATETIME>.+) | ||||
|             """, re.VERBOSE | re.UNICODE) | ||||
|     re_Hid          = re.compile("^Game \#(?P<HID>\d+) starts.") | ||||
|             """ % substitutions, re.VERBOSE | re.UNICODE) | ||||
|     re_Hid          = re.compile("Game \#(?P<HID>\d+) starts.") | ||||
| 
 | ||||
|     re_PlayerInfo   = re.compile(""" | ||||
|     re_PlayerInfo   = re.compile(u""" | ||||
|           Seat\s(?P<SEAT>\d+):\s | ||||
|           (?P<PNAME>.*)\s | ||||
|           \(\s*\$?(?P<CASH>[0-9,.]+)\s*(?:USD|)\s*\) | ||||
|           """ , | ||||
|           re.VERBOSE) | ||||
|           \(\s*[%(LS)s]?(?P<CASH>[0-9,.]+)\s*(?:%(LEGAL_ISO)s|)\s*\) | ||||
|           """ % substitutions, re.VERBOSE| re.UNICODE) | ||||
| 
 | ||||
|     re_HandInfo     = re.compile(""" | ||||
|             ^Table\s+(?P<TTYPE>[$a-zA-Z0-9 ]+)?\s+ | ||||
|  | @ -123,18 +127,16 @@ class PartyPoker(HandHistoryConverter): | |||
| 
 | ||||
|             self.compiledPlayers = players | ||||
|             player_re = "(?P<PNAME>" + "|".join(map(re.escape, players)) + ")" | ||||
|             subst = {'PLYR': player_re, 'CUR_SYM': hand.SYMBOL[hand.gametype['currency']], | ||||
|             subst = {'PLYR': player_re, 'CUR_SYM': self.sym[hand.gametype['currency']], | ||||
|                 'CUR': hand.gametype['currency'] if hand.gametype['currency']!='T$' else ''} | ||||
|             for key in ('CUR_SYM', 'CUR'): | ||||
|                 subst[key] = re.escape(subst[key]) | ||||
|             self.re_PostSB = re.compile( | ||||
|                 r"^%(PLYR)s posts small blind \[%(CUR_SYM)s(?P<SB>[.,0-9]+) ?%(CUR)s\]\." %  subst, | ||||
|                 re.MULTILINE) | ||||
|                 r"^%(PLYR)s posts small blind \[%(CUR_SYM)s(?P<SB>[.,0-9]+) ?%(CUR)s\]\." | ||||
|                 %  subst, re.MULTILINE) | ||||
|             self.re_PostBB = re.compile( | ||||
|                 r"^%(PLYR)s posts big blind \[%(CUR_SYM)s(?P<BB>[.,0-9]+) ?%(CUR)s\]\." %  subst, | ||||
|                 re.MULTILINE) | ||||
|                 u"%(PLYR)s posts big blind \[%(CUR_SYM)s(?P<BB>[.,0-9]+) ?%(CUR)s\]\." | ||||
|                 %  subst, re.MULTILINE) | ||||
|             self.re_PostDead = re.compile( | ||||
|                 r"^%(PLYR)s posts big blind \+ dead \[(?P<BBNDEAD>[.,0-9]+) ?%(CUR_SYM)s\]\." %  subst, | ||||
|                 r"^%(PLYR)s posts big blind + dead \[(?P<BBNDEAD>[.,0-9]+) ?%(CUR_SYM)s\]\." %  subst, | ||||
|                 re.MULTILINE) | ||||
|             self.re_Antes = re.compile( | ||||
|                 r"^%(PLYR)s posts ante \[%(CUR_SYM)s(?P<ANTE>[.,0-9]+) ?%(CUR)s\]" %  subst, | ||||
|  | @ -142,11 +144,10 @@ class PartyPoker(HandHistoryConverter): | |||
|             self.re_HeroCards = re.compile( | ||||
|                 r"^Dealt to %(PLYR)s \[\s*(?P<NEWCARDS>.+)\s*\]" % subst, | ||||
|                 re.MULTILINE) | ||||
|             self.re_Action = re.compile(r""" | ||||
|             self.re_Action = re.compile(u""" | ||||
|                 ^%(PLYR)s\s+(?P<ATYPE>bets|checks|raises|calls|folds|is\sall-In) | ||||
|                 (?:\s+\[%(CUR_SYM)s(?P<BET>[.,\d]+)\s*%(CUR)s\])? | ||||
|                 """ %  subst, | ||||
|                 re.MULTILINE|re.VERBOSE) | ||||
|                 """ %  subst, re.MULTILINE|re.VERBOSE) | ||||
|             self.re_ShownCards = re.compile( | ||||
|                 r"^%s (?P<SHOWED>(?:doesn\'t )?shows?) "  %  player_re + | ||||
|                 r"\[ *(?P<CARDS>.+) *\](?P<COMBINATION>.+)\.", | ||||
|  | @ -181,10 +182,6 @@ class PartyPoker(HandHistoryConverter): | |||
|                         return self._gameType | ||||
|         return self._gameType | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def decode_hand_text(handText): | ||||
|         return handText.encode("latin1").decode(LOCALE_ENCODING) | ||||
| 
 | ||||
|     def determineGameType(self, handText): | ||||
|         """inspect the handText and return the gametype dict | ||||
| 
 | ||||
|  | @ -192,7 +189,6 @@ class PartyPoker(HandHistoryConverter): | |||
|         {'limitType': xxx, 'base': xxx, 'category': xxx}""" | ||||
| 
 | ||||
|         info = {} | ||||
|         handText = self.decode_hand_text(handText) | ||||
|         m = self._getGameType(handText) | ||||
|         m_20BBmin = self.re_20BBmin.search(handText) | ||||
|         if m is None: | ||||
|  | @ -210,7 +206,6 @@ class PartyPoker(HandHistoryConverter): | |||
|                                 'Omaha' : ('hold','omahahi'), | ||||
|                      "7 Card Stud Hi-Lo" : ('stud','studhi'), | ||||
|                } | ||||
|         currencies = { '$':'USD', '':'T$' } | ||||
| 
 | ||||
|         for expectedField in ['LIMIT', 'GAME']: | ||||
|             if mg[expectedField] is None: | ||||
|  | @ -243,7 +238,7 @@ class PartyPoker(HandHistoryConverter): | |||
| 
 | ||||
|             info['bb'] = "%.2f" % (bb) | ||||
|             info['sb'] = "%.2f" % (sb) | ||||
|             info['currency'] = currencies[mg['CURRENCY']] | ||||
|             info['currency'] = self.currencies[mg['CURRENCY']] | ||||
|         else: | ||||
|             info['sb'] = clearMoneyString(mg['SB']) | ||||
|             info['bb'] = clearMoneyString(mg['BB']) | ||||
|  | @ -253,15 +248,11 @@ class PartyPoker(HandHistoryConverter): | |||
| 
 | ||||
| 
 | ||||
|     def readHandInfo(self, hand): | ||||
|         # we should redecode handtext here (as it imposible to it above) | ||||
|         # if you know more accurate way to do it - tell me | ||||
|         hand.handText = self.decode_hand_text(hand.handText) | ||||
| 
 | ||||
|         info = {} | ||||
|         try: | ||||
|             info.update(self.re_Hid.search(hand.handText).groupdict()) | ||||
|         except: | ||||
|             raise FpdbParseError(_("Cannot read HID for current hand")) | ||||
|         except AttributeError, e: | ||||
|             raise FpdbParseError(_("Cannot read HID for current hand: %s" % e)) | ||||
| 
 | ||||
|         try: | ||||
|             info.update(self.re_HandInfo.search(hand.handText,re.DOTALL).groupdict()) | ||||
|  | @ -374,7 +365,6 @@ class PartyPoker(HandHistoryConverter): | |||
|             else: | ||||
|                 #zero stacked players are added later | ||||
|                 zeroStackPlayers.append([int(a.group('SEAT')), a.group('PNAME'), clearMoneyString(a.group('CASH'))]) | ||||
| 
 | ||||
|         if hand.gametype['type'] == 'ring': | ||||
|             #finds first vacant seat after an exact seat | ||||
|             def findFirstEmptySeat(startSeat): | ||||
|  |  | |||
|  | @ -57,9 +57,11 @@ class PokerStars(HandHistoryConverter): | |||
|                        '20.00': ('5.00', '10.00'),     '20': ('5.00', '10.00'), | ||||
|                        '30.00': ('10.00', '15.00'),    '30': ('10.00', '15.00'), | ||||
|                        '60.00': ('15.00', '30.00'),    '60': ('15.00', '30.00'), | ||||
|                        '80.00': ('20.00', '40.00'),    '80': ('20.00', '40.00'), | ||||
|                       '100.00': ('25.00', '50.00'),   '100': ('25.00', '50.00'), | ||||
|                       '200.00': ('50.00', '100.00'),  '200': ('50.00', '100.00'), | ||||
|                       '400.00': ('100.00', '200.00'), '400': ('100.00', '200.00'), | ||||
|                       '800.00': ('200.00', '400.00'), '800': ('200.00', '400.00'), | ||||
|                      '1000.00': ('250.00', '500.00'),'1000': ('250.00', '500.00') | ||||
|                   } | ||||
| 
 | ||||
|  | @ -153,7 +155,7 @@ class PokerStars(HandHistoryConverter): | |||
|                         (\scards?(\s\[(?P<DISCARDED>.+?)\])?)?\s*$""" | ||||
|                          %  subst, re.MULTILINE|re.VERBOSE) | ||||
|             self.re_ShowdownAction   = re.compile(r"^%s: shows \[(?P<CARDS>.*)\]" %  player_re, re.MULTILINE) | ||||
|             self.re_CollectPot       = re.compile(r"Seat (?P<SEAT>[0-9]+): %(PLYR)s (\(button\) |\(small blind\) |\(big blind\) |\(button\) \(small blind\) )?(collected|showed \[.*\] and won) \(%(CUR)s(?P<POT>[.\d]+)\)(, mucked| with.*|)" %  subst, re.MULTILINE) | ||||
|             self.re_CollectPot       = re.compile(r"Seat (?P<SEAT>[0-9]+): %(PLYR)s (\(button\) |\(small blind\) |\(big blind\) |\(button\) \(small blind\) |\(button\) \(big blind\) )?(collected|showed \[.*\] and won) \(%(CUR)s(?P<POT>[.\d]+)\)(, mucked| with.*|)" %  subst, re.MULTILINE) | ||||
|             self.re_sitsOut          = re.compile("^%s sits out" %  player_re, re.MULTILINE) | ||||
|             self.re_ShownCards       = re.compile("^Seat (?P<SEAT>[0-9]+): %s (\(.*\) )?(?P<SHOWED>showed|mucked) \[(?P<CARDS>.*)\].*" %  player_re, re.MULTILINE) | ||||
| 
 | ||||
|  | @ -264,7 +266,7 @@ class PokerStars(HandHistoryConverter): | |||
|                             hand.buyinCurrency="PSFP" | ||||
|                         else: | ||||
|                             #FIXME: handle other currencies, FPP, play money | ||||
|                             raise FpdbParseError(_("failed to detect currency")) | ||||
|                             raise FpdbParseError(_("Failed to detect currency: '%s'" % info[key])) | ||||
| 
 | ||||
|                         info['BIAMT'] = info['BIAMT'].strip(u'$€FPP') | ||||
|                          | ||||
|  | @ -297,7 +299,7 @@ class PokerStars(HandHistoryConverter): | |||
|                     hand.tablename = info[key] | ||||
|             if key == 'BUTTON': | ||||
|                 hand.buttonpos = info[key] | ||||
|             if key == 'MAX': | ||||
|             if key == 'MAX' and info[key] != None: | ||||
|                 hand.maxseats = int(info[key]) | ||||
| 
 | ||||
|             if key == 'MIXED': | ||||
|  |  | |||
							
								
								
									
										230
									
								
								pyfpdb/SQL.py
									
									
									
									
									
								
							
							
						
						
									
										230
									
								
								pyfpdb/SQL.py
									
									
									
									
									
								
							|  | @ -1355,7 +1355,42 @@ class Sql: | |||
|                         street3Raises INT, | ||||
|                         street4Raises INT) | ||||
|                         """ | ||||
|                          | ||||
|         ################################ | ||||
|         # Create SessionsCache | ||||
|         ################################ | ||||
| 
 | ||||
|         if db_server == 'mysql': | ||||
|             self.query['createSessionsCacheTable'] = """CREATE TABLE SessionsCache ( | ||||
|                         id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id), | ||||
|                         sessionStart DATETIME NOT NULL, | ||||
|                         sessionEnd DATETIME NOT NULL, | ||||
|                         ringHDs INT NOT NULL, | ||||
|                         tourHDs INT NOT NULL, | ||||
|                         totalProfit INT NOT NULL, | ||||
|                         bigBets FLOAT UNSIGNED NOT NULL) | ||||
| 
 | ||||
|                         ENGINE=INNODB""" | ||||
|         elif db_server == 'postgresql': | ||||
|             self.query['createSessionsCacheTable'] = """CREATE TABLE SessionsCache ( | ||||
|                         id BIGSERIAL, PRIMARY KEY (id), | ||||
|                         sessionStart REAL NOT NULL, | ||||
|                         sessionEnd REAL NOT NULL, | ||||
|                         ringHDs INT NOT NULL, | ||||
|                         tourHDs INT NOT NULL, | ||||
|                         totalProfit INT NOT NULL, | ||||
|                         bigBets FLOAT NOT NULL) | ||||
|                         """ | ||||
|         elif db_server == 'sqlite': | ||||
|             self.query['createSessionsCacheTable'] = """CREATE TABLE SessionsCache ( | ||||
|                         id INTEGER PRIMARY KEY, | ||||
|                         sessionStart REAL NOT NULL, | ||||
|                         sessionEnd REAL NOT NULL, | ||||
|                         ringHDs INT NOT NULL, | ||||
|                         tourHDs INT NOT NULL, | ||||
|                         totalProfit INT NOT NULL, | ||||
|                         bigBets REAL UNSIGNED NOT NULL) | ||||
|                         """ | ||||
| 
 | ||||
|         if db_server == 'mysql': | ||||
|             self.query['addTourneyIndex'] = """ALTER TABLE Tourneys ADD UNIQUE INDEX siteTourneyNo(siteTourneyNo, tourneyTypeId)""" | ||||
|  | @ -1365,11 +1400,11 @@ class Sql: | |||
|             self.query['addTourneyIndex'] = """CREATE UNIQUE INDEX siteTourneyNo ON Tourneys (siteTourneyNo, tourneyTypeId)""" | ||||
| 
 | ||||
|         if db_server == 'mysql': | ||||
|             self.query['addHandsIndex'] = """ALTER TABLE Hands ADD UNIQUE INDEX siteHandNo(siteHandNo, gameTypeId)""" | ||||
|             self.query['addHandsIndex'] = """ALTER TABLE Hands ADD UNIQUE INDEX siteHandNo(siteHandNo, gametypeId)""" | ||||
|         elif db_server == 'postgresql': | ||||
|             self.query['addHandsIndex'] = """CREATE UNIQUE INDEX siteHandNo ON Hands (siteHandNo, gameTypeId)""" | ||||
|             self.query['addHandsIndex'] = """CREATE UNIQUE INDEX siteHandNo ON Hands (siteHandNo, gametypeId)""" | ||||
|         elif db_server == 'sqlite': | ||||
|             self.query['addHandsIndex'] = """CREATE UNIQUE INDEX siteHandNo ON Hands (siteHandNo, gameTypeId)""" | ||||
|             self.query['addHandsIndex'] = """CREATE UNIQUE INDEX siteHandNo ON Hands (siteHandNo, gametypeId)""" | ||||
| 
 | ||||
|         if db_server == 'mysql': | ||||
|             self.query['addPlayersIndex'] = """ALTER TABLE Players ADD UNIQUE INDEX name(name, siteId)""" | ||||
|  | @ -1416,6 +1451,34 @@ class Sql: | |||
|                 and   (p.siteId = %s or %s = -1) | ||||
|             """ | ||||
| 
 | ||||
|         self.query['get_gameinfo_from_hid'] = """ | ||||
|                 SELECT | ||||
|                         s.name, | ||||
|                         g.category, | ||||
|                         g.base, | ||||
|                         g.type, | ||||
|                         g.limitType, | ||||
|                         g.hilo, | ||||
|                         round(g.smallBlind / 100.0,2), | ||||
|                         round(g.bigBlind / 100.0,2), | ||||
|                         round(g.smallBet / 100.0,2), | ||||
|                         round(g.bigBet / 100.0,2), | ||||
|                         g.currency | ||||
|                     FROM | ||||
|                         Hands as h, | ||||
|                         Sites as s, | ||||
|                         Gametypes as g, | ||||
|                         HandsPlayers as hp, | ||||
|                         Players as p | ||||
|                     WHERE | ||||
|                         h.id = %s | ||||
|                     and g.id = h.gametypeid | ||||
|                     and hp.handid = h.id | ||||
|                     and p.id = hp.playerid | ||||
|                     and s.id = p.siteid | ||||
|                     limit 1 | ||||
|             """ | ||||
| 
 | ||||
|         self.query['get_stats_from_hand'] = """ | ||||
|                 SELECT hc.playerId                      AS player_id, | ||||
|                     hp.seatNo                           AS seat, | ||||
|  | @ -2110,7 +2173,7 @@ class Sql: | |||
| 
 | ||||
|         if db_server == 'mysql': | ||||
|             self.query['playerDetailedStats'] = """ | ||||
|                      select  <hgameTypeId>                                                          AS hgametypeid | ||||
|                      select  <hgametypeId>                                                          AS hgametypeid | ||||
|                             ,<playerName>                                                           AS pname | ||||
|                             ,gt.base | ||||
|                             ,gt.category | ||||
|  | @ -2196,7 +2259,7 @@ class Sql: | |||
|                             ,variance(hp.totalProfit/100.0)                                         AS variance | ||||
|                       from HandsPlayers hp | ||||
|                            inner join Hands h       on  (h.id = hp.handId) | ||||
|                            inner join Gametypes gt  on  (gt.Id = h.gameTypeId) | ||||
|                            inner join Gametypes gt  on  (gt.Id = h.gametypeId) | ||||
|                            inner join Sites s       on  (s.Id = gt.siteId) | ||||
|                            inner join Players p     on  (p.Id = hp.playerId) | ||||
|                       where hp.playerId in <player_test> | ||||
|  | @ -2207,7 +2270,7 @@ class Sql: | |||
|                       <flagtest> | ||||
|                       <gtbigBlind_test> | ||||
|                       and   date_format(h.startTime, '%Y-%m-%d %T') <datestest> | ||||
|                       group by hgameTypeId | ||||
|                       group by hgametypeId | ||||
|                               ,pname | ||||
|                               ,gt.base | ||||
|                               ,gt.category | ||||
|  | @ -2224,14 +2287,14 @@ class Sql: | |||
|                                                when 'S' then 'S' | ||||
|                                                else concat('Z', <position>) | ||||
|                                end | ||||
|                               <orderbyhgameTypeId> | ||||
|                               <orderbyhgametypeId> | ||||
|                               ,upper(gt.limitType) desc | ||||
|                               ,maxbigblind desc | ||||
|                               ,s.name | ||||
|                       """ | ||||
|         elif db_server == 'postgresql': | ||||
|             self.query['playerDetailedStats'] = """ | ||||
|                      select  <hgameTypeId>                                                          AS hgametypeid | ||||
|                      select  <hgametypeId>                                                          AS hgametypeid | ||||
|                             ,<playerName>                                                           AS pname | ||||
|                             ,gt.base | ||||
|                             ,gt.category | ||||
|  | @ -2317,7 +2380,7 @@ class Sql: | |||
|                             ,variance(hp.totalProfit/100.0)                                         AS variance | ||||
|                       from HandsPlayers hp | ||||
|                            inner join Hands h       on  (h.id = hp.handId) | ||||
|                            inner join Gametypes gt  on  (gt.Id = h.gameTypeId) | ||||
|                            inner join Gametypes gt  on  (gt.Id = h.gametypeId) | ||||
|                            inner join Sites s       on  (s.Id = gt.siteId) | ||||
|                            inner join Players p     on  (p.Id = hp.playerId) | ||||
|                       where hp.playerId in <player_test> | ||||
|  | @ -2328,7 +2391,7 @@ class Sql: | |||
|                       <flagtest> | ||||
|                       <gtbigBlind_test> | ||||
|                       and   to_char(h.startTime, 'YYYY-MM-DD HH24:MI:SS') <datestest> | ||||
|                       group by hgameTypeId | ||||
|                       group by hgametypeId | ||||
|                               ,pname | ||||
|                               ,gt.base | ||||
|                               ,gt.category | ||||
|  | @ -2346,14 +2409,14 @@ class Sql: | |||
|                                                when '0' then 'Y' | ||||
|                                                else 'Z'||<position> | ||||
|                                end | ||||
|                               <orderbyhgameTypeId> | ||||
|                               <orderbyhgametypeId> | ||||
|                               ,upper(gt.limitType) desc | ||||
|                               ,maxbigblind desc | ||||
|                               ,s.name | ||||
|                       """ | ||||
|         elif db_server == 'sqlite': | ||||
|             self.query['playerDetailedStats'] = """ | ||||
|                      select  <hgameTypeId>                                                          AS hgametypeid | ||||
|                      select  <hgametypeId>                                                          AS hgametypeid | ||||
|                             ,<playerName>                                                           AS pname | ||||
|                             ,gt.base | ||||
|                             ,gt.category                                                            AS category | ||||
|  | @ -2439,7 +2502,7 @@ class Sql: | |||
|                             ,variance(hp.totalProfit/100.0)                                         AS variance | ||||
|                       from HandsPlayers hp | ||||
|                            inner join Hands h       on  (h.id = hp.handId) | ||||
|                            inner join Gametypes gt  on  (gt.Id = h.gameTypeId) | ||||
|                            inner join Gametypes gt  on  (gt.Id = h.gametypeId) | ||||
|                            inner join Sites s       on  (s.Id = gt.siteId) | ||||
|                            inner join Players p     on  (p.Id = hp.playerId) | ||||
|                       where hp.playerId in <player_test> | ||||
|  | @ -2450,7 +2513,7 @@ class Sql: | |||
|                       <flagtest> | ||||
|                       <gtbigBlind_test> | ||||
|                       and   datetime(h.startTime) <datestest> | ||||
|                       group by hgameTypeId | ||||
|                       group by hgametypeId | ||||
|                               ,hp.playerId | ||||
|                               ,gt.base | ||||
|                               ,gt.category | ||||
|  | @ -2468,7 +2531,7 @@ class Sql: | |||
|                                                when '0' then 'Y' | ||||
|                                                else 'Z'||<position> | ||||
|                                end | ||||
|                               <orderbyhgameTypeId> | ||||
|                               <orderbyhgametypeId> | ||||
|                               ,upper(gt.limitType) desc | ||||
|                               ,max(gt.bigBlind) desc | ||||
|                               ,s.name | ||||
|  | @ -2479,7 +2542,11 @@ class Sql: | |||
|                       select s.name                                                                 AS siteName | ||||
|                             ,t.tourneyTypeId                                                        AS tourneyTypeId | ||||
|                             ,tt.currency                                                            AS currency | ||||
|                             ,(CASE WHEN tt.currency = 'USD' THEN tt.buyIn/100.0 ELSE tt.buyIn END)  AS buyIn | ||||
|                             ,(CASE | ||||
|                                 WHEN tt.currency = 'USD' THEN tt.buyIn/100.0 | ||||
|                                 WHEN tt.currency = 'EUR' THEN tt.buyIn/100.0 | ||||
|                                 ELSE tt.buyIn | ||||
|                               END)                                                                  AS buyIn | ||||
|                             ,tt.fee/100.0                                                           AS fee | ||||
|                             ,tt.category                                                            AS category | ||||
|                             ,tt.limitType                                                           AS limitType | ||||
|  | @ -2512,7 +2579,11 @@ class Sql: | |||
|                       select s.name                                                                 AS siteName | ||||
|                             ,t.tourneyTypeId                                                        AS tourneyTypeId | ||||
|                             ,tt.currency                                                            AS currency | ||||
|                             ,(CASE WHEN tt.currency = 'USD' THEN tt.buyIn/100.0 ELSE tt.buyIn END)  AS buyIn | ||||
|                             ,(CASE | ||||
|                                 WHEN tt.currency = 'USD' THEN tt.buyIn/100.0 | ||||
|                                 WHEN tt.currency = 'EUR' THEN tt.buyIn/100.0 | ||||
|                                 ELSE tt.buyIn | ||||
|                               END)                                                                  AS buyIn | ||||
|                             ,tt.fee/100.0                                                           AS fee | ||||
|                             ,tt.category                                                            AS category | ||||
|                             ,tt.limitType                                                           AS limitType | ||||
|  | @ -2546,7 +2617,11 @@ class Sql: | |||
|                       select s.name                                                                 AS siteName | ||||
|                             ,t.tourneyTypeId                                                        AS tourneyTypeId | ||||
|                             ,tt.currency                                                            AS currency | ||||
|                             ,(CASE WHEN tt.currency = 'USD' THEN tt.buyIn/100.0 ELSE tt.buyIn END)  AS buyIn | ||||
|                             ,(CASE | ||||
|                                 WHEN tt.currency = 'USD' THEN tt.buyIn/100.0 | ||||
|                                 WHEN tt.currency = 'EUR' THEN tt.buyIn/100.0 | ||||
|                                 ELSE tt.buyIn | ||||
|                               END)                                                                  AS buyIn | ||||
|                             ,tt.fee/100.0                                                           AS fee | ||||
|                             ,tt.category                                                            AS category | ||||
|                             ,tt.limitType                                                           AS limitType | ||||
|  | @ -2646,7 +2721,7 @@ class Sql: | |||
|                            ,format( sum(activeSeats*HDs)/(sum(HDs)+0.0), 2)                 AS AvgSeats | ||||
|                      from Gametypes gt | ||||
|                           inner join Sites s on s.Id = gt.siteId | ||||
|                           inner join HudCache hc on hc.gameTypeId = gt.Id | ||||
|                           inner join HudCache hc on hc.gametypeId = gt.Id | ||||
|                      where hc.playerId in <player_test> | ||||
|                      and   <gtbigBlind_test> | ||||
|                      and   hc.activeSeats <seats_test> | ||||
|  | @ -2667,7 +2742,7 @@ class Sql: | |||
|                                   else variance(hprof.profit/100.0) | ||||
|                              end as variance | ||||
|                       from | ||||
|                           (select hp.handId, <hgameTypeId> as gtId, hp.totalProfit as profit | ||||
|                           (select hp.handId, <hgametypeId> as gtId, hp.totalProfit as profit | ||||
|                            from HandsPlayers hp | ||||
|                            inner join Hands h        ON h.id            = hp.handId | ||||
|                            where hp.playerId in <player_test> | ||||
|  | @ -2751,7 +2826,7 @@ class Sql: | |||
|                            ,to_char(sum(activeSeats*HDs)/(sum(HDs)+0.0),'90D00')            AS AvgSeats | ||||
|                      from Gametypes gt | ||||
|                           inner join Sites s on s.Id = gt.siteId | ||||
|                           inner join HudCache hc on hc.gameTypeId = gt.Id | ||||
|                           inner join HudCache hc on hc.gametypeId = gt.Id | ||||
|                      where hc.playerId in <player_test> | ||||
|                      and   <gtbigBlind_test> | ||||
|                      and   hc.activeSeats <seats_test> | ||||
|  | @ -2772,7 +2847,7 @@ class Sql: | |||
|                                   else variance(hprof.profit/100.0) | ||||
|                              end as variance | ||||
|                       from | ||||
|                           (select hp.handId, <hgameTypeId> as gtId, hp.totalProfit as profit | ||||
|                           (select hp.handId, <hgametypeId> as gtId, hp.totalProfit as profit | ||||
|                            from HandsPlayers hp | ||||
|                            inner join Hands h   ON (h.id = hp.handId) | ||||
|                            where hp.playerId in <player_test> | ||||
|  | @ -2874,7 +2949,7 @@ class Sql: | |||
|                            ,format( sum(activeSeats*HDs)/(sum(HDs)+0.0), 2)                 AS AvgSeats | ||||
|                      from Gametypes gt | ||||
|                           inner join Sites s on s.Id = gt.siteId | ||||
|                           inner join HudCache hc on hc.gameTypeId = gt.Id | ||||
|                           inner join HudCache hc on hc.gametypeId = gt.Id | ||||
|                      where hc.playerId in <player_test> | ||||
|                      and   <gtbigBlind_test> | ||||
|                      and   hc.activeSeats <seats_test> | ||||
|  | @ -2904,7 +2979,7 @@ class Sql: | |||
|                                   else variance(hprof.profit/100.0) | ||||
|                              end as variance | ||||
|                       from | ||||
|                           (select hp.handId, <hgameTypeId> as gtId, hp.position | ||||
|                           (select hp.handId, <hgametypeId> as gtId, hp.position | ||||
|                                 , hp.totalProfit as profit | ||||
|                            from HandsPlayers hp | ||||
|                            inner join Hands h  ON  (h.id = hp.handId) | ||||
|  | @ -3013,7 +3088,7 @@ class Sql: | |||
|                            ,to_char(sum(activeSeats*HDs)/(sum(HDs)+0.0),'90D00')            AS AvgSeats | ||||
|                      from Gametypes gt | ||||
|                           inner join Sites s     on (s.Id = gt.siteId) | ||||
|                           inner join HudCache hc on (hc.gameTypeId = gt.Id) | ||||
|                           inner join HudCache hc on (hc.gametypeId = gt.Id) | ||||
|                      where hc.playerId in <player_test> | ||||
|                      and   <gtbigBlind_test> | ||||
|                      and   hc.activeSeats <seats_test> | ||||
|  | @ -3043,14 +3118,14 @@ class Sql: | |||
|                                   else variance(hprof.profit/100.0) | ||||
|                              end as variance | ||||
|                       from | ||||
|                           (select hp.handId, <hgameTypeId> as gtId, hp.position | ||||
|                           (select hp.handId, <hgametypeId> as gtId, hp.position | ||||
|                                 , hp.totalProfit as profit | ||||
|                            from HandsPlayers hp | ||||
|                            inner join Hands h  ON  (h.id = hp.handId) | ||||
|                            where hp.playerId in <player_test> | ||||
|                            and   hp.tourneysPlayersId IS NULL | ||||
|                            and   to_char(h.startTime, 'YYYY-MM-DD') <datestest> | ||||
|                            group by hp.handId, gameTypeId, hp.position, hp.totalProfit | ||||
|                            group by hp.handId, gametypeId, hp.position, hp.totalProfit | ||||
|                           ) hprof | ||||
|                       group by hprof.gtId, PlPosition | ||||
|                     ) hprof2 | ||||
|  | @ -3144,7 +3219,7 @@ class Sql: | |||
|                 SELECT UNIX_TIMESTAMP(h.startTime) as time, hp.handId, hp.startCash, hp.winnings, hp.totalProfit | ||||
|                 FROM HandsPlayers hp | ||||
|                  INNER JOIN Hands h       on  (h.id = hp.handId) | ||||
|                  INNER JOIN Gametypes gt  on  (gt.Id = h.gameTypeId) | ||||
|                  INNER JOIN Gametypes gt  on  (gt.Id = h.gametypeId) | ||||
|                  INNER JOIN Sites s       on  (s.Id = gt.siteId) | ||||
|                  INNER JOIN Players p     on  (p.Id = hp.playerId) | ||||
|                 WHERE hp.playerId in <player_test> | ||||
|  | @ -3156,7 +3231,7 @@ class Sql: | |||
|                 SELECT EXTRACT(epoch from h.startTime) as time, hp.handId, hp.startCash, hp.winnings, hp.totalProfit | ||||
|                 FROM HandsPlayers hp | ||||
|                  INNER JOIN Hands h       on  (h.id = hp.handId) | ||||
|                  INNER JOIN Gametypes gt  on  (gt.Id = h.gameTypeId) | ||||
|                  INNER JOIN Gametypes gt  on  (gt.Id = h.gametypeId) | ||||
|                  INNER JOIN Sites s       on  (s.Id = gt.siteId) | ||||
|                  INNER JOIN Players p     on  (p.Id = hp.playerId) | ||||
|                 WHERE hp.playerId in <player_test> | ||||
|  | @ -3168,7 +3243,7 @@ class Sql: | |||
|                 SELECT STRFTIME('<ampersand_s>', h.startTime) as time, hp.handId, hp.startCash, hp.winnings, hp.totalProfit | ||||
|                 FROM HandsPlayers hp | ||||
|                  INNER JOIN Hands h       on  (h.id = hp.handId) | ||||
|                  INNER JOIN Gametypes gt  on  (gt.Id = h.gameTypeId) | ||||
|                  INNER JOIN Gametypes gt  on  (gt.Id = h.gametypeId) | ||||
|                  INNER JOIN Sites s       on  (s.Id = gt.siteId) | ||||
|                  INNER JOIN Players p     on  (p.Id = hp.playerId) | ||||
|                 WHERE hp.playerId in <player_test> | ||||
|  | @ -3968,13 +4043,104 @@ class Sql: | |||
|             AND   playerId=%s | ||||
|             AND   activeSeats=%s | ||||
|             AND   position=%s | ||||
|             AND   tourneyTypeId+0=%s | ||||
|             AND   (case when tourneyTypeId is NULL then 1 else  | ||||
|                    (case when tourneyTypeId+0=%s then 1 else 0 end) end)=1 | ||||
|             AND   styleKey=%s""" | ||||
| 
 | ||||
|              | ||||
|         self.query['get_hero_hudcache_start'] = """select min(hc.styleKey) | ||||
|                                                    from HudCache hc | ||||
|                                                    where hc.playerId in <playerid_list> | ||||
|                                                    and   hc.styleKey like 'd%'""" | ||||
|              | ||||
|         #################################### | ||||
|         # Queries to rebuild/modify sessionscache | ||||
|         #################################### | ||||
|              | ||||
|         self.query['select_sessionscache'] = """ | ||||
|             SELECT sessionStart, | ||||
|                 sessionEnd, | ||||
|                 ringHDs, | ||||
|                 tourHDs, | ||||
|                 totalProfit, | ||||
|                 bigBets | ||||
|             FROM SessionsCache | ||||
|         WHERE sessionEnd>=%s | ||||
|         AND sessionStart<=%s""" | ||||
|          | ||||
|         self.query['select_sessionscache_mid'] = """ | ||||
|             SELECT sessionStart, | ||||
|                 sessionEnd, | ||||
|                 ringHDs, | ||||
|                 tourHDs, | ||||
|                 totalProfit, | ||||
|                 bigBets | ||||
|             FROM SessionsCache | ||||
|         WHERE sessionEnd>=%s | ||||
|         AND sessionStart<=%s""" | ||||
|          | ||||
|         self.query['select_sessionscache_start'] = """ | ||||
|             SELECT sessionStart, | ||||
|                 sessionEnd, | ||||
|                 ringHDs, | ||||
|                 tourHDs, | ||||
|                 totalProfit, | ||||
|                 bigBets | ||||
|             FROM SessionsCache | ||||
|         WHERE sessionStart>%s | ||||
|         AND sessionEnd>=%s | ||||
|         AND sessionStart<=%s""" | ||||
|          | ||||
|         self.query['update_sessionscache_mid'] = """ | ||||
|             UPDATE SessionsCache SET | ||||
|             ringHDs=ringHDs+%s, | ||||
|             tourHDs=tourHDs+%s, | ||||
|             totalProfit=totalProfit+%s, | ||||
|             bigBets=bigBets+%s | ||||
|         WHERE sessionStart<=%s | ||||
|         AND sessionEnd>=%s""" | ||||
| 
 | ||||
|         self.query['update_sessionscache_start'] = """ | ||||
|             UPDATE SessionsCache SET | ||||
|             sessionStart=%s, | ||||
|             ringHDs=ringHDs+%s, | ||||
|             tourHDs=tourHDs+%s, | ||||
|             totalProfit=totalProfit+%s, | ||||
|             bigBets=bigBets+%s | ||||
|         WHERE sessionStart>%s | ||||
|         AND sessionEnd>=%s | ||||
|         AND sessionStart<=%s""" | ||||
|      | ||||
|         self.query['update_sessionscache_end'] = """ | ||||
|             UPDATE SessionsCache SET | ||||
|             sessionEnd=%s, | ||||
|             ringHDs=ringHDs+%s, | ||||
|             tourHDs=tourHDs+%s, | ||||
|             totalProfit=totalProfit+%s, | ||||
|             bigBets=bigBets+%s | ||||
|         WHERE sessionEnd<%s | ||||
|         AND sessionEnd>=%s | ||||
|         AND sessionStart<=%s""" | ||||
|          | ||||
|         self.query['insert_sessionscache'] = """ | ||||
|             INSERT INTO SessionsCache ( | ||||
|                 sessionStart, | ||||
|                 sessionEnd, | ||||
|                 ringHDs, | ||||
|                 tourHDs, | ||||
|                 totalProfit, | ||||
|                 bigBets) | ||||
|             VALUES (%s, %s, %s, %s, %s, %s)""" | ||||
|          | ||||
|         self.query['merge_sessionscache'] = """ | ||||
|             SELECT min(sessionStart), max(sessionEnd), sum(ringHDs), sum(tourHDs), sum(totalProfit), sum(bigBets) | ||||
|             FROM SessionsCache | ||||
|         WHERE sessionEnd>=%s | ||||
|         AND sessionStart<=%s""" | ||||
|          | ||||
|         self.query['delete_sessions'] = """ | ||||
|             DELETE FROM SessionsCache | ||||
|         WHERE sessionEnd>=%s | ||||
|         AND sessionStart<=%s""" | ||||
| 
 | ||||
|         if db_server == 'mysql': | ||||
|             self.query['analyze'] = """ | ||||
|  |  | |||
							
								
								
									
										174
									
								
								pyfpdb/Stove.py
									
									
									
									
									
								
							
							
						
						
									
										174
									
								
								pyfpdb/Stove.py
									
									
									
									
									
								
							|  | @ -9,7 +9,9 @@ | |||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation, version 3 of the License. | ||||
| # | ||||
| #TODO: gettextify | ||||
| 
 | ||||
| import L10n | ||||
| _ = L10n.get_translation() | ||||
| 
 | ||||
| import sys, random | ||||
| import pokereval | ||||
|  | @ -22,13 +24,56 @@ OFFSUIT = 2 | |||
| 
 | ||||
| ev = pokereval.PokerEval() | ||||
| 
 | ||||
| holder = None | ||||
| 
 | ||||
| class Holder: | ||||
| class Stove: | ||||
|     def __init__(self): | ||||
|         self.hand = None | ||||
|         self.board = None | ||||
|         self.range = None | ||||
|         self.h_range = None | ||||
| 
 | ||||
|     def set_board_with_list(self, board): | ||||
|         pass | ||||
| 
 | ||||
|     def set_board_string(self, string): | ||||
|         board = Board() | ||||
| 
 | ||||
|         # Board | ||||
|         b = string.strip().split() | ||||
|         if len(b) > 4: | ||||
|             board.b5 = b[4] | ||||
|         if len(b) > 3: | ||||
|             board.b4 = b[3] | ||||
|         if len(b) > 2: | ||||
|             board.b1 = b[0] | ||||
|             board.b2 = b[1] | ||||
|             board.b3 = b[2] | ||||
| 
 | ||||
|         self.board = board | ||||
| 
 | ||||
|     def set_hero_cards_string(self, string): | ||||
|         # Our pocket cards | ||||
|         cc = string.strip().split() | ||||
|         c1 = cc[0] | ||||
|         c2 = cc[1] | ||||
|         pocket_cards = Cards(c1, c2) | ||||
|         self.hand = pocket_cards | ||||
| 
 | ||||
|     def set_villain_range_string(self, string): | ||||
|         # Villain's range | ||||
|         h_range = Range() | ||||
|         hands_in_range = string.strip().split(',') | ||||
|         for h in hands_in_range: | ||||
|             _h = h.strip() | ||||
|             if len(_h) > 3: | ||||
|                 cc = _h.split() | ||||
|                 r1 = cc[0] | ||||
|                 r2 = cc[1] | ||||
|                 vp = Cards(r1, r2) | ||||
|                 h_range.add(vp) | ||||
|             else: | ||||
|                 h_range.expand(expand_hands(_h, self.hand, self.board)) | ||||
| 
 | ||||
|         self.h_range = h_range | ||||
| 
 | ||||
| 
 | ||||
| class Cards: | ||||
|  | @ -104,37 +149,17 @@ class SumEV: | |||
|         self.n_ties += ev.n_ties | ||||
|         self.n_losses += ev.n_losses | ||||
| 
 | ||||
|     def show(self, hand, range): | ||||
|     def show(self, hand, h_range): | ||||
|         win_pct = 100 * (float(self.n_wins) / float(self.n_hands)) | ||||
|         lose_pct = 100 * (float(self.n_losses) / float(self.n_hands)) | ||||
|         tie_pct = 100 * (float(self.n_ties) / float(self.n_hands)) | ||||
|         print 'Enumerated %d possible plays.' % self.n_hands | ||||
|         print 'Your hand: (%s %s)' % (hand.c1, hand.c2) | ||||
|         print 'Against the range: %s\n' % cards_from_range(range) | ||||
|         print 'Against the range: %s\n' % cards_from_range(h_range) | ||||
|         print '  Win       Lose       Tie' | ||||
|         print ' %5.2f%%    %5.2f%%    %5.2f%%' % (win_pct, lose_pct, tie_pct) | ||||
| 
 | ||||
| 
 | ||||
| def usage(me): | ||||
|     print """Texas Hold'Em odds calculator | ||||
| Calculates odds against a range of hands. | ||||
| 
 | ||||
| To use: %s '<board cards>' '<your hand>' '<opponent's range>' [...] | ||||
| 
 | ||||
| Separate cards with space. | ||||
| Separate hands in range with commas. | ||||
| """ % me | ||||
| 
 | ||||
| def cards_from_range(range): | ||||
|     s = '{' | ||||
|     for h in range: | ||||
|         if h.c1 == '__' and h.c2 == '__': | ||||
|             s += 'random, ' | ||||
|         else: | ||||
|             s += '%s%s, ' % (h.c1, h.c2) | ||||
|     s = s.rstrip(', ') | ||||
|     s += '}' | ||||
|     return s | ||||
| 
 | ||||
| 
 | ||||
| # Expands hand abbreviations such as JJ and AK to full hand ranges. | ||||
|  | @ -159,7 +184,7 @@ def expand_hands(abbrev, hand, board): | |||
|     else: | ||||
|         selection = ANY | ||||
| 
 | ||||
|     range = [] | ||||
|     h_range = [] | ||||
|     considered = set() | ||||
|     for s1 in SUITS: | ||||
|         c1 = r1 + s1 | ||||
|  | @ -173,54 +198,18 @@ def expand_hands(abbrev, hand, board): | |||
|             elif selection == OFFSUIT and s1 == s2: | ||||
|                 continue | ||||
|             if c2 not in considered and c2 not in known_cards: | ||||
|                 range.append(Cards(c1, c2)) | ||||
|     return range | ||||
|                 h_range.append(Cards(c1, c2)) | ||||
|     return h_range | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|      | ||||
| 
 | ||||
| def parse_args(args, container): | ||||
|     # args[0] is the path being executed; need 3 more args | ||||
|     if len(args) < 4: | ||||
|         return False | ||||
| 
 | ||||
|     board = Board() | ||||
| 
 | ||||
|     # Board | ||||
|     b = args[1].strip().split() | ||||
|     if len(b) > 4: | ||||
|         board.b5 = b[4] | ||||
|     if len(b) > 3: | ||||
|         board.b4 = b[3] | ||||
|     if len(b) > 2: | ||||
|         board.b1 = b[0] | ||||
|         board.b2 = b[1] | ||||
|         board.b3 = b[2] | ||||
| 
 | ||||
|     # Our pocket cards | ||||
|     cc = args[2].strip().split() | ||||
|     c1 = cc[0] | ||||
|     c2 = cc[1] | ||||
|     pocket_cards = Cards(c1, c2) | ||||
| 
 | ||||
|     # Villain's range | ||||
|     range = Range() | ||||
|     hands_in_range = args[3].strip().split(',') | ||||
|     for h in hands_in_range: | ||||
|         _h = h.strip() | ||||
|         if len(_h) > 3: | ||||
|             cc = _h.split() | ||||
|             r1 = cc[0] | ||||
|             r2 = cc[1] | ||||
|             vp = Cards(r1, r2) | ||||
|             range.add(vp) | ||||
|         else: | ||||
|             range.expand(expand_hands(_h, pocket_cards, board)) | ||||
| 
 | ||||
|     holder.hand = pocket_cards | ||||
|     holder.range = range | ||||
|     holder.board = board | ||||
|     container.set_board_string(args[1]) | ||||
|     container.set_hero_cards_string(args[2]) | ||||
|     container.set_villain_range_string(args[3]) | ||||
| 
 | ||||
|     return True | ||||
| 
 | ||||
|  | @ -269,11 +258,11 @@ def odds_for_range(holder): | |||
|         b.append("__") | ||||
| 
 | ||||
|     if monte_carlo: | ||||
|         print 'No board given. Using Monte-Carlo simulation...' | ||||
|         print _('No board given. Using Monte-Carlo simulation...') | ||||
|         iters = random.randint(25000, 125000) | ||||
|     else: | ||||
|         iters = -1 | ||||
|     for h in holder.range.get(): | ||||
|     for h in holder.h_range.get(): | ||||
|         e = odds_for_hand( | ||||
|             [holder.hand.c1, holder.hand.c2], | ||||
|             [h.c1, h.c2], | ||||
|  | @ -282,28 +271,35 @@ def odds_for_range(holder): | |||
|             ) | ||||
|         sev.add(e) | ||||
| 
 | ||||
|     sev.show(holder.hand, holder.range.get()) | ||||
|      | ||||
|     sev.show(holder.hand, holder.h_range.get()) | ||||
| 
 | ||||
| def usage(me): | ||||
|     print """Texas Hold'Em odds calculator | ||||
| Calculates odds against a range of hands. | ||||
| 
 | ||||
| holder = Holder() | ||||
| if not parse_args(sys.argv, holder): | ||||
|     usage(sys.argv[0]) | ||||
|     sys.exit(2) | ||||
| odds_for_range(holder) | ||||
| 
 | ||||
| # debugs | ||||
| #print '%s, %s' % ( holder.hand.c1, holder.hand.c2) | ||||
| #print '%s %s %s %s %s' % (holder.board.b1, holder.board.b2, | ||||
| #    holder.board.b3, holder.board.b4, holder.board.b5) | ||||
| #while True: | ||||
| #    try: | ||||
| #        vl = holder.range.get() | ||||
| #        v = vl.pop() | ||||
| #        print '\t%s %s' % (v.c1, v.c2) | ||||
| #    except IndexError: | ||||
| #        break | ||||
| To use: %s '<board cards>' '<your hand>' '<opponent's range>' [...] | ||||
| 
 | ||||
| Separate cards with space. | ||||
| Separate hands in range with commas. | ||||
| """ % me | ||||
| 
 | ||||
| def cards_from_range(h_range): | ||||
|     s = '{' | ||||
|     for h in h_range: | ||||
|         if h.c1 == '__' and h.c2 == '__': | ||||
|             s += 'random, ' | ||||
|         else: | ||||
|             s += '%s%s, ' % (h.c1, h.c2) | ||||
|     s = s.rstrip(', ') | ||||
|     s += '}' | ||||
|     return s | ||||
| 
 | ||||
| def main(argv=None): | ||||
|     stove = Stove() | ||||
|     if not parse_args(sys.argv, stove): | ||||
|         usage(sys.argv[0]) | ||||
|         sys.exit(2) | ||||
|     odds_for_range(stove) | ||||
| 
 | ||||
| if __name__  == '__main__': | ||||
|     sys.exit(main()) | ||||
|  |  | |||
|  | @ -116,6 +116,8 @@ class Table_Window(object): | |||
| 
 | ||||
|         self.config = config | ||||
|         self.site = site | ||||
|         self.hud = None   # fill in later | ||||
|         self.gdkhandle = None | ||||
|         if tournament is not None and table_number is not None: | ||||
|             self.tournament = int(tournament) | ||||
|             self.table = int(table_number) | ||||
|  | @ -150,7 +152,7 @@ class Table_Window(object): | |||
| #    __str__ method for testing | ||||
|         likely_attrs = ("number", "title", "site", "width", "height", "x", "y", | ||||
|                         "tournament", "table", "gdkhandle", "window", "parent", | ||||
|                         "game", "search_string", "tableno_re") | ||||
|                         "key", "hud", "game", "search_string", "tableno_re") | ||||
|         temp = 'TableWindow object\n' | ||||
|         for a in likely_attrs: | ||||
|             if getattr(self, a, 0): | ||||
|  | @ -185,13 +187,13 @@ class Table_Window(object): | |||
|             return False | ||||
| 
 | ||||
|         try: | ||||
|               mo = re.search(self.tableno_re, new_title) | ||||
|             mo = re.search(self.tableno_re, new_title) | ||||
|         except AttributeError: #'Table' object has no attribute 'tableno_re' | ||||
|               return False | ||||
|             return False | ||||
|                | ||||
|         if mo is not None: | ||||
|             #print "get_table_no: mo=",mo.groups() | ||||
|             return mo.group(1) | ||||
|             return int(mo.group(1)) | ||||
|         return False | ||||
| 
 | ||||
| #################################################################### | ||||
|  | @ -234,7 +236,9 @@ class Table_Window(object): | |||
|             return "client_destroyed" | ||||
| 
 | ||||
|         elif  self.width  != new_geo['width'] or self.height != new_geo['height']:    # window resized | ||||
|             self.oldwidth = self.width | ||||
|             self.width  = new_geo['width'] | ||||
|             self.oldheight = self.height | ||||
|             self.height = new_geo['height'] | ||||
|             return "client_resized" | ||||
|         return False  # no change | ||||
|  | @ -256,7 +260,7 @@ class Table_Window(object): | |||
|         if result != False and result != self.table: | ||||
|             self.table = result | ||||
|             if hud is not None: | ||||
|                 hud.main_window.emit("table_changed", hud) | ||||
|                 hud.parent.main_window.emit("table_changed", hud) | ||||
|         return True | ||||
| 
 | ||||
|     def check_bad_words(self, title): | ||||
|  |  | |||
|  | @ -22,24 +22,25 @@ Main program module to test/demo the Tables subclasses. | |||
| 
 | ||||
| ######################################################################## | ||||
| 
 | ||||
| import L10n | ||||
| _ = L10n.get_translation() | ||||
| 
 | ||||
| #    Standard Library modules | ||||
| import sys | ||||
| import os | ||||
| 
 | ||||
| #    pyGTK modules | ||||
| import pygtk | ||||
| import gtk | ||||
| import gobject | ||||
| 
 | ||||
| #    fpdb/free poker tools modules | ||||
| import Configuration | ||||
| import L10n | ||||
| _ = L10n.get_translation() | ||||
| 
 | ||||
| #    get the correct module for the current os | ||||
| if os.name == 'posix': | ||||
| if sys.platform == 'linux2': | ||||
|     import XTables as Tables | ||||
| elif os.name == 'nt': | ||||
| elif sys.platform == 'darwin': | ||||
|     import OSXTables as Tables | ||||
| else: # This is bad--figure out the values for the various windows flavors | ||||
|     import WinTables as Tables | ||||
| 
 | ||||
| config = Configuration.Config() | ||||
|  | @ -60,7 +61,7 @@ if __name__=="__main__": | |||
|             self.main_window.set_title(_("Fake HUD Main Window")) | ||||
|             self.main_window.move(table.x + dx, table.y + dy) | ||||
|             self.main_window.show_all() | ||||
|             table.topify(self) | ||||
|             table.topify(self.main_window) | ||||
|              | ||||
| #    These are the currently defined signals. Do this in the HUD. | ||||
|             self.main_window.connect("client_moved", self.client_moved) | ||||
|  | @ -103,9 +104,12 @@ if __name__=="__main__": | |||
|         table_kwargs = dict(table_name = table_name) | ||||
| 
 | ||||
|     table = Tables.Table(config, "Full Tilt Poker", **table_kwargs) | ||||
|     table.gdkhandle = gtk.gdk.window_foreign_new(table.number) | ||||
|     print table | ||||
| 
 | ||||
|     fake = fake_hud(table) | ||||
|     fake.parent = fake | ||||
| 
 | ||||
|     gobject.timeout_add(1000, table.check_game, fake) | ||||
|     gobject.timeout_add(100, table.check_table, fake) | ||||
|     print "calling main" | ||||
|  |  | |||
|  | @ -28,6 +28,9 @@ import Configuration | |||
| import Database | ||||
| import SQL | ||||
| import fpdb_import | ||||
| import Options | ||||
| import datetime | ||||
| import pytz | ||||
| 
 | ||||
| 
 | ||||
| class FpdbError: | ||||
|  | @ -59,6 +62,69 @@ class FpdbError: | |||
|             idx = f.find('regression') | ||||
|             print "(%3d) : %s" %(self.histogram[f], f[idx:]) | ||||
| 
 | ||||
| def compare_handsplayers_file(filename, importer, errors): | ||||
|     hashfilename = filename + '.hp' | ||||
| 
 | ||||
|     in_fh = codecs.open(hashfilename, 'r', 'utf8') | ||||
|     whole_file = in_fh.read() | ||||
|     in_fh.close() | ||||
| 
 | ||||
|     testhash = eval(whole_file) | ||||
| 
 | ||||
|     hhc = importer.getCachedHHC() | ||||
|     handlist = hhc.getProcessedHands() | ||||
|     #We _really_ only want to deal with a single hand here. | ||||
|     for hand in handlist: | ||||
|         ghash = hand.stats.getHandsPlayers() | ||||
|         for p in ghash: | ||||
|             #print "DEBUG: player: '%s'" % p | ||||
|             pstat = ghash[p] | ||||
|             teststat = testhash[p] | ||||
| 
 | ||||
|             for stat in pstat: | ||||
|                 #print "pstat[%s][%s]: %s == %s" % (p, stat, pstat[stat], teststat[stat]) | ||||
|                 try: | ||||
|                     if pstat[stat] == teststat[stat]: | ||||
|                         # The stats match - continue | ||||
|                         pass | ||||
|                     else: | ||||
|                         # Stats don't match - Doh! | ||||
|                         errors.error_report(filename, hand, stat, ghash, testhash, p) | ||||
|                 except KeyError, e: | ||||
|                     errors.error_report(filename, False, "KeyError: '%s'" % stat, False, False, p) | ||||
| 
 | ||||
| def compare_hands_file(filename, importer, errors): | ||||
|     hashfilename = filename + '.hands' | ||||
| 
 | ||||
|     in_fh = codecs.open(hashfilename, 'r', 'utf8') | ||||
|     whole_file = in_fh.read() | ||||
|     in_fh.close() | ||||
| 
 | ||||
|     testhash = eval(whole_file) | ||||
| 
 | ||||
|     hhc = importer.getCachedHHC() | ||||
|     handlist = hhc.getProcessedHands() | ||||
| 
 | ||||
|     for hand in handlist: | ||||
|         ghash = hand.stats.getHands() | ||||
|         for datum in ghash: | ||||
|             #print "DEBUG: hand: '%s'" % datum | ||||
|             try: | ||||
|                 if ghash[datum] == testhash[datum]: | ||||
|                     # The stats match - continue | ||||
|                     pass | ||||
|                 else: | ||||
|                     # Stats don't match.  | ||||
|                     if datum == "gametypeId": | ||||
|                         # Not an error. gametypeIds are dependent on the order added to the db. | ||||
|                         #print "DEBUG: Skipping mismatched gamtypeId" | ||||
|                         pass | ||||
|                     else: | ||||
|                         errors.error_report(filename, hand, datum, ghash, testhash, None) | ||||
|             except KeyError, e: | ||||
|                 errors.error_report(filename, False, "KeyError: '%s'" % stat, False, False, p) | ||||
| 
 | ||||
| 
 | ||||
| def compare(leaf, importer, errors, site): | ||||
|     filename = leaf | ||||
|     #print "DEBUG: fileanme: %s" % filename | ||||
|  | @ -69,39 +135,13 @@ def compare(leaf, importer, errors, site): | |||
|         importer.addBulkImportImportFileOrDir(filename, site=site) | ||||
|         (stored, dups, partial, errs, ttime) = importer.runImport() | ||||
| 
 | ||||
|         if os.path.isfile(filename + '.hp') and errs < 1: | ||||
|             # Compare them | ||||
|             hashfilename = filename + '.hp' | ||||
| 
 | ||||
|             in_fh = codecs.open(hashfilename, 'r', 'utf8') | ||||
|             whole_file = in_fh.read() | ||||
|             in_fh.close() | ||||
| 
 | ||||
|             testhash = eval(whole_file) | ||||
| 
 | ||||
|             hhc = importer.getCachedHHC() | ||||
|             handlist = hhc.getProcessedHands() | ||||
|             #We _really_ only want to deal with a single hand here. | ||||
|             for hand in handlist: | ||||
|                 ghash = hand.stats.getHandsPlayers() | ||||
|                 for p in ghash: | ||||
|                     #print "DEBUG: player: '%s'" % p | ||||
|                     pstat = ghash[p] | ||||
|                     teststat = testhash[p] | ||||
| 
 | ||||
|                     for stat in pstat: | ||||
|                         #print "pstat[%s][%s]: %s == %s" % (p, stat, pstat[stat], teststat[stat]) | ||||
|                         try: | ||||
|                             if pstat[stat] == teststat[stat]: | ||||
|                                 # The stats match - continue | ||||
|                                 pass | ||||
|                             else: | ||||
|                                 # Stats don't match - Doh! | ||||
|                                 errors.error_report(filename, hand, stat, ghash, testhash, p) | ||||
|                         except KeyError, e: | ||||
|                             errors.error_report(filename, False, "KeyError: '%s'" % stat, False, False, p) | ||||
|         if errs > 0: | ||||
|             errors.error_report(filename, False, "Parse", False, False, False) | ||||
|         else: | ||||
|             if os.path.isfile(filename + '.hp'): | ||||
|                 compare_handsplayers_file(filename, importer, errors) | ||||
|             if os.path.isfile(filename + '.hands'): | ||||
|                 compare_hands_file(filename, importer, errors) | ||||
| 
 | ||||
|         importer.clearFileList() | ||||
| 
 | ||||
|  | @ -117,10 +157,28 @@ def walk_testfiles(dir, function, importer, errors, site): | |||
|         else: | ||||
|             compare(nfile, importer, errors, site) | ||||
| 
 | ||||
| def usage(): | ||||
|     print "USAGE:" | ||||
|     sys.exit(0) | ||||
| 
 | ||||
| def main(argv=None): | ||||
|     if argv is None: | ||||
|         argv = sys.argv[1:] | ||||
| 
 | ||||
|     (options, argv) = Options.fpdb_options() | ||||
| 
 | ||||
|     test_all_sites = True | ||||
| 
 | ||||
|     if options.usage == True: | ||||
|         usage() | ||||
| 
 | ||||
|     if options.sitename: | ||||
|         options.sitename = Options.site_alias(options.sitename) | ||||
|         if options.sitename == False: | ||||
|             usage() | ||||
|         print "Only regression testing '%s' files" % (options.sitename) | ||||
|         test_all_sites = False | ||||
| 
 | ||||
|     config = Configuration.Config(file = "HUD_config.test.xml") | ||||
|     db = Database.Database(config) | ||||
|     sql = SQL.Sql(db_server = 'sqlite') | ||||
|  | @ -159,21 +217,27 @@ def main(argv=None): | |||
|                 ] | ||||
| 
 | ||||
|     sites = { | ||||
|                 'PokerStars' : True, | ||||
|                 'Full Tilt Poker' : True, | ||||
|                 'PartyPoker' : True, | ||||
|                 'Betfair' : True, | ||||
|                 'OnGame' : True, | ||||
|                 'Absolute' : True, | ||||
|                 'UltimateBet' : True, | ||||
|                 'Everleaf' : True, | ||||
|                 'Carbon' : True, | ||||
|                 'PKR' : False, | ||||
|                 'iPoker' : True, | ||||
|                 'Win2day' : True, | ||||
|                 'Winamax' : True, | ||||
|                 'PokerStars' : False, | ||||
|                 'Full Tilt Poker' : False, | ||||
|                 'PartyPoker' : False, | ||||
|                 'Betfair' : False, | ||||
|                 'OnGame' : False, | ||||
|                 'Absolute' : False, | ||||
|                 'UltimateBet' : False, | ||||
|                 'Everleaf' : False, | ||||
|                 'Carbon' : False, | ||||
|                 #'PKR' : False, | ||||
|                 'iPoker' : False, | ||||
|                 'Win2day' : False, | ||||
|                 'Winamax' : False, | ||||
|             } | ||||
| 
 | ||||
|     if test_all_sites == True: | ||||
|         for s in sites: | ||||
|             sites[s] = True | ||||
|     else: | ||||
|         sites[options.sitename] = True | ||||
| 
 | ||||
|     if sites['PokerStars'] == True: | ||||
|         walk_testfiles("regression-test-files/cash/Stars/", compare, importer, PokerStarsErrors, "PokerStars") | ||||
|         walk_testfiles("regression-test-files/tour/Stars/", compare, importer, PokerStarsErrors, "PokerStars") | ||||
|  | @ -195,12 +259,13 @@ def main(argv=None): | |||
|         walk_testfiles("regression-test-files/cash/Everleaf/", compare, importer, EverleafErrors, "Everleaf") | ||||
|     if sites['Carbon'] == True: | ||||
|         walk_testfiles("regression-test-files/cash/Carbon/", compare, importer, CarbonErrors, "Carbon") | ||||
|     if sites['PKR'] == True: | ||||
|         walk_testfiles("regression-test-files/cash/PKR/", compare, importer, PKRErrors, "PKR") | ||||
|     #if sites['PKR'] == True: | ||||
|     #    walk_testfiles("regression-test-files/cash/PKR/", compare, importer, PKRErrors, "PKR") | ||||
|     if sites['iPoker'] == True: | ||||
|         walk_testfiles("regression-test-files/cash/iPoker/", compare, importer, iPokerErrors, "iPoker") | ||||
|     if sites['Winamax'] == True: | ||||
|         walk_testfiles("regression-test-files/cash/Winamax/", compare, importer, WinamaxErrors, "Winamax") | ||||
|         walk_testfiles("regression-test-files/tour/Winamax/", compare, importer, WinamaxErrors, "Winamax") | ||||
|     if sites['Win2day'] == True: | ||||
|         walk_testfiles("regression-test-files/cash/Win2day/", compare, importer, Win2dayErrors, "Win2day") | ||||
| 
 | ||||
|  |  | |||
|  | @ -76,6 +76,11 @@ class Table(Table_Window): | |||
|         self.title = titles[hwnd] | ||||
|         self.hud = None | ||||
|         self.number = hwnd | ||||
|         if self.gdkhandle is not None: | ||||
|             try:   # Windows likes this here - Linux doesn't | ||||
|                 self.gdkhandle = gtk.gdk.window_foreign_new(self.number) | ||||
|             except AttributeError: | ||||
|                 pass | ||||
| 
 | ||||
|     def get_geometry(self): | ||||
|         try: | ||||
|  |  | |||
|  | @ -82,15 +82,26 @@ class Winamax(HandHistoryConverter): | |||
| # Winamax Poker - CashGame - HandId: #279823-223-1285031451 - Holdem no limit (0.02€/0.05€) - 2010/09/21 03:10:51 UTC | ||||
| # Table: 'Charenton-le-Pont' 9-max (real money) Seat #5 is the button | ||||
|     re_HandInfo = re.compile(u""" | ||||
|             \s*Winamax\sPoker\s-\sCashGame\s-\sHandId:\s\#(?P<HID1>\d+)-(?P<HID2>\d+)-(?P<HID3>\d+).*\s | ||||
|             \s*Winamax\sPoker\s-\s | ||||
|             (?P<RING>CashGame)? | ||||
|             (?P<TOUR>Tournament\s | ||||
|             (?P<TOURNAME>.+)?\s | ||||
|             buyIn:\s(?P<BUYIN>(?P<BIAMT>[%(LS)s\d\,]+)?\s\+?\s(?P<BIRAKE>[%(LS)s\d\,]+)?\+?(?P<BOUNTY>[%(LS)s\d\.]+)?\s?(?P<TOUR_ISO>%(LEGAL_ISO)s)?|Gratuit|Ticket\suniquement)?\s | ||||
|             (level:\s(?P<LEVEL>\d+))? | ||||
|             .*)? | ||||
|             \s-\sHandId:\s\#(?P<HID1>\d+)-(?P<HID2>\d+)-(?P<HID3>\d+).*\s | ||||
|             (?P<GAME>Holdem|Omaha)\s | ||||
|             (?P<LIMIT>no\slimit|pot\slimit)\s | ||||
|             \( | ||||
|             (((%(LS)s)?(?P<ANTE>[.0-9]+)(%(LS)s)?)/)? | ||||
|             ((%(LS)s)?(?P<SB>[.0-9]+)(%(LS)s)?)/ | ||||
|             ((%(LS)s)?(?P<BB>[.0-9]+)(%(LS)s)?) | ||||
|             \)\s-\s | ||||
|             (?P<DATETIME>.*) | ||||
|             Table:\s\'(?P<TABLE>[^']+)\'\s(?P<MAXPLAYER>\d+)\-max | ||||
|             Table:\s\'(?P<TABLE>[^(]+) | ||||
|             (.(?P<TOURNO>\d+).\#(?P<TABLENO>\d+))?.* | ||||
|             \' | ||||
|             \s(?P<MAXPLAYER>\d+)\-max | ||||
|             """ % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE) | ||||
| 
 | ||||
|     re_TailSplitHands = re.compile(r'\n\s*\n') | ||||
|  | @ -126,8 +137,8 @@ class Winamax(HandHistoryConverter): | |||
|             self.re_PostSB    = re.compile('%(PLYR)s posts small blind (%(CUR)s)?(?P<SB>[\.0-9]+)(%(CUR)s)?' % subst, re.MULTILINE) | ||||
|             self.re_PostBB    = re.compile('%(PLYR)s posts big blind (%(CUR)s)?(?P<BB>[\.0-9]+)(%(CUR)s)?' % subst, re.MULTILINE) | ||||
|             self.re_DenySB    = re.compile('(?P<PNAME>.*) deny SB' % subst, re.MULTILINE) | ||||
|             self.re_Antes     = re.compile(r"^%(PLYR)s: posts the ante (%(CUR)s)?(?P<ANTE>[\.0-9]+)(%(CUR)s)?" % subst, re.MULTILINE) | ||||
|             self.re_BringIn   = re.compile(r"^%(PLYR)s: brings[- ]in( low|) for (%(CUR)s)?(?P<BRINGIN>[\.0-9]+(%(CUR)s)?)" % subst, re.MULTILINE) | ||||
|             self.re_Antes     = re.compile(r"^%(PLYR)s posts ante (%(CUR)s)?(?P<ANTE>[\.0-9]+)(%(CUR)s)?" % subst, re.MULTILINE) | ||||
|             self.re_BringIn   = re.compile(r"^%(PLYR)s brings[- ]in( low|) for (%(CUR)s)?(?P<BRINGIN>[\.0-9]+(%(CUR)s)?)" % subst, re.MULTILINE) | ||||
|             self.re_PostBoth  = re.compile('(?P<PNAME>.*): posts small \& big blind \( (%(CUR)s)?(?P<SBBB>[\.0-9]+)(%(CUR)s)?\)' % subst) | ||||
|             self.re_PostDead  = re.compile('(?P<PNAME>.*) posts dead blind \((%(CUR)s)?(?P<DEAD>[\.0-9]+)(%(CUR)s)?\)' % subst, re.MULTILINE) | ||||
|             self.re_HeroCards = re.compile('Dealt\sto\s%(PLYR)s\s\[(?P<CARDS>.*)\]' % subst) | ||||
|  | @ -144,6 +155,9 @@ class Winamax(HandHistoryConverter): | |||
|                 ["ring", "hold", "fl"], | ||||
|                 ["ring", "hold", "nl"], | ||||
|                 ["ring", "hold", "pl"], | ||||
|                 ["tour", "hold", "fl"], | ||||
|                 ["tour", "hold", "nl"], | ||||
|                 ["tour", "hold", "pl"], | ||||
|                ] | ||||
| 
 | ||||
|     def determineGameType(self, handText): | ||||
|  | @ -160,7 +174,11 @@ class Winamax(HandHistoryConverter): | |||
| 
 | ||||
|         mg = m.groupdict() | ||||
| 
 | ||||
|         info['type'] = 'ring' | ||||
|         if mg.get('TOUR'): | ||||
|             info['type'] = 'tour' | ||||
|         elif mg.get('RING'): | ||||
|             info['type'] = 'ring' | ||||
| 
 | ||||
|         info['currency'] = 'EUR' | ||||
| 
 | ||||
|         if 'LIMIT' in mg: | ||||
|  | @ -202,11 +220,62 @@ class Winamax(HandHistoryConverter): | |||
|                 hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%m/%d %H:%M:%S") # also timezone at end, e.g. " ET" | ||||
|                 hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, "CET", "UTC") | ||||
|             if key == 'HID1': | ||||
|                 hand.handid = "1%.4d%s%s"%(int(info['HID2']),info['HID1'],info['HID3']) | ||||
|                 # Need to remove non-alphanumerics for MySQL | ||||
|                 hand.handid = "1%.9d%s%s"%(int(info['HID2']),info['HID1'],info['HID3']) | ||||
|             if key == 'TOURNO': | ||||
|                 hand.tourNo = info[key] | ||||
|             if key == 'TABLE': | ||||
|                 hand.tablename = info[key] | ||||
| 
 | ||||
|             if key == 'BUYIN': | ||||
|                 if hand.tourNo!=None: | ||||
|                     #print "DEBUG: info['BUYIN']: %s" % info['BUYIN'] | ||||
|                     #print "DEBUG: info['BIAMT']: %s" % info['BIAMT'] | ||||
|                     #print "DEBUG: info['BIRAKE']: %s" % info['BIRAKE'] | ||||
|                     #print "DEBUG: info['BOUNTY']: %s" % info['BOUNTY'] | ||||
|                     for k in ['BIAMT','BIRAKE']: | ||||
|                         if k in info.keys() and info[k]: | ||||
|                             info[k] = info[k].replace(',','.') | ||||
| 
 | ||||
|                     if info[key] == 'Freeroll': | ||||
|                         hand.buyin = 0 | ||||
|                         hand.fee = 0 | ||||
|                         hand.buyinCurrency = "FREE" | ||||
|                     else: | ||||
|                         if info[key].find("$")!=-1: | ||||
|                             hand.buyinCurrency="USD" | ||||
|                         elif info[key].find(u"€")!=-1: | ||||
|                             hand.buyinCurrency="EUR" | ||||
|                         elif info[key].find("FPP")!=-1: | ||||
|                             hand.buyinCurrency="PSFP" | ||||
|                         else: | ||||
|                             #FIXME: handle other currencies, FPP, play money | ||||
|                             raise FpdbParseError(_("failed to detect currency")) | ||||
| 
 | ||||
|                         info['BIAMT'] = info['BIAMT'].strip(u'$€FPP') | ||||
| 
 | ||||
|                         if hand.buyinCurrency!="PSFP": | ||||
|                             if info['BOUNTY'] != None: | ||||
|                                 # There is a bounty, Which means we need to switch BOUNTY and BIRAKE values | ||||
|                                 tmp = info['BOUNTY'] | ||||
|                                 info['BOUNTY'] = info['BIRAKE'] | ||||
|                                 info['BIRAKE'] = tmp | ||||
|                                 info['BOUNTY'] = info['BOUNTY'].strip(u'$€') # Strip here where it isn't 'None' | ||||
|                                 hand.koBounty = int(100*Decimal(info['BOUNTY'])) | ||||
|                                 hand.isKO = True | ||||
|                             else: | ||||
|                                 hand.isKO = False | ||||
| 
 | ||||
|                             info['BIRAKE'] = info['BIRAKE'].strip(u'$€') | ||||
|                             hand.buyin = int(100*Decimal(info['BIAMT'])) | ||||
|                             hand.fee = int(100*Decimal(info['BIRAKE'])) | ||||
|                         else: | ||||
|                             hand.buyin = int(Decimal(info['BIAMT'])) | ||||
|                             hand.fee = 0 | ||||
| 
 | ||||
|             if key == 'LEVEL': | ||||
|                 hand.level = info[key] | ||||
| 
 | ||||
|         # TODO: These | ||||
|         hand.buttonpos = 1 | ||||
|         hand.maxseats = 10    # Set to None - Hand.py will guessMaxSeats() | ||||
|  |  | |||
|  | @ -44,6 +44,10 @@ class Table(Table_Window): | |||
| 
 | ||||
|     def find_table_parameters(self): | ||||
| 
 | ||||
| #    This is called by __init__(). Find the poker table window of interest, | ||||
| #    given the self.search_string. Then populate self.number, self.title,  | ||||
| #    self.window, and self.parent (if required). | ||||
| 
 | ||||
|         reg = ''' | ||||
|                 \s+(?P<XID>[\dxabcdef]+)    # XID in hex | ||||
|                 \s(?P<TITLE>.+):            # window title | ||||
|  | @ -53,38 +57,53 @@ class Table(Table_Window): | |||
|         for listing in os.popen('xwininfo -root -tree').readlines(): | ||||
|             if re.search(self.search_string, listing, re.I): | ||||
|                 mo = re.match(reg, listing, re.VERBOSE) | ||||
| #                mo = re.match('\s+([\dxabcdef]+) (.+):\s\(\"([a-zA-Z0-9\-.]+)\".+  (\d+)x(\d+)\+\d+\+\d+  \+(\d+)\+(\d+)', listing) | ||||
|                 title  = re.sub('\"', '', mo.groupdict()["TITLE"]) | ||||
|                 if self.check_bad_words(title): continue | ||||
|                 self.number = int( mo.groupdict()["XID"], 0 ) | ||||
|                 self.title = title | ||||
|                 self.hud    = None   # specified later | ||||
|                 break | ||||
| 
 | ||||
|         if self.number is None: | ||||
|             return None | ||||
|          | ||||
|         self.window = self.get_window_from_xid(self.number) | ||||
|         self.parent = self.window.query_tree().parent | ||||
|         (self.window, self.parent) = self.get_window_from_xid(self.number) | ||||
| 
 | ||||
| #    def get_window_from_xid(self, id): | ||||
| #        for outside in root.query_tree().children: | ||||
| #            if outside.id == id: | ||||
| #                return (outside, outside.query_tree().parent) | ||||
| #            for inside in outside.query_tree().children: | ||||
| #                if inside.id == id:  # GNOME, Xfce | ||||
| #                    return (inside, inside.query_tree().parent) | ||||
| #                for wayinside in inside.query_tree().children: | ||||
| #                    if wayinside.id == id:  # KDE | ||||
| #                        parent = wayinside.query_tree().parent | ||||
| #                        return (wayinside, parent.query_tree().parent) | ||||
| #        return (None, None) | ||||
| 
 | ||||
|     def get_window_from_xid(self, id): | ||||
|         for outside in root.query_tree().children: | ||||
|             if outside.id == id: | ||||
|                 return outside | ||||
|             for inside in outside.query_tree().children: | ||||
|                 if inside.id == id: | ||||
|                     return inside | ||||
|         return None | ||||
|         for top_level in root.query_tree().children: | ||||
|             if top_level.id == id: | ||||
|                 return (top_level, None) | ||||
|             for w in treewalk(top_level): | ||||
|                 if w.id == id: | ||||
|                     return (w, top_level) | ||||
| 
 | ||||
|     def get_geometry(self): | ||||
|         try: | ||||
|             my_geo = self.window.get_geometry() | ||||
|             pa_geo = self.parent.get_geometry() | ||||
|             return {'x'      : my_geo.x + pa_geo.x, | ||||
|                     'y'      : my_geo.y + pa_geo.y, | ||||
|                     'width'  : my_geo.width, | ||||
|                     'height' : my_geo.height | ||||
|                    } | ||||
|             if self.parent is None: | ||||
|                 return {'x'      : my_geo.x, | ||||
|                         'y'      : my_geo.y, | ||||
|                         'width'  : my_geo.width, | ||||
|                         'height' : my_geo.height | ||||
|                        } | ||||
|             else: | ||||
|                 pa_geo = self.parent.get_geometry() | ||||
|                 return {'x'      : my_geo.x + pa_geo.x, | ||||
|                         'y'      : my_geo.y + pa_geo.y, | ||||
|                         'width'  : my_geo.width, | ||||
|                         'height' : my_geo.height | ||||
|                        } | ||||
|         except: | ||||
|             return None | ||||
| 
 | ||||
|  | @ -96,7 +115,18 @@ class Table(Table_Window): | |||
|         except AttributeError: | ||||
|             return None | ||||
|          | ||||
|     def topify(self, window): | ||||
| #    The idea here is to call set_transient_for on the HUD window, with the table window | ||||
| #    as the argument. This should keep the HUD window on top of the table window, as if  | ||||
| #    the hud window was a dialog belonging to the table. | ||||
| 
 | ||||
| #    This is the gdkhandle for the HUD window | ||||
|         gdkwindow = gtk.gdk.window_foreign_new(window.window.xid) | ||||
|         gdkwindow.set_transient_for(self.gdkhandle) | ||||
| 
 | ||||
| def treewalk(parent): | ||||
|     for w in parent.query_tree().children: | ||||
|         for ww in treewalk(w): | ||||
|             yield ww | ||||
|         yield w | ||||
| 
 | ||||
|     def topify(self, hud): | ||||
|         hud.main_window.gdkhandle = gtk.gdk.window_foreign_new(hud.main_window.window.xid) | ||||
|         hud.main_window.gdkhandle.set_transient_for(self.gdk_handle) | ||||
|  |  | |||
							
								
								
									
										125
									
								
								pyfpdb/fpdb.pyw
									
									
									
									
									
								
							
							
						
						
									
										125
									
								
								pyfpdb/fpdb.pyw
									
									
									
									
									
								
							|  | @ -14,7 +14,6 @@ | |||
| #You should have received a copy of the GNU Affero General Public License | ||||
| #along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
| #In the "official" distribution you can find the license in agpl-3.0.txt. | ||||
| 
 | ||||
| import L10n | ||||
| _ = L10n.get_translation() | ||||
| 
 | ||||
|  | @ -76,7 +75,7 @@ try: | |||
|     pygtk.require('2.0') | ||||
|     import gtk | ||||
|     import pango | ||||
| except: | ||||
| except ImportError: | ||||
|     print _("Unable to load PyGTK modules required for GUI. Please install PyCairo, PyGObject, and PyGTK from www.pygtk.org.") | ||||
|     raw_input(_("Press ENTER to continue.")) | ||||
|     exit() | ||||
|  | @ -87,18 +86,18 @@ import interlocks | |||
| try: | ||||
|     import matplotlib | ||||
|     matplotlib_version = matplotlib.__version__ | ||||
| except: | ||||
| except ImportError: | ||||
|     matplotlib_version = 'not found' | ||||
| try: | ||||
|     import numpy | ||||
|     numpy_version = numpy.__version__ | ||||
| except: | ||||
| except ImportError: | ||||
|     numpy_version = 'not found' | ||||
| try: | ||||
|     import sqlite3 | ||||
|     sqlite3_version = sqlite3.version | ||||
|     sqlite_version = sqlite3.sqlite_version | ||||
| except: | ||||
| except ImportError: | ||||
|     sqlite3_version = 'not found' | ||||
|     sqlite_version = 'not found' | ||||
| 
 | ||||
|  | @ -116,13 +115,15 @@ import GuiAutoImport | |||
| import GuiGraphViewer | ||||
| import GuiTourneyGraphViewer | ||||
| import GuiSessionViewer | ||||
| import GuiReplayer | ||||
| import GuiStove | ||||
| import SQL | ||||
| import Database | ||||
| import Configuration | ||||
| import Exceptions | ||||
| import Stats | ||||
| 
 | ||||
| VERSION = "0.21-rc1" | ||||
| VERSION = "0.21-rc1 plus git" | ||||
| 
 | ||||
| 
 | ||||
| class fpdb: | ||||
|  | @ -203,7 +204,7 @@ class fpdb: | |||
|         gtk.Button.set_relief(button, gtk.RELIEF_NONE) | ||||
|         settings = gtk.Widget.get_settings(button); | ||||
|         (w,h) = gtk.icon_size_lookup_for_settings(settings, gtk.ICON_SIZE_SMALL_TOOLBAR); | ||||
|         gtk.Widget.set_size_request (button, w + 4, h + 4); | ||||
|         gtk.Widget.set_size_request(button, w + 4, h + 4); | ||||
|         image.show() | ||||
|         iconBox.pack_start(image, True, False, 0) | ||||
|         button.add(iconBox) | ||||
|  | @ -778,6 +779,8 @@ class fpdb: | |||
|                   <menuitem action="tourneyviewer"/> | ||||
|                   <menuitem action="posnstats"/> | ||||
|                   <menuitem action="sessionstats"/> | ||||
|                   <menuitem action="replayer"/> | ||||
|                   <menuitem action="stove"/> | ||||
|                 </menu> | ||||
|                 <menu action="database"> | ||||
|                   <menuitem action="maintaindbs"/> | ||||
|  | @ -814,11 +817,13 @@ class fpdb: | |||
|                                  ('hudConfigurator', None, _('_HUD Configurator'), _('<control>H'), 'HUD Configurator', self.diaHudConfigurator), | ||||
|                                  ('graphs', None, _('_Graphs'), _('<control>G'), 'Graphs', self.tabGraphViewer), | ||||
|                                  ('tourneygraphs', None, _('Tourney Graphs'), None, 'TourneyGraphs', self.tabTourneyGraphViewer), | ||||
|                                  ('stove', None, _('Stove'), None, 'Stove', self.tabStove), | ||||
|                                  ('ringplayerstats', None, _('Ring _Player Stats (tabulated view, not on pgsql)'), _('<control>P'), 'Ring Player Stats (tabulated view, not on pgsql)', self.tab_ring_player_stats), | ||||
|                                  ('tourneyplayerstats', None, _('_Tourney Stats (tabulated view, not on pgsql)'), _('<control>T'), 'Tourney Stats (tabulated view, not on pgsql)', self.tab_tourney_player_stats), | ||||
|                                  ('tourneyviewer', None, _('Tourney _Viewer'), None, 'Tourney Viewer)', self.tab_tourney_viewer_stats), | ||||
|                                  ('posnstats', None, _('P_ositional Stats (tabulated view, not on sqlite)'), _('<control>O'), 'Positional Stats (tabulated view, not on sqlite)', self.tab_positional_stats), | ||||
|                                  ('sessionstats', None, _('Session Stats'), None, 'Session Stats', self.tab_session_stats), | ||||
|                                  ('replayer', None, _('Hand _Replayer'), None, 'Hand Replayer', self.tab_replayer), | ||||
|                                  ('database', None, _('_Database')), | ||||
|                                  ('maintaindbs', None, _('_Maintain Databases'), None, 'Maintain Databases', self.dia_maintain_dbs), | ||||
|                                  ('createtabs', None, _('Create or Recreate _Tables'), None, 'Create or Recreate Tables ', self.dia_recreate_tables), | ||||
|  | @ -929,6 +934,7 @@ class fpdb: | |||
|             response = diaDbVersionWarning.run() | ||||
|             diaDbVersionWarning.destroy() | ||||
| 
 | ||||
|         # TODO: This should probably be setup in GUI Init | ||||
|         if self.status_bar is None: | ||||
|             self.status_bar = gtk.Label("") | ||||
|             self.main_vbox.pack_end(self.status_bar, False, True, 0) | ||||
|  | @ -962,8 +968,8 @@ class fpdb: | |||
|             self.quitting = True | ||||
|         # TODO: check if current settings differ from profile, if so offer to save or abort | ||||
|          | ||||
|         if self.db!=None: | ||||
|             if self.db.backend==self.db.MYSQL_INNODB: | ||||
|         if self.db is not None: | ||||
|             if self.db.backend == self.db.MYSQL_INNODB: | ||||
|                 try: | ||||
|                     import _mysql_exceptions | ||||
|                     if self.db is not None and self.db.is_connected(): | ||||
|  | @ -989,8 +995,11 @@ class fpdb: | |||
|         """opens the auto import tab""" | ||||
|         new_aimp_thread = GuiAutoImport.GuiAutoImport(self.settings, self.config, self.sql, self.window) | ||||
|         self.threads.append(new_aimp_thread) | ||||
|         aimp_tab=new_aimp_thread.get_vbox() | ||||
|         aimp_tab = new_aimp_thread.get_vbox() | ||||
|         self.add_and_display_tab(aimp_tab, _("Auto Import")) | ||||
|         if options.autoimport: | ||||
|             new_aimp_thread.startClicked(new_aimp_thread.startButton, "autostart") | ||||
|             options.autoimport = False | ||||
| 
 | ||||
|     def tab_bulk_import(self, widget, data=None): | ||||
|         """opens a tab for bulk importing""" | ||||
|  | @ -1000,7 +1009,7 @@ class fpdb: | |||
|         self.add_and_display_tab(bulk_tab, _("Bulk Import")) | ||||
| 
 | ||||
|     def tab_tourney_import(self, widget, data=None): | ||||
|         """opens a tab for bulk importing""" | ||||
|         """opens a tab for bulk importing tournament summaries""" | ||||
|         new_import_thread = GuiTourneyImport.GuiTourneyImport(self.settings, self.config, self.sql, self.window) | ||||
|         self.threads.append(new_import_thread) | ||||
|         bulk_tab=new_import_thread.get_vbox() | ||||
|  | @ -1043,6 +1052,12 @@ class fpdb: | |||
|         ps_tab=new_ps_thread.get_vbox() | ||||
|         self.add_and_display_tab(ps_tab, _("Session Stats")) | ||||
| 
 | ||||
|     def tab_replayer(self, widget, data=None): | ||||
|         new_ps_thread = GuiReplayer.GuiReplayer(self.config, self.sql, self.window) | ||||
|         self.threads.append(new_ps_thread) | ||||
|         ps_tab=new_ps_thread.get_vbox() | ||||
|         self.add_and_display_tab(ps_tab, _("Hand Replayer")) | ||||
| 
 | ||||
|     def tab_main_help(self, widget, data=None): | ||||
|         """Displays a tab with the main fpdb help screen""" | ||||
|         mh_tab=gtk.Label(_("""Fpdb needs translators! | ||||
|  | @ -1078,18 +1093,37 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an | |||
|         gv_tab = new_gv_thread.get_vbox() | ||||
|         self.add_and_display_tab(gv_tab, _("Tourney Graphs")) | ||||
| 
 | ||||
|     def tabStove(self, widget, data=None): | ||||
|         """opens a tab for poker stove""" | ||||
|         thread = GuiStove.GuiStove(self.config, self.window) | ||||
|         self.threads.append(thread) | ||||
|         tab = thread.get_vbox() | ||||
|         self.add_and_display_tab(tab, _("Stove")) | ||||
| 
 | ||||
|     def __init__(self): | ||||
|         # no more than 1 process can this lock at a time: | ||||
|         self.lock = interlocks.InterProcessLock(name="fpdb_global_lock") | ||||
|         self.db = None | ||||
|         self.status_bar = None | ||||
|         self.quitting = False | ||||
| 
 | ||||
|         self.visible = False | ||||
|         self.threads = []     # objects used by tabs - no need for threads, gtk handles it | ||||
|         self.closeq = Queue.Queue(20)  # used to signal ending of a thread (only logviewer for now)        | ||||
|          | ||||
|         # create window, move it to specific location on command line | ||||
|         self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) | ||||
|         if options.xloc is not None or options.yloc is not None: | ||||
|             if options.xloc is None: | ||||
|                 options.xloc = 0 | ||||
|             if options.yloc is None: | ||||
|                 options.yloc = 0 | ||||
|             self.window.move(options.xloc,options.yloc) | ||||
|          | ||||
|         # connect to required events | ||||
|         self.window.connect("delete_event", self.delete_event) | ||||
|         self.window.connect("destroy", self.destroy) | ||||
|         self.window.set_title("Free Poker DB - v%s" % (VERSION, )) | ||||
|         # set a default x/y size for the window | ||||
|         self.window.set_border_width(1) | ||||
|         defx, defy = 900, 720 | ||||
|         sx, sy = gtk.gdk.screen_width(), gtk.gdk.screen_height() | ||||
|  | @ -1098,34 +1132,43 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an | |||
|         self.window.set_default_size(defx, defy) | ||||
|         self.window.set_resizable(True) | ||||
| 
 | ||||
|         # main area of window | ||||
|         self.main_vbox = gtk.VBox(False, 1) | ||||
|         self.main_vbox.set_border_width(1) | ||||
|         self.window.add(self.main_vbox) | ||||
|         self.main_vbox.show() | ||||
| 
 | ||||
|         # create our Main Menu Bar | ||||
|         menubar = self.get_menu(self.window) | ||||
|         self.main_vbox.pack_start(menubar, False, True, 0) | ||||
|         menubar.show() | ||||
|         #done menubar | ||||
| 
 | ||||
|         self.threads = []     # objects used by tabs - no need for threads, gtk handles it | ||||
|         self.closeq = Queue.Queue(20)  # used to signal ending of a thread (only logviewer for now) | ||||
| 
 | ||||
|         # create a tab bar | ||||
|         self.nb = gtk.Notebook() | ||||
|         self.nb.set_show_tabs(True) | ||||
|         self.nb.show() | ||||
|         self.main_vbox.pack_start(self.nb, True, True, 0) | ||||
|         self.tabs=[]          # the event_boxes forming the actual tabs | ||||
|         self.tab_names=[]     # names of tabs used since program started, not removed if tab is closed | ||||
|         self.pages=[]         # the contents of the page, not removed if tab is closed | ||||
|         self.nb_tab_names=[]  # list of tab names currently displayed in notebook | ||||
|         self.tabs = []          # the event_boxes forming the actual tabs | ||||
|         self.tab_names = []     # names of tabs used since program started, not removed if tab is closed | ||||
|         self.pages = []         # the contents of the page, not removed if tab is closed | ||||
|         self.nb_tab_names = []  # list of tab names currently displayed in notebook | ||||
| 
 | ||||
|         # create the first tab | ||||
|         self.tab_main_help(None, None) | ||||
|          | ||||
|         # determine window visibility from command line options | ||||
|         if options.minimized: | ||||
|             self.window.iconify() | ||||
|         if options.hidden: | ||||
|             self.window.hide()         | ||||
| 
 | ||||
|         self.window.show() | ||||
|         self.visible = True     # Flip on | ||||
|         if not options.hidden: | ||||
|             self.window.show() | ||||
|             self.visible = True     # Flip on | ||||
|              | ||||
|         self.load_profile(create_db = True) | ||||
| 
 | ||||
|         # setup error logging | ||||
|         if not options.errorsToConsole: | ||||
|             fileName = os.path.join(self.config.dir_log, 'fpdb-errors.txt') | ||||
|             print (_("\nNote: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in: %s") % self.config.dir_log) \ | ||||
|  | @ -1133,12 +1176,13 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an | |||
|             errorFile = open(fileName, 'w', 0) | ||||
|             sys.stderr = errorFile | ||||
| 
 | ||||
|         # set up tray-icon and menu | ||||
|         self.statusIcon = gtk.StatusIcon() | ||||
|         # use getcwd() here instead of sys.path[0] so that py2exe works: | ||||
|         cards = os.path.join(os.getcwd(), '..','gfx','fpdb-cards.png') | ||||
|         if os.path.exists(cards): | ||||
|             self.statusIcon.set_from_file(cards) | ||||
| 	    self.window.set_icon_from_file(cards) | ||||
|             self.window.set_icon_from_file(cards) | ||||
|         elif os.path.exists('/usr/share/pixmaps/fpdb-cards.png'): | ||||
|             self.statusIcon.set_from_file('/usr/share/pixmaps/fpdb-cards.png') | ||||
|             self.window.set_icon_from_file('/usr/share/pixmaps/fpdb-cards.png') | ||||
|  | @ -1148,20 +1192,39 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an | |||
|         self.statusIcon.set_tooltip("Free Poker Database") | ||||
|         self.statusIcon.connect('activate', self.statusicon_activate) | ||||
|         self.statusMenu = gtk.Menu() | ||||
|         menuItem = gtk.ImageMenuItem(gtk.STOCK_ABOUT) | ||||
|         menuItem.connect('activate', self.dia_about) | ||||
|         self.statusMenu.append(menuItem) | ||||
|   | ||||
|         menuItem = gtk.ImageMenuItem(gtk.STOCK_QUIT) | ||||
|         menuItem.connect('activate', self.quit) | ||||
|         self.statusMenu.append(menuItem) | ||||
| 
 | ||||
|         # set default menu options         | ||||
|         self.addImageToTrayMenu(gtk.STOCK_ABOUT, self.dia_about) | ||||
|         self.addImageToTrayMenu(gtk.STOCK_QUIT, self.quit) | ||||
| 
 | ||||
|         self.statusIcon.connect('popup-menu', self.statusicon_menu, self.statusMenu) | ||||
|         self.statusIcon.set_visible(True) | ||||
| 
 | ||||
|         self.window.connect('window-state-event', self.window_state_event_cb) | ||||
|         sys.stderr.write(_("fpdb starting ...")) | ||||
| 
 | ||||
|          | ||||
|         if options.autoimport: | ||||
|             self.tab_auto_import(None) | ||||
|              | ||||
|     def addImageToTrayMenu(self, image, event=None): | ||||
|         menuItem = gtk.ImageMenuItem(image) | ||||
|         if event is not None: | ||||
|             menuItem.connect('activate', event) | ||||
|         self.statusMenu.append(menuItem) | ||||
|         menuItem.show() | ||||
|         return menuItem | ||||
|          | ||||
|     def addLabelToTrayMenu(self, label, event=None): | ||||
|         menuItem = gtk.MenuItem(label) | ||||
|         if event is not None: | ||||
|             menuItem.connect('activate', event) | ||||
|         self.statusMenu.append(menuItem) | ||||
|         menuItem.show() | ||||
|         return menuItem | ||||
|      | ||||
|     def removeFromTrayMenu(self, menuItem): | ||||
|         menuItem.destroy() | ||||
|         menuItem = None | ||||
| 
 | ||||
|     def __iconify(self): | ||||
|         self.visible = False | ||||
|  |  | |||
							
								
								
									
										24
									
								
								pyfpdb/fpdb_import.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										24
									
								
								pyfpdb/fpdb_import.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							|  | @ -83,6 +83,7 @@ class Importer: | |||
|         self.pos_in_file = {}        # dict to remember how far we have read in the file | ||||
|         #Set defaults | ||||
|         self.callHud    = self.config.get_import_parameters().get("callFpdbHud") | ||||
|         self.cacheSessions = self.config.get_import_parameters().get("cacheSessions") | ||||
| 
 | ||||
|         # CONFIGURATION OPTIONS | ||||
|         self.settings.setdefault("minPrint", 30) | ||||
|  | @ -110,6 +111,9 @@ class Importer: | |||
|     #Set functions | ||||
|     def setCallHud(self, value): | ||||
|         self.callHud = value | ||||
|          | ||||
|     def setCacheSessions(self, value): | ||||
|         self.cacheSessions = value | ||||
| 
 | ||||
|     def setMinPrint(self, value): | ||||
|         self.settings['minPrint'] = int(value) | ||||
|  | @ -491,14 +495,22 @@ class Importer: | |||
|                         if hand is not None and not hand.is_duplicate: | ||||
|                             hand.updateHudCache(self.database) | ||||
|                 self.database.commit() | ||||
|                  | ||||
|                 # Call sessionsCache update | ||||
|                 if self.cacheSessions: | ||||
|                     for hand in handlist: | ||||
|                         if hand is not None and not hand.is_duplicate: | ||||
|                             hand.updateSessionsCache(self.database) | ||||
|                 self.database.commit() | ||||
| 
 | ||||
|                 #pipe the Hands.id out to the HUD | ||||
|                 for hid in to_hud: | ||||
|                     try: | ||||
|                         print _("fpdb_import: sending hand to hud"), hand.dbid_hands, "pipe =", self.caller.pipe_to_hud | ||||
|                         self.caller.pipe_to_hud.stdin.write("%s" % (hid) + os.linesep) | ||||
|                     except IOError, e: | ||||
|                         log.error(_("Failed to send hand to HUD: %s") % e) | ||||
|                 if self.caller: | ||||
|                     for hid in to_hud: | ||||
|                         try: | ||||
|                             print _("fpdb_import: sending hand to hud"), hand.dbid_hands, "pipe =", self.caller.pipe_to_hud | ||||
|                             self.caller.pipe_to_hud.stdin.write("%s" % (hid) + os.linesep) | ||||
|                         except IOError, e: | ||||
|                             log.error(_("Failed to send hand to HUD: %s") % e) | ||||
| 
 | ||||
|                 errors = getattr(hhc, 'numErrors') | ||||
|                 stored = getattr(hhc, 'numHands') | ||||
|  |  | |||
|  | @ -45,7 +45,7 @@ class InterProcessLockBase: | |||
| 
 | ||||
|     def acquire_impl(self, wait): abstract | ||||
|          | ||||
|     def acquire(self, wait=False, retry_time=1, source=None): | ||||
|     def acquire(self, source, wait=False, retry_time=1): | ||||
|         if source == None: | ||||
|             source="Unknown" | ||||
|         if self._has_lock:             # make sure 2nd acquire in same process fails | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ Stage #1300000000: Seven Card Hi/Lo  Normal $0.02/$0.04 - 2009-03-18 19:10:00 (E | |||
| Seat 1 - PLAYER1 ($0.17 in chips) | ||||
| Seat 2 - PLAYER2 ($0.36 in chips) | ||||
| Seat 3 - PLAYER3 ($3.46 in chips) | ||||
| Seat 5 - PLAYER4 ($1 in chips) | ||||
| Seat 5 - Hero ($1 in chips) | ||||
| Seat 6 - PLAYER5 ($1.07 in chips) | ||||
| Seat 7 - PLAYER6 ($2.31 in chips) | ||||
| Seat 8 - PLAYER7 ($0.93 in chips) | ||||
|  | @ -12,12 +12,12 @@ PLAYER6 - Ante $0.01 | |||
| PLAYER3 - Ante $0.01 | ||||
| PLAYER7 - Ante $0.01 | ||||
| PLAYER2 - Ante $0.01 | ||||
| PLAYER4 - Ante $0.01 | ||||
| Hero - Ante $0.01 | ||||
| *** 3rd STREET *** | ||||
| Player1 - Pocket [H H Js]  | ||||
| PLAYER2 - Pocket [H H 7h]  | ||||
| PLAYER3 - Pocket [H H 6s]  | ||||
| PLAYER4 - Pocket [10c 5c 7s]  | ||||
| Hero - Pocket [10c 5c 7s]  | ||||
| PLAYER5 - Pocket [H H Qh]  | ||||
| PLAYER6 - Pocket [H H 9c]  | ||||
| PLAYER7 - Pocket [H H 3s]  | ||||
|  | @ -25,13 +25,13 @@ PLAYER7 - Bring-In $0.01 | |||
| Player1 - Calls $0.01 | ||||
| PLAYER2 - Folds | ||||
| PLAYER3 - Calls $0.01 | ||||
| PLAYER4 - Folds | ||||
| Hero - Folds | ||||
| PLAYER5 - Folds | ||||
| PLAYER6 - Calls $0.01 | ||||
| *** 4TH STREET *** | ||||
| Player1 - Pocket [H H Js 10d]  | ||||
| PLAYER3 - Pocket [H H 6s Ah]  | ||||
| PLAYER4 - Pocket [10c 5c 7s]  | ||||
| Hero - Pocket [10c 5c 7s]  | ||||
| PLAYER6 - Pocket [H H 9c Ks]  | ||||
| PLAYER7 - Pocket [H H 3s Qc]  | ||||
| PLAYER3 - Checks | ||||
|  | @ -41,7 +41,7 @@ Player1 - Checks | |||
| *** 5TH STREET *** | ||||
| Player1 - Pocket [H H Js 10d Kh]  | ||||
| PLAYER3 - Pocket [H H 6s Ah 8c]  | ||||
| PLAYER4 - Pocket [10c 5c 7s]  | ||||
| Hero - Pocket [10c 5c 7s]  | ||||
| PLAYER6 - Pocket [H H 9c Ks 10s]  | ||||
| PLAYER7 - Pocket [H H 3s Qc 6c]  | ||||
| PLAYER3 - Bets $0.04 | ||||
|  | @ -51,7 +51,7 @@ Player1 - Calls $0.04 | |||
| *** 6TH STREET *** | ||||
| Player1 - Pocket [H H Js 10d Kh 2c]  | ||||
| PLAYER3 - Pocket [H H 6s Ah 8c Jc]  | ||||
| PLAYER4 - Pocket [10c 5c 7s]  | ||||
| Hero - Pocket [10c 5c 7s]  | ||||
| PLAYER6 - Pocket [H H 9c Ks 10s 8h]  | ||||
| PLAYER7 - Pocket [H H 3s Qc 6c Qs]  | ||||
| PLAYER7 - Checks | ||||
|  | @ -63,7 +63,7 @@ Player1 - Calls $0.04 | |||
| *** RIVER *** | ||||
| Player1 - Pocket [H H Js 10d Kh 2c H]  | ||||
| PLAYER3 - Pocket [H H 6s Ah 8c Jc H]  | ||||
| PLAYER4 - Pocket [10c 5c 7s]  | ||||
| Hero - Pocket [10c 5c 7s]  | ||||
| PLAYER6 - Pocket [H H 9c Ks 10s 8h H]  | ||||
| PLAYER7 - Pocket [H H 3s Qc 6c Qs H]  | ||||
| PLAYER7 - Checks | ||||
|  | @ -82,7 +82,7 @@ Total Pot($0.43) | Rake ($0.04) | |||
| Seat 1: Player1 HI:lost with Two Pair, jacks and twos [Jh 3h Js 10d Kh 2c 2h - B:Js,P:Jh,P:2h,B:2c,B:Kh]  | ||||
| Seat 2: PLAYER2 Folded on the 3rd STREET | ||||
| Seat 3: PLAYER3 won Total ($0.19) HI:with One pair, aces [3d 5d 6s Ah 8c Jc As - P:As,B:Ah,B:Jc,B:8c,B:6s] LO:($0.19) [B:Ah,P:3d,P:5d,B:6s,B:8c]  | ||||
| Seat 5: PLAYER4 Folded on the 3rd STREET | ||||
| Seat 5: Hero Folded on the 3rd STREET | ||||
| Seat 6: PLAYER5 Folded on the 3rd STREET | ||||
| Seat 7: PLAYER6 won Total ($0.20) HI:($0.20) with Two Pair, kings and tens [Kc 10h 9c Ks 10s 8h 2s - B:Ks,P:Kc,B:10s,P:10h,B:9c]  | ||||
| Seat 8: PLAYER7 HI:lost with One pair, queens [5s 8d 3s Qc 6c Qs 9s - B:Qs,B:Qc,P:9s,P:8d,B:6c]  | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ PL $0.05/$0.10 Omaha - Sunday, October 18, 20:00:00 GMT 2009 | |||
| Table Death 1 6-max (Real Money) | ||||
| Seat 2 is the button | ||||
| Total number of active players : 6 | ||||
| Seat 1: Player6 ( $1 ) | ||||
| Seat 1: Hero ( $1 ) | ||||
| Seat 2: Player3 ( $9.38 ) | ||||
| Seat 3: Player2 ( $2.82 ) | ||||
| Seat 4: Player4 ( $4.13 ) | ||||
|  | @ -11,18 +11,18 @@ Seat 5: Player5 ( $28.77 ) | |||
| Seat 6: Player1 ( $6.46 ) | ||||
| Player2 posts small blind [$0.05] | ||||
| Player4 posts big blind [$0.10] | ||||
| Player6 posts big blind [$0.10] | ||||
| Hero posts big blind [$0.10] | ||||
| ** Dealing down cards ** | ||||
| Dealt to Player6 [ 7c, 6c, 5h, Jh ] | ||||
| Dealt to Hero [ 7c, 6c, 5h, Jh ] | ||||
| Player5 folds | ||||
| Player1 calls [$0.10] | ||||
| Player6 checks | ||||
| Hero checks | ||||
| Player3 calls [$0.10] | ||||
| Player2 raises to [$0.30] | ||||
| Player4 calls [$0.20] | ||||
| Player1 calls [$0.20] | ||||
| Player6 goes all-in | ||||
| Player6 raises to [$1] | ||||
| Hero goes all-in | ||||
| Hero raises to [$1] | ||||
| Player3 calls [$0.90] | ||||
| Player2 calls [$0.70] | ||||
| Player4 calls [$0.70] | ||||
|  | @ -43,7 +43,7 @@ Player4 goes all-in | |||
| Player4 bets [$3.03] | ||||
| Player1 calls [$3.03] | ||||
| ** Showdown **  | ||||
| Player6 shows [ 7c, 6c, 5h, Jh ] a straight, Seven to Three | ||||
| Hero shows [ 7c, 6c, 5h, Jh ] a straight, Seven to Three | ||||
| Player4 shows [ 7d, 8c, 3d, 6h ] a straight flush, Seven to Three | ||||
| Player1 shows [ 3h, 4h, Td, 4s ] four of a kind, Fours | ||||
| ** Hand Conclusion ** | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
| <game id="15245216-1000" starttime="20081013150000" numholecards="2" gametype="2" realmoney="true" data="20081013|Niagara Falls (15245216)|15245216|15245216-1000|false"> | ||||
| 	<players dealer="8"> | ||||
| 		<player seat="3" nickname="Player1" balance="$34.13" dealtin="true" /> | ||||
| 		<player seat="2" nickname="Player2" balance="$49.25" dealtin="true" /> | ||||
| 		<player seat="2" nickname="Hero" balance="$49.25" dealtin="true" /> | ||||
| 		<player seat="1" nickname="Player3" balance="$55.64" dealtin="true" /> | ||||
| 		<player seat="0" nickname="Player4" balance="$19.72" dealtin="true" /> | ||||
| 		<player seat="7" nickname="Player5" balance="$25.16" dealtin="true" /> | ||||
|  |  | |||
|  | @ -92,7 +92,7 @@ | |||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player2': {   'card1': 13, | ||||
|     u'Hero': {   'card1': 13, | ||||
|                     'card2': 46, | ||||
|                     'card3': 0, | ||||
|                     'card4': 0, | ||||
|  |  | |||
|  | @ -0,0 +1,267 @@ | |||
| Everleaf Gaming Game #196321235 | ||||
| ***** Hand history for game #196321235 ***** | ||||
| Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:34:15 | ||||
| Table Cortland XIV | ||||
| Seat 6 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 12.40 USD ) | ||||
| Seat 2: EricBlade (  $ 5 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.45 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.29 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.30 USD ) | ||||
| zlodeu123: posts small blind [$ 0.05 USD] | ||||
| EricBlade: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ 9h, Qd ] | ||||
| gabitzatoade folds | ||||
| N0pr3s3n7 raises [$ 0.35 USD] | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade folds | ||||
| N0pr3s3n7 does not show cards | ||||
| N0pr3s3n7 wins $ 0.25 USD from main pot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Everleaf Gaming Game #196321319 | ||||
| ***** Hand history for game #196321319 ***** | ||||
| Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:34:38 | ||||
| Table Cortland XIV | ||||
| Seat 1 is the button | ||||
| Total number of players: 5 | ||||
| Seat 1: zlodeu123 (  $ 12.35 USD ) | ||||
| Seat 2: EricBlade (  $ 4.90 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.45 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.44 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.30 USD ) | ||||
| EricBlade: posts small blind [$ 0.05 USD] | ||||
| gabitzatoade: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ Qd, 9d ] | ||||
| N0pr3s3n7 folds | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade raises [$ 0.25 USD] | ||||
| gabitzatoade folds | ||||
| EricBlade does not show cards | ||||
| EricBlade wins $ 0.20 USD from main pot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Everleaf Gaming Game #196321394 | ||||
| ***** Hand history for game #196321394 ***** | ||||
| Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:34:57 | ||||
| Table Cortland XIV | ||||
| Seat 2 is the button | ||||
| Total number of players: 5 | ||||
| Seat 1: zlodeu123 (  $ 12.35 USD ) | ||||
| Seat 2: EricBlade (  $ 5 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.35 USD ) | ||||
| Seat 4: Miazza ( new player ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.44 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.30 USD ) | ||||
| gabitzatoade: posts small blind [$ 0.05 USD] | ||||
| N0pr3s3n7: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ 9c, Ac ] | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade raises [$ 0.35 USD] | ||||
| gabitzatoade calls [$ 0.30 USD] | ||||
| N0pr3s3n7 folds | ||||
| ** Dealing Flop ** [ 4c, Kh, 6h ] | ||||
| gabitzatoade checks | ||||
| EricBlade: bets [$ 0.40 USD] | ||||
| gabitzatoade calls [$ 0.40 USD] | ||||
| ** Dealing Turn ** [ Qh ] | ||||
| gabitzatoade checks | ||||
| Miazza has joined the table | ||||
| EricBlade checks | ||||
| ** Dealing River ** [ Qd ] | ||||
| gabitzatoade checks | ||||
| EricBlade checks | ||||
| EricBlade shows [ 9c, Ac ] a pair of queens | ||||
| gabitzatoade shows [ 4s, 4d ] a full house, fours full of queens | ||||
| gabitzatoade wins $ 1.52 USD from main pot with a full house, fours full of queens [ Qh, Qd, 4s, 4d, 4c ] | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Everleaf Gaming Game #196321538 | ||||
| ***** Hand history for game #196321538 ***** | ||||
| Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:35:34 | ||||
| Table Cortland XIV | ||||
| Seat 3 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 12.35 USD ) | ||||
| Seat 2: EricBlade (  $ 4.25 USD ) | ||||
| Seat 3: gabitzatoade (  $ 6.12 USD ) | ||||
| Seat 4: Miazza (  $ 5 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.34 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.30 USD ) | ||||
| N0pr3s3n7: posts small blind [$ 0.05 USD] | ||||
| Coolcatcool: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ Kc, Jd ] | ||||
| zlodeu123 raises [$ 0.35 USD] | ||||
| EricBlade calls [$ 0.35 USD] | ||||
| gabitzatoade folds | ||||
| N0pr3s3n7 folds | ||||
| Coolcatcool folds | ||||
| ** Dealing Flop ** [ 9s, 3c, Jc ] | ||||
| zlodeu123: bets [$ 0.60 USD] | ||||
| EricBlade raises [$ 1.80 USD] | ||||
| zlodeu123 folds | ||||
| EricBlade does not show cards | ||||
| EricBlade wins $ 1.95 USD from main pot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Everleaf Gaming Game #196321707 | ||||
| ***** Hand history for game #196321707 ***** | ||||
| Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:36:15 | ||||
| Table Cortland XIV | ||||
| Seat 5 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.40 USD ) | ||||
| Seat 2: EricBlade (  $ 5.25 USD ) | ||||
| Seat 3: gabitzatoade (  $ 6.12 USD ) | ||||
| Seat 4: Miazza (  $ 5 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.29 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.20 USD ) | ||||
| Coolcatcool: posts small blind [$ 0.05 USD] | ||||
| zlodeu123: posts big blind [$ 0.10 USD] | ||||
| Miazza sits out | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ 6d, 3d ] | ||||
| EricBlade folds | ||||
| gabitzatoade calls [$ 0.10 USD] | ||||
| N0pr3s3n7 raises [$ 0.30 USD] | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| gabitzatoade calls [$ 0.20 USD] | ||||
| ** Dealing Flop ** [ 8d, 4d, Td ] | ||||
| gabitzatoade checks | ||||
| N0pr3s3n7: bets [$ 0.50 USD] | ||||
| gabitzatoade folds | ||||
| N0pr3s3n7 does not show cards | ||||
| N0pr3s3n7 wins $ 0.72 USD from main pot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Everleaf Gaming Game #196321850 | ||||
| ***** Hand history for game #196321850 ***** | ||||
| Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:36:52 | ||||
| Table Cortland XIV | ||||
| Seat 6 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.30 USD ) | ||||
| Seat 2: EricBlade (  $ 5.25 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.82 USD ) | ||||
| Seat 4: Miazza (  $ 5 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.71 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.15 USD ) | ||||
| zlodeu123: posts small blind [$ 0.05 USD] | ||||
| EricBlade: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ Qh, Qd ] | ||||
| gabitzatoade folds | ||||
| N0pr3s3n7 folds | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade does not show cards | ||||
| EricBlade wins $ 0.10 USD from main pot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Everleaf Gaming Game #196321947 | ||||
| ***** Hand history for game #196321947 ***** | ||||
| Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:37:15 | ||||
| Table Cortland XIV | ||||
| Seat 1 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.25 USD ) | ||||
| Seat 2: EricBlade (  $ 5.30 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.82 USD ) | ||||
| Seat 4: Miazza (  $ 5 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.71 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.15 USD ) | ||||
| EricBlade: posts small blind [$ 0.05 USD] | ||||
| gabitzatoade: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ Ts, Ks ] | ||||
| N0pr3s3n7 folds | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade raises [$ 0.25 USD] | ||||
| gabitzatoade folds | ||||
| EricBlade does not show cards | ||||
| EricBlade wins $ 0.20 USD from main pot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Everleaf Gaming Game #196322013 | ||||
| ***** Hand history for game #196322013 ***** | ||||
| Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:37:32 | ||||
| Table Cortland XIV | ||||
| Seat 2 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.25 USD ) | ||||
| Seat 2: EricBlade (  $ 5.40 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.72 USD ) | ||||
| Seat 4: Miazza (  $ 5 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.71 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.15 USD ) | ||||
| gabitzatoade: posts small blind [$ 0.05 USD] | ||||
| Miazza: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ 2c, 4s ] | ||||
| N0pr3s3n7 folds | ||||
| Coolcatcool folds | ||||
| zlodeu123 raises [$ 0.35 USD] | ||||
| EricBlade folds | ||||
| gabitzatoade calls [$ 0.30 USD] | ||||
| Miazza folds | ||||
| ** Dealing Flop ** [ Ad, 6d, 6s ] | ||||
| gabitzatoade checks | ||||
| zlodeu123: bets [$ 0.60 USD] | ||||
| gabitzatoade calls [$ 0.60 USD] | ||||
| ** Dealing Turn ** [ Jc ] | ||||
| gabitzatoade checks | ||||
| zlodeu123 checks | ||||
| ** Dealing River ** [ Th ] | ||||
| gabitzatoade checks | ||||
| zlodeu123 checks | ||||
| zlodeu123 shows [ Ah, 8d ] two pairs, aces and sixes | ||||
| gabitzatoade shows [ Ac, 9c ] two pairs, aces and sixes | ||||
| gabitzatoade wins $ 0.95 USD from main pot with two pairs, aces and sixes [ Ac, Ad, Jc, 6d, 6s ] | ||||
| zlodeu123 wins $ 0.95 USD from main pot with two pairs, aces and sixes [ Ah, Ad, Jc, 6d, 6s ] | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Everleaf Gaming Game #196322188 | ||||
| ***** Hand history for game #196322188 ***** | ||||
| Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:38:16 | ||||
| Table Cortland XIV | ||||
| Seat 3 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.25 USD ) | ||||
| Seat 2: EricBlade (  $ 5.40 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.72 USD ) | ||||
| Seat 4: Miazza (  $ 4.90 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.71 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.15 USD ) | ||||
| Miazza: posts small blind [$ 0.05 USD] | ||||
| N0pr3s3n7: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ 7d, Kd ] | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade raises [$ 0.35 USD] | ||||
| gabitzatoade folds | ||||
| Miazza folds | ||||
| N0pr3s3n7 folds | ||||
| EricBlade does not show cards | ||||
| EricBlade wins $ 0.25 USD from main pot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -5,19 +5,19 @@ Table Cortland XIV | |||
| Seat 6 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 12.40 USD ) | ||||
| Seat 2: EricBlade (  $ 5 USD ) | ||||
| Seat 2: Hero (  $ 5 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.45 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.29 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.30 USD ) | ||||
| zlodeu123: posts small blind [$ 0.05 USD] | ||||
| EricBlade: posts big blind [$ 0.10 USD] | ||||
| Hero: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ 9h, Qd ] | ||||
| Dealt to Hero [ 9h, Qd ] | ||||
| gabitzatoade folds | ||||
| N0pr3s3n7 raises [$ 0.35 USD] | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade folds | ||||
| Hero folds | ||||
| N0pr3s3n7 does not show cards | ||||
| N0pr3s3n7 wins $ 0.25 USD from main pot | ||||
| 
 | ||||
|  | @ -30,21 +30,21 @@ Table Cortland XIV | |||
| Seat 1 is the button | ||||
| Total number of players: 5 | ||||
| Seat 1: zlodeu123 (  $ 12.35 USD ) | ||||
| Seat 2: EricBlade (  $ 4.90 USD ) | ||||
| Seat 2: Hero (  $ 4.90 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.45 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.44 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.30 USD ) | ||||
| EricBlade: posts small blind [$ 0.05 USD] | ||||
| Hero: posts small blind [$ 0.05 USD] | ||||
| gabitzatoade: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ Qd, 9d ] | ||||
| Dealt to Hero [ Qd, 9d ] | ||||
| N0pr3s3n7 folds | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade raises [$ 0.25 USD] | ||||
| Hero raises [$ 0.25 USD] | ||||
| gabitzatoade folds | ||||
| EricBlade does not show cards | ||||
| EricBlade wins $ 0.20 USD from main pot | ||||
| Hero does not show cards | ||||
| Hero wins $ 0.20 USD from main pot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -55,7 +55,7 @@ Table Cortland XIV | |||
| Seat 2 is the button | ||||
| Total number of players: 5 | ||||
| Seat 1: zlodeu123 (  $ 12.35 USD ) | ||||
| Seat 2: EricBlade (  $ 5 USD ) | ||||
| Seat 2: Hero (  $ 5 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.35 USD ) | ||||
| Seat 4: Miazza ( new player ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.44 USD ) | ||||
|  | @ -63,24 +63,24 @@ Seat 6: Coolcatcool (  $ 8.30 USD ) | |||
| gabitzatoade: posts small blind [$ 0.05 USD] | ||||
| N0pr3s3n7: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ 9c, Ac ] | ||||
| Dealt to Hero [ 9c, Ac ] | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade raises [$ 0.35 USD] | ||||
| Hero raises [$ 0.35 USD] | ||||
| gabitzatoade calls [$ 0.30 USD] | ||||
| N0pr3s3n7 folds | ||||
| ** Dealing Flop ** [ 4c, Kh, 6h ] | ||||
| gabitzatoade checks | ||||
| EricBlade: bets [$ 0.40 USD] | ||||
| Hero: bets [$ 0.40 USD] | ||||
| gabitzatoade calls [$ 0.40 USD] | ||||
| ** Dealing Turn ** [ Qh ] | ||||
| gabitzatoade checks | ||||
| Miazza has joined the table | ||||
| EricBlade checks | ||||
| Hero checks | ||||
| ** Dealing River ** [ Qd ] | ||||
| gabitzatoade checks | ||||
| EricBlade checks | ||||
| EricBlade shows [ 9c, Ac ] a pair of queens | ||||
| Hero checks | ||||
| Hero shows [ 9c, Ac ] a pair of queens | ||||
| gabitzatoade shows [ 4s, 4d ] a full house, fours full of queens | ||||
| gabitzatoade wins $ 1.52 USD from main pot with a full house, fours full of queens [ Qh, Qd, 4s, 4d, 4c ] | ||||
| 
 | ||||
|  | @ -93,7 +93,7 @@ Table Cortland XIV | |||
| Seat 3 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 12.35 USD ) | ||||
| Seat 2: EricBlade (  $ 4.25 USD ) | ||||
| Seat 2: Hero (  $ 4.25 USD ) | ||||
| Seat 3: gabitzatoade (  $ 6.12 USD ) | ||||
| Seat 4: Miazza (  $ 5 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.34 USD ) | ||||
|  | @ -101,18 +101,18 @@ Seat 6: Coolcatcool (  $ 8.30 USD ) | |||
| N0pr3s3n7: posts small blind [$ 0.05 USD] | ||||
| Coolcatcool: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ Kc, Jd ] | ||||
| Dealt to Hero [ Kc, Jd ] | ||||
| zlodeu123 raises [$ 0.35 USD] | ||||
| EricBlade calls [$ 0.35 USD] | ||||
| Hero calls [$ 0.35 USD] | ||||
| gabitzatoade folds | ||||
| N0pr3s3n7 folds | ||||
| Coolcatcool folds | ||||
| ** Dealing Flop ** [ 9s, 3c, Jc ] | ||||
| zlodeu123: bets [$ 0.60 USD] | ||||
| EricBlade raises [$ 1.80 USD] | ||||
| Hero raises [$ 1.80 USD] | ||||
| zlodeu123 folds | ||||
| EricBlade does not show cards | ||||
| EricBlade wins $ 1.95 USD from main pot | ||||
| Hero does not show cards | ||||
| Hero wins $ 1.95 USD from main pot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -123,7 +123,7 @@ Table Cortland XIV | |||
| Seat 5 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.40 USD ) | ||||
| Seat 2: EricBlade (  $ 5.25 USD ) | ||||
| Seat 2: Hero (  $ 5.25 USD ) | ||||
| Seat 3: gabitzatoade (  $ 6.12 USD ) | ||||
| Seat 4: Miazza (  $ 5 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.29 USD ) | ||||
|  | @ -132,8 +132,8 @@ Coolcatcool: posts small blind [$ 0.05 USD] | |||
| zlodeu123: posts big blind [$ 0.10 USD] | ||||
| Miazza sits out | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ 6d, 3d ] | ||||
| EricBlade folds | ||||
| Dealt to Hero [ 6d, 3d ] | ||||
| Hero folds | ||||
| gabitzatoade calls [$ 0.10 USD] | ||||
| N0pr3s3n7 raises [$ 0.30 USD] | ||||
| Coolcatcool folds | ||||
|  | @ -155,21 +155,21 @@ Table Cortland XIV | |||
| Seat 6 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.30 USD ) | ||||
| Seat 2: EricBlade (  $ 5.25 USD ) | ||||
| Seat 2: Hero (  $ 5.25 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.82 USD ) | ||||
| Seat 4: Miazza (  $ 5 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.71 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.15 USD ) | ||||
| zlodeu123: posts small blind [$ 0.05 USD] | ||||
| EricBlade: posts big blind [$ 0.10 USD] | ||||
| Hero: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ Qh, Qd ] | ||||
| Dealt to Hero [ Qh, Qd ] | ||||
| gabitzatoade folds | ||||
| N0pr3s3n7 folds | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade does not show cards | ||||
| EricBlade wins $ 0.10 USD from main pot | ||||
| Hero does not show cards | ||||
| Hero wins $ 0.10 USD from main pot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -180,22 +180,22 @@ Table Cortland XIV | |||
| Seat 1 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.25 USD ) | ||||
| Seat 2: EricBlade (  $ 5.30 USD ) | ||||
| Seat 2: Hero (  $ 5.30 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.82 USD ) | ||||
| Seat 4: Miazza (  $ 5 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.71 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.15 USD ) | ||||
| EricBlade: posts small blind [$ 0.05 USD] | ||||
| Hero: posts small blind [$ 0.05 USD] | ||||
| gabitzatoade: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ Ts, Ks ] | ||||
| Dealt to Hero [ Ts, Ks ] | ||||
| N0pr3s3n7 folds | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade raises [$ 0.25 USD] | ||||
| Hero raises [$ 0.25 USD] | ||||
| gabitzatoade folds | ||||
| EricBlade does not show cards | ||||
| EricBlade wins $ 0.20 USD from main pot | ||||
| Hero does not show cards | ||||
| Hero wins $ 0.20 USD from main pot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -206,7 +206,7 @@ Table Cortland XIV | |||
| Seat 2 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.25 USD ) | ||||
| Seat 2: EricBlade (  $ 5.40 USD ) | ||||
| Seat 2: Hero (  $ 5.40 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.72 USD ) | ||||
| Seat 4: Miazza (  $ 5 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.71 USD ) | ||||
|  | @ -214,11 +214,11 @@ Seat 6: Coolcatcool (  $ 8.15 USD ) | |||
| gabitzatoade: posts small blind [$ 0.05 USD] | ||||
| Miazza: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ 2c, 4s ] | ||||
| Dealt to Hero [ 2c, 4s ] | ||||
| N0pr3s3n7 folds | ||||
| Coolcatcool folds | ||||
| zlodeu123 raises [$ 0.35 USD] | ||||
| EricBlade folds | ||||
| Hero folds | ||||
| gabitzatoade calls [$ 0.30 USD] | ||||
| Miazza folds | ||||
| ** Dealing Flop ** [ Ad, 6d, 6s ] | ||||
|  | @ -245,7 +245,7 @@ Table Cortland XIV | |||
| Seat 3 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.25 USD ) | ||||
| Seat 2: EricBlade (  $ 5.40 USD ) | ||||
| Seat 2: Hero (  $ 5.40 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.72 USD ) | ||||
| Seat 4: Miazza (  $ 4.90 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.71 USD ) | ||||
|  | @ -253,15 +253,15 @@ Seat 6: Coolcatcool (  $ 8.15 USD ) | |||
| Miazza: posts small blind [$ 0.05 USD] | ||||
| N0pr3s3n7: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ 7d, Kd ] | ||||
| Dealt to Hero [ 7d, Kd ] | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade raises [$ 0.35 USD] | ||||
| Hero raises [$ 0.35 USD] | ||||
| gabitzatoade folds | ||||
| Miazza folds | ||||
| N0pr3s3n7 folds | ||||
| EricBlade does not show cards | ||||
| EricBlade wins $ 0.25 USD from main pot | ||||
| Hero does not show cards | ||||
| Hero wins $ 0.25 USD from main pot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -272,7 +272,7 @@ Table Cortland XIV | |||
| Seat 4 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.25 USD ) | ||||
| Seat 2: EricBlade (  $ 5.55 USD ) | ||||
| Seat 2: Hero (  $ 5.55 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.72 USD ) | ||||
| Seat 4: Miazza (  $ 4.85 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.61 USD ) | ||||
|  | @ -280,9 +280,9 @@ Seat 6: Coolcatcool (  $ 8.15 USD ) | |||
| N0pr3s3n7: posts small blind [$ 0.05 USD] | ||||
| Coolcatcool: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ 6d, Kc ] | ||||
| Dealt to Hero [ 6d, Kc ] | ||||
| zlodeu123 folds | ||||
| EricBlade folds | ||||
| Hero folds | ||||
| gabitzatoade folds | ||||
| Miazza raises [$ 0.35 USD] | ||||
| N0pr3s3n7 folds | ||||
|  | @ -300,7 +300,7 @@ Table Cortland XIV | |||
| Seat 5 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.25 USD ) | ||||
| Seat 2: EricBlade (  $ 5.55 USD ) | ||||
| Seat 2: Hero (  $ 5.55 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.72 USD ) | ||||
| Seat 4: Miazza (  $ 4.50 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.56 USD ) | ||||
|  | @ -308,8 +308,8 @@ Seat 6: Coolcatcool (  $ 8.55 USD ) | |||
| Coolcatcool: posts small blind [$ 0.05 USD] | ||||
| zlodeu123: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ 3h, 9s ] | ||||
| EricBlade folds | ||||
| Dealt to Hero [ 3h, 9s ] | ||||
| Hero folds | ||||
| gabitzatoade folds | ||||
| Miazza folds | ||||
| N0pr3s3n7 folds | ||||
|  | @ -326,22 +326,22 @@ Table Cortland XIV | |||
| Seat 6 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.30 USD ) | ||||
| Seat 2: EricBlade (  $ 5.55 USD ) | ||||
| Seat 2: Hero (  $ 5.55 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.72 USD ) | ||||
| Seat 4: Miazza (  $ 4.50 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.56 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.50 USD ) | ||||
| zlodeu123: posts small blind [$ 0.05 USD] | ||||
| EricBlade: posts big blind [$ 0.10 USD] | ||||
| Hero: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ Kd, 4h ] | ||||
| Dealt to Hero [ Kd, 4h ] | ||||
| gabitzatoade folds | ||||
| Miazza folds | ||||
| N0pr3s3n7 folds | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade does not show cards | ||||
| EricBlade wins $ 0.10 USD from main pot | ||||
| Hero does not show cards | ||||
| Hero wins $ 0.10 USD from main pot | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -352,25 +352,25 @@ Table Cortland XIV | |||
| Seat 1 is the button | ||||
| Total number of players: 6 | ||||
| Seat 1: zlodeu123 (  $ 11.25 USD ) | ||||
| Seat 2: EricBlade (  $ 5.60 USD ) | ||||
| Seat 2: Hero (  $ 5.60 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.72 USD ) | ||||
| Seat 4: Miazza (  $ 4.50 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.56 USD ) | ||||
| Seat 6: Coolcatcool (  $ 8.50 USD ) | ||||
| EricBlade: posts small blind [$ 0.05 USD] | ||||
| Hero: posts small blind [$ 0.05 USD] | ||||
| gabitzatoade: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ 9h, Th ] | ||||
| Dealt to Hero [ 9h, Th ] | ||||
| Miazza folds | ||||
| N0pr3s3n7 folds | ||||
| Coolcatcool folds | ||||
| zlodeu123 folds | ||||
| EricBlade raises [$ 0.25 USD] | ||||
| Hero raises [$ 0.25 USD] | ||||
| gabitzatoade calls [$ 0.20 USD] | ||||
| ** Dealing Flop ** [ 3d, 5d, 6c ] | ||||
| EricBlade checks | ||||
| Hero checks | ||||
| gabitzatoade: bets [$ 0.40 USD] | ||||
| EricBlade folds | ||||
| Hero folds | ||||
| gabitzatoade does not show cards | ||||
| gabitzatoade wins $ 0.57 USD from main pot | ||||
| 
 | ||||
|  | @ -383,7 +383,7 @@ Table Cortland XIV | |||
| Seat 2 is the button | ||||
| Total number of players: 5 | ||||
| Seat 1: zlodeu123 (  $ 11.25 USD ) | ||||
| Seat 2: EricBlade (  $ 5.30 USD ) | ||||
| Seat 2: Hero (  $ 5.30 USD ) | ||||
| Seat 3: gabitzatoade (  $ 5.99 USD ) | ||||
| Seat 4: Miazza (  $ 4.50 USD ) | ||||
| Seat 5: N0pr3s3n7 (  $ 10.56 USD ) | ||||
|  | @ -391,10 +391,10 @@ Seat 6: SAVCOMP ( new player ) | |||
| gabitzatoade: posts small blind [$ 0.05 USD] | ||||
| Miazza: posts big blind [$ 0.10 USD] | ||||
| ** Dealing down cards ** | ||||
| Dealt to EricBlade [ As, 4d ] | ||||
| Dealt to Hero [ As, 4d ] | ||||
| N0pr3s3n7 folds | ||||
| zlodeu123 raises [$ 0.35 USD] | ||||
| EricBlade folds | ||||
| Hero folds | ||||
| gabitzatoade calls [$ 0.30 USD] | ||||
| SAVCOMP has joined the table | ||||
| Miazza folds | ||||
|  |  | |||
|  | @ -4,15 +4,15 @@ Seat 2: stark00 ($4.41) | |||
| Seat 3: T0r3x ($12.97) | ||||
| Seat 4: yrthligar ($15) | ||||
| Seat 5: MANUTD ($8.56) | ||||
| Seat 6: gimick ($2) | ||||
| Seat 6: Hero ($2) | ||||
| Seat 7: vision ($2.97) | ||||
| Seat 8: shleekom ($2) | ||||
| Seat 9: proud2Bwhack ($8.77) | ||||
| MANUTD posts the small blind of $0.02 | ||||
| gimick posts the big blind of $0.05 | ||||
| Hero posts the big blind of $0.05 | ||||
| The button is in seat #4 | ||||
| *** HOLE CARDS *** | ||||
| Dealt to gimick [Qs 4d] | ||||
| Dealt to Hero [Qs 4d] | ||||
| vision folds | ||||
| shleekom folds | ||||
| proud2Bwhack folds | ||||
|  | @ -23,9 +23,9 @@ yrthligar has 8 seconds left to act | |||
| yrthligar has timed out | ||||
| yrthligar folds | ||||
| MANUTD folds | ||||
| Uncalled bet of $0.03 returned to gimick | ||||
| gimick mucks | ||||
| gimick wins the pot ($0.04) | ||||
| Uncalled bet of $0.03 returned to Hero | ||||
| Hero mucks | ||||
| Hero wins the pot ($0.04) | ||||
| *** SUMMARY *** | ||||
| Total pot $0.04 | Rake $0 | ||||
| Seat 1: ronaldd1969 didn't bet (folded) | ||||
|  | @ -33,7 +33,7 @@ Seat 2: stark00 didn't bet (folded) | |||
| Seat 3: T0r3x didn't bet (folded) | ||||
| Seat 4: yrthligar (button) didn't bet (folded) | ||||
| Seat 5: MANUTD (small blind) folded before the Flop | ||||
| Seat 6: gimick (big blind) collected ($0.04), mucked | ||||
| Seat 6: Hero (big blind) collected ($0.04), mucked | ||||
| Seat 7: vision didn't bet (folded) | ||||
| Seat 8: shleekom didn't bet (folded) | ||||
| Seat 9: proud2Bwhack didn't bet (folded) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| Full Tilt Poker Game #22821112219: Table Venice (6 max) - $0.01/$0.02 - No Limit Hold'em - 15:42:59 ET - 2010/08/04 | ||||
| Seat 1: gimick ($0.70) | ||||
| Seat 1: Hero ($0.70) | ||||
| Seat 2: player2 ($0.70) | ||||
| Seat 3: player1 ($0.98) | ||||
| Seat 4: player3 ($5.14) | ||||
|  | @ -7,24 +7,24 @@ Seat 5: player4 ($2) | |||
| Seat 6: player5 ($0.80) | ||||
| player1 posts the small blind of $0.01 | ||||
| player3 posts the big blind of $0.02 | ||||
| gimick posts $0.02 | ||||
| Hero posts $0.02 | ||||
| 5 seconds left to act | ||||
| player5 posts $0.02 | ||||
| The button is in seat #2 | ||||
| *** HOLE CARDS *** | ||||
| Dealt to gimick [Qd Jc] | ||||
| Dealt to Hero [Qd Jc] | ||||
| player4 folds | ||||
| player5 checks | ||||
| gimick checks | ||||
| Hero checks | ||||
| player1 calls $0.01 | ||||
| player3 checks | ||||
| *** FLOP *** [3d As 2h] | ||||
| player1 checks | ||||
| player3 checks | ||||
| player5 bets $0.02 | ||||
| gimick folds | ||||
| Hero folds | ||||
| player1 folds | ||||
| gimick is sitting out | ||||
| Hero is sitting out | ||||
| player3 calls $0.02 | ||||
| *** TURN *** [3d As 2h] [4h] | ||||
| player3 checks | ||||
|  | @ -41,7 +41,7 @@ player5 wins the pot ($0.15) | |||
| *** SUMMARY *** | ||||
| Total pot $0.16 | Rake $0.01 | ||||
| Board: [3d As 2h 4h 7c] | ||||
| Seat 1: gimick folded on the Flop | ||||
| Seat 1: Hero folded on the Flop | ||||
| Seat 2: player2 (button) is sitting out | ||||
| Seat 3: player1 (small blind) folded on the Flop | ||||
| Seat 4: player3 (big blind) folded on the River | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							|  | @ -0,0 +1,32 @@ | |||
| {   'boardcard1': 0, | ||||
|     'boardcard2': 0, | ||||
|     'boardcard3': 0, | ||||
|     'boardcard4': 0, | ||||
|     'boardcard5': 0, | ||||
|     'gametypeId': 7, | ||||
|     'importTime': None, | ||||
|     'maxSeats': 6, | ||||
|     'playersAtShowdown': 1, | ||||
|     'playersAtStreet-1': 6, | ||||
|     'playersAtStreet0': 1, | ||||
|     'playersAtStreet1': 1, | ||||
|     'playersAtStreet2': 1, | ||||
|     'playersAtStreet3': 1, | ||||
|     'playersAtStreet4': 0, | ||||
|     'playersVpi': 1, | ||||
|     'seats': 6, | ||||
|     'showdownPot': 0, | ||||
|     'siteHandNo': u'20000000801', | ||||
|     'startTime': datetime.datetime(2010, 8, 13, 19, 59, 2, tzinfo=pytz.utc), | ||||
|     'street0Raises': 1, | ||||
|     'street1Pot': 0, | ||||
|     'street1Raises': 0, | ||||
|     'street2Pot': 0, | ||||
|     'street2Raises': 0, | ||||
|     'street3Pot': 0, | ||||
|     'street3Raises': 0, | ||||
|     'street4Pot': 0, | ||||
|     'street4Raises': 0, | ||||
|     'tableName': u'Douai\u2013Lens', | ||||
|     'texture': None, | ||||
|     'tourneyId': None} | ||||
|  | @ -374,7 +374,7 @@ | |||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player5': {   'card1': 1, | ||||
|     u'Hero': {   'card1': 1, | ||||
|                     'card2': 34, | ||||
|                     'card3': 0, | ||||
|                     'card4': 0, | ||||
|  |  | |||
|  | @ -4,15 +4,15 @@ Seat 2: stark00 ($4.41) | |||
| Seat 3: T0r3x ($12.97) | ||||
| Seat 4: yrthligar ($15) | ||||
| Seat 5: MANUTD ($8.56) | ||||
| Seat 6: gimick ($2) | ||||
| Seat 6: Hero ($2) | ||||
| Seat 7: vision ($2.97) | ||||
| Seat 8: shleekom ($2) | ||||
| Seat 9: proud2Bwhack ($8.77) | ||||
| MANUTD posts the small blind of $0.02 | ||||
| gimick posts the big blind of $0.05 | ||||
| Hero posts the big blind of $0.05 | ||||
| The button is in seat #4 | ||||
| *** HOLE CARDS *** | ||||
| Dealt to gimick [Qs 4d] | ||||
| Dealt to Hero [Qs 4d] | ||||
| vision folds | ||||
| shleekom folds | ||||
| proud2Bwhack folds | ||||
|  | @ -23,9 +23,9 @@ yrthligar has 8 seconds left to act | |||
| yrthligar has timed out | ||||
| yrthligar folds | ||||
| MANUTD folds | ||||
| Uncalled bet of $0.03 returned to gimick | ||||
| gimick mucks | ||||
| gimick wins the pot ($0.04) | ||||
| Uncalled bet of $0.03 returned to Hero | ||||
| Hero mucks | ||||
| Hero wins the pot ($0.04) | ||||
| *** SUMMARY *** | ||||
| Total pot $0.04 | Rake $0 | ||||
| Seat 1: ronaldd1969 didn't bet (folded) | ||||
|  | @ -33,7 +33,7 @@ Seat 2: stark00 didn't bet (folded) | |||
| Seat 3: T0r3x didn't bet (folded) | ||||
| Seat 4: yrthligar (button) didn't bet (folded) | ||||
| Seat 5: MANUTD (small blind) folded before the Flop | ||||
| Seat 6: gimick (big blind) collected ($0.04), mucked | ||||
| Seat 6: Hero (big blind) collected ($0.04), mucked | ||||
| Seat 7: vision didn't bet (folded) | ||||
| Seat 8: shleekom didn't bet (folded) | ||||
| Seat 9: proud2Bwhack didn't bet (folded) | ||||
|  |  | |||
|  | @ -0,0 +1,32 @@ | |||
| {   'boardcard1': 0, | ||||
|     'boardcard2': 0, | ||||
|     'boardcard3': 0, | ||||
|     'boardcard4': 0, | ||||
|     'boardcard5': 0, | ||||
|     'gametypeId': 6, | ||||
|     'importTime': None, | ||||
|     'maxSeats': 9, | ||||
|     'playersAtShowdown': 0, | ||||
|     'playersAtStreet-1': 8, | ||||
|     'playersAtStreet0': 0, | ||||
|     'playersAtStreet1': 0, | ||||
|     'playersAtStreet2': 0, | ||||
|     'playersAtStreet3': 0, | ||||
|     'playersAtStreet4': 0, | ||||
|     'playersVpi': 0, | ||||
|     'seats': 9, | ||||
|     'showdownPot': 0, | ||||
|     'siteHandNo': u'22488827305', | ||||
|     'startTime': datetime.datetime(2010, 7, 21, 19, 13, tzinfo=pytz.utc), | ||||
|     'street0Raises': 0, | ||||
|     'street1Pot': 0, | ||||
|     'street1Raises': 0, | ||||
|     'street2Pot': 0, | ||||
|     'street2Raises': 0, | ||||
|     'street3Pot': 0, | ||||
|     'street3Raises': 0, | ||||
|     'street4Pot': 0, | ||||
|     'street4Raises': 0, | ||||
|     'tableName': u'Flash', | ||||
|     'texture': None, | ||||
|     'tourneyId': None} | ||||
|  | @ -186,7 +186,7 @@ | |||
|                   'wonWhenSeenStreet2': 0.0, | ||||
|                   'wonWhenSeenStreet3': 0.0, | ||||
|                   'wonWhenSeenStreet4': 0.0}, | ||||
|     u'gimick': {   'card1': 50, | ||||
|     u'Hero': {   'card1': 50, | ||||
|                    'card2': 16, | ||||
|                    'card3': 0, | ||||
|                    'card4': 0, | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -0,0 +1,32 @@ | |||
| {   'boardcard1': 37, | ||||
|     'boardcard2': 20, | ||||
|     'boardcard3': 8, | ||||
|     'boardcard4': 51, | ||||
|     'boardcard5': 5, | ||||
|     'gametypeId': 8, | ||||
|     'importTime': None, | ||||
|     'maxSeats': 6, | ||||
|     'playersAtShowdown': 2, | ||||
|     'playersAtStreet-1': 6, | ||||
|     'playersAtStreet0': 4, | ||||
|     'playersAtStreet1': 3, | ||||
|     'playersAtStreet2': 3, | ||||
|     'playersAtStreet3': 2, | ||||
|     'playersAtStreet4': 0, | ||||
|     'playersVpi': 3, | ||||
|     'seats': 6, | ||||
|     'showdownPot': 0, | ||||
|     'siteHandNo': u'18932478237', | ||||
|     'startTime': datetime.datetime(2010, 3, 3, 16, 37, 56, tzinfo=pytz.utc), | ||||
|     'street0Raises': 0, | ||||
|     'street1Pot': 20, | ||||
|     'street1Raises': 1, | ||||
|     'street2Pot': 50, | ||||
|     'street2Raises': 1, | ||||
|     'street3Pot': 100, | ||||
|     'street3Raises': 1, | ||||
|     'street4Pot': 0, | ||||
|     'street4Raises': 0, | ||||
|     'tableName': u'Gaines', | ||||
|     'texture': None, | ||||
|     'tourneyId': None} | ||||
|  | @ -280,7 +280,7 @@ | |||
|                    'wonWhenSeenStreet2': 0.0, | ||||
|                    'wonWhenSeenStreet3': 0.0, | ||||
|                    'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Sorrowful': {   'card1': 15, | ||||
|     u'Hero': {   'card1': 15, | ||||
|                       'card2': 10, | ||||
|                       'card3': 42, | ||||
|                       'card4': 25, | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							|  | @ -3,12 +3,12 @@ Seat 1: bllodshot ($31), is sitting out | |||
| Seat 2: kwuiyhw ($62.50) | ||||
| Seat 3: chasrigg ($297.50) | ||||
| Seat 4: goulartarm ($94.50) | ||||
| Seat 5: ExecDec ($265.50) | ||||
| Seat 5: Hero ($265.50) | ||||
| Seat 6: arjun1111 ($41.50) | ||||
| Seat 7: thebear666 ($101) | ||||
| Seat 8: FILL A RACK ($128.50) | ||||
| chasrigg antes $0.50 | ||||
| ExecDec antes $0.50 | ||||
| Hero antes $0.50 | ||||
| kwuiyhw antes $0.50 | ||||
| arjun1111 antes $0.50 | ||||
| FILL A RACK antes $0.50 | ||||
|  | @ -18,7 +18,7 @@ goulartarm antes $0.50 | |||
| Dealt to kwuiyhw [9c] | ||||
| Dealt to chasrigg [Jh] | ||||
| Dealt to goulartarm [Qs] | ||||
| Dealt to ExecDec [5s 2h] [Th] | ||||
| Dealt to Hero [5s 2h] [Th] | ||||
| Dealt to arjun1111 [As] | ||||
| Dealt to thebear666 [7s] | ||||
| Dealt to FILL A RACK [Ad] | ||||
|  | @ -31,7 +31,7 @@ chasrigg has 15 seconds left to act | |||
| shasatipu adds $316 | ||||
| chasrigg folds | ||||
| goulartarm folds | ||||
| ExecDec folds | ||||
| Hero folds | ||||
| arjun1111 completes it to $3 | ||||
| thebear666 calls $2 | ||||
| *** 4TH STREET *** | ||||
|  | @ -48,7 +48,7 @@ Seat 1: bllodshot is sitting out | |||
| Seat 2: kwuiyhw folded on 3rd St. | ||||
| Seat 3: chasrigg folded on 3rd St. | ||||
| Seat 4: goulartarm folded on 3rd St. | ||||
| Seat 5: ExecDec folded on 3rd St. | ||||
| Seat 5: Hero folded on 3rd St. | ||||
| Seat 6: arjun1111 collected ($9.50), mucked | ||||
| Seat 7: thebear666 folded on 4th St. | ||||
| Seat 8: FILL A RACK folded on 3rd St. | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| {   u'ExecDec': {   'card1': 43, | ||||
| {   u'Hero': {   'card1': 43, | ||||
|                     'card2': 1, | ||||
|                     'card3': 9, | ||||
|                     'card4': 0, | ||||
|  |  | |||
|  | @ -3,13 +3,13 @@ Seat 1: bllodshot ($52.50) | |||
| Seat 2: kwuiyhw ($48.50) | ||||
| Seat 3: chasrigg ($284) | ||||
| Seat 4: goulartarm ($80) | ||||
| Seat 5: ExecDec ($223.50) | ||||
| Seat 5: Hero ($223.50) | ||||
| Seat 7: thebear666 ($87.50) | ||||
| Seat 8: FILL A RACK ($138) | ||||
| kwuiyhw antes $0.50 | ||||
| chasrigg antes $0.50 | ||||
| bllodshot antes $0.50 | ||||
| ExecDec antes $0.50 | ||||
| Hero antes $0.50 | ||||
| FILL A RACK antes $0.50 | ||||
| thebear666 antes $0.50 | ||||
| goulartarm antes $0.50 | ||||
|  | @ -18,12 +18,12 @@ Dealt to bllodshot [9c] | |||
| Dealt to kwuiyhw [Kc] | ||||
| Dealt to chasrigg [2s] | ||||
| Dealt to goulartarm [2c] | ||||
| Dealt to ExecDec [5h 3c] [Td] | ||||
| Dealt to Hero [5h 3c] [Td] | ||||
| Dealt to thebear666 [3h] | ||||
| Dealt to FILL A RACK [6c] | ||||
| goulartarm is low with [2c] | ||||
| goulartarm brings in for $1 | ||||
| ExecDec folds | ||||
| Hero folds | ||||
| thebear666 folds | ||||
| FILL A RACK folds | ||||
| bllodshot folds | ||||
|  | @ -39,7 +39,7 @@ Seat 1: bllodshot folded on 3rd St. | |||
| Seat 2: kwuiyhw collected ($5.50), mucked | ||||
| Seat 3: chasrigg folded on 3rd St. | ||||
| Seat 4: goulartarm folded on 3rd St. | ||||
| Seat 5: ExecDec folded on 3rd St. | ||||
| Seat 5: Hero folded on 3rd St. | ||||
| Seat 7: thebear666 folded on 3rd St. | ||||
| Seat 8: FILL A RACK folded on 3rd St. | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,12 +3,12 @@ Seat 1: bllodshot ($31), is sitting out | |||
| Seat 2: kwuiyhw ($67) | ||||
| Seat 3: chasrigg ($294.50) | ||||
| Seat 4: goulartarm ($92.50) | ||||
| Seat 5: ExecDec ($306) | ||||
| Seat 5: Hero ($306) | ||||
| Seat 6: arjun1111 ($37) | ||||
| Seat 7: thebear666 ($84.50) | ||||
| Seat 8: shasatipu ($293.50) | ||||
| chasrigg antes $0.50 | ||||
| ExecDec antes $0.50 | ||||
| Hero antes $0.50 | ||||
| kwuiyhw antes $0.50 | ||||
| thebear666 antes $0.50 | ||||
| arjun1111 antes $0.50 | ||||
|  | @ -18,7 +18,7 @@ goulartarm antes $0.50 | |||
| Dealt to kwuiyhw [Th] | ||||
| Dealt to chasrigg [8h] | ||||
| Dealt to goulartarm [5c] | ||||
| Dealt to ExecDec [Td Jd] [As] | ||||
| Dealt to Hero [Td Jd] [As] | ||||
| Dealt to arjun1111 [8c] | ||||
| Dealt to thebear666 [Kc] | ||||
| Dealt to shasatipu [3c] | ||||
|  | @ -28,51 +28,51 @@ kwuiyhw folds | |||
| chasrigg folds | ||||
| kwuiyhw is sitting out | ||||
| goulartarm folds | ||||
| ExecDec completes it to $3 | ||||
| Hero completes it to $3 | ||||
| arjun1111 calls $3 | ||||
| thebear666 raises to $6 | ||||
| shasatipu has 15 seconds left to act | ||||
| shasatipu calls $5 | ||||
| ExecDec calls $3 | ||||
| Hero calls $3 | ||||
| arjun1111 calls $3 | ||||
| *** 4TH STREET *** | ||||
| Dealt to ExecDec [Td Jd As] [Jc] | ||||
| Dealt to Hero [Td Jd As] [Jc] | ||||
| Dealt to arjun1111 [8c] [3h] | ||||
| Dealt to thebear666 [Kc] [2h] | ||||
| Dealt to shasatipu [3c] [2d] | ||||
| ExecDec checks | ||||
| Hero checks | ||||
| arjun1111 checks | ||||
| thebear666 has 15 seconds left to act | ||||
| thebear666 bets $3 | ||||
| shasatipu folds | ||||
| ExecDec raises to $6 | ||||
| Hero raises to $6 | ||||
| arjun1111 folds | ||||
| thebear666 calls $3 | ||||
| *** 5TH STREET *** | ||||
| Dealt to ExecDec [Td Jd As Jc] [Js] | ||||
| Dealt to Hero [Td Jd As Jc] [Js] | ||||
| Dealt to thebear666 [Kc 2h] [3s] | ||||
| ExecDec bets $6 | ||||
| Hero bets $6 | ||||
| thebear666 calls $6 | ||||
| *** 6TH STREET *** | ||||
| Dealt to ExecDec [Td Jd As Jc Js] [7h] | ||||
| Dealt to Hero [Td Jd As Jc Js] [7h] | ||||
| Dealt to thebear666 [Kc 2h 3s] [4d] | ||||
| ExecDec bets $6 | ||||
| Hero bets $6 | ||||
| thebear666 calls $6 | ||||
| *** 7TH STREET *** | ||||
| Dealt to ExecDec [Td Jd As Jc Js 7h] [2s] | ||||
| ExecDec bets $6 | ||||
| Dealt to Hero [Td Jd As Jc Js 7h] [2s] | ||||
| Hero bets $6 | ||||
| thebear666 calls $6 | ||||
| *** SHOW DOWN *** | ||||
| ExecDec shows [Jd Td As Jc Js 7h 2s] three of a kind, Jacks | ||||
| Hero shows [Jd Td As Jc Js 7h 2s] three of a kind, Jacks | ||||
| thebear666 mucks | ||||
| ExecDec wins the pot ($72.50) with three of a kind, Jacks | ||||
| Hero wins the pot ($72.50) with three of a kind, Jacks | ||||
| *** SUMMARY *** | ||||
| Total pot $75.50 | Rake $3 | ||||
| Seat 1: bllodshot is sitting out | ||||
| Seat 2: kwuiyhw folded on 3rd St. | ||||
| Seat 3: chasrigg folded on 3rd St. | ||||
| Seat 4: goulartarm folded on 3rd St. | ||||
| Seat 5: ExecDec showed [Jd Td As Jc Js 7h 2s] and won ($72.50) with three of a kind, Jacks | ||||
| Seat 5: Hero showed [Jd Td As Jc Js 7h 2s] and won ($72.50) with three of a kind, Jacks | ||||
| Seat 6: arjun1111 folded on 4th St. | ||||
| Seat 7: thebear666 mucked [Kd 7c Kc 2h 3s 4d 5h] - a pair of Kings | ||||
| Seat 8: shasatipu folded on 4th St. | ||||
|  |  | |||
|  | @ -3,13 +3,13 @@ Seat 1: bllodshot ($38) | |||
| Seat 2: kwuiyhw ($64.50) | ||||
| Seat 3: chasrigg ($298.50) | ||||
| Seat 4: goulartarm ($98.50) | ||||
| Seat 5: ExecDec ($266.50) | ||||
| Seat 5: Hero ($266.50) | ||||
| Seat 6: arjun1111 ($42.50) | ||||
| Seat 7: thebear666 ($84) | ||||
| Seat 8: FILL A RACK ($129.50) | ||||
| thebear666 antes $0.50 | ||||
| kwuiyhw antes $0.50 | ||||
| ExecDec antes $0.50 | ||||
| Hero antes $0.50 | ||||
| chasrigg antes $0.50 | ||||
| arjun1111 antes $0.50 | ||||
| bllodshot antes $0.50 | ||||
|  | @ -20,7 +20,7 @@ Dealt to bllodshot [8h] | |||
| Dealt to kwuiyhw [4c] | ||||
| Dealt to chasrigg [7c] | ||||
| Dealt to goulartarm [6d] | ||||
| Dealt to ExecDec [3d 4s] [4d] | ||||
| Dealt to Hero [3d 4s] [4d] | ||||
| Dealt to arjun1111 [8s] | ||||
| Dealt to thebear666 [Ac] | ||||
| Dealt to FILL A RACK [Jh] | ||||
|  | @ -28,8 +28,8 @@ kwuiyhw is low with [4c] | |||
| kwuiyhw brings in for $1 | ||||
| chasrigg folds | ||||
| goulartarm folds | ||||
| ExecDec has 15 seconds left to act | ||||
| ExecDec folds | ||||
| Hero has 15 seconds left to act | ||||
| Hero folds | ||||
| arjun1111 folds | ||||
| thebear666 completes it to $3 | ||||
| FILL A RACK folds | ||||
|  | @ -55,7 +55,7 @@ Seat 1: bllodshot folded on 5th St. | |||
| Seat 2: kwuiyhw folded on 3rd St. | ||||
| Seat 3: chasrigg folded on 3rd St. | ||||
| Seat 4: goulartarm folded on 3rd St. | ||||
| Seat 5: ExecDec folded on 3rd St. | ||||
| Seat 5: Hero folded on 3rd St. | ||||
| Seat 6: arjun1111 folded on 3rd St. | ||||
| Seat 7: thebear666 collected ($17), mucked | ||||
| Seat 8: FILL A RACK folded on 3rd St. | ||||
|  |  | |||
|  | @ -3,11 +3,11 @@ Seat 1: bllodshot ($34) | |||
| Seat 2: kwuiyhw ($78.50) | ||||
| Seat 3: chasrigg ($299.50) | ||||
| Seat 4: goulartarm ($100.50) | ||||
| Seat 5: ExecDec ($249.50) | ||||
| Seat 5: Hero ($249.50) | ||||
| Seat 6: arjun1111 ($43.50) | ||||
| Seat 7: thebear666 ($86) | ||||
| Seat 8: FILL A RACK ($131.50) | ||||
| ExecDec antes $0.50 | ||||
| Hero antes $0.50 | ||||
| chasrigg antes $0.50 | ||||
| arjun1111 antes $0.50 | ||||
| bllodshot antes $0.50 | ||||
|  | @ -20,13 +20,13 @@ Dealt to bllodshot [Qc] | |||
| Dealt to kwuiyhw [5d] | ||||
| Dealt to chasrigg [9h] | ||||
| Dealt to goulartarm [3s] | ||||
| Dealt to ExecDec [4s Jc] [Th] | ||||
| Dealt to Hero [4s Jc] [Th] | ||||
| Dealt to arjun1111 [Qd] | ||||
| Dealt to thebear666 [8c] | ||||
| Dealt to FILL A RACK [5h] | ||||
| goulartarm is low with [3s] | ||||
| goulartarm brings in for $1 | ||||
| ExecDec folds | ||||
| Hero folds | ||||
| arjun1111 folds | ||||
| thebear666 folds | ||||
| FILL A RACK folds | ||||
|  | @ -43,7 +43,7 @@ Seat 1: bllodshot collected ($6), mucked | |||
| Seat 2: kwuiyhw folded on 3rd St. | ||||
| Seat 3: chasrigg folded on 3rd St. | ||||
| Seat 4: goulartarm folded on 3rd St. | ||||
| Seat 5: ExecDec folded on 3rd St. | ||||
| Seat 5: Hero folded on 3rd St. | ||||
| Seat 6: arjun1111 folded on 3rd St. | ||||
| Seat 7: thebear666 folded on 3rd St. | ||||
| Seat 8: FILL A RACK folded on 3rd St. | ||||
|  |  | |||
|  | @ -1,28 +1,28 @@ | |||
| Full Tilt Poker Game #11111111813: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:14:27 ET - 2010/06/10 | ||||
| Seat 1: Player4 ($7.40) | ||||
| Seat 2: Player13 ($77.20) | ||||
| Seat 3: Player1 ($111.80) | ||||
| Seat 2: Hero3 ($77.20) | ||||
| Seat 3: Hero ($111.80) | ||||
| Seat 5: Player5 ($118.70) | ||||
| Seat 7: Player6 ($36.30) | ||||
| Player1 antes $0.40 | ||||
| Hero antes $0.40 | ||||
| Player4 antes $0.40 | ||||
| Player13 antes $0.40 | ||||
| Hero3 antes $0.40 | ||||
| Player5 antes $0.40 | ||||
| Player6 antes $0.40 | ||||
| *** 3RD STREET *** | ||||
| Dealt to Player4 [9c] | ||||
| Dealt to Player13 [8s] | ||||
| Dealt to Player1 [Ac 9h] [3s] | ||||
| Dealt to Hero3 [8s] | ||||
| Dealt to Hero [Ac 9h] [3s] | ||||
| Dealt to Player5 [3c] | ||||
| Dealt to Player6 [Qs] | ||||
| Player5 is low with [3c] | ||||
| Player5 brings in for $0.50 | ||||
| Player6 folds | ||||
| Player4 completes it to $2 | ||||
| Player14 sits down | ||||
| Player13 folds | ||||
| Player1 folds | ||||
| Player14 adds $152 | ||||
| Hero4 sits down | ||||
| Hero3 folds | ||||
| Hero folds | ||||
| Hero4 adds $152 | ||||
| Player5 calls $1.50 | ||||
| *** 4TH STREET *** | ||||
| Dealt to Player4 [9c] [9d] | ||||
|  | @ -35,8 +35,8 @@ Player4 wins the pot ($6) | |||
| *** SUMMARY *** | ||||
| Total pot $6 | Rake $0 | ||||
| Seat 1: Player4 collected ($6), mucked | ||||
| Seat 2: Player13 folded on 3rd St. | ||||
| Seat 3: Player1 folded on 3rd St. | ||||
| Seat 2: Hero3 folded on 3rd St. | ||||
| Seat 3: Hero folded on 3rd St. | ||||
| Seat 5: Player5 folded on 4th St. | ||||
| Seat 7: Player6 folded on 3rd St. | ||||
| 
 | ||||
|  | @ -44,562 +44,562 @@ Seat 7: Player6 folded on 3rd St. | |||
| 
 | ||||
| Full Tilt Poker Game #11111111538: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:15:56 ET - 2010/06/10 | ||||
| Seat 1: Player4 ($12.60) | ||||
| Seat 2: Player13 ($89.90) | ||||
| Seat 3: Player1 ($110.60) | ||||
| Seat 2: Hero3 ($89.90) | ||||
| Seat 3: Hero ($110.60) | ||||
| Seat 5: Player5 ($115.50) | ||||
| Seat 6: Player14 ($138.70) | ||||
| Seat 6: Hero4 ($138.70) | ||||
| Seat 7: Player6 ($35.10) | ||||
| Player1 antes $0.40 | ||||
| Hero antes $0.40 | ||||
| Player4 antes $0.40 | ||||
| Player13 antes $0.40 | ||||
| Hero3 antes $0.40 | ||||
| Player5 antes $0.40 | ||||
| Player14 antes $0.40 | ||||
| Hero4 antes $0.40 | ||||
| Player6 antes $0.40 | ||||
| *** 3RD STREET *** | ||||
| Dealt to Player4 [Qc] | ||||
| Dealt to Player13 [5s] | ||||
| Dealt to Player1 [6c 5d] [3d] | ||||
| Dealt to Hero3 [5s] | ||||
| Dealt to Hero [6c 5d] [3d] | ||||
| Dealt to Player5 [9d] | ||||
| Dealt to Player14 [8h] | ||||
| Dealt to Hero4 [8h] | ||||
| Dealt to Player6 [Ts] | ||||
| Player1 is low with [3d] | ||||
| Player1 brings in for $0.50 | ||||
| Hero is low with [3d] | ||||
| Hero brings in for $0.50 | ||||
| Player5 folds | ||||
| Player14 folds | ||||
| Hero4 folds | ||||
| Player6 completes it to $2 | ||||
| Player4 folds | ||||
| Player13 folds | ||||
| Player1 calls $1.50 | ||||
| Hero3 folds | ||||
| Hero calls $1.50 | ||||
| *** 4TH STREET *** | ||||
| Dealt to Player1 [6c 5d 3d] [7c] | ||||
| Dealt to Hero [6c 5d 3d] [7c] | ||||
| Dealt to Player6 [Ts] [6d] | ||||
| Player6 bets $2 | ||||
| Player1 calls $2 | ||||
| Hero calls $2 | ||||
| *** 5TH STREET *** | ||||
| Dealt to Player1 [6c 5d 3d 7c] [Qd] | ||||
| Dealt to Hero [6c 5d 3d 7c] [Qd] | ||||
| Dealt to Player6 [Ts 6d] [9s] | ||||
| Player1 checks | ||||
| Hero checks | ||||
| Player6 bets $4 | ||||
| Player1 folds | ||||
| Hero folds | ||||
| Uncalled bet of $4 returned to Player6 | ||||
| Player6 mucks | ||||
| Player6 wins the pot ($10.40) | ||||
| *** SUMMARY *** | ||||
| Total pot $10.40 | Rake $0 | ||||
| Seat 1: Player4 folded on 3rd St. | ||||
| Seat 2: Player13 folded on 3rd St. | ||||
| Seat 3: Player1 folded on 5th St. | ||||
| Seat 2: Hero3 folded on 3rd St. | ||||
| Seat 3: Hero folded on 5th St. | ||||
| Seat 5: Player5 folded on 3rd St. | ||||
| Seat 6: Player14 folded on 3rd St. | ||||
| Seat 6: Hero4 folded on 3rd St. | ||||
| Seat 7: Player6 collected ($10.40), mucked | ||||
| 
 | ||||
| 
 | ||||
| Full Tilt Poker Game #11111111649: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:17:24 ET - 2010/06/10 | ||||
| Seat 1: Player4 ($16.30) | ||||
| Seat 2: Player13 ($88.70) | ||||
| Seat 3: Player1 ($107.30) | ||||
| Seat 2: Hero3 ($88.70) | ||||
| Seat 3: Hero ($107.30) | ||||
| Seat 5: Player5 ($114.30) | ||||
| Seat 6: Player14 ($135.50) | ||||
| Seat 6: Hero4 ($135.50) | ||||
| Seat 7: Player6 ($40.30) | ||||
| Player1 antes $0.40 | ||||
| Hero antes $0.40 | ||||
| Player4 antes $0.40 | ||||
| Player13 antes $0.40 | ||||
| Hero3 antes $0.40 | ||||
| Player5 antes $0.40 | ||||
| Player14 antes $0.40 | ||||
| Hero4 antes $0.40 | ||||
| Player6 antes $0.40 | ||||
| *** 3RD STREET *** | ||||
| Dealt to Player4 [9s] | ||||
| Dealt to Player13 [9h] | ||||
| Dealt to Player1 [8h Kd] [6s] | ||||
| Dealt to Hero3 [9h] | ||||
| Dealt to Hero [8h Kd] [6s] | ||||
| Dealt to Player5 [4c] | ||||
| Dealt to Player14 [8d] | ||||
| Dealt to Hero4 [8d] | ||||
| Dealt to Player6 [6c] | ||||
| Player5 is low with [4c] | ||||
| Player10 sits down | ||||
| Player10 adds $40 | ||||
| Hero0 sits down | ||||
| Hero0 adds $40 | ||||
| Player5 brings in for $0.50 | ||||
| Player14 folds | ||||
| Hero4 folds | ||||
| Player6 folds | ||||
| Player4 folds | ||||
| Player13 completes it to $2 | ||||
| Player1 folds | ||||
| Hero3 completes it to $2 | ||||
| Hero folds | ||||
| Player5 folds | ||||
| Uncalled bet of $1.50 returned to Player13 | ||||
| Player13 mucks | ||||
| Player13 wins the pot ($3.40) | ||||
| Uncalled bet of $1.50 returned to Hero3 | ||||
| Hero3 mucks | ||||
| Hero3 wins the pot ($3.40) | ||||
| *** SUMMARY *** | ||||
| Total pot $3.40 | Rake $0 | ||||
| Seat 1: Player4 folded on 3rd St. | ||||
| Seat 2: Player13 collected ($3.40), mucked | ||||
| Seat 3: Player1 folded on 3rd St. | ||||
| Seat 2: Hero3 collected ($3.40), mucked | ||||
| Seat 3: Hero folded on 3rd St. | ||||
| Seat 5: Player5 folded on 3rd St. | ||||
| Seat 6: Player14 folded on 3rd St. | ||||
| Seat 6: Hero4 folded on 3rd St. | ||||
| Seat 7: Player6 folded on 3rd St. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Full Tilt Poker Game #11111112277: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:17:41 ET - 2010/06/10 | ||||
| Seat 1: Player4 ($15.90) | ||||
| Seat 2: Player13 ($91.20) | ||||
| Seat 3: Player1 ($106.90) | ||||
| Seat 2: Hero3 ($91.20) | ||||
| Seat 3: Hero ($106.90) | ||||
| Seat 5: Player5 ($113.40) | ||||
| Seat 6: Player14 ($135.10) | ||||
| Seat 6: Hero4 ($135.10) | ||||
| Seat 7: Player6 ($39.90) | ||||
| Seat 8: Player10 ($40) | ||||
| Player1 antes $0.40 | ||||
| Seat 8: Hero0 ($40) | ||||
| Hero antes $0.40 | ||||
| Player4 antes $0.40 | ||||
| Player13 antes $0.40 | ||||
| Hero3 antes $0.40 | ||||
| Player5 antes $0.40 | ||||
| Player14 antes $0.40 | ||||
| Hero4 antes $0.40 | ||||
| Player6 antes $0.40 | ||||
| Player10 antes $0.40 | ||||
| Hero0 antes $0.40 | ||||
| *** 3RD STREET *** | ||||
| Dealt to Player4 [Qs] | ||||
| Dealt to Player13 [8s] | ||||
| Dealt to Player1 [3h 9c] [Ah] | ||||
| Dealt to Hero3 [8s] | ||||
| Dealt to Hero [3h 9c] [Ah] | ||||
| Dealt to Player5 [Qc] | ||||
| Dealt to Player14 [Kc] | ||||
| Dealt to Hero4 [Kc] | ||||
| Dealt to Player6 [Jh] | ||||
| Dealt to Player10 [6d] | ||||
| Player10 is low with [6d] | ||||
| Player10 brings in for $0.50 | ||||
| Dealt to Hero0 [6d] | ||||
| Hero0 is low with [6d] | ||||
| Hero0 brings in for $0.50 | ||||
| Player4 folds | ||||
| Player13 folds | ||||
| Player1 folds | ||||
| Hero3 folds | ||||
| Hero folds | ||||
| Player5 completes it to $2 | ||||
| Player14 raises to $4 | ||||
| Hero4 raises to $4 | ||||
| Player6 folds | ||||
| Player10 calls $3.50 | ||||
| Hero0 calls $3.50 | ||||
| Player5 calls $2 | ||||
| *** 4TH STREET *** | ||||
| Dealt to Player5 [Qc] [3c] | ||||
| Dealt to Player14 [Kc] [Kh] | ||||
| Dealt to Player10 [6d] [Td] | ||||
| Player14 has 15 seconds left to act | ||||
| Player14 bets $4 | ||||
| Player10 folds | ||||
| Dealt to Hero4 [Kc] [Kh] | ||||
| Dealt to Hero0 [6d] [Td] | ||||
| Hero4 has 15 seconds left to act | ||||
| Hero4 bets $4 | ||||
| Hero0 folds | ||||
| Player5 folds | ||||
| Uncalled bet of $4 returned to Player14 | ||||
| Player14 mucks | ||||
| Player14 wins the pot ($14.80) | ||||
| Uncalled bet of $4 returned to Hero4 | ||||
| Hero4 mucks | ||||
| Hero4 wins the pot ($14.80) | ||||
| *** SUMMARY *** | ||||
| Total pot $14.80 | Rake $0 | ||||
| Seat 1: Player4 folded on 3rd St. | ||||
| Seat 2: Player13 folded on 3rd St. | ||||
| Seat 3: Player1 folded on 3rd St. | ||||
| Seat 2: Hero3 folded on 3rd St. | ||||
| Seat 3: Hero folded on 3rd St. | ||||
| Seat 5: Player5 folded on 4th St. | ||||
| Seat 6: Player14 collected ($14.80), mucked | ||||
| Seat 6: Hero4 collected ($14.80), mucked | ||||
| Seat 7: Player6 folded on 3rd St. | ||||
| Seat 8: Player10 folded on 4th St. | ||||
| Seat 8: Hero0 folded on 4th St. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Full Tilt Poker Game #11111110428: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:18:23 ET - 2010/06/10 | ||||
| Seat 1: Player4 ($15.50) | ||||
| Seat 2: Player13 ($90.80) | ||||
| Seat 3: Player1 ($106.50) | ||||
| Seat 2: Hero3 ($90.80) | ||||
| Seat 3: Hero ($106.50) | ||||
| Seat 5: Player5 ($109) | ||||
| Seat 6: Player14 ($145.50) | ||||
| Seat 6: Hero4 ($145.50) | ||||
| Seat 7: Player6 ($39.50) | ||||
| Seat 8: Player10 ($35.60) | ||||
| Player10 antes $0.40 | ||||
| Player13 antes $0.40 | ||||
| Player1 antes $0.40 | ||||
| Seat 8: Hero0 ($35.60) | ||||
| Hero0 antes $0.40 | ||||
| Hero3 antes $0.40 | ||||
| Hero antes $0.40 | ||||
| Player4 antes $0.40 | ||||
| Player5 antes $0.40 | ||||
| Player14 antes $0.40 | ||||
| Hero4 antes $0.40 | ||||
| Player6 antes $0.40 | ||||
| *** 3RD STREET *** | ||||
| Dealt to Player4 [Th] | ||||
| Dealt to Player13 [Kc] | ||||
| Dealt to Player1 [Kh 9c] [5h] | ||||
| Dealt to Hero3 [Kc] | ||||
| Dealt to Hero [Kh 9c] [5h] | ||||
| Dealt to Player5 [6h] | ||||
| Dealt to Player14 [Js] | ||||
| Dealt to Hero4 [Js] | ||||
| Dealt to Player6 [Ac] | ||||
| Dealt to Player10 [Ah] | ||||
| Player1 is low with [5h] | ||||
| Player1 brings in for $0.50 | ||||
| Dealt to Hero0 [Ah] | ||||
| Hero is low with [5h] | ||||
| Hero brings in for $0.50 | ||||
| Player5 folds | ||||
| Player14 folds | ||||
| Hero4 folds | ||||
| Player6 folds | ||||
| Player10 completes it to $2 | ||||
| Hero0 completes it to $2 | ||||
| Player4 calls $2 | ||||
| Player13 folds | ||||
| Player1 folds | ||||
| Hero3 folds | ||||
| Hero folds | ||||
| *** 4TH STREET *** | ||||
| Dealt to Player4 [Th] [4h] | ||||
| Dealt to Player10 [Ah] [3c] | ||||
| Player10 bets $2 | ||||
| Dealt to Hero0 [Ah] [3c] | ||||
| Hero0 bets $2 | ||||
| Player4 calls $2 | ||||
| *** 5TH STREET *** | ||||
| Dealt to Player4 [Th 4h] [9h] | ||||
| Dealt to Player10 [Ah 3c] [8h] | ||||
| Player10 has 15 seconds left to act | ||||
| Player10 bets $4 | ||||
| Dealt to Hero0 [Ah 3c] [8h] | ||||
| Hero0 has 15 seconds left to act | ||||
| Hero0 bets $4 | ||||
| Player4 raises to $8 | ||||
| Player10 folds | ||||
| Hero0 folds | ||||
| Uncalled bet of $4 returned to Player4 | ||||
| Player4 mucks | ||||
| Player4 wins the pot ($19.30) | ||||
| *** SUMMARY *** | ||||
| Total pot $19.30 | Rake $0 | ||||
| Seat 1: Player4 collected ($19.30), mucked | ||||
| Seat 2: Player13 folded on 3rd St. | ||||
| Seat 3: Player1 folded on 3rd St. | ||||
| Seat 2: Hero3 folded on 3rd St. | ||||
| Seat 3: Hero folded on 3rd St. | ||||
| Seat 5: Player5 folded on 3rd St. | ||||
| Seat 6: Player14 folded on 3rd St. | ||||
| Seat 6: Hero4 folded on 3rd St. | ||||
| Seat 7: Player6 folded on 3rd St. | ||||
| Seat 8: Player10 folded on 5th St. | ||||
| Seat 8: Hero0 folded on 5th St. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Full Tilt Poker Game #11111112961: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:19:27 ET - 2010/06/10 | ||||
| Seat 1: Player4 ($26) | ||||
| Seat 2: Player13 ($90) | ||||
| Seat 3: Player1 ($105.20) | ||||
| Seat 2: Hero3 ($90) | ||||
| Seat 3: Hero ($105.20) | ||||
| Seat 5: Player5 ($108.20) | ||||
| Seat 6: Player14 ($144.70) | ||||
| Seat 6: Hero4 ($144.70) | ||||
| Seat 7: Player6 ($41.50) | ||||
| Seat 8: Player10 ($26.80) | ||||
| Seat 8: Hero0 ($26.80) | ||||
| Player4 antes $0.40 | ||||
| Player13 antes $0.40 | ||||
| Player1 antes $0.40 | ||||
| Hero3 antes $0.40 | ||||
| Hero antes $0.40 | ||||
| Player5 antes $0.40 | ||||
| Player10 antes $0.40 | ||||
| Player14 antes $0.40 | ||||
| Hero0 antes $0.40 | ||||
| Hero4 antes $0.40 | ||||
| Player6 antes $0.40 | ||||
| *** 3RD STREET *** | ||||
| Dealt to Player4 [9d] | ||||
| Dealt to Player13 [Qs] | ||||
| Dealt to Player1 [9h 9s] [5c] | ||||
| Dealt to Hero3 [Qs] | ||||
| Dealt to Hero [9h 9s] [5c] | ||||
| Dealt to Player5 [Th] | ||||
| Dealt to Player14 [6c] | ||||
| Dealt to Hero4 [6c] | ||||
| Dealt to Player6 [2d] | ||||
| Dealt to Player10 [Qh] | ||||
| Dealt to Hero0 [Qh] | ||||
| Player6 is low with [2d] | ||||
| Player6 brings in for $0.50 | ||||
| Player10 folds | ||||
| Hero0 folds | ||||
| Player4 folds | ||||
| Player13 folds | ||||
| Player1 completes it to $2 | ||||
| Hero3 folds | ||||
| Hero completes it to $2 | ||||
| Player5 folds | ||||
| Player14 folds | ||||
| Hero4 folds | ||||
| Player6 calls $1.50 | ||||
| *** 4TH STREET *** | ||||
| Dealt to Player1 [9h 9s 5c] [3s] | ||||
| Dealt to Hero [9h 9s 5c] [3s] | ||||
| Dealt to Player6 [2d] [Ah] | ||||
| Player6 checks | ||||
| Player1 bets $2 | ||||
| Hero bets $2 | ||||
| Player6 calls $2 | ||||
| *** 5TH STREET *** | ||||
| Dealt to Player1 [9h 9s 5c 3s] [Kh] | ||||
| Dealt to Hero [9h 9s 5c 3s] [Kh] | ||||
| Dealt to Player6 [2d Ah] [Kc] | ||||
| Player6 checks | ||||
| Player1 bets $4 | ||||
| Hero bets $4 | ||||
| Player6 raises to $8 | ||||
| Player1 calls $4 | ||||
| Hero calls $4 | ||||
| *** 6TH STREET *** | ||||
| Dealt to Player1 [9h 9s 5c 3s Kh] [5d] | ||||
| Dealt to Hero [9h 9s 5c 3s Kh] [5d] | ||||
| Dealt to Player6 [2d Ah Kc] [4d] | ||||
| Player1 bets $4 | ||||
| Hero bets $4 | ||||
| Player6 calls $4 | ||||
| *** 7TH STREET *** | ||||
| Dealt to Player1 [9h 9s 5c 3s Kh 5d] [8s] | ||||
| Player1 bets $4 | ||||
| Dealt to Hero [9h 9s 5c 3s Kh 5d] [8s] | ||||
| Hero bets $4 | ||||
| Player6 calls $4 | ||||
| *** SHOW DOWN *** | ||||
| Player1 shows [9s 9h 5c 3s Kh 5d 8s] two pair, Nines and Fives | ||||
| Hero shows [9s 9h 5c 3s Kh 5d 8s] two pair, Nines and Fives | ||||
| Player6 shows [Ad Kd 2d Ah Kc 4d 8h] two pair, Aces and Kings | ||||
| Player6 wins the pot ($40.80) with two pair, Aces and Kings | ||||
| *** SUMMARY *** | ||||
| Total pot $42.80 | Rake $2 | ||||
| Seat 1: Player4 folded on 3rd St. | ||||
| Seat 2: Player13 folded on 3rd St. | ||||
| Seat 3: Player1 showed [9s 9h 5c 3s Kh 5d 8s] and lost with two pair, Nines and Fives | ||||
| Seat 2: Hero3 folded on 3rd St. | ||||
| Seat 3: Hero showed [9s 9h 5c 3s Kh 5d 8s] and lost with two pair, Nines and Fives | ||||
| Seat 5: Player5 folded on 3rd St. | ||||
| Seat 6: Player14 folded on 3rd St. | ||||
| Seat 6: Hero4 folded on 3rd St. | ||||
| Seat 7: Player6 showed [Ad Kd 2d Ah Kc 4d 8h] and won ($40.80) with two pair, Aces and Kings | ||||
| Seat 8: Player10 folded on 3rd St. | ||||
| Seat 8: Hero0 folded on 3rd St. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Full Tilt Poker Game #11111110018: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:26:21 ET - 2010/06/10 | ||||
| Seat 1: Player12 ($66.10) | ||||
| Seat 2: Player13 ($85.50) | ||||
| Seat 3: Player1 ($81.10) | ||||
| Seat 4: Player11 ($283.75) | ||||
| Seat 1: Hero2 ($66.10) | ||||
| Seat 2: Hero3 ($85.50) | ||||
| Seat 3: Hero ($81.10) | ||||
| Seat 4: Hero1 ($283.75) | ||||
| Seat 5: Player5 ($109.40) | ||||
| Seat 6: Player14 ($140.20) | ||||
| Seat 6: Hero4 ($140.20) | ||||
| Seat 7: Player6 ($59.80) | ||||
| Seat 8: Player10 ($62.10) | ||||
| Player10 antes $0.40 | ||||
| Player13 antes $0.40 | ||||
| Player1 antes $0.40 | ||||
| Seat 8: Hero0 ($62.10) | ||||
| Hero0 antes $0.40 | ||||
| Hero3 antes $0.40 | ||||
| Hero antes $0.40 | ||||
| Player5 antes $0.40 | ||||
| Player14 antes $0.40 | ||||
| Player12 antes $0.40 | ||||
| Player11 antes $0.40 | ||||
| Hero4 antes $0.40 | ||||
| Hero2 antes $0.40 | ||||
| Hero1 antes $0.40 | ||||
| Player6 antes $0.40 | ||||
| *** 3RD STREET *** | ||||
| Dealt to Player12 [Qh] | ||||
| Dealt to Player13 [Kd] | ||||
| Dealt to Player1 [2d Kc] [5h] | ||||
| Dealt to Player11 [9d] | ||||
| Dealt to Hero2 [Qh] | ||||
| Dealt to Hero3 [Kd] | ||||
| Dealt to Hero [2d Kc] [5h] | ||||
| Dealt to Hero1 [9d] | ||||
| Dealt to Player5 [6d] | ||||
| Dealt to Player14 [Ad] | ||||
| Dealt to Hero4 [Ad] | ||||
| Dealt to Player6 [6h] | ||||
| Dealt to Player10 [7h] | ||||
| Player1 is low with [5h] | ||||
| Player1 brings in for $0.50 | ||||
| Player11 folds | ||||
| Dealt to Hero0 [7h] | ||||
| Hero is low with [5h] | ||||
| Hero brings in for $0.50 | ||||
| Hero1 folds | ||||
| Player5 folds | ||||
| Player14 folds | ||||
| Hero4 folds | ||||
| Player6 folds | ||||
| Player10 folds | ||||
| Player12 folds | ||||
| Player13 completes it to $2 | ||||
| Player1 folds | ||||
| Uncalled bet of $1.50 returned to Player13 | ||||
| Player13 mucks | ||||
| Player13 wins the pot ($4.20) | ||||
| Hero0 folds | ||||
| Hero2 folds | ||||
| Hero3 completes it to $2 | ||||
| Hero folds | ||||
| Uncalled bet of $1.50 returned to Hero3 | ||||
| Hero3 mucks | ||||
| Hero3 wins the pot ($4.20) | ||||
| *** SUMMARY *** | ||||
| Total pot $4.20 | Rake $0 | ||||
| Seat 1: Player12 folded on 3rd St. | ||||
| Seat 2: Player13 collected ($4.20), mucked | ||||
| Seat 3: Player1 folded on 3rd St. | ||||
| Seat 4: Player11 folded on 3rd St. | ||||
| Seat 1: Hero2 folded on 3rd St. | ||||
| Seat 2: Hero3 collected ($4.20), mucked | ||||
| Seat 3: Hero folded on 3rd St. | ||||
| Seat 4: Hero1 folded on 3rd St. | ||||
| Seat 5: Player5 folded on 3rd St. | ||||
| Seat 6: Player14 folded on 3rd St. | ||||
| Seat 6: Hero4 folded on 3rd St. | ||||
| Seat 7: Player6 folded on 3rd St. | ||||
| Seat 8: Player10 folded on 3rd St. | ||||
| Seat 8: Hero0 folded on 3rd St. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Full Tilt Poker Game #11111111146: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:26:47 ET - 2010/06/10 | ||||
| Seat 1: Player12 ($65.70) | ||||
| Seat 2: Player13 ($88.80) | ||||
| Seat 3: Player1 ($80.20) | ||||
| Seat 4: Player11 ($283.35) | ||||
| Seat 1: Hero2 ($65.70) | ||||
| Seat 2: Hero3 ($88.80) | ||||
| Seat 3: Hero ($80.20) | ||||
| Seat 4: Hero1 ($283.35) | ||||
| Seat 5: Player5 ($109) | ||||
| Seat 6: Player14 ($139.80) | ||||
| Seat 6: Hero4 ($139.80) | ||||
| Seat 7: Player6 ($59.40) | ||||
| Seat 8: Player10 ($61.70) | ||||
| Player10 antes $0.40 | ||||
| Player1 antes $0.40 | ||||
| Player13 antes $0.40 | ||||
| Seat 8: Hero0 ($61.70) | ||||
| Hero0 antes $0.40 | ||||
| Hero antes $0.40 | ||||
| Hero3 antes $0.40 | ||||
| Player5 antes $0.40 | ||||
| Player11 antes $0.40 | ||||
| Player12 antes $0.40 | ||||
| Player14 antes $0.40 | ||||
| Hero1 antes $0.40 | ||||
| Hero2 antes $0.40 | ||||
| Hero4 antes $0.40 | ||||
| Player6 antes $0.40 | ||||
| *** 3RD STREET *** | ||||
| Dealt to Player12 [Qd] | ||||
| Dealt to Player13 [5c] | ||||
| Dealt to Player1 [4d 3s] [9s] | ||||
| Dealt to Player11 [Ks] | ||||
| Dealt to Hero2 [Qd] | ||||
| Dealt to Hero3 [5c] | ||||
| Dealt to Hero [4d 3s] [9s] | ||||
| Dealt to Hero1 [Ks] | ||||
| Dealt to Player5 [2c] | ||||
| Dealt to Player14 [3d] | ||||
| Dealt to Hero4 [3d] | ||||
| Dealt to Player6 [2h] | ||||
| Dealt to Player10 [2d] | ||||
| Dealt to Hero0 [2d] | ||||
| Player5 is low with [2c] | ||||
| Player5 brings in for $0.50 | ||||
| Player14 folds | ||||
| Hero4 folds | ||||
| Player6 folds | ||||
| Player10 folds | ||||
| Player12 folds | ||||
| Player13 folds | ||||
| Player1 folds | ||||
| Player11 completes it to $2 | ||||
| Hero0 folds | ||||
| Hero2 folds | ||||
| Hero3 folds | ||||
| Hero folds | ||||
| Hero1 completes it to $2 | ||||
| Player5 calls $1.50 | ||||
| *** 4TH STREET *** | ||||
| Dealt to Player11 [Ks] [Ah] | ||||
| Dealt to Hero1 [Ks] [Ah] | ||||
| Dealt to Player5 [2c] [5s] | ||||
| Player11 bets $2 | ||||
| Hero1 bets $2 | ||||
| Player5 folds | ||||
| Uncalled bet of $2 returned to Player11 | ||||
| Player11 mucks | ||||
| Player11 wins the pot ($7.20) | ||||
| Uncalled bet of $2 returned to Hero1 | ||||
| Hero1 mucks | ||||
| Hero1 wins the pot ($7.20) | ||||
| *** SUMMARY *** | ||||
| Total pot $7.20 | Rake $0 | ||||
| Seat 1: Player12 folded on 3rd St. | ||||
| Seat 2: Player13 folded on 3rd St. | ||||
| Seat 3: Player1 folded on 3rd St. | ||||
| Seat 4: Player11 collected ($7.20), mucked | ||||
| Seat 1: Hero2 folded on 3rd St. | ||||
| Seat 2: Hero3 folded on 3rd St. | ||||
| Seat 3: Hero folded on 3rd St. | ||||
| Seat 4: Hero1 collected ($7.20), mucked | ||||
| Seat 5: Player5 folded on 4th St. | ||||
| Seat 6: Player14 folded on 3rd St. | ||||
| Seat 6: Hero4 folded on 3rd St. | ||||
| Seat 7: Player6 folded on 3rd St. | ||||
| Seat 8: Player10 folded on 3rd St. | ||||
| Seat 8: Hero0 folded on 3rd St. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Full Tilt Poker Game #11111111633: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:37:55 ET - 2010/06/10 | ||||
| Seat 1: Player12 ($72) | ||||
| Seat 1: Hero2 ($72) | ||||
| Seat 2: Player9 ($40), is sitting out | ||||
| Seat 3: Player1 ($89.20) | ||||
| Seat 3: Hero ($89.20) | ||||
| Seat 4: Player2 ($96.10) | ||||
| Seat 5: Player5 ($105.50), is sitting out | ||||
| Seat 6: Player14 ($131.70) | ||||
| Seat 6: Hero4 ($131.70) | ||||
| Seat 7: Player6 ($54.70) | ||||
| Seat 8: Player10 ($96.40) | ||||
| Player10 antes $0.40 | ||||
| Player1 antes $0.40 | ||||
| Player12 antes $0.40 | ||||
| Player14 antes $0.40 | ||||
| Seat 8: Hero0 ($96.40) | ||||
| Hero0 antes $0.40 | ||||
| Hero antes $0.40 | ||||
| Hero2 antes $0.40 | ||||
| Hero4 antes $0.40 | ||||
| Player6 antes $0.40 | ||||
| 5 seconds left to act | ||||
| Player2 is sitting out | ||||
| *** 3RD STREET *** | ||||
| Dealt to Player12 [5c] | ||||
| Dealt to Player1 [Td 9d] [Kc] | ||||
| Dealt to Player14 [5h] | ||||
| Dealt to Hero2 [5c] | ||||
| Dealt to Hero [Td 9d] [Kc] | ||||
| Dealt to Hero4 [5h] | ||||
| Dealt to Player6 [4s] | ||||
| Dealt to Player10 [7s] | ||||
| Dealt to Hero0 [7s] | ||||
| Player6 is low with [4s] | ||||
| Player2 stands up | ||||
| Player6 brings in for $0.50 | ||||
| Player10 folds | ||||
| Player12 folds | ||||
| Player1 completes it to $2 | ||||
| Player14 calls $2 | ||||
| Hero0 folds | ||||
| Hero2 folds | ||||
| Hero completes it to $2 | ||||
| Hero4 calls $2 | ||||
| Player6 folds | ||||
| *** 4TH STREET *** | ||||
| Dealt to Player1 [Td 9d Kc] [9s] | ||||
| Dealt to Player14 [5h] [9h] | ||||
| Player1 bets $2 | ||||
| Player14 raises to $4 | ||||
| Player1 calls $2 | ||||
| Dealt to Hero [Td 9d Kc] [9s] | ||||
| Dealt to Hero4 [5h] [9h] | ||||
| Hero bets $2 | ||||
| Hero4 raises to $4 | ||||
| Hero calls $2 | ||||
| *** 5TH STREET *** | ||||
| Dealt to Player1 [Td 9d Kc 9s] [Tc] | ||||
| Dealt to Player14 [5h 9h] [3d] | ||||
| Player1 checks | ||||
| Player14 checks | ||||
| Dealt to Hero [Td 9d Kc 9s] [Tc] | ||||
| Dealt to Hero4 [5h 9h] [3d] | ||||
| Hero checks | ||||
| Hero4 checks | ||||
| *** 6TH STREET *** | ||||
| Dealt to Player1 [Td 9d Kc 9s Tc] [9c] | ||||
| Dealt to Player14 [5h 9h 3d] [Th] | ||||
| Player1 bets $4 | ||||
| Player14 calls $4 | ||||
| Dealt to Hero [Td 9d Kc 9s Tc] [9c] | ||||
| Dealt to Hero4 [5h 9h 3d] [Th] | ||||
| Hero bets $4 | ||||
| Hero4 calls $4 | ||||
| *** 7TH STREET *** | ||||
| Dealt to Player1 [Td 9d Kc 9s Tc 9c] [7h] | ||||
| Player1 bets $4 | ||||
| Player14 calls $4 | ||||
| Dealt to Hero [Td 9d Kc 9s Tc 9c] [7h] | ||||
| Hero bets $4 | ||||
| Hero4 calls $4 | ||||
| *** SHOW DOWN *** | ||||
| Player1 shows [Td 9d Kc 9s Tc 9c 7h] a full house, Nines full of Tens | ||||
| Player14 mucks | ||||
| Player1 wins the pot ($29.50) with a full house, Nines full of Tens | ||||
| Hero shows [Td 9d Kc 9s Tc 9c 7h] a full house, Nines full of Tens | ||||
| Hero4 mucks | ||||
| Hero wins the pot ($29.50) with a full house, Nines full of Tens | ||||
| *** SUMMARY *** | ||||
| Total pot $30.50 | Rake $1 | ||||
| Seat 1: Player12 folded on 3rd St. | ||||
| Seat 1: Hero2 folded on 3rd St. | ||||
| Seat 2: Player9 is sitting out | ||||
| Seat 3: Player1 showed [Td 9d Kc 9s Tc 9c 7h] and won ($29.50) with a full house, Nines full of Tens | ||||
| Seat 3: Hero showed [Td 9d Kc 9s Tc 9c 7h] and won ($29.50) with a full house, Nines full of Tens | ||||
| Seat 4: Player2 is sitting out | ||||
| Seat 5: Player5 is sitting out | ||||
| Seat 6: Player14 mucked [8h 6h 5h 9h 3d Th 3h] - a flush, Ten high | ||||
| Seat 6: Hero4 mucked [8h 6h 5h 9h 3d Th 3h] - a flush, Ten high | ||||
| Seat 7: Player6 folded on 3rd St. | ||||
| Seat 8: Player10 folded on 3rd St. | ||||
| Seat 8: Hero0 folded on 3rd St. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Full Tilt Poker Game #11111113928: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:39:41 ET - 2010/06/10 | ||||
| Seat 1: Player12 ($68.70) | ||||
| Seat 1: Hero2 ($68.70) | ||||
| Seat 2: Player9 ($40), is sitting out | ||||
| Seat 3: Player1 ($103.90) | ||||
| Seat 6: Player14 ($116.40) | ||||
| Seat 3: Hero ($103.90) | ||||
| Seat 6: Hero4 ($116.40) | ||||
| Seat 7: Player6 ($58.40) | ||||
| Seat 8: Player10 ($95.60) | ||||
| Player10 antes $0.40 | ||||
| Player1 antes $0.40 | ||||
| Seat 8: Hero0 ($95.60) | ||||
| Hero0 antes $0.40 | ||||
| Hero antes $0.40 | ||||
| Player6 antes $0.40 | ||||
| Player3 sits down | ||||
| Player14 antes $0.40 | ||||
| Player12 antes $0.40 | ||||
| Hero4 antes $0.40 | ||||
| Hero2 antes $0.40 | ||||
| *** 3RD STREET *** | ||||
| Dealt to Player12 [9c] | ||||
| Dealt to Player1 [Ts 4h] [9h] | ||||
| Dealt to Player14 [7c] | ||||
| Dealt to Hero2 [9c] | ||||
| Dealt to Hero [Ts 4h] [9h] | ||||
| Dealt to Hero4 [7c] | ||||
| Dealt to Player6 [7s] | ||||
| Dealt to Player10 [2h] | ||||
| Player10 is low with [2h] | ||||
| Dealt to Hero0 [2h] | ||||
| Hero0 is low with [2h] | ||||
| Player3 adds $40 | ||||
| Player10 brings in for $0.50 | ||||
| Player12 folds | ||||
| Player1 completes it to $2 | ||||
| Player14 folds | ||||
| Hero0 brings in for $0.50 | ||||
| Hero2 folds | ||||
| Hero completes it to $2 | ||||
| Hero4 folds | ||||
| Player6 folds | ||||
| Player10 folds | ||||
| Uncalled bet of $1.50 returned to Player1 | ||||
| Player1 mucks | ||||
| Player1 wins the pot ($3) | ||||
| Hero0 folds | ||||
| Uncalled bet of $1.50 returned to Hero | ||||
| Hero mucks | ||||
| Hero wins the pot ($3) | ||||
| *** SUMMARY *** | ||||
| Total pot $3 | Rake $0 | ||||
| Seat 1: Player12 folded on 3rd St. | ||||
| Seat 1: Hero2 folded on 3rd St. | ||||
| Seat 2: Player9 is sitting out | ||||
| Seat 3: Player1 collected ($3), mucked | ||||
| Seat 6: Player14 folded on 3rd St. | ||||
| Seat 3: Hero collected ($3), mucked | ||||
| Seat 6: Hero4 folded on 3rd St. | ||||
| Seat 7: Player6 folded on 3rd St. | ||||
| Seat 8: Player10 folded on 3rd St. | ||||
| Seat 8: Hero0 folded on 3rd St. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Full Tilt Poker Game #11111111062: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 13:51:45 ET - 2010/06/10 | ||||
| Seat 1: Player12 ($83.40) | ||||
| Seat 1: Hero2 ($83.40) | ||||
| Seat 2: Player9 ($24.35) | ||||
| Seat 3: Player1 ($147.90) | ||||
| Seat 3: Hero ($147.90) | ||||
| Seat 4: Player3 ($74.10) | ||||
| Seat 5: Player8 ($63.10) | ||||
| Seat 6: Player14 ($103) | ||||
| Seat 6: Hero4 ($103) | ||||
| Seat 7: Player6 ($63.20) | ||||
| Seat 8: Player7 ($48.40) | ||||
| Player7 antes $0.40 | ||||
| Player1 antes $0.40 | ||||
| Hero antes $0.40 | ||||
| Player8 antes $0.40 | ||||
| Player3 antes $0.40 | ||||
| Player9 antes $0.40 | ||||
| Player12 antes $0.40 | ||||
| Player14 antes $0.40 | ||||
| Hero2 antes $0.40 | ||||
| Hero4 antes $0.40 | ||||
| Player6 antes $0.40 | ||||
| *** 3RD STREET *** | ||||
| Dealt to Player12 [As] | ||||
| Dealt to Hero2 [As] | ||||
| Dealt to Player9 [7s] | ||||
| Dealt to Player1 [7h 6s] [8d] | ||||
| Dealt to Hero [7h 6s] [8d] | ||||
| Dealt to Player3 [2d] | ||||
| Dealt to Player8 [3c] | ||||
| Dealt to Player14 [7c] | ||||
| Dealt to Hero4 [7c] | ||||
| Dealt to Player6 [8h] | ||||
| Dealt to Player7 [Qs] | ||||
| Player3 is low with [2d] | ||||
| Player3 brings in for $0.50 | ||||
| Player8 folds | ||||
| Player14 folds | ||||
| Hero4 folds | ||||
| Player6 folds | ||||
| Player7 folds | ||||
| Player12 completes it to $2 | ||||
| Hero2 completes it to $2 | ||||
| Player9 folds | ||||
| Player1 calls $2 | ||||
| Hero calls $2 | ||||
| Player3 calls $1.50 | ||||
| *** 4TH STREET *** | ||||
| Dealt to Player12 [As] [5d] | ||||
| Dealt to Player1 [7h 6s 8d] [Qc] | ||||
| Dealt to Hero2 [As] [5d] | ||||
| Dealt to Hero [7h 6s 8d] [Qc] | ||||
| Dealt to Player3 [2d] [3h] | ||||
| Player12 bets $2 | ||||
| Player1 folds | ||||
| Hero2 bets $2 | ||||
| Hero folds | ||||
| Player3 calls $2 | ||||
| *** 5TH STREET *** | ||||
| Dealt to Player12 [As 5d] [4c] | ||||
| Dealt to Hero2 [As 5d] [4c] | ||||
| Dealt to Player3 [2d 3h] [5s] | ||||
| Player12 bets $4 | ||||
| Hero2 bets $4 | ||||
| Player3 folds | ||||
| Uncalled bet of $4 returned to Player12 | ||||
| Player12 mucks | ||||
| Player12 wins the pot ($13.20) | ||||
| Uncalled bet of $4 returned to Hero2 | ||||
| Hero2 mucks | ||||
| Hero2 wins the pot ($13.20) | ||||
| *** SUMMARY *** | ||||
| Total pot $13.20 | Rake $0 | ||||
| Seat 1: Player12 collected ($13.20), mucked | ||||
| Seat 1: Hero2 collected ($13.20), mucked | ||||
| Seat 2: Player9 folded on 3rd St. | ||||
| Seat 3: Player1 folded on 4th St. | ||||
| Seat 3: Hero folded on 4th St. | ||||
| Seat 4: Player3 folded on 5th St. | ||||
| Seat 5: Player8 folded on 3rd St. | ||||
| Seat 6: Player14 folded on 3rd St. | ||||
| Seat 6: Hero4 folded on 3rd St. | ||||
| Seat 7: Player6 folded on 3rd St. | ||||
| Seat 8: Player7 folded on 3rd St. | ||||
| 
 | ||||
|  | @ -607,7 +607,7 @@ Seat 8: Player7 folded on 3rd St. | |||
| 
 | ||||
| Full Tilt Poker Game #11111115744: Table Fpdb - $2/$4 Ante $0.40 - Limit Stud Hi - 14:02:17 ET - 2010/06/10 | ||||
| Seat 2: Player0 ($60) | ||||
| Seat 3: Player1 ($129.30) | ||||
| Seat 3: Hero ($129.30) | ||||
| Seat 4: Player3 ($125.75) | ||||
| Seat 5: Player8 ($40.10) | ||||
| Seat 7: Player6 ($72) | ||||
|  | @ -615,24 +615,24 @@ Seat 8: Player7 ($32.20) | |||
| Player0 antes $0.40 | ||||
| Player8 antes $0.40 | ||||
| Player7 antes $0.40 | ||||
| Player1 antes $0.40 | ||||
| Hero antes $0.40 | ||||
| Player3 antes $0.40 | ||||
| Player6 antes $0.40 | ||||
| *** 3RD STREET *** | ||||
| Dealt to Player0 [Th] | ||||
| Dealt to Player1 [9s Qc] [7d] | ||||
| Dealt to Hero [9s Qc] [7d] | ||||
| Dealt to Player3 [Qh] | ||||
| Dealt to Player8 [Kd] | ||||
| Dealt to Player6 [Jd] | ||||
| Dealt to Player7 [Jh] | ||||
| Player1 is low with [7d] | ||||
| Player1 brings in for $0.50 | ||||
| Hero is low with [7d] | ||||
| Hero brings in for $0.50 | ||||
| Player3 folds | ||||
| Player8 folds | ||||
| Player6 folds | ||||
| Player7 completes it to $2 | ||||
| Player0 calls $2 | ||||
| Player1 folds | ||||
| Hero folds | ||||
| *** 4TH STREET *** | ||||
| Dealt to Player0 [Th] [As] | ||||
| Dealt to Player7 [Jh] [8c] | ||||
|  | @ -654,7 +654,7 @@ Player0 wins the pot ($10.90) | |||
| *** SUMMARY *** | ||||
| Total pot $10.90 | Rake $0 | ||||
| Seat 2: Player0 collected ($10.90), mucked | ||||
| Seat 3: Player1 folded on 3rd St. | ||||
| Seat 3: Hero folded on 3rd St. | ||||
| Seat 4: Player3 folded on 3rd St. | ||||
| Seat 5: Player8 folded on 3rd St. | ||||
| Seat 7: Player6 folded on 3rd St. | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							|  | @ -0,0 +1,32 @@ | |||
| {   'boardcard1': 0, | ||||
|     'boardcard2': 0, | ||||
|     'boardcard3': 0, | ||||
|     'boardcard4': 0, | ||||
|     'boardcard5': 0, | ||||
|     'gametypeId': 5, | ||||
|     'importTime': None, | ||||
|     'maxSeats': 8, | ||||
|     'playersAtShowdown': 1, | ||||
|     'playersAtStreet-1': 7, | ||||
|     'playersAtStreet0': 3, | ||||
|     'playersAtStreet1': 3, | ||||
|     'playersAtStreet2': 2, | ||||
|     'playersAtStreet3': 1, | ||||
|     'playersAtStreet4': 1, | ||||
|     'playersVpi': 3, | ||||
|     'seats': 7, | ||||
|     'showdownPot': 0, | ||||
|     'siteHandNo': u'26190453000', | ||||
|     'startTime': datetime.datetime(2010, 12, 7, 9, 10, 10, tzinfo=pytz.utc), | ||||
|     'street0Raises': 0, | ||||
|     'street1Pot': 0, | ||||
|     'street1Raises': 1, | ||||
|     'street2Pot': 0, | ||||
|     'street2Raises': 1, | ||||
|     'street3Pot': 0, | ||||
|     'street3Raises': 1, | ||||
|     'street4Pot': 0, | ||||
|     'street4Raises': 0, | ||||
|     'tableName': u'Mart', | ||||
|     'texture': None, | ||||
|     'tourneyId': None} | ||||
|  | @ -0,0 +1,658 @@ | |||
| {   u'Hero': {   'card1': 18, | ||||
|                  'card2': 25, | ||||
|                  'card3': 42, | ||||
|                  'card4': 0, | ||||
|                  'card5': 0, | ||||
|                  'card6': 0, | ||||
|                  'card7': 0, | ||||
|                  'foldBbToStealChance': False, | ||||
|                  'foldSbToStealChance': False, | ||||
|                  'foldToOtherRaisedStreet0': False, | ||||
|                  'foldToOtherRaisedStreet1': False, | ||||
|                  'foldToOtherRaisedStreet2': False, | ||||
|                  'foldToOtherRaisedStreet3': False, | ||||
|                  'foldToOtherRaisedStreet4': False, | ||||
|                  'foldToStreet1CBChance': False, | ||||
|                  'foldToStreet1CBDone': False, | ||||
|                  'foldToStreet2CBChance': False, | ||||
|                  'foldToStreet2CBDone': False, | ||||
|                  'foldToStreet3CBChance': False, | ||||
|                  'foldToStreet3CBDone': False, | ||||
|                  'foldToStreet4CBChance': False, | ||||
|                  'foldToStreet4CBDone': False, | ||||
|                  'foldedBbToSteal': False, | ||||
|                  'foldedSbToSteal': False, | ||||
|                  'other3BStreet0': False, | ||||
|                  'other4BStreet0': False, | ||||
|                  'otherRaisedStreet0': False, | ||||
|                  'otherRaisedStreet1': False, | ||||
|                  'otherRaisedStreet2': False, | ||||
|                  'otherRaisedStreet3': False, | ||||
|                  'otherRaisedStreet4': False, | ||||
|                  'position': 3, | ||||
|                  'raiseFirstInChance': False, | ||||
|                  'raisedFirstIn': False, | ||||
|                  'rake': 0, | ||||
|                  'sawShowdown': False, | ||||
|                  'seatNo': 1, | ||||
|                  'sitout': False, | ||||
|                  'startCards': 700, | ||||
|                  'startCash': 450, | ||||
|                  'street0Aggr': False, | ||||
|                  'street0Bets': 0, | ||||
|                  'street0Calls': 0, | ||||
|                  'street0Raises': 0, | ||||
|                  'street0VPI': False, | ||||
|                  'street0_3BChance': False, | ||||
|                  'street0_3BDone': False, | ||||
|                  'street0_4BChance': False, | ||||
|                  'street0_4BDone': False, | ||||
|                  'street1Aggr': False, | ||||
|                  'street1Bets': 0, | ||||
|                  'street1CBChance': False, | ||||
|                  'street1CBDone': False, | ||||
|                  'street1Calls': 0, | ||||
|                  'street1CheckCallRaiseChance': False, | ||||
|                  'street1CheckCallRaiseDone': False, | ||||
|                  'street1Raises': 0, | ||||
|                  'street1Seen': False, | ||||
|                  'street2Aggr': False, | ||||
|                  'street2Bets': 0, | ||||
|                  'street2CBChance': False, | ||||
|                  'street2CBDone': False, | ||||
|                  'street2Calls': 0, | ||||
|                  'street2CheckCallRaiseChance': False, | ||||
|                  'street2CheckCallRaiseDone': False, | ||||
|                  'street2Raises': 0, | ||||
|                  'street2Seen': False, | ||||
|                  'street3Aggr': False, | ||||
|                  'street3Bets': 0, | ||||
|                  'street3CBChance': False, | ||||
|                  'street3CBDone': False, | ||||
|                  'street3Calls': 0, | ||||
|                  'street3CheckCallRaiseChance': False, | ||||
|                  'street3CheckCallRaiseDone': False, | ||||
|                  'street3Raises': 0, | ||||
|                  'street3Seen': False, | ||||
|                  'street4Aggr': False, | ||||
|                  'street4Bets': 0, | ||||
|                  'street4CBChance': False, | ||||
|                  'street4CBDone': False, | ||||
|                  'street4Calls': 0, | ||||
|                  'street4CheckCallRaiseChance': False, | ||||
|                  'street4CheckCallRaiseDone': False, | ||||
|                  'street4Raises': 0, | ||||
|                  'street4Seen': False, | ||||
|                  'totalProfit': -2, | ||||
|                  'tourneyTypeId': None, | ||||
|                  'tourneysPlayersIds': None, | ||||
|                  'winnings': 0, | ||||
|                  'wonAtSD': 0.0, | ||||
|                  'wonWhenSeenStreet1': 0.0, | ||||
|                  'wonWhenSeenStreet2': 0.0, | ||||
|                  'wonWhenSeenStreet3': 0.0, | ||||
|                  'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player2': {   'card1': 0, | ||||
|                     'card2': 0, | ||||
|                     'card3': 40, | ||||
|                     'card4': 0, | ||||
|                     'card5': 0, | ||||
|                     'card6': 0, | ||||
|                     'card7': 0, | ||||
|                     'foldBbToStealChance': False, | ||||
|                     'foldSbToStealChance': False, | ||||
|                     'foldToOtherRaisedStreet0': False, | ||||
|                     'foldToOtherRaisedStreet1': False, | ||||
|                     'foldToOtherRaisedStreet2': False, | ||||
|                     'foldToOtherRaisedStreet3': False, | ||||
|                     'foldToOtherRaisedStreet4': False, | ||||
|                     'foldToStreet1CBChance': False, | ||||
|                     'foldToStreet1CBDone': False, | ||||
|                     'foldToStreet2CBChance': False, | ||||
|                     'foldToStreet2CBDone': False, | ||||
|                     'foldToStreet3CBChance': False, | ||||
|                     'foldToStreet3CBDone': False, | ||||
|                     'foldToStreet4CBChance': False, | ||||
|                     'foldToStreet4CBDone': False, | ||||
|                     'foldedBbToSteal': False, | ||||
|                     'foldedSbToSteal': False, | ||||
|                     'other3BStreet0': False, | ||||
|                     'other4BStreet0': False, | ||||
|                     'otherRaisedStreet0': False, | ||||
|                     'otherRaisedStreet1': False, | ||||
|                     'otherRaisedStreet2': False, | ||||
|                     'otherRaisedStreet3': False, | ||||
|                     'otherRaisedStreet4': False, | ||||
|                     'position': 2, | ||||
|                     'raiseFirstInChance': False, | ||||
|                     'raisedFirstIn': False, | ||||
|                     'rake': 0, | ||||
|                     'sawShowdown': False, | ||||
|                     'seatNo': 2, | ||||
|                     'sitout': False, | ||||
|                     'startCards': -12, | ||||
|                     'startCash': 563, | ||||
|                     'street0Aggr': False, | ||||
|                     'street0Bets': 0, | ||||
|                     'street0Calls': 0, | ||||
|                     'street0Raises': 0, | ||||
|                     'street0VPI': False, | ||||
|                     'street0_3BChance': False, | ||||
|                     'street0_3BDone': False, | ||||
|                     'street0_4BChance': False, | ||||
|                     'street0_4BDone': False, | ||||
|                     'street1Aggr': False, | ||||
|                     'street1Bets': 0, | ||||
|                     'street1CBChance': False, | ||||
|                     'street1CBDone': False, | ||||
|                     'street1Calls': 0, | ||||
|                     'street1CheckCallRaiseChance': False, | ||||
|                     'street1CheckCallRaiseDone': False, | ||||
|                     'street1Raises': 0, | ||||
|                     'street1Seen': False, | ||||
|                     'street2Aggr': False, | ||||
|                     'street2Bets': 0, | ||||
|                     'street2CBChance': False, | ||||
|                     'street2CBDone': False, | ||||
|                     'street2Calls': 0, | ||||
|                     'street2CheckCallRaiseChance': False, | ||||
|                     'street2CheckCallRaiseDone': False, | ||||
|                     'street2Raises': 0, | ||||
|                     'street2Seen': False, | ||||
|                     'street3Aggr': False, | ||||
|                     'street3Bets': 0, | ||||
|                     'street3CBChance': False, | ||||
|                     'street3CBDone': False, | ||||
|                     'street3Calls': 0, | ||||
|                     'street3CheckCallRaiseChance': False, | ||||
|                     'street3CheckCallRaiseDone': False, | ||||
|                     'street3Raises': 0, | ||||
|                     'street3Seen': False, | ||||
|                     'street4Aggr': False, | ||||
|                     'street4Bets': 0, | ||||
|                     'street4CBChance': False, | ||||
|                     'street4CBDone': False, | ||||
|                     'street4Calls': 0, | ||||
|                     'street4CheckCallRaiseChance': False, | ||||
|                     'street4CheckCallRaiseDone': False, | ||||
|                     'street4Raises': 0, | ||||
|                     'street4Seen': False, | ||||
|                     'totalProfit': -2, | ||||
|                     'tourneyTypeId': None, | ||||
|                     'tourneysPlayersIds': None, | ||||
|                     'winnings': 0, | ||||
|                     'wonAtSD': 0.0, | ||||
|                     'wonWhenSeenStreet1': 0.0, | ||||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player3': {   'card1': 0, | ||||
|                     'card2': 0, | ||||
|                     'card3': 4, | ||||
|                     'card4': 0, | ||||
|                     'card5': 0, | ||||
|                     'card6': 0, | ||||
|                     'card7': 0, | ||||
|                     'foldBbToStealChance': False, | ||||
|                     'foldSbToStealChance': False, | ||||
|                     'foldToOtherRaisedStreet0': False, | ||||
|                     'foldToOtherRaisedStreet1': False, | ||||
|                     'foldToOtherRaisedStreet2': False, | ||||
|                     'foldToOtherRaisedStreet3': False, | ||||
|                     'foldToOtherRaisedStreet4': False, | ||||
|                     'foldToStreet1CBChance': False, | ||||
|                     'foldToStreet1CBDone': False, | ||||
|                     'foldToStreet2CBChance': False, | ||||
|                     'foldToStreet2CBDone': False, | ||||
|                     'foldToStreet3CBChance': False, | ||||
|                     'foldToStreet3CBDone': False, | ||||
|                     'foldToStreet4CBChance': False, | ||||
|                     'foldToStreet4CBDone': False, | ||||
|                     'foldedBbToSteal': False, | ||||
|                     'foldedSbToSteal': False, | ||||
|                     'other3BStreet0': False, | ||||
|                     'other4BStreet0': False, | ||||
|                     'otherRaisedStreet0': False, | ||||
|                     'otherRaisedStreet1': False, | ||||
|                     'otherRaisedStreet2': False, | ||||
|                     'otherRaisedStreet3': False, | ||||
|                     'otherRaisedStreet4': False, | ||||
|                     'position': 1, | ||||
|                     'raiseFirstInChance': False, | ||||
|                     'raisedFirstIn': False, | ||||
|                     'rake': 0, | ||||
|                     'sawShowdown': False, | ||||
|                     'seatNo': 3, | ||||
|                     'sitout': False, | ||||
|                     'startCards': -9, | ||||
|                     'startCash': 760, | ||||
|                     'street0Aggr': False, | ||||
|                     'street0Bets': 0, | ||||
|                     'street0Calls': 0, | ||||
|                     'street0Raises': 0, | ||||
|                     'street0VPI': False, | ||||
|                     'street0_3BChance': False, | ||||
|                     'street0_3BDone': False, | ||||
|                     'street0_4BChance': False, | ||||
|                     'street0_4BDone': False, | ||||
|                     'street1Aggr': False, | ||||
|                     'street1Bets': 0, | ||||
|                     'street1CBChance': False, | ||||
|                     'street1CBDone': False, | ||||
|                     'street1Calls': 0, | ||||
|                     'street1CheckCallRaiseChance': False, | ||||
|                     'street1CheckCallRaiseDone': False, | ||||
|                     'street1Raises': 0, | ||||
|                     'street1Seen': False, | ||||
|                     'street2Aggr': False, | ||||
|                     'street2Bets': 0, | ||||
|                     'street2CBChance': False, | ||||
|                     'street2CBDone': False, | ||||
|                     'street2Calls': 0, | ||||
|                     'street2CheckCallRaiseChance': False, | ||||
|                     'street2CheckCallRaiseDone': False, | ||||
|                     'street2Raises': 0, | ||||
|                     'street2Seen': False, | ||||
|                     'street3Aggr': False, | ||||
|                     'street3Bets': 0, | ||||
|                     'street3CBChance': False, | ||||
|                     'street3CBDone': False, | ||||
|                     'street3Calls': 0, | ||||
|                     'street3CheckCallRaiseChance': False, | ||||
|                     'street3CheckCallRaiseDone': False, | ||||
|                     'street3Raises': 0, | ||||
|                     'street3Seen': False, | ||||
|                     'street4Aggr': False, | ||||
|                     'street4Bets': 0, | ||||
|                     'street4CBChance': False, | ||||
|                     'street4CBDone': False, | ||||
|                     'street4Calls': 0, | ||||
|                     'street4CheckCallRaiseChance': False, | ||||
|                     'street4CheckCallRaiseDone': False, | ||||
|                     'street4Raises': 0, | ||||
|                     'street4Seen': False, | ||||
|                     'totalProfit': -2, | ||||
|                     'tourneyTypeId': None, | ||||
|                     'tourneysPlayersIds': None, | ||||
|                     'winnings': 0, | ||||
|                     'wonAtSD': 0.0, | ||||
|                     'wonWhenSeenStreet1': 0.0, | ||||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player4': {   'card1': 0, | ||||
|                     'card2': 0, | ||||
|                     'card3': 32, | ||||
|                     'card4': 33, | ||||
|                     'card5': 16, | ||||
|                     'card6': 0, | ||||
|                     'card7': 0, | ||||
|                     'foldBbToStealChance': False, | ||||
|                     'foldSbToStealChance': False, | ||||
|                     'foldToOtherRaisedStreet0': False, | ||||
|                     'foldToOtherRaisedStreet1': False, | ||||
|                     'foldToOtherRaisedStreet2': True, | ||||
|                     'foldToOtherRaisedStreet3': False, | ||||
|                     'foldToOtherRaisedStreet4': False, | ||||
|                     'foldToStreet1CBChance': False, | ||||
|                     'foldToStreet1CBDone': False, | ||||
|                     'foldToStreet2CBChance': False, | ||||
|                     'foldToStreet2CBDone': False, | ||||
|                     'foldToStreet3CBChance': False, | ||||
|                     'foldToStreet3CBDone': False, | ||||
|                     'foldToStreet4CBChance': False, | ||||
|                     'foldToStreet4CBDone': False, | ||||
|                     'foldedBbToSteal': False, | ||||
|                     'foldedSbToSteal': False, | ||||
|                     'other3BStreet0': False, | ||||
|                     'other4BStreet0': False, | ||||
|                     'otherRaisedStreet0': False, | ||||
|                     'otherRaisedStreet1': True, | ||||
|                     'otherRaisedStreet2': True, | ||||
|                     'otherRaisedStreet3': False, | ||||
|                     'otherRaisedStreet4': False, | ||||
|                     'position': 0, | ||||
|                     'raiseFirstInChance': False, | ||||
|                     'raisedFirstIn': False, | ||||
|                     'rake': 0, | ||||
|                     'sawShowdown': False, | ||||
|                     'seatNo': 4, | ||||
|                     'sitout': False, | ||||
|                     'startCards': -7, | ||||
|                     'startCash': 211, | ||||
|                     'street0Aggr': False, | ||||
|                     'street0Bets': 0, | ||||
|                     'street0Calls': 1, | ||||
|                     'street0Raises': 0, | ||||
|                     'street0VPI': True, | ||||
|                     'street0_3BChance': False, | ||||
|                     'street0_3BDone': False, | ||||
|                     'street0_4BChance': False, | ||||
|                     'street0_4BDone': False, | ||||
|                     'street1Aggr': False, | ||||
|                     'street1Bets': 0, | ||||
|                     'street1CBChance': False, | ||||
|                     'street1CBDone': False, | ||||
|                     'street1Calls': 1, | ||||
|                     'street1CheckCallRaiseChance': False, | ||||
|                     'street1CheckCallRaiseDone': False, | ||||
|                     'street1Raises': 0, | ||||
|                     'street1Seen': True, | ||||
|                     'street2Aggr': False, | ||||
|                     'street2Bets': 0, | ||||
|                     'street2CBChance': False, | ||||
|                     'street2CBDone': False, | ||||
|                     'street2Calls': 0, | ||||
|                     'street2CheckCallRaiseChance': False, | ||||
|                     'street2CheckCallRaiseDone': False, | ||||
|                     'street2Raises': 0, | ||||
|                     'street2Seen': True, | ||||
|                     'street3Aggr': False, | ||||
|                     'street3Bets': 0, | ||||
|                     'street3CBChance': False, | ||||
|                     'street3CBDone': False, | ||||
|                     'street3Calls': 0, | ||||
|                     'street3CheckCallRaiseChance': False, | ||||
|                     'street3CheckCallRaiseDone': False, | ||||
|                     'street3Raises': 0, | ||||
|                     'street3Seen': False, | ||||
|                     'street4Aggr': False, | ||||
|                     'street4Bets': 0, | ||||
|                     'street4CBChance': False, | ||||
|                     'street4CBDone': False, | ||||
|                     'street4Calls': 0, | ||||
|                     'street4CheckCallRaiseChance': False, | ||||
|                     'street4CheckCallRaiseDone': False, | ||||
|                     'street4Raises': 0, | ||||
|                     'street4Seen': False, | ||||
|                     'totalProfit': -22, | ||||
|                     'tourneyTypeId': None, | ||||
|                     'tourneysPlayersIds': None, | ||||
|                     'winnings': 0, | ||||
|                     'wonAtSD': 0.0, | ||||
|                     'wonWhenSeenStreet1': 0.0, | ||||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player5': {   'card1': 0, | ||||
|                     'card2': 0, | ||||
|                     'card3': 51, | ||||
|                     'card4': 0, | ||||
|                     'card5': 0, | ||||
|                     'card6': 0, | ||||
|                     'card7': 0, | ||||
|                     'foldBbToStealChance': False, | ||||
|                     'foldSbToStealChance': False, | ||||
|                     'foldToOtherRaisedStreet0': False, | ||||
|                     'foldToOtherRaisedStreet1': False, | ||||
|                     'foldToOtherRaisedStreet2': False, | ||||
|                     'foldToOtherRaisedStreet3': False, | ||||
|                     'foldToOtherRaisedStreet4': False, | ||||
|                     'foldToStreet1CBChance': False, | ||||
|                     'foldToStreet1CBDone': False, | ||||
|                     'foldToStreet2CBChance': False, | ||||
|                     'foldToStreet2CBDone': False, | ||||
|                     'foldToStreet3CBChance': False, | ||||
|                     'foldToStreet3CBDone': False, | ||||
|                     'foldToStreet4CBChance': False, | ||||
|                     'foldToStreet4CBDone': False, | ||||
|                     'foldedBbToSteal': False, | ||||
|                     'foldedSbToSteal': False, | ||||
|                     'other3BStreet0': False, | ||||
|                     'other4BStreet0': False, | ||||
|                     'otherRaisedStreet0': False, | ||||
|                     'otherRaisedStreet1': False, | ||||
|                     'otherRaisedStreet2': False, | ||||
|                     'otherRaisedStreet3': False, | ||||
|                     'otherRaisedStreet4': False, | ||||
|                     'position': 'S', | ||||
|                     'raiseFirstInChance': False, | ||||
|                     'raisedFirstIn': False, | ||||
|                     'rake': 0, | ||||
|                     'sawShowdown': False, | ||||
|                     'seatNo': 5, | ||||
|                     'sitout': False, | ||||
|                     'startCards': -1, | ||||
|                     'startCash': 818, | ||||
|                     'street0Aggr': False, | ||||
|                     'street0Bets': 0, | ||||
|                     'street0Calls': 0, | ||||
|                     'street0Raises': 0, | ||||
|                     'street0VPI': False, | ||||
|                     'street0_3BChance': False, | ||||
|                     'street0_3BDone': False, | ||||
|                     'street0_4BChance': False, | ||||
|                     'street0_4BDone': False, | ||||
|                     'street1Aggr': False, | ||||
|                     'street1Bets': 0, | ||||
|                     'street1CBChance': False, | ||||
|                     'street1CBDone': False, | ||||
|                     'street1Calls': 0, | ||||
|                     'street1CheckCallRaiseChance': False, | ||||
|                     'street1CheckCallRaiseDone': False, | ||||
|                     'street1Raises': 0, | ||||
|                     'street1Seen': False, | ||||
|                     'street2Aggr': False, | ||||
|                     'street2Bets': 0, | ||||
|                     'street2CBChance': False, | ||||
|                     'street2CBDone': False, | ||||
|                     'street2Calls': 0, | ||||
|                     'street2CheckCallRaiseChance': False, | ||||
|                     'street2CheckCallRaiseDone': False, | ||||
|                     'street2Raises': 0, | ||||
|                     'street2Seen': False, | ||||
|                     'street3Aggr': False, | ||||
|                     'street3Bets': 0, | ||||
|                     'street3CBChance': False, | ||||
|                     'street3CBDone': False, | ||||
|                     'street3Calls': 0, | ||||
|                     'street3CheckCallRaiseChance': False, | ||||
|                     'street3CheckCallRaiseDone': False, | ||||
|                     'street3Raises': 0, | ||||
|                     'street3Seen': False, | ||||
|                     'street4Aggr': False, | ||||
|                     'street4Bets': 0, | ||||
|                     'street4CBChance': False, | ||||
|                     'street4CBDone': False, | ||||
|                     'street4Calls': 0, | ||||
|                     'street4CheckCallRaiseChance': False, | ||||
|                     'street4CheckCallRaiseDone': False, | ||||
|                     'street4Raises': 0, | ||||
|                     'street4Seen': False, | ||||
|                     'totalProfit': -5, | ||||
|                     'tourneyTypeId': None, | ||||
|                     'tourneysPlayersIds': None, | ||||
|                     'winnings': 0, | ||||
|                     'wonAtSD': 0.0, | ||||
|                     'wonWhenSeenStreet1': 0.0, | ||||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player7': {   'card1': 0, | ||||
|                     'card2': 0, | ||||
|                     'card3': 5, | ||||
|                     'card4': 8, | ||||
|                     'card5': 30, | ||||
|                     'card6': 14, | ||||
|                     'card7': 0, | ||||
|                     'foldBbToStealChance': False, | ||||
|                     'foldSbToStealChance': False, | ||||
|                     'foldToOtherRaisedStreet0': False, | ||||
|                     'foldToOtherRaisedStreet1': False, | ||||
|                     'foldToOtherRaisedStreet2': False, | ||||
|                     'foldToOtherRaisedStreet3': True, | ||||
|                     'foldToOtherRaisedStreet4': False, | ||||
|                     'foldToStreet1CBChance': False, | ||||
|                     'foldToStreet1CBDone': False, | ||||
|                     'foldToStreet2CBChance': False, | ||||
|                     'foldToStreet2CBDone': False, | ||||
|                     'foldToStreet3CBChance': False, | ||||
|                     'foldToStreet3CBDone': False, | ||||
|                     'foldToStreet4CBChance': False, | ||||
|                     'foldToStreet4CBDone': False, | ||||
|                     'foldedBbToSteal': False, | ||||
|                     'foldedSbToSteal': False, | ||||
|                     'other3BStreet0': False, | ||||
|                     'other4BStreet0': False, | ||||
|                     'otherRaisedStreet0': False, | ||||
|                     'otherRaisedStreet1': True, | ||||
|                     'otherRaisedStreet2': True, | ||||
|                     'otherRaisedStreet3': True, | ||||
|                     'otherRaisedStreet4': False, | ||||
|                     'position': 5, | ||||
|                     'raiseFirstInChance': True, | ||||
|                     'raisedFirstIn': False, | ||||
|                     'rake': 0, | ||||
|                     'sawShowdown': False, | ||||
|                     'seatNo': 7, | ||||
|                     'sitout': False, | ||||
|                     'startCards': -8, | ||||
|                     'startCash': 260, | ||||
|                     'street0Aggr': False, | ||||
|                     'street0Bets': 0, | ||||
|                     'street0Calls': 2, | ||||
|                     'street0Raises': 0, | ||||
|                     'street0VPI': True, | ||||
|                     'street0_3BChance': False, | ||||
|                     'street0_3BDone': False, | ||||
|                     'street0_4BChance': False, | ||||
|                     'street0_4BDone': False, | ||||
|                     'street1Aggr': False, | ||||
|                     'street1Bets': 0, | ||||
|                     'street1CBChance': False, | ||||
|                     'street1CBDone': False, | ||||
|                     'street1Calls': 1, | ||||
|                     'street1CheckCallRaiseChance': False, | ||||
|                     'street1CheckCallRaiseDone': False, | ||||
|                     'street1Raises': 0, | ||||
|                     'street1Seen': True, | ||||
|                     'street2Aggr': False, | ||||
|                     'street2Bets': 0, | ||||
|                     'street2CBChance': False, | ||||
|                     'street2CBDone': False, | ||||
|                     'street2Calls': 1, | ||||
|                     'street2CheckCallRaiseChance': False, | ||||
|                     'street2CheckCallRaiseDone': False, | ||||
|                     'street2Raises': 0, | ||||
|                     'street2Seen': True, | ||||
|                     'street3Aggr': False, | ||||
|                     'street3Bets': 0, | ||||
|                     'street3CBChance': False, | ||||
|                     'street3CBDone': False, | ||||
|                     'street3Calls': 0, | ||||
|                     'street3CheckCallRaiseChance': False, | ||||
|                     'street3CheckCallRaiseDone': False, | ||||
|                     'street3Raises': 0, | ||||
|                     'street3Seen': True, | ||||
|                     'street4Aggr': False, | ||||
|                     'street4Bets': 0, | ||||
|                     'street4CBChance': False, | ||||
|                     'street4CBDone': False, | ||||
|                     'street4Calls': 0, | ||||
|                     'street4CheckCallRaiseChance': False, | ||||
|                     'street4CheckCallRaiseDone': False, | ||||
|                     'street4Raises': 0, | ||||
|                     'street4Seen': False, | ||||
|                     'totalProfit': -42, | ||||
|                     'tourneyTypeId': None, | ||||
|                     'tourneysPlayersIds': None, | ||||
|                     'winnings': 0, | ||||
|                     'wonAtSD': 0.0, | ||||
|                     'wonWhenSeenStreet1': 0.0, | ||||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player8': {   'card1': 0, | ||||
|                     'card2': 0, | ||||
|                     'card3': 45, | ||||
|                     'card4': 26, | ||||
|                     'card5': 7, | ||||
|                     'card6': 28, | ||||
|                     'card7': 0, | ||||
|                     'foldBbToStealChance': False, | ||||
|                     'foldSbToStealChance': False, | ||||
|                     'foldToOtherRaisedStreet0': False, | ||||
|                     'foldToOtherRaisedStreet1': False, | ||||
|                     'foldToOtherRaisedStreet2': False, | ||||
|                     'foldToOtherRaisedStreet3': False, | ||||
|                     'foldToOtherRaisedStreet4': False, | ||||
|                     'foldToStreet1CBChance': False, | ||||
|                     'foldToStreet1CBDone': False, | ||||
|                     'foldToStreet2CBChance': False, | ||||
|                     'foldToStreet2CBDone': False, | ||||
|                     'foldToStreet3CBChance': False, | ||||
|                     'foldToStreet3CBDone': False, | ||||
|                     'foldToStreet4CBChance': False, | ||||
|                     'foldToStreet4CBDone': False, | ||||
|                     'foldedBbToSteal': False, | ||||
|                     'foldedSbToSteal': False, | ||||
|                     'other3BStreet0': False, | ||||
|                     'other4BStreet0': False, | ||||
|                     'otherRaisedStreet0': False, | ||||
|                     'otherRaisedStreet1': False, | ||||
|                     'otherRaisedStreet2': False, | ||||
|                     'otherRaisedStreet3': False, | ||||
|                     'otherRaisedStreet4': False, | ||||
|                     'position': 4, | ||||
|                     'raiseFirstInChance': False, | ||||
|                     'raisedFirstIn': False, | ||||
|                     'rake': 5, | ||||
|                     'sawShowdown': False, | ||||
|                     'seatNo': 8, | ||||
|                     'sitout': False, | ||||
|                     'startCards': -7, | ||||
|                     'startCash': 175, | ||||
|                     'street0Aggr': True, | ||||
|                     'street0Bets': 0, | ||||
|                     'street0Calls': 0, | ||||
|                     'street0Raises': 0, | ||||
|                     'street0VPI': True, | ||||
|                     'street0_3BChance': False, | ||||
|                     'street0_3BDone': False, | ||||
|                     'street0_4BChance': False, | ||||
|                     'street0_4BDone': False, | ||||
|                     'street1Aggr': True, | ||||
|                     'street1Bets': 1, | ||||
|                     'street1CBChance': False, | ||||
|                     'street1CBDone': False, | ||||
|                     'street1Calls': 0, | ||||
|                     'street1CheckCallRaiseChance': False, | ||||
|                     'street1CheckCallRaiseDone': False, | ||||
|                     'street1Raises': 0, | ||||
|                     'street1Seen': True, | ||||
|                     'street2Aggr': True, | ||||
|                     'street2Bets': 1, | ||||
|                     'street2CBChance': True, | ||||
|                     'street2CBDone': True, | ||||
|                     'street2Calls': 0, | ||||
|                     'street2CheckCallRaiseChance': False, | ||||
|                     'street2CheckCallRaiseDone': False, | ||||
|                     'street2Raises': 0, | ||||
|                     'street2Seen': True, | ||||
|                     'street3Aggr': True, | ||||
|                     'street3Bets': 1, | ||||
|                     'street3CBChance': True, | ||||
|                     'street3CBDone': True, | ||||
|                     'street3Calls': 0, | ||||
|                     'street3CheckCallRaiseChance': False, | ||||
|                     'street3CheckCallRaiseDone': False, | ||||
|                     'street3Raises': 0, | ||||
|                     'street3Seen': True, | ||||
|                     'street4Aggr': False, | ||||
|                     'street4Bets': 0, | ||||
|                     'street4CBChance': False, | ||||
|                     'street4CBDone': False, | ||||
|                     'street4Calls': 0, | ||||
|                     'street4CheckCallRaiseChance': False, | ||||
|                     'street4CheckCallRaiseDone': False, | ||||
|                     'street4Raises': 0, | ||||
|                     'street4Seen': False, | ||||
|                     'totalProfit': 70, | ||||
|                     'tourneyTypeId': None, | ||||
|                     'tourneysPlayersIds': None, | ||||
|                     'winnings': 112, | ||||
|                     'wonAtSD': 0.0, | ||||
|                     'wonWhenSeenStreet1': 1.0, | ||||
|                     'wonWhenSeenStreet2': 1.0, | ||||
|                     'wonWhenSeenStreet3': 1.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}} | ||||
										
											Binary file not shown.
										
									
								
							|  | @ -0,0 +1,32 @@ | |||
| {   'boardcard1': 0, | ||||
|     'boardcard2': 0, | ||||
|     'boardcard3': 0, | ||||
|     'boardcard4': 0, | ||||
|     'boardcard5': 0, | ||||
|     'gametypeId': 1, | ||||
|     'importTime': None, | ||||
|     'maxSeats': 8, | ||||
|     'playersAtShowdown': 1, | ||||
|     'playersAtStreet-1': 7, | ||||
|     'playersAtStreet0': 3, | ||||
|     'playersAtStreet1': 2, | ||||
|     'playersAtStreet2': 1, | ||||
|     'playersAtStreet3': 1, | ||||
|     'playersAtStreet4': 1, | ||||
|     'playersVpi': 2, | ||||
|     'seats': 8, | ||||
|     'showdownPot': 0, | ||||
|     'siteHandNo': u'26190500040', | ||||
|     'startTime': datetime.datetime(2010, 12, 7, 9, 19, tzinfo=pytz.utc), | ||||
|     'street0Raises': 0, | ||||
|     'street1Pot': 0, | ||||
|     'street1Raises': 1, | ||||
|     'street2Pot': 0, | ||||
|     'street2Raises': 1, | ||||
|     'street3Pot': 0, | ||||
|     'street3Raises': 0, | ||||
|     'street4Pot': 0, | ||||
|     'street4Raises': 0, | ||||
|     'tableName': u'Mart', | ||||
|     'texture': None, | ||||
|     'tourneyId': None} | ||||
|  | @ -0,0 +1,752 @@ | |||
| {   u'Hero': {   'card1': 36, | ||||
|                  'card2': 14, | ||||
|                  'card3': 44, | ||||
|                  'card4': 8, | ||||
|                  'card5': 34, | ||||
|                  'card6': 0, | ||||
|                  'card7': 0, | ||||
|                  'foldBbToStealChance': False, | ||||
|                  'foldSbToStealChance': False, | ||||
|                  'foldToOtherRaisedStreet0': False, | ||||
|                  'foldToOtherRaisedStreet1': False, | ||||
|                  'foldToOtherRaisedStreet2': True, | ||||
|                  'foldToOtherRaisedStreet3': False, | ||||
|                  'foldToOtherRaisedStreet4': False, | ||||
|                  'foldToStreet1CBChance': False, | ||||
|                  'foldToStreet1CBDone': False, | ||||
|                  'foldToStreet2CBChance': False, | ||||
|                  'foldToStreet2CBDone': False, | ||||
|                  'foldToStreet3CBChance': False, | ||||
|                  'foldToStreet3CBDone': False, | ||||
|                  'foldToStreet4CBChance': False, | ||||
|                  'foldToStreet4CBDone': False, | ||||
|                  'foldedBbToSteal': False, | ||||
|                  'foldedSbToSteal': False, | ||||
|                  'other3BStreet0': False, | ||||
|                  'other4BStreet0': False, | ||||
|                  'otherRaisedStreet0': False, | ||||
|                  'otherRaisedStreet1': False, | ||||
|                  'otherRaisedStreet2': True, | ||||
|                  'otherRaisedStreet3': False, | ||||
|                  'otherRaisedStreet4': False, | ||||
|                  'position': 5, | ||||
|                  'raiseFirstInChance': True, | ||||
|                  'raisedFirstIn': False, | ||||
|                  'rake': 0, | ||||
|                  'sawShowdown': False, | ||||
|                  'seatNo': 1, | ||||
|                  'sitout': False, | ||||
|                  'startCards': 395, | ||||
|                  'startCash': 574, | ||||
|                  'street0Aggr': False, | ||||
|                  'street0Bets': 0, | ||||
|                  'street0Calls': 1, | ||||
|                  'street0Raises': 0, | ||||
|                  'street0VPI': True, | ||||
|                  'street0_3BChance': False, | ||||
|                  'street0_3BDone': False, | ||||
|                  'street0_4BChance': False, | ||||
|                  'street0_4BDone': False, | ||||
|                  'street1Aggr': True, | ||||
|                  'street1Bets': 1, | ||||
|                  'street1CBChance': False, | ||||
|                  'street1CBDone': False, | ||||
|                  'street1Calls': 0, | ||||
|                  'street1CheckCallRaiseChance': False, | ||||
|                  'street1CheckCallRaiseDone': False, | ||||
|                  'street1Raises': 0, | ||||
|                  'street1Seen': True, | ||||
|                  'street2Aggr': False, | ||||
|                  'street2Bets': 0, | ||||
|                  'street2CBChance': False, | ||||
|                  'street2CBDone': False, | ||||
|                  'street2Calls': 0, | ||||
|                  'street2CheckCallRaiseChance': False, | ||||
|                  'street2CheckCallRaiseDone': False, | ||||
|                  'street2Raises': 0, | ||||
|                  'street2Seen': True, | ||||
|                  'street3Aggr': False, | ||||
|                  'street3Bets': 0, | ||||
|                  'street3CBChance': False, | ||||
|                  'street3CBDone': False, | ||||
|                  'street3Calls': 0, | ||||
|                  'street3CheckCallRaiseChance': False, | ||||
|                  'street3CheckCallRaiseDone': False, | ||||
|                  'street3Raises': 0, | ||||
|                  'street3Seen': False, | ||||
|                  'street4Aggr': False, | ||||
|                  'street4Bets': 0, | ||||
|                  'street4CBChance': False, | ||||
|                  'street4CBDone': False, | ||||
|                  'street4Calls': 0, | ||||
|                  'street4CheckCallRaiseChance': False, | ||||
|                  'street4CheckCallRaiseDone': False, | ||||
|                  'street4Raises': 0, | ||||
|                  'street4Seen': False, | ||||
|                  'totalProfit': -15, | ||||
|                  'tourneyTypeId': None, | ||||
|                  'tourneysPlayersIds': None, | ||||
|                  'winnings': 0, | ||||
|                  'wonAtSD': 0.0, | ||||
|                  'wonWhenSeenStreet1': 0.0, | ||||
|                  'wonWhenSeenStreet2': 0.0, | ||||
|                  'wonWhenSeenStreet3': 0.0, | ||||
|                  'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player2': {   'card1': 0, | ||||
|                     'card2': 0, | ||||
|                     'card3': 23, | ||||
|                     'card4': 0, | ||||
|                     'card5': 0, | ||||
|                     'card6': 0, | ||||
|                     'card7': 0, | ||||
|                     'foldBbToStealChance': False, | ||||
|                     'foldSbToStealChance': False, | ||||
|                     'foldToOtherRaisedStreet0': False, | ||||
|                     'foldToOtherRaisedStreet1': False, | ||||
|                     'foldToOtherRaisedStreet2': False, | ||||
|                     'foldToOtherRaisedStreet3': False, | ||||
|                     'foldToOtherRaisedStreet4': False, | ||||
|                     'foldToStreet1CBChance': False, | ||||
|                     'foldToStreet1CBDone': False, | ||||
|                     'foldToStreet2CBChance': False, | ||||
|                     'foldToStreet2CBDone': False, | ||||
|                     'foldToStreet3CBChance': False, | ||||
|                     'foldToStreet3CBDone': False, | ||||
|                     'foldToStreet4CBChance': False, | ||||
|                     'foldToStreet4CBDone': False, | ||||
|                     'foldedBbToSteal': False, | ||||
|                     'foldedSbToSteal': False, | ||||
|                     'other3BStreet0': False, | ||||
|                     'other4BStreet0': False, | ||||
|                     'otherRaisedStreet0': False, | ||||
|                     'otherRaisedStreet1': False, | ||||
|                     'otherRaisedStreet2': False, | ||||
|                     'otherRaisedStreet3': False, | ||||
|                     'otherRaisedStreet4': False, | ||||
|                     'position': 4, | ||||
|                     'raiseFirstInChance': False, | ||||
|                     'raisedFirstIn': False, | ||||
|                     'rake': 0, | ||||
|                     'sawShowdown': False, | ||||
|                     'seatNo': 2, | ||||
|                     'sitout': False, | ||||
|                     'startCards': -3, | ||||
|                     'startCash': 650, | ||||
|                     'street0Aggr': False, | ||||
|                     'street0Bets': 0, | ||||
|                     'street0Calls': 0, | ||||
|                     'street0Raises': 0, | ||||
|                     'street0VPI': False, | ||||
|                     'street0_3BChance': False, | ||||
|                     'street0_3BDone': False, | ||||
|                     'street0_4BChance': False, | ||||
|                     'street0_4BDone': False, | ||||
|                     'street1Aggr': False, | ||||
|                     'street1Bets': 0, | ||||
|                     'street1CBChance': False, | ||||
|                     'street1CBDone': False, | ||||
|                     'street1Calls': 0, | ||||
|                     'street1CheckCallRaiseChance': False, | ||||
|                     'street1CheckCallRaiseDone': False, | ||||
|                     'street1Raises': 0, | ||||
|                     'street1Seen': False, | ||||
|                     'street2Aggr': False, | ||||
|                     'street2Bets': 0, | ||||
|                     'street2CBChance': False, | ||||
|                     'street2CBDone': False, | ||||
|                     'street2Calls': 0, | ||||
|                     'street2CheckCallRaiseChance': False, | ||||
|                     'street2CheckCallRaiseDone': False, | ||||
|                     'street2Raises': 0, | ||||
|                     'street2Seen': False, | ||||
|                     'street3Aggr': False, | ||||
|                     'street3Bets': 0, | ||||
|                     'street3CBChance': False, | ||||
|                     'street3CBDone': False, | ||||
|                     'street3Calls': 0, | ||||
|                     'street3CheckCallRaiseChance': False, | ||||
|                     'street3CheckCallRaiseDone': False, | ||||
|                     'street3Raises': 0, | ||||
|                     'street3Seen': False, | ||||
|                     'street4Aggr': False, | ||||
|                     'street4Bets': 0, | ||||
|                     'street4CBChance': False, | ||||
|                     'street4CBDone': False, | ||||
|                     'street4Calls': 0, | ||||
|                     'street4CheckCallRaiseChance': False, | ||||
|                     'street4CheckCallRaiseDone': False, | ||||
|                     'street4Raises': 0, | ||||
|                     'street4Seen': False, | ||||
|                     'totalProfit': -2, | ||||
|                     'tourneyTypeId': None, | ||||
|                     'tourneysPlayersIds': None, | ||||
|                     'winnings': 0, | ||||
|                     'wonAtSD': 0.0, | ||||
|                     'wonWhenSeenStreet1': 0.0, | ||||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player3': {   'card1': 0, | ||||
|                     'card2': 0, | ||||
|                     'card3': 26, | ||||
|                     'card4': 10, | ||||
|                     'card5': 0, | ||||
|                     'card6': 0, | ||||
|                     'card7': 0, | ||||
|                     'foldBbToStealChance': False, | ||||
|                     'foldSbToStealChance': False, | ||||
|                     'foldToOtherRaisedStreet0': False, | ||||
|                     'foldToOtherRaisedStreet1': True, | ||||
|                     'foldToOtherRaisedStreet2': False, | ||||
|                     'foldToOtherRaisedStreet3': False, | ||||
|                     'foldToOtherRaisedStreet4': False, | ||||
|                     'foldToStreet1CBChance': False, | ||||
|                     'foldToStreet1CBDone': False, | ||||
|                     'foldToStreet2CBChance': False, | ||||
|                     'foldToStreet2CBDone': False, | ||||
|                     'foldToStreet3CBChance': False, | ||||
|                     'foldToStreet3CBDone': False, | ||||
|                     'foldToStreet4CBChance': False, | ||||
|                     'foldToStreet4CBDone': False, | ||||
|                     'foldedBbToSteal': False, | ||||
|                     'foldedSbToSteal': False, | ||||
|                     'other3BStreet0': False, | ||||
|                     'other4BStreet0': False, | ||||
|                     'otherRaisedStreet0': False, | ||||
|                     'otherRaisedStreet1': True, | ||||
|                     'otherRaisedStreet2': False, | ||||
|                     'otherRaisedStreet3': False, | ||||
|                     'otherRaisedStreet4': False, | ||||
|                     'position': 3, | ||||
|                     'raiseFirstInChance': False, | ||||
|                     'raisedFirstIn': False, | ||||
|                     'rake': 0, | ||||
|                     'sawShowdown': False, | ||||
|                     'seatNo': 3, | ||||
|                     'sitout': False, | ||||
|                     'startCards': -13, | ||||
|                     'startCash': 690, | ||||
|                     'street0Aggr': False, | ||||
|                     'street0Bets': 0, | ||||
|                     'street0Calls': 1, | ||||
|                     'street0Raises': 0, | ||||
|                     'street0VPI': True, | ||||
|                     'street0_3BChance': False, | ||||
|                     'street0_3BDone': False, | ||||
|                     'street0_4BChance': False, | ||||
|                     'street0_4BDone': False, | ||||
|                     'street1Aggr': False, | ||||
|                     'street1Bets': 0, | ||||
|                     'street1CBChance': False, | ||||
|                     'street1CBDone': False, | ||||
|                     'street1Calls': 0, | ||||
|                     'street1CheckCallRaiseChance': False, | ||||
|                     'street1CheckCallRaiseDone': False, | ||||
|                     'street1Raises': 0, | ||||
|                     'street1Seen': True, | ||||
|                     'street2Aggr': False, | ||||
|                     'street2Bets': 0, | ||||
|                     'street2CBChance': False, | ||||
|                     'street2CBDone': False, | ||||
|                     'street2Calls': 0, | ||||
|                     'street2CheckCallRaiseChance': False, | ||||
|                     'street2CheckCallRaiseDone': False, | ||||
|                     'street2Raises': 0, | ||||
|                     'street2Seen': False, | ||||
|                     'street3Aggr': False, | ||||
|                     'street3Bets': 0, | ||||
|                     'street3CBChance': False, | ||||
|                     'street3CBDone': False, | ||||
|                     'street3Calls': 0, | ||||
|                     'street3CheckCallRaiseChance': False, | ||||
|                     'street3CheckCallRaiseDone': False, | ||||
|                     'street3Raises': 0, | ||||
|                     'street3Seen': False, | ||||
|                     'street4Aggr': False, | ||||
|                     'street4Bets': 0, | ||||
|                     'street4CBChance': False, | ||||
|                     'street4CBDone': False, | ||||
|                     'street4Calls': 0, | ||||
|                     'street4CheckCallRaiseChance': False, | ||||
|                     'street4CheckCallRaiseDone': False, | ||||
|                     'street4Raises': 0, | ||||
|                     'street4Seen': False, | ||||
|                     'totalProfit': -5, | ||||
|                     'tourneyTypeId': None, | ||||
|                     'tourneysPlayersIds': None, | ||||
|                     'winnings': 0, | ||||
|                     'wonAtSD': 0.0, | ||||
|                     'wonWhenSeenStreet1': 0.0, | ||||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player4': {   'card1': 0, | ||||
|                     'card2': 0, | ||||
|                     'card3': 41, | ||||
|                     'card4': 0, | ||||
|                     'card5': 0, | ||||
|                     'card6': 0, | ||||
|                     'card7': 0, | ||||
|                     'foldBbToStealChance': False, | ||||
|                     'foldSbToStealChance': False, | ||||
|                     'foldToOtherRaisedStreet0': False, | ||||
|                     'foldToOtherRaisedStreet1': False, | ||||
|                     'foldToOtherRaisedStreet2': False, | ||||
|                     'foldToOtherRaisedStreet3': False, | ||||
|                     'foldToOtherRaisedStreet4': False, | ||||
|                     'foldToStreet1CBChance': False, | ||||
|                     'foldToStreet1CBDone': False, | ||||
|                     'foldToStreet2CBChance': False, | ||||
|                     'foldToStreet2CBDone': False, | ||||
|                     'foldToStreet3CBChance': False, | ||||
|                     'foldToStreet3CBDone': False, | ||||
|                     'foldToStreet4CBChance': False, | ||||
|                     'foldToStreet4CBDone': False, | ||||
|                     'foldedBbToSteal': False, | ||||
|                     'foldedSbToSteal': False, | ||||
|                     'other3BStreet0': False, | ||||
|                     'other4BStreet0': False, | ||||
|                     'otherRaisedStreet0': False, | ||||
|                     'otherRaisedStreet1': False, | ||||
|                     'otherRaisedStreet2': False, | ||||
|                     'otherRaisedStreet3': False, | ||||
|                     'otherRaisedStreet4': False, | ||||
|                     'position': 2, | ||||
|                     'raiseFirstInChance': False, | ||||
|                     'raisedFirstIn': False, | ||||
|                     'rake': 0, | ||||
|                     'sawShowdown': False, | ||||
|                     'seatNo': 4, | ||||
|                     'sitout': False, | ||||
|                     'startCards': -11, | ||||
|                     'startCash': 168, | ||||
|                     'street0Aggr': False, | ||||
|                     'street0Bets': 0, | ||||
|                     'street0Calls': 0, | ||||
|                     'street0Raises': 0, | ||||
|                     'street0VPI': False, | ||||
|                     'street0_3BChance': False, | ||||
|                     'street0_3BDone': False, | ||||
|                     'street0_4BChance': False, | ||||
|                     'street0_4BDone': False, | ||||
|                     'street1Aggr': False, | ||||
|                     'street1Bets': 0, | ||||
|                     'street1CBChance': False, | ||||
|                     'street1CBDone': False, | ||||
|                     'street1Calls': 0, | ||||
|                     'street1CheckCallRaiseChance': False, | ||||
|                     'street1CheckCallRaiseDone': False, | ||||
|                     'street1Raises': 0, | ||||
|                     'street1Seen': False, | ||||
|                     'street2Aggr': False, | ||||
|                     'street2Bets': 0, | ||||
|                     'street2CBChance': False, | ||||
|                     'street2CBDone': False, | ||||
|                     'street2Calls': 0, | ||||
|                     'street2CheckCallRaiseChance': False, | ||||
|                     'street2CheckCallRaiseDone': False, | ||||
|                     'street2Raises': 0, | ||||
|                     'street2Seen': False, | ||||
|                     'street3Aggr': False, | ||||
|                     'street3Bets': 0, | ||||
|                     'street3CBChance': False, | ||||
|                     'street3CBDone': False, | ||||
|                     'street3Calls': 0, | ||||
|                     'street3CheckCallRaiseChance': False, | ||||
|                     'street3CheckCallRaiseDone': False, | ||||
|                     'street3Raises': 0, | ||||
|                     'street3Seen': False, | ||||
|                     'street4Aggr': False, | ||||
|                     'street4Bets': 0, | ||||
|                     'street4CBChance': False, | ||||
|                     'street4CBDone': False, | ||||
|                     'street4Calls': 0, | ||||
|                     'street4CheckCallRaiseChance': False, | ||||
|                     'street4CheckCallRaiseDone': False, | ||||
|                     'street4Raises': 0, | ||||
|                     'street4Seen': False, | ||||
|                     'totalProfit': -2, | ||||
|                     'tourneyTypeId': None, | ||||
|                     'tourneysPlayersIds': None, | ||||
|                     'winnings': 0, | ||||
|                     'wonAtSD': 0.0, | ||||
|                     'wonWhenSeenStreet1': 0.0, | ||||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player5': {   'card1': 0, | ||||
|                     'card2': 0, | ||||
|                     'card3': 6, | ||||
|                     'card4': 0, | ||||
|                     'card5': 0, | ||||
|                     'card6': 0, | ||||
|                     'card7': 0, | ||||
|                     'foldBbToStealChance': False, | ||||
|                     'foldSbToStealChance': False, | ||||
|                     'foldToOtherRaisedStreet0': False, | ||||
|                     'foldToOtherRaisedStreet1': False, | ||||
|                     'foldToOtherRaisedStreet2': False, | ||||
|                     'foldToOtherRaisedStreet3': False, | ||||
|                     'foldToOtherRaisedStreet4': False, | ||||
|                     'foldToStreet1CBChance': False, | ||||
|                     'foldToStreet1CBDone': False, | ||||
|                     'foldToStreet2CBChance': False, | ||||
|                     'foldToStreet2CBDone': False, | ||||
|                     'foldToStreet3CBChance': False, | ||||
|                     'foldToStreet3CBDone': False, | ||||
|                     'foldToStreet4CBChance': False, | ||||
|                     'foldToStreet4CBDone': False, | ||||
|                     'foldedBbToSteal': False, | ||||
|                     'foldedSbToSteal': False, | ||||
|                     'other3BStreet0': False, | ||||
|                     'other4BStreet0': False, | ||||
|                     'otherRaisedStreet0': False, | ||||
|                     'otherRaisedStreet1': False, | ||||
|                     'otherRaisedStreet2': False, | ||||
|                     'otherRaisedStreet3': False, | ||||
|                     'otherRaisedStreet4': False, | ||||
|                     'position': 1, | ||||
|                     'raiseFirstInChance': False, | ||||
|                     'raisedFirstIn': False, | ||||
|                     'rake': 0, | ||||
|                     'sawShowdown': False, | ||||
|                     'seatNo': 5, | ||||
|                     'sitout': False, | ||||
|                     'startCards': -7, | ||||
|                     'startCash': 802, | ||||
|                     'street0Aggr': False, | ||||
|                     'street0Bets': 0, | ||||
|                     'street0Calls': 0, | ||||
|                     'street0Raises': 0, | ||||
|                     'street0VPI': False, | ||||
|                     'street0_3BChance': False, | ||||
|                     'street0_3BDone': False, | ||||
|                     'street0_4BChance': False, | ||||
|                     'street0_4BDone': False, | ||||
|                     'street1Aggr': False, | ||||
|                     'street1Bets': 0, | ||||
|                     'street1CBChance': False, | ||||
|                     'street1CBDone': False, | ||||
|                     'street1Calls': 0, | ||||
|                     'street1CheckCallRaiseChance': False, | ||||
|                     'street1CheckCallRaiseDone': False, | ||||
|                     'street1Raises': 0, | ||||
|                     'street1Seen': False, | ||||
|                     'street2Aggr': False, | ||||
|                     'street2Bets': 0, | ||||
|                     'street2CBChance': False, | ||||
|                     'street2CBDone': False, | ||||
|                     'street2Calls': 0, | ||||
|                     'street2CheckCallRaiseChance': False, | ||||
|                     'street2CheckCallRaiseDone': False, | ||||
|                     'street2Raises': 0, | ||||
|                     'street2Seen': False, | ||||
|                     'street3Aggr': False, | ||||
|                     'street3Bets': 0, | ||||
|                     'street3CBChance': False, | ||||
|                     'street3CBDone': False, | ||||
|                     'street3Calls': 0, | ||||
|                     'street3CheckCallRaiseChance': False, | ||||
|                     'street3CheckCallRaiseDone': False, | ||||
|                     'street3Raises': 0, | ||||
|                     'street3Seen': False, | ||||
|                     'street4Aggr': False, | ||||
|                     'street4Bets': 0, | ||||
|                     'street4CBChance': False, | ||||
|                     'street4CBDone': False, | ||||
|                     'street4Calls': 0, | ||||
|                     'street4CheckCallRaiseChance': False, | ||||
|                     'street4CheckCallRaiseDone': False, | ||||
|                     'street4Raises': 0, | ||||
|                     'street4Seen': False, | ||||
|                     'totalProfit': -2, | ||||
|                     'tourneyTypeId': None, | ||||
|                     'tourneysPlayersIds': None, | ||||
|                     'winnings': 0, | ||||
|                     'wonAtSD': 0.0, | ||||
|                     'wonWhenSeenStreet1': 0.0, | ||||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player6': {   'card1': 0, | ||||
|                     'card2': 0, | ||||
|                     'card3': 0, | ||||
|                     'card4': 0, | ||||
|                     'card5': 0, | ||||
|                     'card6': 0, | ||||
|                     'card7': 0, | ||||
|                     'foldBbToStealChance': False, | ||||
|                     'foldSbToStealChance': False, | ||||
|                     'foldToOtherRaisedStreet0': False, | ||||
|                     'foldToOtherRaisedStreet1': False, | ||||
|                     'foldToOtherRaisedStreet2': False, | ||||
|                     'foldToOtherRaisedStreet3': False, | ||||
|                     'foldToOtherRaisedStreet4': False, | ||||
|                     'foldToStreet1CBChance': False, | ||||
|                     'foldToStreet1CBDone': False, | ||||
|                     'foldToStreet2CBChance': False, | ||||
|                     'foldToStreet2CBDone': False, | ||||
|                     'foldToStreet3CBChance': False, | ||||
|                     'foldToStreet3CBDone': False, | ||||
|                     'foldToStreet4CBChance': False, | ||||
|                     'foldToStreet4CBDone': False, | ||||
|                     'foldedBbToSteal': False, | ||||
|                     'foldedSbToSteal': False, | ||||
|                     'other3BStreet0': False, | ||||
|                     'other4BStreet0': False, | ||||
|                     'otherRaisedStreet0': False, | ||||
|                     'otherRaisedStreet1': False, | ||||
|                     'otherRaisedStreet2': False, | ||||
|                     'otherRaisedStreet3': False, | ||||
|                     'otherRaisedStreet4': False, | ||||
|                     'position': 2, | ||||
|                     'raiseFirstInChance': False, | ||||
|                     'raisedFirstIn': False, | ||||
|                     'rake': 0, | ||||
|                     'sawShowdown': False, | ||||
|                     'seatNo': 6, | ||||
|                     'sitout': False, | ||||
|                     'startCards': 0, | ||||
|                     'startCash': 54, | ||||
|                     'street0Aggr': False, | ||||
|                     'street0Bets': 0, | ||||
|                     'street0Calls': 0, | ||||
|                     'street0Raises': 0, | ||||
|                     'street0VPI': False, | ||||
|                     'street0_3BChance': False, | ||||
|                     'street0_3BDone': False, | ||||
|                     'street0_4BChance': False, | ||||
|                     'street0_4BDone': False, | ||||
|                     'street1Aggr': False, | ||||
|                     'street1Bets': 0, | ||||
|                     'street1CBChance': False, | ||||
|                     'street1CBDone': False, | ||||
|                     'street1Calls': 0, | ||||
|                     'street1CheckCallRaiseChance': False, | ||||
|                     'street1CheckCallRaiseDone': False, | ||||
|                     'street1Raises': 0, | ||||
|                     'street1Seen': False, | ||||
|                     'street2Aggr': False, | ||||
|                     'street2Bets': 0, | ||||
|                     'street2CBChance': False, | ||||
|                     'street2CBDone': False, | ||||
|                     'street2Calls': 0, | ||||
|                     'street2CheckCallRaiseChance': False, | ||||
|                     'street2CheckCallRaiseDone': False, | ||||
|                     'street2Raises': 0, | ||||
|                     'street2Seen': False, | ||||
|                     'street3Aggr': False, | ||||
|                     'street3Bets': 0, | ||||
|                     'street3CBChance': False, | ||||
|                     'street3CBDone': False, | ||||
|                     'street3Calls': 0, | ||||
|                     'street3CheckCallRaiseChance': False, | ||||
|                     'street3CheckCallRaiseDone': False, | ||||
|                     'street3Raises': 0, | ||||
|                     'street3Seen': False, | ||||
|                     'street4Aggr': False, | ||||
|                     'street4Bets': 0, | ||||
|                     'street4CBChance': False, | ||||
|                     'street4CBDone': False, | ||||
|                     'street4Calls': 0, | ||||
|                     'street4CheckCallRaiseChance': False, | ||||
|                     'street4CheckCallRaiseDone': False, | ||||
|                     'street4Raises': 0, | ||||
|                     'street4Seen': False, | ||||
|                     'totalProfit': 0, | ||||
|                     'tourneyTypeId': None, | ||||
|                     'tourneysPlayersIds': None, | ||||
|                     'winnings': 0, | ||||
|                     'wonAtSD': 0.0, | ||||
|                     'wonWhenSeenStreet1': 0.0, | ||||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player7': {   'card1': 0, | ||||
|                     'card2': 0, | ||||
|                     'card3': 52, | ||||
|                     'card4': 0, | ||||
|                     'card5': 0, | ||||
|                     'card6': 0, | ||||
|                     'card7': 0, | ||||
|                     'foldBbToStealChance': False, | ||||
|                     'foldSbToStealChance': False, | ||||
|                     'foldToOtherRaisedStreet0': False, | ||||
|                     'foldToOtherRaisedStreet1': False, | ||||
|                     'foldToOtherRaisedStreet2': False, | ||||
|                     'foldToOtherRaisedStreet3': False, | ||||
|                     'foldToOtherRaisedStreet4': False, | ||||
|                     'foldToStreet1CBChance': False, | ||||
|                     'foldToStreet1CBDone': False, | ||||
|                     'foldToStreet2CBChance': False, | ||||
|                     'foldToStreet2CBDone': False, | ||||
|                     'foldToStreet3CBChance': False, | ||||
|                     'foldToStreet3CBDone': False, | ||||
|                     'foldToStreet4CBChance': False, | ||||
|                     'foldToStreet4CBDone': False, | ||||
|                     'foldedBbToSteal': False, | ||||
|                     'foldedSbToSteal': False, | ||||
|                     'other3BStreet0': False, | ||||
|                     'other4BStreet0': False, | ||||
|                     'otherRaisedStreet0': False, | ||||
|                     'otherRaisedStreet1': False, | ||||
|                     'otherRaisedStreet2': False, | ||||
|                     'otherRaisedStreet3': False, | ||||
|                     'otherRaisedStreet4': False, | ||||
|                     'position': 0, | ||||
|                     'raiseFirstInChance': False, | ||||
|                     'raisedFirstIn': False, | ||||
|                     'rake': 0, | ||||
|                     'sawShowdown': False, | ||||
|                     'seatNo': 7, | ||||
|                     'sitout': False, | ||||
|                     'startCards': -13, | ||||
|                     'startCash': 281, | ||||
|                     'street0Aggr': False, | ||||
|                     'street0Bets': 0, | ||||
|                     'street0Calls': 0, | ||||
|                     'street0Raises': 0, | ||||
|                     'street0VPI': False, | ||||
|                     'street0_3BChance': False, | ||||
|                     'street0_3BDone': False, | ||||
|                     'street0_4BChance': False, | ||||
|                     'street0_4BDone': False, | ||||
|                     'street1Aggr': False, | ||||
|                     'street1Bets': 0, | ||||
|                     'street1CBChance': False, | ||||
|                     'street1CBDone': False, | ||||
|                     'street1Calls': 0, | ||||
|                     'street1CheckCallRaiseChance': False, | ||||
|                     'street1CheckCallRaiseDone': False, | ||||
|                     'street1Raises': 0, | ||||
|                     'street1Seen': False, | ||||
|                     'street2Aggr': False, | ||||
|                     'street2Bets': 0, | ||||
|                     'street2CBChance': False, | ||||
|                     'street2CBDone': False, | ||||
|                     'street2Calls': 0, | ||||
|                     'street2CheckCallRaiseChance': False, | ||||
|                     'street2CheckCallRaiseDone': False, | ||||
|                     'street2Raises': 0, | ||||
|                     'street2Seen': False, | ||||
|                     'street3Aggr': False, | ||||
|                     'street3Bets': 0, | ||||
|                     'street3CBChance': False, | ||||
|                     'street3CBDone': False, | ||||
|                     'street3Calls': 0, | ||||
|                     'street3CheckCallRaiseChance': False, | ||||
|                     'street3CheckCallRaiseDone': False, | ||||
|                     'street3Raises': 0, | ||||
|                     'street3Seen': False, | ||||
|                     'street4Aggr': False, | ||||
|                     'street4Bets': 0, | ||||
|                     'street4CBChance': False, | ||||
|                     'street4CBDone': False, | ||||
|                     'street4Calls': 0, | ||||
|                     'street4CheckCallRaiseChance': False, | ||||
|                     'street4CheckCallRaiseDone': False, | ||||
|                     'street4Raises': 0, | ||||
|                     'street4Seen': False, | ||||
|                     'totalProfit': -2, | ||||
|                     'tourneyTypeId': None, | ||||
|                     'tourneysPlayersIds': None, | ||||
|                     'winnings': 0, | ||||
|                     'wonAtSD': 0.0, | ||||
|                     'wonWhenSeenStreet1': 0.0, | ||||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player8': {   'card1': 0, | ||||
|                     'card2': 0, | ||||
|                     'card3': 37, | ||||
|                     'card4': 46, | ||||
|                     'card5': 18, | ||||
|                     'card6': 0, | ||||
|                     'card7': 0, | ||||
|                     'foldBbToStealChance': False, | ||||
|                     'foldSbToStealChance': False, | ||||
|                     'foldToOtherRaisedStreet0': False, | ||||
|                     'foldToOtherRaisedStreet1': False, | ||||
|                     'foldToOtherRaisedStreet2': False, | ||||
|                     'foldToOtherRaisedStreet3': False, | ||||
|                     'foldToOtherRaisedStreet4': False, | ||||
|                     'foldToStreet1CBChance': False, | ||||
|                     'foldToStreet1CBDone': False, | ||||
|                     'foldToStreet2CBChance': False, | ||||
|                     'foldToStreet2CBDone': False, | ||||
|                     'foldToStreet3CBChance': False, | ||||
|                     'foldToStreet3CBDone': False, | ||||
|                     'foldToStreet4CBChance': False, | ||||
|                     'foldToStreet4CBDone': False, | ||||
|                     'foldedBbToSteal': False, | ||||
|                     'foldedSbToSteal': False, | ||||
|                     'other3BStreet0': False, | ||||
|                     'other4BStreet0': False, | ||||
|                     'otherRaisedStreet0': False, | ||||
|                     'otherRaisedStreet1': True, | ||||
|                     'otherRaisedStreet2': False, | ||||
|                     'otherRaisedStreet3': False, | ||||
|                     'otherRaisedStreet4': False, | ||||
|                     'position': 'S', | ||||
|                     'raiseFirstInChance': False, | ||||
|                     'raisedFirstIn': False, | ||||
|                     'rake': 2, | ||||
|                     'sawShowdown': False, | ||||
|                     'seatNo': 8, | ||||
|                     'sitout': False, | ||||
|                     'startCards': -2, | ||||
|                     'startCash': 187, | ||||
|                     'street0Aggr': False, | ||||
|                     'street0Bets': 0, | ||||
|                     'street0Calls': 0, | ||||
|                     'street0Raises': 0, | ||||
|                     'street0VPI': False, | ||||
|                     'street0_3BChance': False, | ||||
|                     'street0_3BDone': False, | ||||
|                     'street0_4BChance': False, | ||||
|                     'street0_4BDone': False, | ||||
|                     'street1Aggr': False, | ||||
|                     'street1Bets': 0, | ||||
|                     'street1CBChance': False, | ||||
|                     'street1CBDone': False, | ||||
|                     'street1Calls': 1, | ||||
|                     'street1CheckCallRaiseChance': False, | ||||
|                     'street1CheckCallRaiseDone': False, | ||||
|                     'street1Raises': 0, | ||||
|                     'street1Seen': True, | ||||
|                     'street2Aggr': True, | ||||
|                     'street2Bets': 1, | ||||
|                     'street2CBChance': False, | ||||
|                     'street2CBDone': False, | ||||
|                     'street2Calls': 0, | ||||
|                     'street2CheckCallRaiseChance': False, | ||||
|                     'street2CheckCallRaiseDone': False, | ||||
|                     'street2Raises': 0, | ||||
|                     'street2Seen': True, | ||||
|                     'street3Aggr': False, | ||||
|                     'street3Bets': 0, | ||||
|                     'street3CBChance': False, | ||||
|                     'street3CBDone': False, | ||||
|                     'street3Calls': 0, | ||||
|                     'street3CheckCallRaiseChance': False, | ||||
|                     'street3CheckCallRaiseDone': False, | ||||
|                     'street3Raises': 0, | ||||
|                     'street3Seen': False, | ||||
|                     'street4Aggr': False, | ||||
|                     'street4Bets': 0, | ||||
|                     'street4CBChance': False, | ||||
|                     'street4CBDone': False, | ||||
|                     'street4Calls': 0, | ||||
|                     'street4CheckCallRaiseChance': False, | ||||
|                     'street4CheckCallRaiseDone': False, | ||||
|                     'street4Raises': 0, | ||||
|                     'street4Seen': False, | ||||
|                     'totalProfit': 26, | ||||
|                     'tourneyTypeId': None, | ||||
|                     'tourneysPlayersIds': None, | ||||
|                     'winnings': 41, | ||||
|                     'wonAtSD': 0.0, | ||||
|                     'wonWhenSeenStreet1': 1.0, | ||||
|                     'wonWhenSeenStreet2': 1.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}} | ||||
|  | @ -1,79 +1,79 @@ | |||
| ***** History for hand R5-81962116-232 ***** | ||||
| Start hand: Mon Sep 13 00:21:02 GMT+0100 2010 | ||||
| Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 3 | ||||
| Players in round: 4 | ||||
| Seat 8: DamonV2 ($0.07) | ||||
| Seat 10: tchazx ($1) | ||||
| Seat 10: Hero ($1) | ||||
| Seat 1: x Diabolo666 ($11.23) | ||||
| Seat 3: velabianca ($0.51) | ||||
| DamonV2 posts small blind ($0.02) | ||||
| tchazx posts big blind ($0.05) | ||||
| Hero posts big blind ($0.05) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [Tc, 9h, 7c, Ah, Jh] | ||||
| Dealing to Hero: [Tc, 9h, 7c, Ah, Jh] | ||||
| x Diabolo666 raises $0.10 to $0.10 | ||||
| velabianca folds | ||||
| DamonV2 folds | ||||
| tchazx calls $0.05 | ||||
| Hero calls $0.05 | ||||
| --- | ||||
| tchazx changed 2 cards | ||||
| New hand for tchazx: [8h, 9h, 6s, Ah, Jh] | ||||
| Hero changed 2 cards | ||||
| New hand for Hero: [8h, 9h, 6s, Ah, Jh] | ||||
| x Diabolo666 changed 3 cards | ||||
| tchazx checks | ||||
| Hero checks | ||||
| x Diabolo666 checks | ||||
| --- | ||||
| Summary: | ||||
| Main pot: $0.22 won by x Diabolo666 ($0.21) | ||||
| Rake taken: $0.01 | ||||
| Seat 8: DamonV2 ($0.05), net: -$0.02 | ||||
| Seat 10: tchazx ($0.90), net: -$0.10, [8h, 9h, 6s, Ah, Jh] (HIGH_CARD ACE) | ||||
| Seat 10: Hero ($0.90), net: -$0.10, [8h, 9h, 6s, Ah, Jh] (HIGH_CARD ACE) | ||||
| Seat 1: x Diabolo666 ($11.34), net: +$0.11, [2c, Ac, Td, As, Qc] (PAIR ACE) | ||||
| Seat 3: velabianca ($0.51) | ||||
| ***** End of hand R5-81962116-232 ***** | ||||
| ***** History for hand R5-81962116-233 ***** | ||||
| Start hand: Mon Sep 13 00:21:42 GMT+0100 2010 | ||||
| Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 8 | ||||
| Players in round: 5 | ||||
| Seat 10: tchazx ($0.90) | ||||
| Seat 10: Hero ($0.90) | ||||
| Seat 1: x Diabolo666 ($11.34) | ||||
| Seat 3: velabianca ($0.51) | ||||
| Seat 4: grommek ($9.40) | ||||
| Seat 8: DamonV2 ($0.05) | ||||
| tchazx posts small blind ($0.02) | ||||
| Hero posts small blind ($0.02) | ||||
| x Diabolo666 posts big blind ($0.05) | ||||
| grommek posts big blind ($0.05) | ||||
| grommek posts dead blind ($0.02) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [Jd, 5s, 8h, 4h, 7d] | ||||
| Dealing to Hero: [Jd, 5s, 8h, 4h, 7d] | ||||
| velabianca calls $0.05 | ||||
| grommek checks | ||||
| DamonV2 calls $0.05 [all in] | ||||
| tchazx calls $0.03 | ||||
| Hero calls $0.03 | ||||
| x Diabolo666 checks | ||||
| --- | ||||
| tchazx changed 1 cards | ||||
| New hand for tchazx: [Ah, 5s, 8h, 4h, 7d] | ||||
| Hero changed 1 cards | ||||
| New hand for Hero: [Ah, 5s, 8h, 4h, 7d] | ||||
| x Diabolo666 changed 4 cards | ||||
| velabianca changed 2 cards | ||||
| grommek changed 3 cards | ||||
| DamonV2 changed 2 cards | ||||
| tchazx checks | ||||
| Hero checks | ||||
| x Diabolo666 checks | ||||
| velabianca bets $0.10 | ||||
| grommek folds | ||||
| tchazx folds | ||||
| Hero folds | ||||
| x Diabolo666 folds | ||||
| ---  | ||||
| --- | ||||
| Summary: | ||||
| Main pot: $0.27 won by velabianca ($0.26) | ||||
| Rake taken: $0.01 | ||||
| Seat 10: tchazx ($0.85), net: -$0.05 | ||||
| Seat 10: Hero ($0.85), net: -$0.05 | ||||
| Seat 1: x Diabolo666 ($11.29), net: -$0.05 | ||||
| Seat 3: velabianca ($0.72), net: +$0.21, [As, 9s, 6s, 6c, 9h] (TWO_PAIR NINE, SIX) | ||||
| Seat 4: grommek ($9.33), net: -$0.07 | ||||
|  | @ -82,20 +82,20 @@ Seat 8: DamonV2 ($0), net: -$0.05, [Jh, 2c, Kh, Td, 6h] (HIGH_CARD KING) | |||
| ***** History for hand R5-81962116-234 ***** | ||||
| Start hand: Mon Sep 13 00:22:36 GMT+0100 2010 | ||||
| Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 10 | ||||
| Players in round: 4 | ||||
| Seat 1: x Diabolo666 ($11.29) | ||||
| Seat 3: velabianca ($0.72) | ||||
| Seat 4: grommek ($9.33) | ||||
| Seat 10: tchazx ($0.85) | ||||
| Seat 10: Hero ($0.85) | ||||
| x Diabolo666 posts small blind ($0.02) | ||||
| velabianca posts big blind ($0.05) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [Kh, 9d, As, 4s, 7c] | ||||
| Dealing to Hero: [Kh, 9d, As, 4s, 7c] | ||||
| grommek calls $0.05 | ||||
| tchazx folds | ||||
| Hero folds | ||||
| x Diabolo666 folds | ||||
| velabianca checks | ||||
| velabianca changed 3 cards | ||||
|  | @ -110,37 +110,37 @@ Rake taken: $0 | |||
| Seat 1: x Diabolo666 ($11.27), net: -$0.02 | ||||
| Seat 3: velabianca ($0.67), net: -$0.05 | ||||
| Seat 4: grommek ($9.40), net: +$0.07 | ||||
| Seat 10: tchazx ($0.85) | ||||
| Seat 10: Hero ($0.85) | ||||
| ***** End of hand R5-81962116-234 ***** | ||||
| ***** History for hand R5-81962116-235 ***** | ||||
| Start hand: Mon Sep 13 00:23:04 GMT+0100 2010 | ||||
| Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 1 | ||||
| Players in round: 4 | ||||
| Seat 3: velabianca ($0.67) | ||||
| Seat 4: grommek ($9.40) | ||||
| Seat 10: tchazx ($0.85) | ||||
| Seat 10: Hero ($0.85) | ||||
| Seat 1: x Diabolo666 ($11.27) | ||||
| velabianca posts small blind ($0.02) | ||||
| grommek posts big blind ($0.05) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [8d, Td, 2s, 3d, Qd] | ||||
| tchazx calls $0.05 | ||||
| Dealing to Hero: [8d, Td, 2s, 3d, Qd] | ||||
| Hero calls $0.05 | ||||
| x Diabolo666 raises $0.10 to $0.10 | ||||
| velabianca calls $0.08 | ||||
| grommek calls $0.05 | ||||
| tchazx calls $0.05 | ||||
| Hero calls $0.05 | ||||
| --- | ||||
| velabianca changed 2 cards | ||||
| grommek changed 2 cards | ||||
| tchazx changed 1 cards | ||||
| New hand for tchazx: [8d, Td, 8h, 3d, Qd] | ||||
| Hero changed 1 cards | ||||
| New hand for Hero: [8d, Td, 8h, 3d, Qd] | ||||
| x Diabolo666 changed 3 cards | ||||
| velabianca checks | ||||
| grommek checks | ||||
| tchazx checks | ||||
| Hero checks | ||||
| x Diabolo666 checks | ||||
| --- | ||||
| Summary: | ||||
|  | @ -148,6 +148,6 @@ Main pot: $0.40 won by velabianca ($0.38) | |||
| Rake taken: $0.02 | ||||
| Seat 3: velabianca ($0.95), net: +$0.28 | ||||
| Seat 4: grommek ($9.30), net: -$0.10 | ||||
| Seat 10: tchazx ($0.75), net: -$0.10 | ||||
| Seat 10: Hero ($0.75), net: -$0.10 | ||||
| Seat 1: x Diabolo666 ($11.17), net: -$0.10, [6d, Qc, 4c, Th, Qs] (PAIR QUEEN) | ||||
| ***** End of hand R5-81962116-235 ***** | ||||
|  |  | |||
|  | @ -1,39 +1,39 @@ | |||
| ***** History for hand R5-75443872-61 ***** | ||||
| Start hand: Wed Aug 18 19:32:32 GMT+0100 2010 | ||||
| Table: someplace [75443872] (LIMIT TEXAS_HOLDEM 0.50/1, Real money) | ||||
| User: player3 | ||||
| User: Hero | ||||
| Button: seat 5 | ||||
| Players in round: 5 | ||||
| Seat 7: player4 (34.70) | ||||
| Seat 9: player5 (1.05) | ||||
| Seat 1: player3 (23.90) | ||||
| Seat 1: Hero (23.90) | ||||
| Seat 3: player2 (33.95) | ||||
| Seat 5: player1 (14.20) | ||||
| player4 posts small blind (0.25) | ||||
| player5 posts big blind (0.50) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to player3: [Kd, Ks] | ||||
| player3 raises 1 to 1 | ||||
| Dealing to Hero: [Kd, Ks] | ||||
| Hero raises 1 to 1 | ||||
| player2 folds | ||||
| player1 calls 1 | ||||
| player4 folds | ||||
| player5 raises 0.55 to 1.05 [all in] | ||||
| player3 calls 0.05 | ||||
| Hero calls 0.05 | ||||
| player1 calls 0.05 | ||||
| --- Dealing flop [2d, Ad, Th] | ||||
| player3 bets 0.50 | ||||
| Hero bets 0.50 | ||||
| player1 folds | ||||
| --- Dealing flop [2d, Ad, Th] | ||||
| --- Dealing turn [8s] | ||||
| --- Dealing river [7d] | ||||
| --- | ||||
| Summary: | ||||
| Main pot: 3.40 won by player3 (3.25) | ||||
| Main pot: 3.40 won by Hero (3.25) | ||||
| Rake taken: $0.15 | ||||
| Seat 7: player4 (34.45), net: -0.25 | ||||
| Seat 9: player5 (0), net: -1.05, [Qd, Qh] (PAIR QUEEN) | ||||
| Seat 1: player3 (26.10), net: +2.20, [Kd, Ks] (PAIR KING) | ||||
| Seat 1: Hero (26.10), net: +2.20, [Kd, Ks] (PAIR KING) | ||||
| Seat 3: player2 (33.95) | ||||
| Seat 5: player1 (13.15), net: -1.05 | ||||
| ***** End of hand R5-75443872-61 ***** | ||||
|  |  | |||
|  | @ -186,7 +186,7 @@ | |||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'player3': {   'card1': 25, | ||||
|     u'Hero': {   'card1': 25, | ||||
|                     'card2': 51, | ||||
|                     'card3': 0, | ||||
|                     'card4': 0, | ||||
|  |  | |||
|  | @ -1,66 +1,66 @@ | |||
| ***** History for hand R5-81867677-656 ***** | ||||
| Start hand: Mon Sep 13 00:26:26 GMT+0100 2010 | ||||
| Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 8 | ||||
| Players in round: 3 | ||||
| Seat 3: nickgerm ($3.74) | ||||
| Seat 4: tchazx ($5) | ||||
| Seat 4: Hero ($5) | ||||
| Seat 8: XYXY26XYXY ($1.79) | ||||
| nickgerm posts small blind ($0.02) | ||||
| tchazx posts big blind ($0.05) | ||||
| Hero posts big blind ($0.05) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [Ks, 4s, 6s, Th] | ||||
| Dealing to Hero: [Ks, 4s, 6s, Th] | ||||
| XYXY26XYXY calls $0.05 | ||||
| nickgerm calls $0.03 | ||||
| tchazx checks | ||||
| Hero checks | ||||
| --- Dealing flop [5h, 7d, 2s] | ||||
| nickgerm checks | ||||
| tchazx checks | ||||
| Hero checks | ||||
| XYXY26XYXY checks | ||||
| --- Dealing turn [Qs] | ||||
| nickgerm checks | ||||
| tchazx checks | ||||
| Hero checks | ||||
| XYXY26XYXY checks | ||||
| --- Dealing river [4d] | ||||
| nickgerm bets $0.10 | ||||
| tchazx folds | ||||
| Hero folds | ||||
| XYXY26XYXY folds | ||||
| --- | ||||
| Summary: | ||||
| Main pot: $0.15 won by nickgerm ($0.15) | ||||
| Rake taken: $0 | ||||
| Seat 3: nickgerm ($3.84), net: +$0.10 | ||||
| Seat 4: tchazx ($4.95), net: -$0.05 | ||||
| Seat 4: Hero ($4.95), net: -$0.05 | ||||
| Seat 8: XYXY26XYXY ($1.74), net: -$0.05 | ||||
| ***** End of hand R5-81867677-656 ***** | ||||
| ***** History for hand R5-81867677-657 ***** | ||||
| Start hand: Mon Sep 13 00:27:13 GMT+0100 2010 | ||||
| Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 3 | ||||
| Players in round: 3 | ||||
| Seat 4: tchazx ($4.95) | ||||
| Seat 4: Hero ($4.95) | ||||
| Seat 8: XYXY26XYXY ($1.74) | ||||
| Seat 3: nickgerm ($3.84) | ||||
| tchazx posts small blind ($0.02) | ||||
| Hero posts small blind ($0.02) | ||||
| XYXY26XYXY posts big blind ($0.05) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [Jd, Td, 8h, Tc] | ||||
| Dealing to Hero: [Jd, Td, 8h, Tc] | ||||
| nickgerm calls $0.05 | ||||
| tchazx calls $0.03 | ||||
| Hero calls $0.03 | ||||
| XYXY26XYXY checks | ||||
| --- Dealing flop [4h, 7c, 2c] | ||||
| tchazx checks | ||||
| Hero checks | ||||
| XYXY26XYXY checks | ||||
| nickgerm checks | ||||
| --- Dealing turn [Kc] | ||||
| tchazx checks | ||||
| Hero checks | ||||
| XYXY26XYXY checks | ||||
| nickgerm bets $0.10 | ||||
| tchazx folds | ||||
| Hero folds | ||||
| XYXY26XYXY calls $0.10 | ||||
| --- Dealing river [3d] | ||||
| XYXY26XYXY checks | ||||
|  | @ -70,30 +70,30 @@ XYXY26XYXY calls $0.10 | |||
| Summary: | ||||
| Main pot: $0.55 won by nickgerm ($0.27), XYXY26XYXY ($0.26) | ||||
| Rake taken: $0.02 | ||||
| Seat 4: tchazx ($4.90), net: -$0.05 | ||||
| Seat 4: Hero ($4.90), net: -$0.05 | ||||
| Seat 8: XYXY26XYXY ($1.75), net: +$0.01, [7h, Qs, 9c, Kd] (TWO_PAIR KING, SEVEN) | ||||
| Seat 3: nickgerm ($3.86), net: +$0.02, [7d, 6s, Ks, Jc] (TWO_PAIR KING, SEVEN) | ||||
| ***** End of hand R5-81867677-657 ***** | ||||
| ***** History for hand R5-81867677-658 ***** | ||||
| Start hand: Mon Sep 13 00:28:06 GMT+0100 2010 | ||||
| Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 4 | ||||
| Players in round: 5 | ||||
| Seat 8: XYXY26XYXY ($1.75) | ||||
| Seat 10: Mandala14 ($3) | ||||
| Seat 1: ANOKATO ($2.33) | ||||
| Seat 3: nickgerm ($3.86) | ||||
| Seat 4: tchazx ($4.90) | ||||
| Seat 4: Hero ($4.90) | ||||
| XYXY26XYXY posts small blind ($0.02) | ||||
| Mandala14 posts big blind ($0.05) | ||||
| ANOKATO posts big blind ($0.05) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [Ad, Js, Jc, 9h] | ||||
| Dealing to Hero: [Ad, Js, Jc, 9h] | ||||
| ANOKATO checks | ||||
| nickgerm raises $0.10 to $0.10 | ||||
| tchazx calls $0.10 | ||||
| Hero calls $0.10 | ||||
| XYXY26XYXY calls $0.08 | ||||
| Mandala14 calls $0.05 | ||||
| ANOKATO calls $0.05 | ||||
|  | @ -102,24 +102,24 @@ XYXY26XYXY checks | |||
| Mandala14 checks | ||||
| ANOKATO bets $0.05 | ||||
| nickgerm raises $0.10 to $0.10 | ||||
| tchazx calls $0.10 | ||||
| Hero calls $0.10 | ||||
| XYXY26XYXY folds | ||||
| Mandala14 calls $0.10 | ||||
| ANOKATO raises $0.10 to $0.15 | ||||
| nickgerm calls $0.05 | ||||
| tchazx calls $0.05 | ||||
| Hero calls $0.05 | ||||
| Mandala14 calls $0.05 | ||||
| --- Dealing turn [Kh] | ||||
| Mandala14 checks | ||||
| ANOKATO bets $0.10 | ||||
| nickgerm calls $0.10 | ||||
| tchazx calls $0.10 | ||||
| Hero calls $0.10 | ||||
| Mandala14 calls $0.10 | ||||
| --- Dealing river [Ks] | ||||
| Mandala14 bets $0.10 | ||||
| ANOKATO calls $0.10 | ||||
| nickgerm folds | ||||
| tchazx calls $0.10 | ||||
| Hero calls $0.10 | ||||
| --- | ||||
| Summary: | ||||
| Main pot: $1.80 won by Mandala14 ($1.71) | ||||
|  | @ -128,26 +128,26 @@ Seat 8: XYXY26XYXY ($1.65), net: -$0.10 | |||
| Seat 10: Mandala14 ($4.26), net: +$1.26, [As, Ah, 5s, Qs] (TWO_PAIR ACE, KING) | ||||
| Seat 1: ANOKATO ($1.88), net: -$0.45 | ||||
| Seat 3: nickgerm ($3.51), net: -$0.35 | ||||
| Seat 4: tchazx ($4.45), net: -$0.45 | ||||
| Seat 4: Hero ($4.45), net: -$0.45 | ||||
| ***** End of hand R5-81867677-658 ***** | ||||
| ***** History for hand R5-81867677-659 ***** | ||||
| Start hand: Mon Sep 13 00:29:21 GMT+0100 2010 | ||||
| Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 8 | ||||
| Players in round: 5 | ||||
| Seat 10: Mandala14 ($4.26) | ||||
| Seat 1: ANOKATO ($1.88) | ||||
| Seat 3: nickgerm ($3.51) | ||||
| Seat 4: tchazx ($4.45) | ||||
| Seat 4: Hero ($4.45) | ||||
| Seat 8: XYXY26XYXY ($1.65) | ||||
| Mandala14 posts small blind ($0.02) | ||||
| ANOKATO posts big blind ($0.05) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [5h, Tc, 9c, 3h] | ||||
| Dealing to Hero: [5h, Tc, 9c, 3h] | ||||
| nickgerm raises $0.10 to $0.10 | ||||
| tchazx calls $0.10 | ||||
| Hero calls $0.10 | ||||
| XYXY26XYXY calls $0.10 | ||||
| Mandala14 calls $0.08 | ||||
| ANOKATO calls $0.05 | ||||
|  | @ -155,7 +155,7 @@ ANOKATO calls $0.05 | |||
| Mandala14 checks | ||||
| ANOKATO checks | ||||
| nickgerm bets $0.05 | ||||
| tchazx calls $0.05 | ||||
| Hero calls $0.05 | ||||
| XYXY26XYXY calls $0.05 | ||||
| Mandala14 calls $0.05 | ||||
| ANOKATO calls $0.05 | ||||
|  | @ -163,7 +163,7 @@ ANOKATO calls $0.05 | |||
| Mandala14 checks | ||||
| ANOKATO bets $0.10 | ||||
| nickgerm raises $0.20 to $0.20 | ||||
| tchazx folds | ||||
| Hero folds | ||||
| XYXY26XYXY calls $0.20 | ||||
| Mandala14 calls $0.20 | ||||
| ANOKATO raises $0.20 to $0.30 | ||||
|  | @ -183,51 +183,51 @@ Rake taken: $0.09 | |||
| Seat 10: Mandala14 ($3.81), net: -$0.45 | ||||
| Seat 1: ANOKATO ($3.29), net: +$1.41 | ||||
| Seat 3: nickgerm ($3.06), net: -$0.45 | ||||
| Seat 4: tchazx ($4.30), net: -$0.15 | ||||
| Seat 4: Hero ($4.30), net: -$0.15 | ||||
| Seat 8: XYXY26XYXY ($1.20), net: -$0.45 | ||||
| ***** End of hand R5-81867677-659 ***** | ||||
| ***** History for hand R5-81867677-660 ***** | ||||
| Start hand: Mon Sep 13 00:30:43 GMT+0100 2010 | ||||
| Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 10 | ||||
| Players in round: 5 | ||||
| Seat 1: ANOKATO ($3.29) | ||||
| Seat 3: nickgerm ($3.06) | ||||
| Seat 4: tchazx ($4.30) | ||||
| Seat 4: Hero ($4.30) | ||||
| Seat 8: XYXY26XYXY ($1.20) | ||||
| Seat 10: Mandala14 ($3.81) | ||||
| ANOKATO posts small blind ($0.02) | ||||
| nickgerm posts big blind ($0.05) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [Qh, 4d, Ts, 9d] | ||||
| tchazx calls $0.05 | ||||
| Dealing to Hero: [Qh, 4d, Ts, 9d] | ||||
| Hero calls $0.05 | ||||
| XYXY26XYXY calls $0.05 | ||||
| Mandala14 calls $0.05 | ||||
| ANOKATO calls $0.03 | ||||
| nickgerm raises $0.05 to $0.10 | ||||
| tchazx calls $0.05 | ||||
| Hero calls $0.05 | ||||
| XYXY26XYXY calls $0.05 | ||||
| Mandala14 calls $0.05 | ||||
| ANOKATO calls $0.05 | ||||
| --- Dealing flop [6d, 3c, Qc] | ||||
| ANOKATO checks | ||||
| nickgerm bets $0.05 | ||||
| tchazx calls $0.05 | ||||
| Hero calls $0.05 | ||||
| XYXY26XYXY calls $0.05 | ||||
| Mandala14 calls $0.05 | ||||
| ANOKATO calls $0.05 | ||||
| --- Dealing turn [7h] | ||||
| ANOKATO checks | ||||
| nickgerm checks | ||||
| tchazx checks | ||||
| Hero checks | ||||
| XYXY26XYXY checks | ||||
| Mandala14 checks | ||||
| --- Dealing river [Jh] | ||||
| ANOKATO bets $0.10 | ||||
| nickgerm folds | ||||
| tchazx calls $0.10 | ||||
| Hero calls $0.10 | ||||
| XYXY26XYXY folds | ||||
| Mandala14 folds | ||||
| --- | ||||
|  | @ -236,34 +236,34 @@ Main pot: $0.95 won by ANOKATO ($0.91) | |||
| Rake taken: $0.04 | ||||
| Seat 1: ANOKATO ($3.95), net: +$0.66, [7c, Qd, Ks, 5d] (TWO_PAIR QUEEN, SEVEN) | ||||
| Seat 3: nickgerm ($2.91), net: -$0.15 | ||||
| Seat 4: tchazx ($4.05), net: -$0.25 | ||||
| Seat 4: Hero ($4.05), net: -$0.25 | ||||
| Seat 8: XYXY26XYXY ($1.05), net: -$0.15 | ||||
| Seat 10: Mandala14 ($3.66), net: -$0.15 | ||||
| ***** End of hand R5-81867677-660 ***** | ||||
| ***** History for hand R5-81867677-661 ***** | ||||
| Start hand: Mon Sep 13 00:31:54 GMT+0100 2010 | ||||
| Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 1 | ||||
| Players in round: 5 | ||||
| Seat 3: nickgerm ($2.91) | ||||
| Seat 4: tchazx ($4.05) | ||||
| Seat 4: Hero ($4.05) | ||||
| Seat 8: XYXY26XYXY ($1.05) | ||||
| Seat 10: Mandala14 ($3.66) | ||||
| Seat 1: ANOKATO ($3.95) | ||||
| nickgerm posts small blind ($0.02) | ||||
| tchazx posts big blind ($0.05) | ||||
| Hero posts big blind ($0.05) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [5d, 9h, 6h, 4h] | ||||
| Dealing to Hero: [5d, 9h, 6h, 4h] | ||||
| XYXY26XYXY calls $0.05 | ||||
| Mandala14 calls $0.05 | ||||
| ANOKATO calls $0.05 | ||||
| nickgerm calls $0.03 | ||||
| tchazx checks | ||||
| Hero checks | ||||
| --- Dealing flop [2d, 4d, Jh] | ||||
| nickgerm bets $0.05 | ||||
| tchazx folds | ||||
| Hero folds | ||||
| XYXY26XYXY calls $0.05 | ||||
| Mandala14 folds | ||||
| ANOKATO calls $0.05 | ||||
|  | @ -285,7 +285,7 @@ Summary: | |||
| Main pot: $1.70 won by nickgerm ($1.62) | ||||
| Rake taken: $0.08 | ||||
| Seat 3: nickgerm ($3.93), net: +$1.02, [9c, 4s, Jd, 6c] (FULL_HOUSE JACK, FOUR) | ||||
| Seat 4: tchazx ($4), net: -$0.05 | ||||
| Seat 4: Hero ($4), net: -$0.05 | ||||
| Seat 8: XYXY26XYXY ($0.65), net: -$0.40 | ||||
| Seat 10: Mandala14 ($3.61), net: -$0.05 | ||||
| Seat 1: ANOKATO ($3.35), net: -$0.60 | ||||
|  | @ -293,23 +293,23 @@ Seat 1: ANOKATO ($3.35), net: -$0.60 | |||
| ***** History for hand R5-81867677-662 ***** | ||||
| Start hand: Mon Sep 13 00:33:20 GMT+0100 2010 | ||||
| Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 3 | ||||
| Players in round: 5 | ||||
| Seat 4: tchazx ($4) | ||||
| Seat 4: Hero ($4) | ||||
| Seat 8: XYXY26XYXY ($0.65) | ||||
| Seat 10: Mandala14 ($3.61) | ||||
| Seat 1: ANOKATO ($3.35) | ||||
| Seat 3: nickgerm ($3.93) | ||||
| tchazx posts small blind ($0.02) | ||||
| Hero posts small blind ($0.02) | ||||
| XYXY26XYXY posts big blind ($0.05) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [5s, 6c, Kc, 3s] | ||||
| Dealing to Hero: [5s, 6c, Kc, 3s] | ||||
| Mandala14 calls $0.05 | ||||
| ANOKATO calls $0.05 | ||||
| nickgerm raises $0.10 to $0.10 | ||||
| tchazx folds | ||||
| Hero folds | ||||
| XYXY26XYXY calls $0.05 | ||||
| Mandala14 calls $0.05 | ||||
| ANOKATO calls $0.05 | ||||
|  | @ -335,7 +335,7 @@ nickgerm checks | |||
| Summary: | ||||
| Main pot: $1.07 won by ANOKATO ($1.02) | ||||
| Rake taken: $0.05 | ||||
| Seat 4: tchazx ($3.98), net: -$0.02 | ||||
| Seat 4: Hero ($3.98), net: -$0.02 | ||||
| Seat 8: XYXY26XYXY ($0.50), net: -$0.15 | ||||
| Seat 10: Mandala14 ($3.51), net: -$0.10 | ||||
| Seat 1: ANOKATO ($3.97), net: +$0.62, [Js, 5c, 9c, 2h] (THREE_OF_A_KIND TWO) | ||||
|  | @ -344,22 +344,22 @@ Seat 3: nickgerm ($3.53), net: -$0.40 | |||
| ***** History for hand R5-81867677-663 ***** | ||||
| Start hand: Mon Sep 13 00:34:34 GMT+0100 2010 | ||||
| Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 4 | ||||
| Players in round: 5 | ||||
| Seat 8: XYXY26XYXY ($0.50) | ||||
| Seat 10: Mandala14 ($3.51) | ||||
| Seat 1: ANOKATO ($3.97) | ||||
| Seat 3: nickgerm ($3.53) | ||||
| Seat 4: tchazx ($3.98) | ||||
| Seat 4: Hero ($3.98) | ||||
| XYXY26XYXY posts small blind ($0.02) | ||||
| Mandala14 posts big blind ($0.05) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [Ac, 9h, 6h, Jc] | ||||
| Dealing to Hero: [Ac, 9h, 6h, Jc] | ||||
| ANOKATO calls $0.05 | ||||
| nickgerm calls $0.05 | ||||
| tchazx calls $0.05 | ||||
| Hero calls $0.05 | ||||
| XYXY26XYXY calls $0.03 | ||||
| Mandala14 checks | ||||
| --- Dealing flop [7s, 4c, 8s] | ||||
|  | @ -367,7 +367,7 @@ XYXY26XYXY checks | |||
| Mandala14 checks | ||||
| ANOKATO bets $0.05 | ||||
| nickgerm calls $0.05 | ||||
| tchazx calls $0.05 | ||||
| Hero calls $0.05 | ||||
| XYXY26XYXY calls $0.05 | ||||
| Mandala14 calls $0.05 | ||||
| --- Dealing turn [2d] | ||||
|  | @ -375,7 +375,7 @@ XYXY26XYXY checks | |||
| Mandala14 checks | ||||
| ANOKATO bets $0.10 | ||||
| nickgerm raises $0.20 to $0.20 | ||||
| tchazx calls $0.20 | ||||
| Hero calls $0.20 | ||||
| XYXY26XYXY calls $0.20 | ||||
| Mandala14 calls $0.20 | ||||
| ANOKATO calls $0.10 | ||||
|  | @ -384,7 +384,7 @@ XYXY26XYXY bets $0.10 | |||
| Mandala14 folds | ||||
| ANOKATO calls $0.10 | ||||
| nickgerm raises $0.20 to $0.20 | ||||
| tchazx folds | ||||
| Hero folds | ||||
| XYXY26XYXY calls $0.10 [all in] | ||||
| ANOKATO folds | ||||
| --- | ||||
|  | @ -395,26 +395,26 @@ Seat 8: XYXY26XYXY ($1.90), net: +$1.40, [8d, 5c, 4d, 3c] (FULL_HOUSE FOUR, EIGH | |||
| Seat 10: Mandala14 ($3.21), net: -$0.30 | ||||
| Seat 1: ANOKATO ($3.57), net: -$0.40 | ||||
| Seat 3: nickgerm ($3.03), net: -$0.50, [6s, Th, 3d, 5d] (STRAIGHT EIGHT) | ||||
| Seat 4: tchazx ($3.68), net: -$0.30 | ||||
| Seat 4: Hero ($3.68), net: -$0.30 | ||||
| ***** End of hand R5-81867677-663 ***** | ||||
| ***** History for hand R5-81867677-664 ***** | ||||
| Start hand: Mon Sep 13 00:36:21 GMT+0100 2010 | ||||
| Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 8 | ||||
| Players in round: 5 | ||||
| Seat 10: Mandala14 ($3.21) | ||||
| Seat 1: ANOKATO ($3.57) | ||||
| Seat 3: nickgerm ($3.03) | ||||
| Seat 4: tchazx ($3.68) | ||||
| Seat 4: Hero ($3.68) | ||||
| Seat 8: XYXY26XYXY ($1.90) | ||||
| Mandala14 posts small blind ($0.02) | ||||
| ANOKATO posts big blind ($0.05) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [7d, Kh, 4s, Jh] | ||||
| Dealing to Hero: [7d, Kh, 4s, Jh] | ||||
| nickgerm calls $0.05 | ||||
| tchazx calls $0.05 | ||||
| Hero calls $0.05 | ||||
| XYXY26XYXY folds | ||||
| Mandala14 calls $0.03 | ||||
| ANOKATO checks | ||||
|  | @ -422,23 +422,23 @@ ANOKATO checks | |||
| Mandala14 checks | ||||
| ANOKATO folds | ||||
| nickgerm bets $0.05 | ||||
| tchazx calls $0.05 | ||||
| Hero calls $0.05 | ||||
| Mandala14 calls $0.05 | ||||
| --- Dealing turn [8c] | ||||
| Mandala14 checks | ||||
| nickgerm checks | ||||
| tchazx checks | ||||
| Hero checks | ||||
| --- Dealing river [3d] | ||||
| Mandala14 checks | ||||
| nickgerm checks | ||||
| tchazx checks | ||||
| Hero checks | ||||
| --- | ||||
| Summary: | ||||
| Main pot: $0.35 won by tchazx ($0.34) | ||||
| Main pot: $0.35 won by Hero ($0.34) | ||||
| Rake taken: $0.01 | ||||
| Seat 10: Mandala14 ($3.11), net: -$0.10, [7h, 4d, Qh, 6d] (PAIR FOUR) | ||||
| Seat 1: ANOKATO ($3.52), net: -$0.05 | ||||
| Seat 3: nickgerm ($2.93), net: -$0.10, [7s, Qd, 6s, Ah] (PAIR ACE) | ||||
| Seat 4: tchazx ($3.92), net: +$0.24, [7d, Kh, 4s, Jh] (TWO_PAIR JACK, FOUR) | ||||
| Seat 4: Hero ($3.92), net: +$0.24, [7d, Kh, 4s, Jh] (TWO_PAIR JACK, FOUR) | ||||
| Seat 8: XYXY26XYXY ($1.90) | ||||
| ***** End of hand R5-81867677-664 ***** | ||||
|  |  | |||
|  | @ -1,21 +1,21 @@ | |||
| ***** History for hand R5-70000684-006 ***** | ||||
| Start hand: Wed Aug 11 03:21:00 GMT+0100 2010 | ||||
| Table: Kassel [73910684] (NO_LIMIT TEXAS_HOLDEM 0.05/0.10, Real money) | ||||
| User: Player3 | ||||
| User: Hero | ||||
| Button: seat 8 | ||||
| Players in round: 5 | ||||
| Seat 9: Player1 (4.35) | ||||
| Seat 3: Player0 (10.90) | ||||
| Seat 5: Player2 (12.88) | ||||
| Seat 6: Player3 (14.18) | ||||
| Seat 6: Hero (14.18) | ||||
| Seat 8: Player4 (9) | ||||
| Player1 posts small blind (0.05) | ||||
| Player0 posts big blind (0.10) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to Player3: [6s, 7h] | ||||
| Dealing to Hero: [6s, 7h] | ||||
| Player2 folds | ||||
| Player3 folds | ||||
| Hero folds | ||||
| Player4 raises 0.30 to 0.30 | ||||
| Player1 calls 0.25 | ||||
| Player0 folds | ||||
|  | @ -35,7 +35,7 @@ Rake taken: $0.04 | |||
| Seat 9: Player1 (4.81), net: +0.46 | ||||
| Seat 3: Player0 (10.80), net: -0.10 | ||||
| Seat 5: Player2 (12.88) | ||||
| Seat 6: Player3 (14.18) | ||||
| Seat 6: Hero (14.18) | ||||
| Seat 8: Player4 (8.60), net: -0.40 | ||||
| ***** End of hand R5-73910684-276 ***** | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,27 +1,27 @@ | |||
| ***** History for hand R5-79836934-72 ***** | ||||
| Start hand: Sat Sep 4 05:34:19 GMT+0100 2010 | ||||
| Table: Bnei Brak [79836934] (NO_LIMIT TEXAS_HOLDEM $0.05/$0.10, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Button: seat 10 | ||||
| Players in round: 2 | ||||
| Seat 1: feradf ($6.86) | ||||
| Seat 10: tchazx ($15.44) | ||||
| tchazx posts big blind ($0.10) | ||||
| tchazx posts dead blind ($0.05) | ||||
| Seat 10: Hero ($15.44) | ||||
| Hero posts big blind ($0.10) | ||||
| Hero posts dead blind ($0.05) | ||||
| feradf posts big blind ($0.10) | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to tchazx: [Qh, 4h] | ||||
| tchazx raises $0.20 to $0.30 | ||||
| Dealing to Hero: [Qh, 4h] | ||||
| Hero raises $0.20 to $0.30 | ||||
| feradf calls $0.20 | ||||
| --- Dealing flop [6c, Qs, 7h] | ||||
| feradf checks | ||||
| tchazx bets $0.45 | ||||
| Hero bets $0.45 | ||||
| feradf folds | ||||
| --- | ||||
| Summary: | ||||
| Main pot: $0.65 won by tchazx ($0.62) | ||||
| Main pot: $0.65 won by Hero ($0.62) | ||||
| Rake taken: $0.03 | ||||
| Seat 1: feradf ($6.56), net: -$0.30 | ||||
| Seat 10: tchazx ($15.71), net: +$0.27 | ||||
| Seat 10: Hero ($15.71), net: +$0.27 | ||||
| ***** End of hand R5-79836934-72 ***** | ||||
|  | @ -1,10 +1,10 @@ | |||
| ***** History for hand R5-82086688-607 ***** | ||||
| Start hand: Mon Sep 13 22:31:30 GMT+0100 2010 | ||||
| Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Players in round: 5 | ||||
| Seat 1: the bAAr ($6.53) | ||||
| Seat 2: tchazx ($2) | ||||
| Seat 2: Hero ($2) | ||||
| Seat 6: kueto ($6.30) | ||||
| Seat 8: E6y Ko3y ($2.70) | ||||
| Seat 10: telozver123 ($6.49) | ||||
|  | @ -12,11 +12,11 @@ the bAAr posts ante $0.02 | |||
| kueto posts ante $0.02 | ||||
| E6y Ko3y posts ante $0.02 | ||||
| telozver123 posts ante $0.02 | ||||
| tchazx posts ante $0.02 | ||||
| Hero posts ante $0.02 | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to the bAAr: [-, -, Kh] | ||||
| Dealing to tchazx: [Jh, 9d, Ac] | ||||
| Dealing to Hero: [Jh, 9d, Ac] | ||||
| Dealing to kueto: [-, -, 4h] | ||||
| Dealing to E6y Ko3y: [-, -, Ad] | ||||
| Dealing to telozver123: [-, -, 6h] | ||||
|  | @ -24,54 +24,54 @@ kueto small bring in $0.05 | |||
| E6y Ko3y calls $0.05 | ||||
| telozver123 calls $0.05 | ||||
| the bAAr calls $0.05 | ||||
| tchazx calls $0.05 | ||||
| Hero calls $0.05 | ||||
| --- | ||||
| Dealing 4th street | ||||
| Dealing to the bAAr: [3h] | ||||
| Dealing to tchazx: [7h] | ||||
| Dealing to Hero: [7h] | ||||
| Dealing to kueto: [3d] | ||||
| Dealing to E6y Ko3y: [Qs] | ||||
| Dealing to telozver123: [Ts] | ||||
| E6y Ko3y bets $0.10 | ||||
| telozver123 calls $0.10 | ||||
| the bAAr calls $0.10 | ||||
| tchazx calls $0.10 | ||||
| Hero calls $0.10 | ||||
| kueto folds | ||||
| --- | ||||
| Dealing 5th street | ||||
| Dealing to the bAAr: [9s] | ||||
| Dealing to tchazx: [Js] | ||||
| Dealing to Hero: [Js] | ||||
| Dealing to E6y Ko3y: [6c] | ||||
| Dealing to telozver123: [Kd] | ||||
| E6y Ko3y checks | ||||
| telozver123 checks | ||||
| the bAAr bets $0.20 | ||||
| tchazx calls $0.20 | ||||
| Hero calls $0.20 | ||||
| E6y Ko3y calls $0.20 | ||||
| telozver123 folds | ||||
| --- | ||||
| Dealing 6th street | ||||
| Dealing to the bAAr: [8s] | ||||
| Dealing to tchazx: [5c] | ||||
| Dealing to Hero: [5c] | ||||
| Dealing to E6y Ko3y: [5d] | ||||
| E6y Ko3y checks | ||||
| the bAAr bets $0.20 | ||||
| tchazx calls $0.20 | ||||
| Hero calls $0.20 | ||||
| E6y Ko3y calls $0.20 | ||||
| --- | ||||
| Dealing river | ||||
| Dealing to tchazx: [9h] | ||||
| Dealing to Hero: [9h] | ||||
| E6y Ko3y checks | ||||
| the bAAr checks | ||||
| tchazx bets $0.20 | ||||
| Hero bets $0.20 | ||||
| E6y Ko3y folds | ||||
| the bAAr calls $0.20 | ||||
| --- | ||||
| Summary: | ||||
| Main pot: $2.35 won by tchazx ($2.24) | ||||
| Main pot: $2.35 won by Hero ($2.24) | ||||
| Rake taken: $0.11 | ||||
| Seat 1: the bAAr ($5.76), net: -$0.77 | ||||
| Seat 2: tchazx ($3.47), net: +$1.47, [Jh, 9d, Ac, 7h, Js, 5c, 9h] (TWO_PAIR JACK, NINE) | ||||
| Seat 2: Hero ($3.47), net: +$1.47, [Jh, 9d, Ac, 7h, Js, 5c, 9h] (TWO_PAIR JACK, NINE) | ||||
| Seat 6: kueto ($6.23), net: -$0.07 | ||||
| Seat 8: E6y Ko3y ($2.13), net: -$0.57 | ||||
| Seat 10: telozver123 ($6.32), net: -$0.17 | ||||
|  | @ -79,61 +79,61 @@ Seat 10: telozver123 ($6.32), net: -$0.17 | |||
| ***** History for hand R5-82086688-608 ***** | ||||
| Start hand: Mon Sep 13 22:32:47 GMT+0100 2010 | ||||
| Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Players in round: 5 | ||||
| Seat 1: the bAAr ($5.76) | ||||
| Seat 2: tchazx ($3.47) | ||||
| Seat 2: Hero ($3.47) | ||||
| Seat 6: kueto ($6.23) | ||||
| Seat 8: E6y Ko3y ($2.13) | ||||
| Seat 10: telozver123 ($6.32) | ||||
| the bAAr posts ante $0.02 | ||||
| tchazx posts ante $0.02 | ||||
| Hero posts ante $0.02 | ||||
| kueto posts ante $0.02 | ||||
| E6y Ko3y posts ante $0.02 | ||||
| telozver123 posts ante $0.02 | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to the bAAr: [-, -, 4s] | ||||
| Dealing to tchazx: [8h, Ks, Qd] | ||||
| Dealing to Hero: [8h, Ks, Qd] | ||||
| Dealing to kueto: [-, -, 5h] | ||||
| Dealing to E6y Ko3y: [-, -, 2h] | ||||
| Dealing to telozver123: [-, -, 3c] | ||||
| E6y Ko3y small bring in $0.05 | ||||
| telozver123 folds | ||||
| the bAAr calls $0.05 | ||||
| tchazx calls $0.05 | ||||
| Hero calls $0.05 | ||||
| kueto folds | ||||
| --- | ||||
| Dealing 4th street | ||||
| Dealing to the bAAr: [Ad] | ||||
| Dealing to tchazx: [8d] | ||||
| Dealing to Hero: [8d] | ||||
| Dealing to E6y Ko3y: [Qh] | ||||
| the bAAr bets $0.10 | ||||
| tchazx calls $0.10 | ||||
| Hero calls $0.10 | ||||
| E6y Ko3y folds | ||||
| --- | ||||
| Dealing 5th street | ||||
| Dealing to the bAAr: [4c] | ||||
| Dealing to tchazx: [Ah] | ||||
| Dealing to Hero: [Ah] | ||||
| the bAAr bets $0.20 | ||||
| tchazx calls $0.20 | ||||
| Hero calls $0.20 | ||||
| --- | ||||
| Dealing 6th street | ||||
| Dealing to the bAAr: [3d] | ||||
| Dealing to tchazx: [Jh] | ||||
| Dealing to Hero: [Jh] | ||||
| the bAAr checks | ||||
| tchazx checks | ||||
| Hero checks | ||||
| --- | ||||
| Dealing river | ||||
| Dealing to tchazx: [Kh] | ||||
| Dealing to Hero: [Kh] | ||||
| the bAAr bets $0.20 | ||||
| tchazx calls $0.20 | ||||
| Hero calls $0.20 | ||||
| --- | ||||
| Summary: | ||||
| Main pot: $1.25 won by tchazx ($1.19) | ||||
| Main pot: $1.25 won by Hero ($1.19) | ||||
| Rake taken: $0.06 | ||||
| Seat 1: the bAAr ($5.19), net: -$0.57, [6s, 9s, 4s, Ad, 4c, 3d, 3h] (TWO_PAIR FOUR, THREE) | ||||
| Seat 2: tchazx ($4.09), net: +$0.62, [8h, Ks, Qd, 8d, Ah, Jh, Kh] (TWO_PAIR KING, EIGHT) | ||||
| Seat 2: Hero ($4.09), net: +$0.62, [8h, Ks, Qd, 8d, Ah, Jh, Kh] (TWO_PAIR KING, EIGHT) | ||||
| Seat 6: kueto ($6.21), net: -$0.02 | ||||
| Seat 8: E6y Ko3y ($2.06), net: -$0.07 | ||||
| Seat 10: telozver123 ($6.30), net: -$0.02 | ||||
|  | @ -141,60 +141,60 @@ Seat 10: telozver123 ($6.30), net: -$0.02 | |||
| ***** History for hand R5-82086688-609 ***** | ||||
| Start hand: Mon Sep 13 22:33:42 GMT+0100 2010 | ||||
| Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Players in round: 5 | ||||
| Seat 1: the bAAr ($5.19) | ||||
| Seat 2: tchazx ($4.09) | ||||
| Seat 2: Hero ($4.09) | ||||
| Seat 6: kueto ($6.21) | ||||
| Seat 8: E6y Ko3y ($2.06) | ||||
| Seat 10: telozver123 ($6.30) | ||||
| the bAAr posts ante $0.02 | ||||
| tchazx posts ante $0.02 | ||||
| Hero posts ante $0.02 | ||||
| kueto posts ante $0.02 | ||||
| E6y Ko3y posts ante $0.02 | ||||
| telozver123 posts ante $0.02 | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to the bAAr: [-, -, 5c] | ||||
| Dealing to tchazx: [Ad, As, Kh] | ||||
| Dealing to Hero: [Ad, As, Kh] | ||||
| Dealing to kueto: [-, -, Qs] | ||||
| Dealing to E6y Ko3y: [-, -, 8s] | ||||
| Dealing to telozver123: [-, -, Tc] | ||||
| the bAAr small bring in $0.05 | ||||
| tchazx bets $0.10 | ||||
| Hero bets $0.10 | ||||
| kueto calls $0.10 | ||||
| E6y Ko3y folds | ||||
| telozver123 folds | ||||
| the bAAr folds | ||||
| --- | ||||
| Dealing 4th street | ||||
| Dealing to tchazx: [Ks] | ||||
| Dealing to Hero: [Ks] | ||||
| Dealing to kueto: [Qd] | ||||
| tchazx bets $0.10 | ||||
| Hero bets $0.10 | ||||
| kueto calls $0.10 | ||||
| --- | ||||
| Dealing 5th street | ||||
| Dealing to tchazx: [8c] | ||||
| Dealing to Hero: [8c] | ||||
| Dealing to kueto: [7s] | ||||
| tchazx bets $0.20 | ||||
| Hero bets $0.20 | ||||
| kueto calls $0.20 | ||||
| --- | ||||
| Dealing 6th street | ||||
| Dealing to tchazx: [7d] | ||||
| Dealing to Hero: [7d] | ||||
| Dealing to kueto: [5s] | ||||
| tchazx bets $0.20 | ||||
| Hero bets $0.20 | ||||
| kueto calls $0.20 | ||||
| --- | ||||
| Dealing river | ||||
| Dealing to tchazx: [7h] | ||||
| tchazx bets $0.20 | ||||
| Dealing to Hero: [7h] | ||||
| Hero bets $0.20 | ||||
| kueto calls $0.20 | ||||
| --- | ||||
| Summary: | ||||
| Main pot: $1.75 won by kueto ($1.67) | ||||
| Rake taken: $0.08 | ||||
| Seat 1: the bAAr ($5.12), net: -$0.07 | ||||
| Seat 2: tchazx ($3.27), net: -$0.82, [Ad, As, Kh, Ks, 8c, 7d, 7h] (TWO_PAIR ACE, KING) | ||||
| Seat 2: Hero ($3.27), net: -$0.82, [Ad, As, Kh, Ks, 8c, 7d, 7h] (TWO_PAIR ACE, KING) | ||||
| Seat 6: kueto ($7.06), net: +$0.85, [Qc, 6c, Qs, Qd, 7s, 5s, 3c] (THREE_OF_A_KIND QUEEN) | ||||
| Seat 8: E6y Ko3y ($2.04), net: -$0.02 | ||||
| Seat 10: telozver123 ($6.28), net: -$0.02 | ||||
|  | @ -202,68 +202,68 @@ Seat 10: telozver123 ($6.28), net: -$0.02 | |||
| ***** History for hand R5-82086688-610 ***** | ||||
| Start hand: Mon Sep 13 22:34:25 GMT+0100 2010 | ||||
| Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money) | ||||
| User: tchazx | ||||
| User: Hero | ||||
| Players in round: 5 | ||||
| Seat 1: the bAAr ($5.12) | ||||
| Seat 2: tchazx ($3.27) | ||||
| Seat 2: Hero ($3.27) | ||||
| Seat 6: kueto ($7.06) | ||||
| Seat 8: E6y Ko3y ($2.04) | ||||
| Seat 10: telozver123 ($6.28) | ||||
| the bAAr posts ante $0.02 | ||||
| tchazx posts ante $0.02 | ||||
| Hero posts ante $0.02 | ||||
| kueto posts ante $0.02 | ||||
| E6y Ko3y posts ante $0.02 | ||||
| telozver123 posts ante $0.02 | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to the bAAr: [-, -, Ts] | ||||
| Dealing to tchazx: [9s, 6s, 7s] | ||||
| Dealing to Hero: [9s, 6s, 7s] | ||||
| Dealing to kueto: [-, -, Qs] | ||||
| Dealing to E6y Ko3y: [-, -, 3s] | ||||
| Dealing to telozver123: [-, -, 9d] | ||||
| E6y Ko3y small bring in $0.05 | ||||
| telozver123 folds | ||||
| the bAAr calls $0.05 | ||||
| tchazx calls $0.05 | ||||
| Hero calls $0.05 | ||||
| kueto calls $0.05 | ||||
| --- | ||||
| Dealing 4th street | ||||
| Dealing to the bAAr: [Qd] | ||||
| Dealing to tchazx: [Ah] | ||||
| Dealing to Hero: [Ah] | ||||
| Dealing to kueto: [7h] | ||||
| Dealing to E6y Ko3y: [Th] | ||||
| tchazx checks | ||||
| Hero checks | ||||
| kueto checks | ||||
| E6y Ko3y checks | ||||
| the bAAr bets $0.10 | ||||
| tchazx calls $0.10 | ||||
| Hero calls $0.10 | ||||
| kueto folds | ||||
| E6y Ko3y folds | ||||
| --- | ||||
| Dealing 5th street | ||||
| Dealing to the bAAr: [Jh] | ||||
| Dealing to tchazx: [5c] | ||||
| tchazx checks | ||||
| Dealing to Hero: [5c] | ||||
| Hero checks | ||||
| the bAAr bets $0.20 | ||||
| tchazx calls $0.20 | ||||
| Hero calls $0.20 | ||||
| --- | ||||
| Dealing 6th street | ||||
| Dealing to the bAAr: [7d] | ||||
| Dealing to tchazx: [7c] | ||||
| tchazx checks | ||||
| Dealing to Hero: [7c] | ||||
| Hero checks | ||||
| the bAAr bets $0.20 | ||||
| tchazx calls $0.20 | ||||
| Hero calls $0.20 | ||||
| --- | ||||
| Dealing river | ||||
| Dealing to tchazx: [5h] | ||||
| tchazx checks | ||||
| Dealing to Hero: [5h] | ||||
| Hero checks | ||||
| the bAAr checks | ||||
| --- | ||||
| Summary: | ||||
| Main pot: $1.30 won by the bAAr ($1.24) | ||||
| Rake taken: $0.06 | ||||
| Seat 1: the bAAr ($5.79), net: +$0.67, [Tc, 9h, Ts, Qd, Jh, 7d, 9c] (TWO_PAIR TEN, NINE) | ||||
| Seat 2: tchazx ($2.70), net: -$0.57, [9s, 6s, 7s, Ah, 5c, 7c, 5h] (TWO_PAIR SEVEN, FIVE) | ||||
| Seat 2: Hero ($2.70), net: -$0.57, [9s, 6s, 7s, Ah, 5c, 7c, 5h] (TWO_PAIR SEVEN, FIVE) | ||||
| Seat 6: kueto ($6.99), net: -$0.07 | ||||
| Seat 8: E6y Ko3y ($1.97), net: -$0.07 | ||||
| Seat 10: telozver123 ($6.26), net: -$0.02 | ||||
|  |  | |||
|  | @ -1,9 +1,9 @@ | |||
| ***** History for hand R5-78227816-62 ***** | ||||
| Start hand: Sat Aug 28 20:33:38 GMT+0300 2010 | ||||
| Table: Taegu [78227816] (LIMIT SEVEN_CARD_STUD_HI_LO $0.25/$0.50, ante: $0.05, Real money) | ||||
| User: XMAN1 | ||||
| User: Hero | ||||
| Players in round: 8 | ||||
| Seat 1: XMAN1 ($25) | ||||
| Seat 1: Hero ($25) | ||||
| Seat 3: boneos56 ($27.78) | ||||
| Seat 5: grumset2007 ($3.48) | ||||
| Seat 6: mylonas77 ($40.73) | ||||
|  | @ -18,10 +18,10 @@ Lee Clayton posts ante $0.05 | |||
| guggi_cool posts ante $0.05 | ||||
| HangEv posts ante $0.05 | ||||
| mylonas77 posts ante $0.05 | ||||
| XMAN1 posts ante $0.05 | ||||
| Hero posts ante $0.05 | ||||
| --- | ||||
| Dealing pocket cards | ||||
| Dealing to XMAN1: [8d, 8s, 4d] | ||||
| Dealing to Hero: [8d, 8s, 4d] | ||||
| Dealing to boneos56: [-, -, Kd] | ||||
| Dealing to grumset2007: [-, -, Ks] | ||||
| Dealing to mylonas77: [-, -, 5c] | ||||
|  | @ -29,7 +29,7 @@ Dealing to YMAN1: [-, -, As] | |||
| Dealing to Lee Clayton: [-, -, Js] | ||||
| Dealing to guggi_cool: [-, -, 9s] | ||||
| Dealing to HangEv: [-, -, 6s] | ||||
| XMAN1 small bring in $0.12 | ||||
| Hero small bring in $0.12 | ||||
| boneos56 folds | ||||
| grumset2007 folds | ||||
| mylonas77 calls $0.12 | ||||
|  | @ -39,33 +39,33 @@ guggi_cool folds | |||
| HangEv folds | ||||
| --- | ||||
| Dealing 4th street | ||||
| Dealing to XMAN1: [3h] | ||||
| Dealing to Hero: [3h] | ||||
| Dealing to mylonas77: [2h] | ||||
| mylonas77 bets $0.25 | ||||
| XMAN1 calls $0.25 | ||||
| Hero calls $0.25 | ||||
| --- | ||||
| Dealing 5th street | ||||
| Dealing to XMAN1: [8c] | ||||
| Dealing to Hero: [8c] | ||||
| Dealing to mylonas77: [Kh] | ||||
| mylonas77 bets $0.50 | ||||
| XMAN1 raises $1 to $1.37 | ||||
| Hero raises $1 to $1.37 | ||||
| mylonas77 calls $0.50 | ||||
| --- | ||||
| Dealing 6th street | ||||
| Dealing to XMAN1: [4c] | ||||
| Dealing to Hero: [4c] | ||||
| Dealing to mylonas77: [Qh] | ||||
| XMAN1 bets $0.50 | ||||
| Hero bets $0.50 | ||||
| mylonas77 calls $0.50 | ||||
| --- | ||||
| Dealing river | ||||
| Dealing to XMAN1: [5h] | ||||
| XMAN1 bets $0.50 | ||||
| Dealing to Hero: [5h] | ||||
| Hero bets $0.50 | ||||
| mylonas77 calls $0.50 | ||||
| --- | ||||
| Summary: | ||||
| Main pot: $5.14 won by XMAN1 ($4.89) | ||||
| Main pot: $5.14 won by Hero ($4.89) | ||||
| Rake taken: $0.25 | ||||
| Seat 1: XMAN1 ($27.47), net: +$2.47, [8d, 8s, 4d, 3h, 8c, 4c, 5h] (FULL_HOUSE EIGHT, FOUR) | ||||
| Seat 1: Hero ($27.47), net: +$2.47, [8d, 8s, 4d, 3h, 8c, 4c, 5h] (FULL_HOUSE EIGHT, FOUR) | ||||
| Seat 3: boneos56 ($27.73), net: -$0.05 | ||||
| Seat 5: grumset2007 ($3.43), net: -$0.05 | ||||
| Seat 6: mylonas77 ($38.31), net: -$2.42 | ||||
|  |  | |||
|  | @ -13,17 +13,17 @@ Seat 2: Player2 - $5.28 | |||
| Seat 3: Player3 - $1.80 | ||||
| Seat 4: allout96 - $3.99 | ||||
| Seat 5: Player4 - $1.47 | ||||
| Seat 6: Player5 - $4 | ||||
| Seat 6: Hero - $4 | ||||
| Moving Button to seat 1 | ||||
| Player2 posts small blind ($0.02) | ||||
| Player3 posts big blind ($0.04) | ||||
| Player5 posts $0.04 | ||||
| Hero posts $0.04 | ||||
| Shuffling Deck | ||||
| Dealing Cards | ||||
| Dealing [Ad 8h] to Player5 | ||||
| Dealing [Ad 8h] to Hero | ||||
| allout96 folds | ||||
| Player4 calls $0.04 | ||||
| Player5 checks | ||||
| Hero checks | ||||
| Player1 folds | ||||
| Player2 calls $0.04 | ||||
| Player3 checks | ||||
|  | @ -31,7 +31,7 @@ Dealing Flop [9s Ac 5s] | |||
| Player2 bets $0.08 | ||||
| Player3 calls $0.08 | ||||
| Player4 calls $0.08 | ||||
| Player5 raises to $0.16 | ||||
| Hero raises to $0.16 | ||||
| Player2 calls $0.16 | ||||
| Player3 calls $0.16 | ||||
| Player4 calls $0.16 | ||||
|  | @ -39,11 +39,11 @@ Dealing Turn [4s] | |||
| Player2 checks | ||||
| Player3 bets $0.04 | ||||
| Player4 calls $0.04 | ||||
| Player5 raises to $0.72 | ||||
| Hero raises to $0.72 | ||||
| Player2 folds | ||||
| Player3 raises to $1.40 | ||||
| Player4 calls $1.27 (all-in) | ||||
| Player5 folds | ||||
| Hero folds | ||||
| Returning $0.13 to Player3 uncalled | ||||
| Player3 shows [2h 3d] | ||||
| Player4 shows [4d 9c] | ||||
|  | @ -56,6 +56,6 @@ Seat 2: Player2 - $5.08 | |||
| Seat 3: Player3 - $3.99 | ||||
| Seat 4: allout96 - $3.99 | ||||
| Seat 5: Player4 - $0 | ||||
| Seat 6: Player5 - $3.08 | ||||
| Seat 6: Hero - $3.08 | ||||
| End Of Hand #746382682 | ||||
| 
 | ||||
|  |  | |||
|  | @ -374,7 +374,7 @@ | |||
|                     'wonWhenSeenStreet2': 0.0, | ||||
|                     'wonWhenSeenStreet3': 0.0, | ||||
|                     'wonWhenSeenStreet4': 0.0}, | ||||
|     u'Player5': {   'card1': 26, | ||||
|     u'Hero': {   'card1': 26, | ||||
|                     'card2': 7, | ||||
|                     'card3': 0, | ||||
|                     'card4': 0, | ||||
|  |  | |||
|  | @ -0,0 +1,32 @@ | |||
| Game #9864152000 starts. | ||||
| 
 | ||||
| #Game No : 9864152000  | ||||
| ***** Hand History for Game 9864152000 ***** | ||||
| €10 EUR NL Texas Hold'em - Sunday, November 21, 19:00:00 CET 2010 | ||||
| Table Table  183347 (Real Money) | ||||
| Seat 1 is the button | ||||
| Total number of players : 5/6  | ||||
| Seat 3: Hero ( €10 EUR ) | ||||
| Seat 6: Player6 ( €16.49 EUR ) | ||||
| Seat 4: Player4 ( €10.73 EUR ) | ||||
| Seat 1: Player1 ( €8.56 EUR ) | ||||
| Seat 2: Player2 ( €4.90 EUR ) | ||||
| Player2 posts small blind [€0.05 EUR]. | ||||
| Hero posts big blind [€0.10 EUR]. | ||||
| ** Dealing down cards ** | ||||
| Dealt to Hero [  Ah Kc ] | ||||
| Player4 calls [€0.10 EUR] | ||||
| Player6 calls [€0.10 EUR] | ||||
| Player1 calls [€0.10 EUR] | ||||
| Player2 calls [€0.05 EUR] | ||||
| Hero raises [€0.56 EUR] | ||||
| Player4 folds | ||||
| Player6 folds | ||||
| Player1 folds | ||||
| Player2 calls [€0.56 EUR] | ||||
| ** Dealing Flop ** [ 5s, 9d, Ad ] | ||||
| Player2 checks | ||||
| Hero bets [€1.52 EUR] | ||||
| Player2 folds | ||||
| Hero does not show cards. | ||||
| Hero wins €3.04 EUR | ||||
|  | @ -1,3 +1,6 @@ | |||
| Game #9423586142 starts. | ||||
| 
 | ||||
| #Game No : 9423586142 | ||||
| ***** Hand History For Game 9423586142 ***** | ||||
| 0.01/0.02 Texas Hold'em Game Table (NL)  -  Mon Jul 12 13:38:32 EDT 2010 | ||||
| Table 20BB Min Speed #1775757  (Real Money) -- Seat 1 is the button | ||||
|  | @ -6,7 +9,7 @@ Seat 1: Player1 ($0.95) | |||
| Seat 2: Player2 ($0.57) | ||||
| Seat 3: Player3 ($0.86) | ||||
| Seat 4: Player4 ($1.71) | ||||
| Seat 5: Player5 ($1.76) | ||||
| Seat 5: Hero ($1.76) | ||||
| Seat 6: Player6 ($0.44) | ||||
| Seat 7: Player7 ($0.76) | ||||
| Seat 8: Player8 ($0.68) | ||||
|  | @ -14,8 +17,8 @@ Seat 9: Player9 ($0.38) | |||
| Player2 posts small blind (0.01) | ||||
| Player3 posts big blind (0.02) | ||||
| ** Dealing down cards ** | ||||
| Dealt to Player5 [ Tc, 9d ] | ||||
| Player5 folds | ||||
| Dealt to Hero [ Tc, 9d ] | ||||
| Hero folds | ||||
| Player6 calls (0.02) | ||||
| Player8 folds | ||||
| Player9 folds | ||||
|  | @ -34,7 +37,7 @@ Player1 balance $0.95, didn't bet (folded) | |||
| Player2 balance $0.55, lost $0.02 (folded) | ||||
| Player3 balance $0.96, bet $0.21, collected $0.31, net +$0.1 | ||||
| Player4 balance $1.71, sits out | ||||
| Player5 balance $1.76, didn't bet (folded) | ||||
| Hero balance $1.76, didn't bet (folded) | ||||
| Player6 balance $0.36, lost $0.08 (folded) | ||||
| Player7 balance $0.76, sits out | ||||
| Player8 balance $0.68, didn't bet (folded) | ||||
|  |  | |||
|  | @ -6,28 +6,28 @@ $0.80 USD NL Texas Hold'em - Saturday, July 31, 13:52:16 EDT 2010 | |||
| Table 20BB Min Speed #1770998 (Real Money) | ||||
| Seat 1 is the button | ||||
| Total number of players : 4/9 | ||||
| Seat 3: Player1 ( $1.64 USD ) | ||||
| Seat 3: Hero ( $1.64 USD ) | ||||
| Seat 5: Player2 ( $0.01 USD ) | ||||
| Seat 9: Player3 ( $1.02 USD ) | ||||
| Seat 1: Player4 ( $1.20 USD ) | ||||
| Player1 posts small blind [$0.01 USD]. | ||||
| Hero posts small blind [$0.01 USD]. | ||||
| Player2 posts big blind [$0.01 USD]. | ||||
| ** Dealing down cards ** | ||||
| Dealt to Player1 [  8h Kc ] | ||||
| Dealt to Hero [  8h Kc ] | ||||
| Player3 folds | ||||
| Player4 calls [$0.02 USD] | ||||
| Player1 calls [$0.01 USD] | ||||
| Hero calls [$0.01 USD] | ||||
| ** Dealing Flop ** [ Td, 7c, 9h ] | ||||
| Player1 checks | ||||
| Hero checks | ||||
| Player4 checks | ||||
| ** Dealing Turn ** [ 3h ] | ||||
| Player1 checks | ||||
| Hero checks | ||||
| Player4 checks | ||||
| ** Dealing River ** [ Jc ] | ||||
| Player1 bets [$0.04 USD] | ||||
| Hero bets [$0.04 USD] | ||||
| Player4 folds | ||||
| Player1 shows [ 8h, Kc ]a straight, Seven to Jack. | ||||
| Hero shows [ 8h, Kc ]a straight, Seven to Jack. | ||||
| Player2 doesn't show [ Ts, Jd ]two pairs, Jacks and Tens. | ||||
| Player1 wins $0.06 USD from the side pot 1 with a straight, Seven to Jack. | ||||
| Player1 wins $0.03 USD from the main pot with a straight, Seven to Jack. | ||||
| Hero wins $0.06 USD from the side pot 1 with a straight, Seven to Jack. | ||||
| Hero wins $0.03 USD from the main pot with a straight, Seven to Jack. | ||||
| Player2 has left the table. | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							|  | @ -186,7 +186,7 @@ | |||
|                        'wonWhenSeenStreet2': 0.0, | ||||
|                        'wonWhenSeenStreet3': 0.0, | ||||
|                        'wonWhenSeenStreet4': 0.0}, | ||||
|     u'heulot': {   'card1': 49, | ||||
|     u'Hero': {   'card1': 49, | ||||
|                    'card2': 9, | ||||
|                    'card3': 0, | ||||
|                    'card4': 0, | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ Seat 3 is the button | |||
| Total number of players : 9/9  | ||||
| Seat 9: Player1 ( $1.60 USD ) | ||||
| Seat 4: Player2 ( $1.98 USD ) | ||||
| Seat 7: Player3 ( $2.90 USD ) | ||||
| Seat 7: Hero ( $2.90 USD ) | ||||
| Seat 3: Player4 ( $1.97 USD ) | ||||
| Seat 8: Player5 ( $2.43 USD ) | ||||
| Seat 6: Player6 ( $2 USD ) | ||||
|  | @ -20,9 +20,9 @@ Player2 posts small blind [$0.01 USD]. | |||
| Player7 posts big blind [$0.02 USD]. | ||||
| Player8 posts big blind [$0.02 USD]. | ||||
| ** Dealing down cards ** | ||||
| Dealt to Player3 [  7c 6c ] | ||||
| Dealt to Hero [  7c 6c ] | ||||
| Player6 calls [$0.02 USD] | ||||
| Player3 calls [$0.02 USD] | ||||
| Hero calls [$0.02 USD] | ||||
| Player5 calls [$0.02 USD] | ||||
| Player1 folds | ||||
| Player9 folds | ||||
|  | @ -34,12 +34,12 @@ Player7 checks | |||
| Player2 checks | ||||
| Player7 bets [$0.09 USD] | ||||
| Player6 folds | ||||
| Player3 calls [$0.09 USD] | ||||
| Hero calls [$0.09 USD] | ||||
| Player5 folds | ||||
| Player8 folds | ||||
| Player2 folds | ||||
| ** Dealing Turn ** [ Kd ] | ||||
| Player7 bets [$0.21 USD] | ||||
| Player3 folds | ||||
| Hero folds | ||||
| Player7 does not show cards. | ||||
| Player7 wins $0.50 USD | ||||
|  | @ -8,13 +8,13 @@ Seat 2 is the button | |||
| Total number of players : 5/6 | ||||
| Seat 5: Player1 ( $1.60 USD ) | ||||
| Seat 1: Player2 ( $2.45 USD ) | ||||
| Seat 4: Player3 ( $2.18 USD ) | ||||
| Seat 4: Hero ( $2.18 USD ) | ||||
| Seat 2: Player4 ( $2.80 USD ) | ||||
| Seat 3: Player5 ( $0.01 USD ) | ||||
| Player5 posts small blind [$0.01 USD]. | ||||
| Player3 posts big blind [$0.04 USD]. | ||||
| Hero posts big blind [$0.04 USD]. | ||||
| ** Dealing down cards ** | ||||
| Dealt to Player3 [  6s 2c ] | ||||
| Dealt to Hero [  6s 2c ] | ||||
| Player1 folds | ||||
| Player2 folds | ||||
| Player4 folds | ||||
|  | @ -22,7 +22,7 @@ Player4 folds | |||
| ** Dealing Turn ** [ Js ] | ||||
| ** Dealing River ** [ Kc ] | ||||
| Player5 shows [ 5h, 5s ]a pair of Fives. | ||||
| Player3 shows [ 6s, 2c ]high card Ace. | ||||
| Player3 wins $0.03 USD from the side pot 1 with high card, Ace. | ||||
| Hero shows [ 6s, 2c ]high card Ace. | ||||
| Hero wins $0.03 USD from the side pot 1 with high card, Ace. | ||||
| Player5 wins $0.02 USD from the main pot with a pair of Fives. | ||||
| Player5 has left the table. | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ $4 USD NL Texas Hold'em - Wednesday, August 11, 23:21:44 CEST 2010 | |||
| Table Table  178011 (Real Money) | ||||
| Seat 4 is the button | ||||
| Total number of players : 6/9 | ||||
| Seat 6: Player1 ( $4 USD ) | ||||
| Seat 6: Hero ( $4 USD ) | ||||
| Seat 7: Player2 ( $2.92 USD ) | ||||
| Seat 5: Player3 ( $0.74 USD ) | ||||
| Seat 3: Player4 ( $4 USD ) | ||||
|  | @ -14,25 +14,25 @@ Seat 4: Player5 ( $2.97 USD ) | |||
| Seat 8: Player6 ( $2 USD ) | ||||
| Player3 posts small blind [$0.02 USD]. | ||||
| Player7 has joined the table. | ||||
| Player1 posts big blind [$0.04 USD]. | ||||
| Hero posts big blind [$0.04 USD]. | ||||
| Player2 posts big blind [$0.04 USD]. | ||||
| Player7 posts big blind [$0.04 USD]. | ||||
| ** Dealing down cards ** | ||||
| Dealt to Player1 [  Ad 4c ] | ||||
| Dealt to Hero [  Ad 4c ] | ||||
| Player8 has joined the table. | ||||
| Player2 checks | ||||
| Player9 has joined the table. | ||||
| Player7 checks | ||||
| Player5 folds | ||||
| Player3 calls [$0.02 USD] | ||||
| Player1 checks | ||||
| Hero checks | ||||
| ** Dealing Flop ** [ 4h, Tc, 3s ] | ||||
| Player3 checks | ||||
| Player1 checks | ||||
| Hero checks | ||||
| Player2 checks | ||||
| Player7 bets [$0.12 USD] | ||||
| Player3 folds | ||||
| Player1 folds | ||||
| Hero folds | ||||
| Player2 folds | ||||
| Player7 does not show cards. | ||||
| Player7 wins $0.28 USD | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ $0.50/$1 USD 7 Card Stud Hi-Lo - Monday, August 30, 20:20:17 EEST 2010 | |||
| Table Table  136403 (Real Money) | ||||
| Seat 0 is the button | ||||
| Total number of players : 7/8  | ||||
| Seat 3: XMAN1 ( $24.95 USD ) | ||||
| Seat 3: Hero ( $24.95 USD ) | ||||
| Seat 5: ISqzUSqueal ( $31.02 USD ) | ||||
| Seat 7: PPPPPositive ( $4.20 USD ) | ||||
| Seat 8: Unladylike ( $19 USD ) | ||||
|  | @ -15,20 +15,20 @@ Seat 2: strandalleen ( $17.55 USD ) | |||
| Seat 1: tubby09 ( $24.20 USD ) | ||||
| tubby09 posts ante [$0.05 USD] | ||||
| strandalleen posts ante [$0.05 USD] | ||||
| XMAN1 posts ante [$0.05 USD] | ||||
| Hero posts ante [$0.05 USD] | ||||
| ISqzUSqueal posts ante [$0.05 USD] | ||||
| YMAN1 posts ante [$0.05 USD] | ||||
| PPPPPositive posts ante [$0.05 USD] | ||||
| Unladylike posts ante [$0.05 USD] | ||||
| ** Dealing ** | ||||
| Dealt to XMAN1 [  Td 5s 3c ] | ||||
| Dealt to Hero [  Td 5s 3c ] | ||||
| YMAN1 opens | ||||
| YMAN1 bring-ins [$0.25 USD] | ||||
| PPPPPositive completes [$0.50 USD] | ||||
| Unladylike folds | ||||
| tubby09 folds | ||||
| strandalleen calls [$0.50 USD] | ||||
| XMAN1 folds | ||||
| Hero folds | ||||
| ISqzUSqueal folds | ||||
| YMAN1 calls [$0.25 USD] | ||||
| ** Dealing Fourth street ** | ||||
|  |  | |||
|  | @ -1,21 +1,21 @@ | |||
| PokerStars Game #35839001292:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:12:58 ET | ||||
| Table 'Theodora VI' 6-max Seat #5 is the button | ||||
| Seat 1: s0rrow ($4 in chips)  | ||||
| Seat 1: Hero ($4 in chips)  | ||||
| Seat 2: rumble1111 ($4.58 in chips)  | ||||
| Seat 3: Eisenherz73 ($7.54 in chips)  | ||||
| Seat 4: cypis28 ($1.40 in chips)  | ||||
| Seat 5: bakter9 ($0.78 in chips)  | ||||
| Seat 6: TheLabman ($6.31 in chips)  | ||||
| TheLabman: posts small blind $0.05 | ||||
| s0rrow: posts big blind $0.10 | ||||
| Hero: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [8s Ts 8h 2s 3s] | ||||
| Dealt to Hero [8s Ts 8h 2s 3s] | ||||
| rumble1111: calls $0.10 | ||||
| Eisenherz73: folds  | ||||
| cypis28: raises $0.10 to $0.20 | ||||
| bakter9: raises $0.10 to $0.30 | ||||
| TheLabman: folds  | ||||
| s0rrow: folds  | ||||
| Hero: folds  | ||||
| rumble1111: calls $0.20 | ||||
| cypis28: raises $0.10 to $0.40 | ||||
| Betting is capped | ||||
|  | @ -45,7 +45,7 @@ bakter9: shows [7s 5s 8d 4h 3c] (Lo: 8,7,5,4,3) | |||
| bakter9 collected $2.01 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $2.11 | Rake $0.10  | ||||
| Seat 1: s0rrow (big blind) folded before the Draw | ||||
| Seat 1: Hero (big blind) folded before the Draw | ||||
| Seat 2: rumble1111 folded after the 1st Draw | ||||
| Seat 3: Eisenherz73 folded before the Draw (didn't bet) | ||||
| Seat 4: cypis28 showed [7c 6d 9c 4s 2c] and lost with Lo: 9,7,6,4,2 | ||||
|  | @ -56,49 +56,49 @@ Seat 6: TheLabman (small blind) folded before the Draw | |||
| 
 | ||||
| PokerStars Game #35839050562:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:14:02 ET | ||||
| Table 'Theodora VI' 6-max Seat #6 is the button | ||||
| Seat 1: s0rrow ($3.90 in chips)  | ||||
| Seat 1: Hero ($3.90 in chips)  | ||||
| Seat 2: rumble1111 ($4.18 in chips)  | ||||
| Seat 3: Eisenherz73 ($7.54 in chips)  | ||||
| Seat 4: cypis28 ($0.62 in chips)  | ||||
| Seat 5: bakter9 ($2.01 in chips)  | ||||
| Seat 6: TheLabman ($6.26 in chips)  | ||||
| s0rrow: posts small blind $0.05 | ||||
| Hero: posts small blind $0.05 | ||||
| rumble1111: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [Kh Th 3d Tc 7c] | ||||
| Dealt to Hero [Kh Th 3d Tc 7c] | ||||
| Eisenherz73: folds  | ||||
| cypis28: folds  | ||||
| bakter9: calls $0.10 | ||||
| TheLabman: folds  | ||||
| s0rrow: calls $0.05 | ||||
| Hero: calls $0.05 | ||||
| rumble1111: checks  | ||||
| *** FIRST DRAW *** | ||||
| s0rrow: discards 2 cards [Kh Th] | ||||
| Dealt to s0rrow [3d Tc 7c] [5c Qs] | ||||
| Hero: discards 2 cards [Kh Th] | ||||
| Dealt to Hero [3d Tc 7c] [5c Qs] | ||||
| rumble1111: discards 2 cards | ||||
| bakter9: discards 2 cards | ||||
| s0rrow: checks  | ||||
| Hero: checks  | ||||
| rumble1111: bets $0.10 | ||||
| bakter9: folds  | ||||
| s0rrow: calls $0.10 | ||||
| Hero: calls $0.10 | ||||
| *** SECOND DRAW *** | ||||
| s0rrow: discards 2 cards [Qs Tc] | ||||
| Dealt to s0rrow [3d 7c 5c] [4c 2s] | ||||
| Hero: discards 2 cards [Qs Tc] | ||||
| Dealt to Hero [3d 7c 5c] [4c 2s] | ||||
| rumble1111: stands pat  | ||||
| s0rrow: bets $0.20 | ||||
| Hero: bets $0.20 | ||||
| rumble1111: calls $0.20 | ||||
| *** THIRD DRAW *** | ||||
| s0rrow: stands pat on [3d 7c 5c 4c 2s] | ||||
| Hero: stands pat on [3d 7c 5c 4c 2s] | ||||
| rumble1111: discards 1 card | ||||
| s0rrow: bets $0.20 | ||||
| Hero: bets $0.20 | ||||
| rumble1111: calls $0.20 | ||||
| *** SHOW DOWN *** | ||||
| s0rrow: shows [5c 4c 3d 2s 7c] (Lo: 7,5,4,3,2) | ||||
| Hero: shows [5c 4c 3d 2s 7c] (Lo: 7,5,4,3,2) | ||||
| rumble1111: mucks hand  | ||||
| s0rrow collected $1.24 from pot | ||||
| Hero collected $1.24 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $1.30 | Rake $0.06  | ||||
| Seat 1: s0rrow (small blind) showed [5c 4c 3d 2s 7c] and won ($1.24) with Lo: 7,5,4,3,2 | ||||
| Seat 1: Hero (small blind) showed [5c 4c 3d 2s 7c] and won ($1.24) with Lo: 7,5,4,3,2 | ||||
| Seat 2: rumble1111 (big blind) mucked [8s 7d 3c 6d 2h] | ||||
| Seat 3: Eisenherz73 folded before the Draw (didn't bet) | ||||
| Seat 4: cypis28 folded before the Draw (didn't bet) | ||||
|  | @ -109,7 +109,7 @@ Seat 6: TheLabman (button) folded before the Draw (didn't bet) | |||
| 
 | ||||
| PokerStars Game #35839109592:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:15:18 ET | ||||
| Table 'Theodora VI' 6-max Seat #1 is the button | ||||
| Seat 1: s0rrow ($4.54 in chips)  | ||||
| Seat 1: Hero ($4.54 in chips)  | ||||
| Seat 2: rumble1111 ($3.58 in chips)  | ||||
| Seat 3: Eisenherz73 ($7.54 in chips)  | ||||
| Seat 4: cypis28 ($0.62 in chips)  | ||||
|  | @ -118,18 +118,18 @@ Seat 6: TheLabman ($6.26 in chips) | |||
| rumble1111: posts small blind $0.05 | ||||
| Eisenherz73: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [Tc 9s Qc 8h 3d] | ||||
| Dealt to Hero [Tc 9s Qc 8h 3d] | ||||
| cypis28: folds  | ||||
| bakter9: folds  | ||||
| TheLabman: folds  | ||||
| s0rrow: folds  | ||||
| Hero: folds  | ||||
| rumble1111: folds  | ||||
| Uncalled bet ($0.05) returned to Eisenherz73 | ||||
| Eisenherz73 collected $0.10 from pot | ||||
| Eisenherz73: doesn't show hand  | ||||
| *** SUMMARY *** | ||||
| Total pot $0.10 | Rake $0  | ||||
| Seat 1: s0rrow (button) folded before the Draw (didn't bet) | ||||
| Seat 1: Hero (button) folded before the Draw (didn't bet) | ||||
| Seat 2: rumble1111 (small blind) folded before the Draw | ||||
| Seat 3: Eisenherz73 (big blind) collected ($0.10) | ||||
| Seat 4: cypis28 folded before the Draw (didn't bet) | ||||
|  | @ -140,7 +140,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet) | |||
| 
 | ||||
| PokerStars Game #35839118248:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:15:29 ET | ||||
| Table 'Theodora VI' 6-max Seat #2 is the button | ||||
| Seat 1: s0rrow ($4.54 in chips)  | ||||
| Seat 1: Hero ($4.54 in chips)  | ||||
| Seat 2: rumble1111 ($3.53 in chips)  | ||||
| Seat 3: Eisenherz73 ($7.59 in chips)  | ||||
| Seat 4: cypis28 ($0.62 in chips)  | ||||
|  | @ -149,10 +149,10 @@ Seat 6: TheLabman ($6.26 in chips) | |||
| Eisenherz73: posts small blind $0.05 | ||||
| cypis28: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [Js 3d Qc 9s 5h] | ||||
| Dealt to Hero [Js 3d Qc 9s 5h] | ||||
| bakter9: raises $0.10 to $0.20 | ||||
| TheLabman: folds  | ||||
| s0rrow: folds  | ||||
| Hero: folds  | ||||
| rumble1111: folds  | ||||
| Eisenherz73: folds  | ||||
| cypis28: raises $0.10 to $0.30 | ||||
|  | @ -178,7 +178,7 @@ bakter9: shows [4d 7c 2c 5s 6d] (Lo: 7,6,5,4,2) | |||
| bakter9 collected $1.23 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $1.29 | Rake $0.06  | ||||
| Seat 1: s0rrow folded before the Draw (didn't bet) | ||||
| Seat 1: Hero folded before the Draw (didn't bet) | ||||
| Seat 2: rumble1111 (button) folded before the Draw (didn't bet) | ||||
| Seat 3: Eisenherz73 (small blind) folded before the Draw | ||||
| Seat 4: cypis28 (big blind) showed [7h 3s 2h 8h 6h] and lost with Lo: 8,7,6,3,2 | ||||
|  | @ -189,7 +189,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet) | |||
| 
 | ||||
| PokerStars Game #35839149377:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:16:10 ET | ||||
| Table 'Theodora VI' 6-max Seat #3 is the button | ||||
| Seat 1: s0rrow ($4.54 in chips)  | ||||
| Seat 1: Hero ($4.54 in chips)  | ||||
| Seat 2: rumble1111 ($3.53 in chips)  | ||||
| Seat 3: Eisenherz73 ($7.54 in chips)  | ||||
| Seat 5: bakter9 ($2.52 in chips)  | ||||
|  | @ -197,9 +197,9 @@ Seat 6: TheLabman ($6.26 in chips) | |||
| bakter9: posts small blind $0.05 | ||||
| TheLabman: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [2c 3c Ts Jc Kc] | ||||
| Dealt to Hero [2c 3c Ts Jc Kc] | ||||
| cypis28 leaves the table | ||||
| s0rrow: folds  | ||||
| Hero: folds  | ||||
| rumble1111: folds  | ||||
| Eisenherz73: folds  | ||||
| bakter9: calls $0.05 | ||||
|  | @ -226,7 +226,7 @@ TheLabman: shows [3h 6d 7h 5h 8d] (Lo: 8,7,6,5,3) | |||
| TheLabman collected $0.58 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $0.60 | Rake $0.02  | ||||
| Seat 1: s0rrow folded before the Draw (didn't bet) | ||||
| Seat 1: Hero folded before the Draw (didn't bet) | ||||
| Seat 2: rumble1111 folded before the Draw (didn't bet) | ||||
| Seat 3: Eisenherz73 (button) folded before the Draw (didn't bet) | ||||
| Seat 5: bakter9 (small blind) showed [5d 4h 8h 7d 6h] and lost with Lo: a straight, Four to Eight | ||||
|  | @ -236,67 +236,67 @@ Seat 6: TheLabman (big blind) showed [3h 6d 7h 5h 8d] and won ($0.58) with Lo: 8 | |||
| 
 | ||||
| PokerStars Game #35839176665:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:16:46 ET | ||||
| Table 'Theodora VI' 6-max Seat #5 is the button | ||||
| Seat 1: s0rrow ($4.54 in chips)  | ||||
| Seat 1: Hero ($4.54 in chips)  | ||||
| Seat 2: rumble1111 ($3.53 in chips)  | ||||
| Seat 3: Eisenherz73 ($7.54 in chips)  | ||||
| Seat 4: tom1206 ($4 in chips)  | ||||
| Seat 5: bakter9 ($2.22 in chips)  | ||||
| Seat 6: TheLabman ($6.54 in chips)  | ||||
| TheLabman: posts small blind $0.05 | ||||
| s0rrow: posts big blind $0.10 | ||||
| Hero: posts big blind $0.10 | ||||
| tom1206: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [5d Js 7d Jd 4d] | ||||
| Dealt to Hero [5d Js 7d Jd 4d] | ||||
| rumble1111: calls $0.10 | ||||
| Eisenherz73: calls $0.10 | ||||
| tom1206: checks  | ||||
| bakter9: folds  | ||||
| TheLabman: calls $0.05 | ||||
| s0rrow: checks  | ||||
| Hero: checks  | ||||
| *** FIRST DRAW *** | ||||
| TheLabman: discards 3 cards | ||||
| s0rrow: discards 2 cards [Js Jd] | ||||
| Dealt to s0rrow [5d 7d 4d] [6d 2s] | ||||
| Hero: discards 2 cards [Js Jd] | ||||
| Dealt to Hero [5d 7d 4d] [6d 2s] | ||||
| rumble1111: discards 2 cards | ||||
| Eisenherz73: discards 2 cards | ||||
| tom1206: discards 2 cards | ||||
| TheLabman: checks  | ||||
| s0rrow: checks  | ||||
| Hero: checks  | ||||
| rumble1111: checks  | ||||
| Eisenherz73: checks  | ||||
| tom1206: checks  | ||||
| *** SECOND DRAW *** | ||||
| TheLabman: discards 3 cards | ||||
| s0rrow: stands pat on [5d 7d 4d 6d 2s] | ||||
| Hero: stands pat on [5d 7d 4d 6d 2s] | ||||
| rumble1111: discards 2 cards | ||||
| Eisenherz73: discards 1 card | ||||
| tom1206: discards 2 cards | ||||
| TheLabman: checks  | ||||
| s0rrow: checks  | ||||
| Hero: checks  | ||||
| rumble1111: checks  | ||||
| Eisenherz73: checks  | ||||
| tom1206: checks  | ||||
| *** THIRD DRAW *** | ||||
| TheLabman: discards 2 cards | ||||
| s0rrow: stands pat on [5d 7d 4d 6d 2s] | ||||
| Hero: stands pat on [5d 7d 4d 6d 2s] | ||||
| rumble1111: discards 1 card | ||||
| The deck is reshuffled | ||||
| Eisenherz73: discards 1 card | ||||
| tom1206: discards 2 cards | ||||
| TheLabman: checks  | ||||
| s0rrow: bets $0.20 | ||||
| Hero: bets $0.20 | ||||
| rumble1111: folds  | ||||
| Eisenherz73: folds  | ||||
| Eisenherz73 is sitting out | ||||
| Eisenherz73 leaves the table | ||||
| tom1206: folds  | ||||
| TheLabman: folds  | ||||
| Uncalled bet ($0.20) returned to s0rrow | ||||
| Uncalled bet ($0.20) returned to Hero | ||||
| X USN-USMC joins the table at seat #3  | ||||
| s0rrow collected $0.48 from pot | ||||
| Hero collected $0.48 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $0.50 | Rake $0.02  | ||||
| Seat 1: s0rrow (big blind) collected ($0.48) | ||||
| Seat 1: Hero (big blind) collected ($0.48) | ||||
| Seat 2: rumble1111 folded after the 3rd Draw | ||||
| Seat 3: Eisenherz73 folded after the 3rd Draw | ||||
| Seat 4: tom1206 folded after the 3rd Draw | ||||
|  | @ -307,24 +307,24 @@ Seat 6: TheLabman (small blind) folded after the 3rd Draw | |||
| 
 | ||||
| PokerStars Game #35839272371:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:18:50 ET | ||||
| Table 'Theodora VI' 6-max Seat #6 is the button | ||||
| Seat 1: s0rrow ($4.92 in chips)  | ||||
| Seat 1: Hero ($4.92 in chips)  | ||||
| Seat 2: rumble1111 ($3.43 in chips)  | ||||
| Seat 3: X USN-USMC ($4 in chips)  | ||||
| Seat 4: tom1206 ($3.90 in chips)  | ||||
| Seat 5: bakter9 ($2.22 in chips)  | ||||
| Seat 6: TheLabman ($6.44 in chips)  | ||||
| s0rrow: posts small blind $0.05 | ||||
| Hero: posts small blind $0.05 | ||||
| rumble1111: posts big blind $0.10 | ||||
| X USN-USMC: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [Th Js Kd 2h Qc] | ||||
| Dealt to Hero [Th Js Kd 2h Qc] | ||||
| X USN-USMC: checks  | ||||
| tom1206 has timed out | ||||
| tom1206: folds  | ||||
| tom1206 is sitting out | ||||
| bakter9: folds  | ||||
| TheLabman: calls $0.10 | ||||
| s0rrow: folds  | ||||
| Hero: folds  | ||||
| tom1206 has returned | ||||
| rumble1111: checks  | ||||
| *** FIRST DRAW *** | ||||
|  | @ -357,7 +357,7 @@ X USN-USMC collected $1.19 from pot | |||
| X USN-USMC: doesn't show hand  | ||||
| *** SUMMARY *** | ||||
| Total pot $1.25 | Rake $0.06  | ||||
| Seat 1: s0rrow (small blind) folded before the Draw | ||||
| Seat 1: Hero (small blind) folded before the Draw | ||||
| Seat 2: rumble1111 (big blind) folded after the 3rd Draw | ||||
| Seat 3: X USN-USMC collected ($1.19) | ||||
| Seat 4: tom1206 folded before the Draw (didn't bet) | ||||
|  | @ -368,7 +368,7 @@ Seat 6: TheLabman (button) folded after the 3rd Draw | |||
| 
 | ||||
| PokerStars Game #35839360555:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:20:53 ET | ||||
| Table 'Theodora VI' 6-max Seat #1 is the button | ||||
| Seat 1: s0rrow ($4.87 in chips)  | ||||
| Seat 1: Hero ($4.87 in chips)  | ||||
| Seat 2: rumble1111 ($3.03 in chips)  | ||||
| Seat 3: X USN-USMC ($4.79 in chips)  | ||||
| Seat 4: tom1206 ($3.90 in chips)  | ||||
|  | @ -377,11 +377,11 @@ Seat 6: TheLabman ($6.04 in chips) | |||
| rumble1111: posts small blind $0.05 | ||||
| X USN-USMC: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [9s Kh 2d Ks 4c] | ||||
| Dealt to Hero [9s Kh 2d Ks 4c] | ||||
| tom1206: raises $0.10 to $0.20 | ||||
| bakter9: folds  | ||||
| TheLabman: folds  | ||||
| s0rrow: folds  | ||||
| Hero: folds  | ||||
| rumble1111: calls $0.15 | ||||
| X USN-USMC: calls $0.10 | ||||
| *** FIRST DRAW *** | ||||
|  | @ -414,7 +414,7 @@ tom1206: mucks hand | |||
| rumble1111 collected $2.38 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $2.50 | Rake $0.12  | ||||
| Seat 1: s0rrow (button) folded before the Draw (didn't bet) | ||||
| Seat 1: Hero (button) folded before the Draw (didn't bet) | ||||
| Seat 2: rumble1111 (small blind) showed [7d 4s 2s 3s 6c] and won ($2.38) with Lo: 7,6,4,3,2 | ||||
| Seat 3: X USN-USMC (big blind) folded after the 3rd Draw | ||||
| Seat 4: tom1206 mucked [4h 6d 8d 5c 3d] | ||||
|  | @ -425,7 +425,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet) | |||
| 
 | ||||
| PokerStars Game #35839412131:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:21:58 ET | ||||
| Table 'Theodora VI' 6-max Seat #2 is the button | ||||
| Seat 1: s0rrow ($4.87 in chips)  | ||||
| Seat 1: Hero ($4.87 in chips)  | ||||
| Seat 2: rumble1111 ($4.51 in chips)  | ||||
| Seat 3: X USN-USMC ($4.09 in chips)  | ||||
| Seat 4: tom1206 ($3 in chips)  | ||||
|  | @ -434,10 +434,10 @@ Seat 6: TheLabman ($6.04 in chips) | |||
| X USN-USMC: posts small blind $0.05 | ||||
| tom1206: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [8c 3s Tc Ac Qd] | ||||
| Dealt to Hero [8c 3s Tc Ac Qd] | ||||
| bakter9: calls $0.10 | ||||
| TheLabman: calls $0.10 | ||||
| s0rrow: folds  | ||||
| Hero: folds  | ||||
| rumble1111: calls $0.10 | ||||
| X USN-USMC: calls $0.05 | ||||
| tom1206: checks  | ||||
|  | @ -480,7 +480,7 @@ bakter9: shows [8d 5c 7c 2d 6h] (Lo: 8,7,6,5,2) | |||
| tom1206 collected $1.62 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $1.70 | Rake $0.08  | ||||
| Seat 1: s0rrow folded before the Draw (didn't bet) | ||||
| Seat 1: Hero folded before the Draw (didn't bet) | ||||
| Seat 2: rumble1111 (button) folded after the 3rd Draw | ||||
| Seat 3: X USN-USMC (small blind) folded after the 3rd Draw | ||||
| Seat 4: tom1206 (big blind) showed [4s 3h 7d 8s 2c] and won ($1.62) with Lo: 8,7,4,3,2 | ||||
|  | @ -491,7 +491,7 @@ Seat 6: TheLabman folded after the 2nd Draw | |||
| 
 | ||||
| PokerStars Game #35839484932:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:23:30 ET | ||||
| Table 'Theodora VI' 6-max Seat #3 is the button | ||||
| Seat 1: s0rrow ($4.87 in chips)  | ||||
| Seat 1: Hero ($4.87 in chips)  | ||||
| Seat 2: rumble1111 ($4.21 in chips)  | ||||
| Seat 3: X USN-USMC ($3.79 in chips)  | ||||
| Seat 4: tom1206 ($4.12 in chips)  | ||||
|  | @ -500,53 +500,53 @@ Seat 6: TheLabman ($5.94 in chips) | |||
| tom1206: posts small blind $0.05 | ||||
| bakter9: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [3d 7h 7c Jh 5s] | ||||
| Dealt to Hero [3d 7h 7c Jh 5s] | ||||
| TheLabman: folds  | ||||
| s0rrow: calls $0.10 | ||||
| Hero: calls $0.10 | ||||
| rumble1111: folds  | ||||
| rumble1111 leaves the table | ||||
| X USN-USMC: folds  | ||||
| tom1206: calls $0.05 | ||||
| bakter9: raises $0.10 to $0.20 | ||||
| s0rrow: calls $0.10 | ||||
| Hero: calls $0.10 | ||||
| tom1206: calls $0.10 | ||||
| *** FIRST DRAW *** | ||||
| tom1206: discards 3 cards | ||||
| bakter9: discards 2 cards | ||||
| s0rrow: discards 2 cards [7c Jh] | ||||
| Dealt to s0rrow [3d 7h 5s] [9h Ad] | ||||
| Hero: discards 2 cards [7c Jh] | ||||
| Dealt to Hero [3d 7h 5s] [9h Ad] | ||||
| tom1206: checks  | ||||
| bakter9: bets $0.10 | ||||
| s0rrow: calls $0.10 | ||||
| Hero: calls $0.10 | ||||
| tom1206: calls $0.10 | ||||
| *** SECOND DRAW *** | ||||
| tom1206: discards 2 cards | ||||
| bakter9: discards 1 card | ||||
| s0rrow: discards 1 card [9h] | ||||
| Dealt to s0rrow [3d 7h 5s Ad] [4c] | ||||
| Hero: discards 1 card [9h] | ||||
| Dealt to Hero [3d 7h 5s Ad] [4c] | ||||
| tom1206: bets $0.20 | ||||
| bakter9: raises $0.20 to $0.40 | ||||
| bakter9 said, "zzzzzzzzzzzzzzzzzzz" | ||||
| s0rrow: calls $0.40 | ||||
| Hero: calls $0.40 | ||||
| tom1206: calls $0.20 | ||||
| *** THIRD DRAW *** | ||||
| tom1206: discards 1 card | ||||
| bakter9: stands pat  | ||||
| s0rrow: stands pat on [3d 7h 5s Ad 4c] | ||||
| Hero: stands pat on [3d 7h 5s Ad 4c] | ||||
| tom1206: checks  | ||||
| bakter9: bets $0.20 | ||||
| s0rrow: calls $0.20 | ||||
| Hero: calls $0.20 | ||||
| tom1206: raises $0.20 to $0.40 | ||||
| bakter9: calls $0.20 | ||||
| s0rrow: calls $0.20 | ||||
| Hero: calls $0.20 | ||||
| *** SHOW DOWN *** | ||||
| tom1206: shows [4h 3c Qc 2c 6c] (Lo: Q,6,4,3,2) | ||||
| bakter9: shows [3h 5d 2s 8c 6s] (Lo: 8,6,5,3,2) | ||||
| s0rrow: mucks hand  | ||||
| Hero: mucks hand  | ||||
| bakter9 collected $3.14 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $3.30 | Rake $0.16  | ||||
| Seat 1: s0rrow mucked [3d 7h 4c Ad 5s] | ||||
| Seat 1: Hero mucked [3d 7h 4c Ad 5s] | ||||
| Seat 2: rumble1111 folded before the Draw (didn't bet) | ||||
| Seat 3: X USN-USMC (button) folded before the Draw (didn't bet) | ||||
| Seat 4: tom1206 (small blind) showed [4h 3c Qc 2c 6c] and lost with Lo: Q,6,4,3,2 | ||||
|  | @ -557,7 +557,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet) | |||
| 
 | ||||
| PokerStars Game #35839619404:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:26:21 ET | ||||
| Table 'Theodora VI' 6-max Seat #4 is the button | ||||
| Seat 1: s0rrow ($3.77 in chips)  | ||||
| Seat 1: Hero ($3.77 in chips)  | ||||
| Seat 3: X USN-USMC ($3.79 in chips)  | ||||
| Seat 4: tom1206 ($3.02 in chips)  | ||||
| Seat 5: bakter9 ($3.76 in chips)  | ||||
|  | @ -565,38 +565,38 @@ Seat 6: TheLabman ($5.94 in chips) | |||
| bakter9: posts small blind $0.05 | ||||
| TheLabman: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [Ah 7s Ad 5d As] | ||||
| Dealt to Hero [Ah 7s Ad 5d As] | ||||
| bakter9 said, "ty" | ||||
| s0rrow: raises $0.10 to $0.20 | ||||
| Hero: raises $0.10 to $0.20 | ||||
| X USN-USMC: folds  | ||||
| tom1206: folds  | ||||
| bakter9: folds  | ||||
| TheLabman: calls $0.10 | ||||
| *** FIRST DRAW *** | ||||
| TheLabman: discards 2 cards | ||||
| s0rrow: discards 2 cards [7s Ad] | ||||
| Dealt to s0rrow [Ah 5d As] [5h 8s] | ||||
| Hero: discards 2 cards [7s Ad] | ||||
| Dealt to Hero [Ah 5d As] [5h 8s] | ||||
| TheLabman: checks  | ||||
| Mamega joins the table at seat #2  | ||||
| s0rrow: bets $0.10 | ||||
| Hero: bets $0.10 | ||||
| TheLabman: calls $0.10 | ||||
| *** SECOND DRAW *** | ||||
| TheLabman: discards 1 card | ||||
| s0rrow: stands pat on [Ah 5d As 5h 8s] | ||||
| Hero: stands pat on [Ah 5d As 5h 8s] | ||||
| TheLabman: checks  | ||||
| s0rrow: bets $0.20 | ||||
| Hero: bets $0.20 | ||||
| TheLabman: calls $0.20 | ||||
| *** THIRD DRAW *** | ||||
| TheLabman: discards 1 card | ||||
| s0rrow: stands pat on [Ah 5d As 5h 8s] | ||||
| Hero: stands pat on [Ah 5d As 5h 8s] | ||||
| TheLabman: checks  | ||||
| s0rrow: bets $0.20 | ||||
| Hero: bets $0.20 | ||||
| TheLabman: folds  | ||||
| Uncalled bet ($0.20) returned to s0rrow | ||||
| s0rrow collected $1 from pot | ||||
| Uncalled bet ($0.20) returned to Hero | ||||
| Hero collected $1 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $1.05 | Rake $0.05  | ||||
| Seat 1: s0rrow collected ($1) | ||||
| Seat 1: Hero collected ($1) | ||||
| Seat 3: X USN-USMC folded before the Draw (didn't bet) | ||||
| Seat 4: tom1206 (button) folded before the Draw (didn't bet) | ||||
| Seat 5: bakter9 (small blind) folded before the Draw | ||||
|  | @ -606,33 +606,33 @@ Seat 6: TheLabman (big blind) folded after the 3rd Draw | |||
| 
 | ||||
| PokerStars Game #35839669792:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:27:24 ET | ||||
| Table 'Theodora VI' 6-max Seat #5 is the button | ||||
| Seat 1: s0rrow ($4.27 in chips)  | ||||
| Seat 1: Hero ($4.27 in chips)  | ||||
| Seat 3: X USN-USMC ($3.79 in chips)  | ||||
| Seat 4: tom1206 ($3.02 in chips)  | ||||
| Seat 5: bakter9 ($3.71 in chips)  | ||||
| Seat 6: TheLabman ($5.44 in chips)  | ||||
| TheLabman: posts small blind $0.05 | ||||
| s0rrow: posts big blind $0.10 | ||||
| Hero: posts big blind $0.10 | ||||
| Mamega: sits out  | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [3h 6d 9s 5s Kc] | ||||
| Dealt to Hero [3h 6d 9s 5s Kc] | ||||
| X USN-USMC: calls $0.10 | ||||
| tom1206: calls $0.10 | ||||
| bakter9: folds  | ||||
| TheLabman: calls $0.05 | ||||
| s0rrow: checks  | ||||
| Hero: checks  | ||||
| *** FIRST DRAW *** | ||||
| TheLabman: discards 1 card | ||||
| s0rrow: discards 1 card [Kc] | ||||
| Dealt to s0rrow [3h 6d 9s 5s] [Jh] | ||||
| Hero: discards 1 card [Kc] | ||||
| Dealt to Hero [3h 6d 9s 5s] [Jh] | ||||
| X USN-USMC: discards 2 cards | ||||
| tom1206: discards 2 cards | ||||
| TheLabman: checks  | ||||
| s0rrow: checks  | ||||
| Hero: checks  | ||||
| X USN-USMC: bets $0.10 | ||||
| tom1206: raises $0.10 to $0.20 | ||||
| TheLabman: calls $0.20 | ||||
| s0rrow: folds  | ||||
| Hero: folds  | ||||
| X USN-USMC: calls $0.10 | ||||
| *** SECOND DRAW *** | ||||
| TheLabman: discards 1 card | ||||
|  | @ -662,7 +662,7 @@ X USN-USMC collected $3.24 from pot | |||
| LumBita joins the table at seat #5  | ||||
| *** SUMMARY *** | ||||
| Total pot $3.40 | Rake $0.16  | ||||
| Seat 1: s0rrow (big blind) folded after the 1st Draw | ||||
| Seat 1: Hero (big blind) folded after the 1st Draw | ||||
| Seat 3: X USN-USMC showed [3s 4s 7s 2d 6c] and won ($3.24) with Lo: 7,6,4,3,2 | ||||
| Seat 4: tom1206 mucked [8d 7c 4h 5h 3d] | ||||
| Seat 5: bakter9 (button) folded before the Draw (didn't bet) | ||||
|  | @ -672,22 +672,22 @@ Seat 6: TheLabman (small blind) mucked [4d 6h 7h 2s 5c] | |||
| 
 | ||||
| PokerStars Game #35839735773:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:28:48 ET | ||||
| Table 'Theodora VI' 6-max Seat #6 is the button | ||||
| Seat 1: s0rrow ($4.17 in chips)  | ||||
| Seat 1: Hero ($4.17 in chips)  | ||||
| Seat 2: Mamega ($4 in chips)  | ||||
| Seat 3: X USN-USMC ($5.93 in chips)  | ||||
| Seat 4: tom1206 ($1.92 in chips)  | ||||
| Seat 5: LumBita ($1 in chips)  | ||||
| Seat 6: TheLabman ($4.34 in chips)  | ||||
| s0rrow: posts small blind $0.05 | ||||
| Hero: posts small blind $0.05 | ||||
| Mamega: posts big blind $0.10 | ||||
| LumBita: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [5c Kc Js Ts Jc] | ||||
| Dealt to Hero [5c Kc Js Ts Jc] | ||||
| X USN-USMC: calls $0.10 | ||||
| tom1206: calls $0.10 | ||||
| LumBita: checks  | ||||
| TheLabman: folds  | ||||
| s0rrow: folds  | ||||
| Hero: folds  | ||||
| Mamega: checks  | ||||
| *** FIRST DRAW *** | ||||
| Mamega: stands pat  | ||||
|  | @ -722,7 +722,7 @@ LumBita: mucks hand | |||
| X USN-USMC collected $1.29 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $1.35 | Rake $0.06  | ||||
| Seat 1: s0rrow (small blind) folded before the Draw | ||||
| Seat 1: Hero (small blind) folded before the Draw | ||||
| Seat 2: Mamega (big blind) folded after the 1st Draw | ||||
| Seat 3: X USN-USMC showed [2h 4h 7d 5s 6c] and won ($1.29) with Lo: 7,6,5,4,2 | ||||
| Seat 4: tom1206 mucked [7h 8c 3s 4d 5h] | ||||
|  | @ -733,7 +733,7 @@ Seat 6: TheLabman (button) folded before the Draw (didn't bet) | |||
| 
 | ||||
| PokerStars Game #35839797257:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:30:09 ET | ||||
| Table 'Theodora VI' 6-max Seat #1 is the button | ||||
| Seat 1: s0rrow ($4.12 in chips)  | ||||
| Seat 1: Hero ($4.12 in chips)  | ||||
| Seat 2: Mamega ($3.90 in chips)  | ||||
| Seat 3: X USN-USMC ($6.82 in chips)  | ||||
| Seat 4: tom1206 ($1.52 in chips)  | ||||
|  | @ -742,11 +742,11 @@ Seat 6: TheLabman ($4.34 in chips) | |||
| Mamega: posts small blind $0.05 | ||||
| X USN-USMC: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [2c Ah 3h 8h 5s] | ||||
| Dealt to Hero [2c Ah 3h 8h 5s] | ||||
| tom1206: calls $0.10 | ||||
| LumBita: calls $0.10 | ||||
| TheLabman: folds  | ||||
| s0rrow: raises $0.10 to $0.20 | ||||
| Hero: raises $0.10 to $0.20 | ||||
| Mamega: folds  | ||||
| X USN-USMC: folds  | ||||
| tom1206: calls $0.10 | ||||
|  | @ -754,37 +754,37 @@ LumBita: calls $0.10 | |||
| *** FIRST DRAW *** | ||||
| tom1206: discards 2 cards | ||||
| LumBita: discards 2 cards | ||||
| s0rrow: discards 1 card [8h] | ||||
| Dealt to s0rrow [2c Ah 3h 5s] [8d] | ||||
| Hero: discards 1 card [8h] | ||||
| Dealt to Hero [2c Ah 3h 5s] [8d] | ||||
| tom1206: checks  | ||||
| LumBita: checks  | ||||
| s0rrow: bets $0.10 | ||||
| Hero: bets $0.10 | ||||
| tom1206: calls $0.10 | ||||
| LumBita: calls $0.10 | ||||
| *** SECOND DRAW *** | ||||
| tom1206: discards 2 cards | ||||
| LumBita: stands pat  | ||||
| s0rrow: discards 1 card [8d] | ||||
| Dealt to s0rrow [2c Ah 3h 5s] [2s] | ||||
| Hero: discards 1 card [8d] | ||||
| Dealt to Hero [2c Ah 3h 5s] [2s] | ||||
| tom1206: checks  | ||||
| LumBita: bets $0.20 | ||||
| s0rrow: calls $0.20 | ||||
| Hero: calls $0.20 | ||||
| tom1206: calls $0.20 | ||||
| *** THIRD DRAW *** | ||||
| tom1206: discards 1 card | ||||
| LumBita: stands pat  | ||||
| s0rrow: discards 1 card [2s] | ||||
| Dealt to s0rrow [2c Ah 3h 5s] [Qd] | ||||
| Hero: discards 1 card [2s] | ||||
| Dealt to Hero [2c Ah 3h 5s] [Qd] | ||||
| tom1206: checks  | ||||
| LumBita: bets $0.10 and is all-in | ||||
| s0rrow: folds  | ||||
| Hero: folds  | ||||
| tom1206: folds  | ||||
| Uncalled bet ($0.10) returned to LumBita | ||||
| LumBita collected $1.57 from pot | ||||
| LumBita: doesn't show hand  | ||||
| *** SUMMARY *** | ||||
| Total pot $1.65 | Rake $0.08  | ||||
| Seat 1: s0rrow (button) folded after the 3rd Draw | ||||
| Seat 1: Hero (button) folded after the 3rd Draw | ||||
| Seat 2: Mamega (small blind) folded before the Draw | ||||
| Seat 3: X USN-USMC (big blind) folded before the Draw | ||||
| Seat 4: tom1206 folded after the 3rd Draw | ||||
|  | @ -795,7 +795,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet) | |||
| 
 | ||||
| PokerStars Game #35839866916:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:31:36 ET | ||||
| Table 'Theodora VI' 6-max Seat #2 is the button | ||||
| Seat 1: s0rrow ($3.62 in chips)  | ||||
| Seat 1: Hero ($3.62 in chips)  | ||||
| Seat 2: Mamega ($3.85 in chips)  | ||||
| Seat 3: X USN-USMC ($6.72 in chips)  | ||||
| Seat 4: tom1206 ($1.02 in chips)  | ||||
|  | @ -804,10 +804,10 @@ Seat 6: TheLabman ($4.34 in chips) | |||
| X USN-USMC: posts small blind $0.05 | ||||
| tom1206: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [Jd 5c 2s 5h Qs] | ||||
| Dealt to Hero [Jd 5c 2s 5h Qs] | ||||
| LumBita: calls $0.10 | ||||
| TheLabman: folds  | ||||
| s0rrow: folds  | ||||
| Hero: folds  | ||||
| Mamega: folds  | ||||
| X USN-USMC: calls $0.05 | ||||
| tom1206: checks  | ||||
|  | @ -838,7 +838,7 @@ tom1206: mucks hand | |||
| X USN-USMC collected $0.67 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $0.70 | Rake $0.03  | ||||
| Seat 1: s0rrow folded before the Draw (didn't bet) | ||||
| Seat 1: Hero folded before the Draw (didn't bet) | ||||
| Seat 2: Mamega (button) folded before the Draw (didn't bet) | ||||
| Seat 3: X USN-USMC (small blind) showed [4h 3h 2d 7h 6d] and won ($0.67) with Lo: 7,6,4,3,2 | ||||
| Seat 4: tom1206 (big blind) mucked [7c 5d 9s Th 8d] | ||||
|  | @ -849,7 +849,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet) | |||
| 
 | ||||
| PokerStars Game #35839926911:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:32:52 ET | ||||
| Table 'Theodora VI' 6-max Seat #3 is the button | ||||
| Seat 1: s0rrow ($3.62 in chips)  | ||||
| Seat 1: Hero ($3.62 in chips)  | ||||
| Seat 2: Mamega ($3.85 in chips)  | ||||
| Seat 3: X USN-USMC ($7.09 in chips)  | ||||
| Seat 4: tom1206 ($0.72 in chips)  | ||||
|  | @ -858,37 +858,37 @@ Seat 6: TheLabman ($4.34 in chips) | |||
| tom1206: posts small blind $0.05 | ||||
| LumBita: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [Qd 2d 5s Ah 8d] | ||||
| Dealt to Hero [Qd 2d 5s Ah 8d] | ||||
| TheLabman: folds  | ||||
| s0rrow: calls $0.10 | ||||
| Hero: calls $0.10 | ||||
| Mamega: folds  | ||||
| X USN-USMC: folds  | ||||
| tom1206: folds  | ||||
| LumBita: checks  | ||||
| *** FIRST DRAW *** | ||||
| LumBita: discards 3 cards | ||||
| s0rrow: discards 2 cards [Qd 8d] | ||||
| Dealt to s0rrow [2d 5s Ah] [Jc 8h] | ||||
| Hero: discards 2 cards [Qd 8d] | ||||
| Dealt to Hero [2d 5s Ah] [Jc 8h] | ||||
| LumBita: checks  | ||||
| s0rrow: checks  | ||||
| Hero: checks  | ||||
| *** SECOND DRAW *** | ||||
| LumBita: discards 2 cards | ||||
| s0rrow: discards 1 card [Jc] | ||||
| Dealt to s0rrow [2d 5s Ah 8h] [9s] | ||||
| Hero: discards 1 card [Jc] | ||||
| Dealt to Hero [2d 5s Ah 8h] [9s] | ||||
| LumBita: bets $0.20 | ||||
| s0rrow: calls $0.20 | ||||
| Hero: calls $0.20 | ||||
| *** THIRD DRAW *** | ||||
| LumBita: stands pat  | ||||
| s0rrow: stands pat on [2d 5s Ah 8h 9s] | ||||
| Hero: stands pat on [2d 5s Ah 8h 9s] | ||||
| LumBita: checks  | ||||
| s0rrow: checks  | ||||
| Hero: checks  | ||||
| *** SHOW DOWN *** | ||||
| LumBita: shows [7h 2s 5c 8c 6c] (Lo: 8,7,6,5,2) | ||||
| s0rrow: mucks hand  | ||||
| Hero: mucks hand  | ||||
| LumBita collected $0.62 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $0.65 | Rake $0.03  | ||||
| Seat 1: s0rrow mucked [9s 2d 5s Ah 8h] | ||||
| Seat 1: Hero mucked [9s 2d 5s Ah 8h] | ||||
| Seat 2: Mamega folded before the Draw (didn't bet) | ||||
| Seat 3: X USN-USMC (button) folded before the Draw (didn't bet) | ||||
| Seat 4: tom1206 (small blind) folded before the Draw | ||||
|  | @ -899,7 +899,7 @@ Seat 6: TheLabman folded before the Draw (didn't bet) | |||
| 
 | ||||
| PokerStars Game #35839959625:  Triple Draw 2-7 Lowball Limit ($0.10/$0.20 USD) - 2009/11/25 14:33:33 ET | ||||
| Table 'Theodora VI' 6-max Seat #4 is the button | ||||
| Seat 1: s0rrow ($3.32 in chips)  | ||||
| Seat 1: Hero ($3.32 in chips)  | ||||
| Seat 2: Mamega ($3.85 in chips)  | ||||
| Seat 3: X USN-USMC ($7.09 in chips)  | ||||
| Seat 4: tom1206 ($0.67 in chips)  | ||||
|  | @ -908,8 +908,8 @@ Seat 6: TheLabman ($4.34 in chips) | |||
| LumBita: posts small blind $0.05 | ||||
| TheLabman: posts big blind $0.10 | ||||
| *** DEALING HANDS *** | ||||
| Dealt to s0rrow [Jd As 8h 3s 7c] | ||||
| s0rrow: calls $0.10 | ||||
| Dealt to Hero [Jd As 8h 3s 7c] | ||||
| Hero: calls $0.10 | ||||
| Mamega: folds  | ||||
| X USN-USMC: folds  | ||||
| tom1206: calls $0.10 | ||||
|  | @ -918,49 +918,49 @@ TheLabman: checks | |||
| *** FIRST DRAW *** | ||||
| LumBita: discards 2 cards | ||||
| TheLabman: discards 1 card | ||||
| s0rrow: discards 1 card [Jd] | ||||
| Dealt to s0rrow [As 8h 3s 7c] [4h] | ||||
| Hero: discards 1 card [Jd] | ||||
| Dealt to Hero [As 8h 3s 7c] [4h] | ||||
| tom1206: discards 2 cards | ||||
| LumBita: checks  | ||||
| TheLabman: bets $0.10 | ||||
| s0rrow: calls $0.10 | ||||
| Hero: calls $0.10 | ||||
| tom1206: raises $0.10 to $0.20 | ||||
| LumBita: calls $0.20 | ||||
| TheLabman: calls $0.10 | ||||
| s0rrow: calls $0.10 | ||||
| Hero: calls $0.10 | ||||
| *** SECOND DRAW *** | ||||
| LumBita: discards 1 card | ||||
| TheLabman: discards 1 card | ||||
| s0rrow: discards 1 card [8h] | ||||
| Dealt to s0rrow [As 3s 7c 4h] [8d] | ||||
| Hero: discards 1 card [8h] | ||||
| Dealt to Hero [As 3s 7c 4h] [8d] | ||||
| tom1206: stands pat  | ||||
| LumBita: checks  | ||||
| TheLabman: checks  | ||||
| s0rrow: checks  | ||||
| Hero: checks  | ||||
| tom1206: bets $0.20 | ||||
| LumBita: calls $0.20 | ||||
| TheLabman: calls $0.20 | ||||
| s0rrow: calls $0.20 | ||||
| Hero: calls $0.20 | ||||
| *** THIRD DRAW *** | ||||
| LumBita: discards 1 card | ||||
| TheLabman: discards 1 card | ||||
| s0rrow: stands pat on [As 3s 7c 4h 8d] | ||||
| Hero: stands pat on [As 3s 7c 4h 8d] | ||||
| tom1206: stands pat  | ||||
| LumBita: checks  | ||||
| TheLabman: checks  | ||||
| s0rrow: checks  | ||||
| Hero: checks  | ||||
| tom1206: bets $0.17 and is all-in | ||||
| LumBita: calls $0.17 | ||||
| TheLabman: folds  | ||||
| s0rrow: calls $0.17 | ||||
| Hero: calls $0.17 | ||||
| *** SHOW DOWN *** | ||||
| tom1206: shows [5c 6c 4d 2h 8c] (Lo: 8,6,5,4,2) | ||||
| LumBita: mucks hand  | ||||
| s0rrow: mucks hand  | ||||
| Hero: mucks hand  | ||||
| tom1206 collected $2.39 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $2.51 | Rake $0.12  | ||||
| Seat 1: s0rrow mucked [4h As 8d 3s 7c] | ||||
| Seat 1: Hero mucked [4h As 8d 3s 7c] | ||||
| Seat 2: Mamega folded before the Draw (didn't bet) | ||||
| Seat 3: X USN-USMC folded before the Draw (didn't bet) | ||||
| Seat 4: tom1206 (button) showed [5c 6c 4d 2h 8c] and won ($2.39) with Lo: 8,6,5,4,2 | ||||
|  |  | |||
|  | @ -4,25 +4,25 @@ Seat 1: Player1 ($27.95 in chips) | |||
| Seat 2: Player2 ($7.50 in chips)  | ||||
| Seat 3: Player3 ($12.15 in chips)  | ||||
| Seat 4: Player4 ($9.25 in chips)  | ||||
| Seat 5: Player5 ($20 in chips)  | ||||
| Seat 5: Hero ($20 in chips)  | ||||
| Player4: posts small blind $0.25 | ||||
| Player5: posts big blind $0.50 | ||||
| Hero: posts big blind $0.50 | ||||
| vega104: sits out  | ||||
| *** DEALING HANDS *** | ||||
| Dealt to Player5 [4d 7d 4c 5c Tc] | ||||
| Dealt to Hero [4d 7d 4c 5c Tc] | ||||
| Player1: folds  | ||||
| Player2: folds  | ||||
| Player3: folds  | ||||
| Player4: calls $0.25 | ||||
| Player5: checks  | ||||
| Hero: checks  | ||||
| Player4: discards 1 card | ||||
| Player5: discards 1 card [4c] | ||||
| Dealt to Player5 [4d 7d 5c Tc] [Ad] | ||||
| Hero: discards 1 card [4c] | ||||
| Dealt to Hero [4d 7d 5c Tc] [Ad] | ||||
| Player4: checks  | ||||
| Player5: checks  | ||||
| Hero: checks  | ||||
| *** SHOW DOWN *** | ||||
| Player4: shows [6d Js As Jd 6c] (two pair, Jacks and Sixes) | ||||
| Player5: mucks hand  | ||||
| Hero: mucks hand  | ||||
| Player4 collected $0.95 from pot | ||||
| *** SUMMARY *** | ||||
| Total pot $1 | Rake $0.05  | ||||
|  | @ -30,7 +30,7 @@ Seat 1: Player1 folded before the Draw (didn't bet) | |||
| Seat 2: Player2 folded before the Draw (didn't bet) | ||||
| Seat 3: Player3 (button) folded before the Draw (didn't bet) | ||||
| Seat 4: Player4 (small blind) showed [6d Js As Jd 6c] and won ($0.95) with two pair, Jacks and Sixes | ||||
| Seat 5: Player5 (big blind) mucked [4d 7d Ad 5c Tc] | ||||
| Seat 5: Hero (big blind) mucked [4d 7d Ad 5c Tc] | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue
	
	Block a user