Merge branch 'master' of git://git.assembla.com/fpdb

This commit is contained in:
Erki Ferenc 2010-12-19 22:15:01 +01:00
commit bfe3325c9a
152 changed files with 12406 additions and 8162 deletions

View File

@ -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 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) (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 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 1.3/ pytz fixup to work in an executable package

View File

@ -68,7 +68,6 @@ import matplotlib
import shutil import shutil
#from datetime import date #from datetime import date
def isSystemDLL(pathname): def isSystemDLL(pathname):
#dwmapi appears to be vista-specific file, not XP #dwmapi appears to be vista-specific file, not XP
if os.path.basename(pathname).lower() in ("dwmapi.dll"): if os.path.basename(pathname).lower() in ("dwmapi.dll"):
@ -112,7 +111,7 @@ def copy_file(source,destination):
shutil.copy( source, destination ) shutil.copy( source, destination )
fpdbver = '0.20.906' fpdbver = '0.21.rc1'
distdir = r'fpdb-' + fpdbver distdir = r'fpdb-' + fpdbver
rootdir = r'../../' #cwd is normally /packaging/windows rootdir = r'../../' #cwd is normally /packaging/windows
@ -120,6 +119,7 @@ pydir = rootdir+'pyfpdb/'
gfxdir = rootdir+'gfx/' gfxdir = rootdir+'gfx/'
sys.path.append( pydir ) # allows fpdb modules to be found by options/includes below sys.path.append( pydir ) # allows fpdb modules to be found by options/includes below
print "\n" + r"Output will be created in "+distdir print "\n" + r"Output will be created in "+distdir
print "*** Cleaning working folders ***" print "*** Cleaning working folders ***"
@ -142,15 +142,19 @@ setup(
{'script': pydir+'Configuration.py', } {'script': pydir+'Configuration.py', }
], ],
console = [ {'script': pydir+'Stove.py', }
],
options = {'py2exe': { options = {'py2exe': {
'packages' : ['encodings', 'matplotlib'], 'packages' : ['encodings', 'matplotlib'],
'includes' : ['gio', 'cairo', 'pango', 'pangocairo', 'atk', 'gobject' 'includes' : ['gio', 'cairo', 'pango', 'pangocairo', 'atk', 'gobject'
,'matplotlib.numerix.random_array' ,'matplotlib.numerix.random_array'
,'AbsoluteToFpdb', 'BetfairToFpdb' ,'AbsoluteToFpdb', 'BetfairToFpdb'
,'CarbonToFpdb', 'EverleafToFpdb' ,'CarbonToFpdb', 'EverleafToFpdb'
,'FulltiltToFpdb', 'OnGameToFpdb' ,'FulltiltToFpdb', 'iPokerToFpdb'
,'PartyPokerToFpdb', 'PokerStarsToFpdb' ,'OnGameToFpdb', 'PartyPokerToFpdb'
,'UltimateBetToFpdb', 'Win2dayToFpdb' ,'PkrToFpdb', 'PokerStarsToFpdb'
,'Win2dayToFpdb', 'WinamaxToFpdb'
], ],
'excludes' : ['_tkagg', '_agg2', 'cocoaagg', 'fltkagg'], 'excludes' : ['_tkagg', '_agg2', 'cocoaagg', 'fltkagg'],
'dll_excludes': ['libglade-2.0-0.dll', 'libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll' 'dll_excludes': ['libglade-2.0-0.dll', 'libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll'

View 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

View 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

View File

@ -211,7 +211,7 @@ class HandInternal(DerivedStats):
def isDuplicate(self, session): def isDuplicate(self, session):
"""Checks if current hand already exists in db """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( return session.query(HandInternal).filter_by(
siteHandNo=self.siteHandNo, gametypeId=self.gametypeId).count()!=0 siteHandNo=self.siteHandNo, gametypeId=self.gametypeId).count()!=0

2
pyfpdb/Anonymise.py Normal file → Executable file
View File

@ -26,6 +26,8 @@ import HandHistoryConverter
import Configuration import Configuration
import sys import sys
# command line is:
# ./Anonymise.py -f <valid path to HH file> -k <name of input filter>
(options, argv) = Options.fpdb_options() (options, argv) = Options.fpdb_options()
config = Configuration.Config() config = Configuration.Config()

View File

@ -66,7 +66,7 @@ class Carbon(HandHistoryConverter):
# Static regexes # Static regexes
re_SplitHands = re.compile(r'</game>\n+(?=<game)') re_SplitHands = re.compile(r'</game>\n+(?=<game)')
re_TailSplitHands = re.compile(r'(</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_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_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) 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)

View File

@ -303,6 +303,7 @@ def encodeRazzStartHand(cards):
encodeRazzList = { 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)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)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, '(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, '(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, '(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,

View File

@ -479,12 +479,14 @@ class Import:
self.hhArchiveBase = node.getAttribute("hhArchiveBase") self.hhArchiveBase = node.getAttribute("hhArchiveBase")
self.hhBulkPath = node.getAttribute("hhBulkPath") self.hhBulkPath = node.getAttribute("hhBulkPath")
self.saveActions = string_to_bool(node.getAttribute("saveActions"), default=False) 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.fastStoreHudCache = string_to_bool(node.getAttribute("fastStoreHudCache"), default=False)
self.saveStarsHH = string_to_bool(node.getAttribute("saveStarsHH"), default=False) self.saveStarsHH = string_to_bool(node.getAttribute("saveStarsHH"), default=False)
def __str__(self): def __str__(self):
return " interval = %s\n callFpdbHud = %s\n hhArchiveBase = %s\n saveActions = %s\n fastStoreHudCache = %s\n" \ 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: class HudUI:
def __init__(self, node): def __init__(self, node):
@ -1259,6 +1261,12 @@ class Config:
try: imp['saveActions'] = self.imp.saveActions try: imp['saveActions'] = self.imp.saveActions
except: imp['saveActions'] = False 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 try: imp['saveStarsHH'] = self.imp.saveStarsHH
except: imp['saveStarsHH'] = False except: imp['saveStarsHH'] = False

View File

@ -73,7 +73,7 @@ except ImportError:
use_numpy = False use_numpy = False
DB_VERSION = 144 DB_VERSION = 147
# Variance created as sqlite has a bunch of undefined aggregate functions. # Variance created as sqlite has a bunch of undefined aggregate functions.
@ -255,6 +255,13 @@ class Database:
self.database = db_params['db-databaseName'] self.database = db_params['db-databaseName']
self.host = db_params['db-host'] self.host = db_params['db-host']
self.db_path = '' 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 # where possible avoid creating new SQL instance by using the global one passed in
if sql is None: if sql is None:
@ -307,7 +314,7 @@ class Database:
tables=self.cursor.execute(self.sql.query['list_tables']) tables=self.cursor.execute(self.sql.query['list_tables'])
tables=self.cursor.fetchall() 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 print "table:", table
result+="###################\nTable "+table+"\n###################\n" result+="###################\nTable "+table+"\n###################\n"
rows=self.cursor.execute(self.sql.query['get'+table]) rows=self.cursor.execute(self.sql.query['get'+table])
@ -689,12 +696,16 @@ class Database:
else: else:
if row and row[0]: if row and row[0]:
self.hand_1day_ago = int(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 now = datetime.utcnow() - d
self.date_ndays_ago = "d%02d%02d%02d" % (now.year - 2000, now.month, now.day) 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 now = datetime.utcnow() - d
self.h_date_ndays_ago = "d%02d%02d%02d" % (now.year - 2000, now.month, now.day) 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': elif h_hud_style == 'S':
h_stylekey = 'zzzzzzz' # all stylekey values should be lower than this h_stylekey = 'zzzzzzz' # all stylekey values should be lower than this
else: else:
h_stylekey = '000000' h_stylekey = '00000000'
log.info('h_hud_style: %s' % h_hud_style) log.info('h_hud_style: %s' % h_hud_style)
#elif h_hud_style == 'H': #elif h_hud_style == 'H':
@ -904,6 +915,56 @@ class Database:
result = c.fetchall() result = c.fetchall()
return result 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): def get_last_insert_id(self, cursor=None):
ret = None ret = None
try: try:
@ -1168,6 +1229,7 @@ class Database:
c.execute(self.sql.query['createHandsPlayersTable']) c.execute(self.sql.query['createHandsPlayersTable'])
c.execute(self.sql.query['createHandsActionsTable']) c.execute(self.sql.query['createHandsActionsTable'])
c.execute(self.sql.query['createHudCacheTable']) c.execute(self.sql.query['createHudCacheTable'])
c.execute(self.sql.query['createSessionsCacheTable'])
c.execute(self.sql.query['createBackingsTable']) c.execute(self.sql.query['createBackingsTable'])
c.execute(self.sql.query['createRawHands']) c.execute(self.sql.query['createRawHands'])
c.execute(self.sql.query['createRawTourneys']) c.execute(self.sql.query['createRawTourneys'])
@ -1534,6 +1596,11 @@ class Database:
print _("Error rebuilding hudcache:"), str(sys.exc_value) print _("Error rebuilding hudcache:"), str(sys.exc_value)
print err print err
#end def rebuild_hudcache #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): def get_hero_hudcache_start(self):
"""fetches earliest stylekey from hudcache for one of hero's player ids""" """fetches earliest stylekey from hudcache for one of hero's player ids"""
@ -1625,7 +1692,13 @@ class Database:
# NEWIMPORT CODE # 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: #stores into table hands:
q = self.sql.query['store_hand'] q = self.sql.query['store_hand']
@ -1635,7 +1708,7 @@ class Database:
c.execute(q, ( c.execute(q, (
p['tableName'], p['tableName'],
p['gameTypeId'], p['gametypeId'],
p['siteHandNo'], p['siteHandNo'],
p['tourneyId'], p['tourneyId'],
p['startTime'], p['startTime'],
@ -1793,10 +1866,12 @@ class Database:
def storeHandsActions(self, hid, pids, hpid, adata, printdata = False): def storeHandsActions(self, hid, pids, hpid, adata, printdata = False):
#print "DEBUG: %s %s %s" %(hid, pids, adata) #print "DEBUG: %s %s %s" %(hid, pids, adata)
if printdata:
import pprint # This can be used to generate test data. Currently unused
pp = pprint.PrettyPrinter(indent=4) #if printdata:
pp.pprint(adata) # import pprint
# pp = pprint.PrettyPrinter(indent=4)
# pp.pprint(adata)
inserts = [] inserts = []
for a in adata: for a in adata:
@ -1823,8 +1898,15 @@ class Database:
def storeHudCache(self, gid, pids, starttime, pdata): def storeHudCache(self, gid, pids, starttime, pdata):
"""Update cached statistics. If update fails because no record exists, do an insert.""" """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: 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) #styleKey = "d%02d%02d%02d" % (hand_start_time.year-2000, hand_start_time.month, hand_start_time.day)
else: else:
# hard-code styleKey as 'A000000' (all-time cache, no key) for now # hard-code styleKey as 'A000000' (all-time cache, no key) for now
@ -1950,6 +2032,127 @@ class Database:
else: else:
#print "DEBUG: Successfully updated HudCacho using UPDATE" #print "DEBUG: Successfully updated HudCacho using UPDATE"
pass 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): def isDuplicate(self, gametypeID, siteHandNo):
dup = False dup = False
@ -1978,54 +2181,6 @@ class Database:
#FIXME: recognise currency #FIXME: recognise currency
return tmp[0] 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): def insertGameTypes(self, row):
c = self.get_cursor() c = self.get_cursor()

View File

@ -135,7 +135,7 @@ class DerivedStats():
#print "DEBUG: vpip: %s" %(self.hands['playersVpi']) #print "DEBUG: vpip: %s" %(self.hands['playersVpi'])
self.playersAtStreetX(hand) # Gives playersAtStreet1..4 and Showdown 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']) #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): def assembleHandsPlayers(self, hand):
#street0VPI/vpip already called in Hand #street0VPI/vpip already called in Hand

View File

@ -106,7 +106,10 @@ or None if we fail to get the info """
m = self.re_GameInfo.search(handText) m = self.re_GameInfo.search(handText)
if not m: 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() mg = m.groupdict()

View File

@ -33,6 +33,7 @@ class FullTiltPokerSummary(TourneySummary):
games = { # base, category games = { # base, category
"Hold'em" : ('hold','holdem'), "Hold'em" : ('hold','holdem'),
'Omaha' : ('hold','omahahi'), 'Omaha' : ('hold','omahahi'),
'Omahai Hi' : ('hold','omahahi'),
'Omaha Hi/Lo' : ('hold','omahahilo'), 'Omaha Hi/Lo' : ('hold','omahahilo'),
'Razz' : ('stud','razz'), 'Razz' : ('stud','razz'),
'RAZZ' : ('stud','razz'), 'RAZZ' : ('stud','razz'),
@ -55,7 +56,7 @@ class FullTiltPokerSummary(TourneySummary):
re_TourneyInfo = re.compile(u""" re_TourneyInfo = re.compile(u"""
\s.* \s.*
(?P<TYPE>Tournament|Sit\s\&\sGo)\s\((?P<TOURNO>[0-9]+)\)(\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+ (?P<LIMIT>No\sLimit|Limit|LIMIT|Pot\sLimit)\s+
(Buy-In:\s\$(?P<BUYIN>[.\d]+)(\s\+\s\$(?P<FEE>[.\d]+))?\s+)? (Buy-In:\s\$(?P<BUYIN>[.\d]+)(\s\+\s\$(?P<FEE>[.\d]+))?\s+)?
(Buy-In\sChips:\s(?P<CHIPS>\d+)\s+)? (Buy-In\sChips:\s(?P<CHIPS>\d+)\s+)?

View File

@ -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<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)? [%(LS)s]?(?P<CAP>[.0-9]+\sCap\s)?
(?P<GAMETYPE>[-\da-zA-Z\/\'\s]+)\s-\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 (?P<PARTIAL>\(partial\))?\n
(?:.*?\n(?P<CANCELLED>Hand\s\#(?P=HID)\shas\sbeen\scanceled))? (?:.*?\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>[^$]+)? re_TourneyExtraInfo = re.compile('''(((?P<TOURNEY_NAME>[^$]+)?
(?P<CURRENCY>[%(LS)s])?(?P<BUYIN>[.0-9]+)?\s*\+\s*[%(LS)s]?(?P<FEE>[.0-9]+)? (?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)))? (\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_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) 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. # 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.handid = m.group('HID')
hand.tablename = m.group('TABLE') hand.tablename = m.group('TABLE')
timezone = "ET" if m.group('DATETIME'):
if m.group('TZ1') == "CET" or m.group('TZ2') == "CET": # This section of code should match either a single date (which is ET) or
timezone = "CET" # the last date in the header, which is also recorded in ET.
try: timezone = "ET"
stringformat = "%H:%M:%S " + m.group('TZ1') + " - %Y/%m/%d" m1 = self.re_DateTime.finditer(m.group('DATETIME'))
hand.startTime = datetime.datetime.strptime(m.group('DATETIME'), stringformat) datetimestr = "2000/01/01 00:00:00"
except: for a in m1:
stringformat = "%H:%M " + m.group('TZ2') + " - %a, %B %d, %Y" if a.group('TZ2') == None:
hand.startTime = datetime.datetime.strptime(m.group('DATETIME'), stringformat) 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"): if m.group("CANCELLED") or m.group("PARTIAL"):
raise FpdbParseError(hid=m.group('HID')) raise FpdbParseError(hid=m.group('HID'))

View File

@ -204,15 +204,18 @@ class GuiAutoImport (threading.Thread):
# That is not correct. It should open another dir for importing while piping the # 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 # results to the same pipe. This means that self.path should be a a list of dirs
# to watch. # 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? # - Does the lock acquisition need to be more sophisticated for multiple dirs?
# (see comment above about what to do if pipe already open) # (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 # - Ideally we want to release the lock if the auto-import is killed by some
# kind of exception - is this possible? # 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.addText(_("\nGlobal lock taken ... Auto Import Started.\n"))
self.doAutoImportBool = True 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 self.pipe_to_hud is None:
if Configuration.FROZEN: # if py2exe, run hud_main.exe if Configuration.FROZEN: # if py2exe, run hud_main.exe
path = Configuration.EXEC_PATH path = Configuration.EXEC_PATH
@ -224,15 +227,14 @@ class GuiAutoImport (threading.Thread):
command = 'pythonw "'+path+'\\HUD_main.pyw" ' + self.settings['cl_options'] command = 'pythonw "'+path+'\\HUD_main.pyw" ' + self.settings['cl_options']
else: else:
command = 'python "'+path+'\\HUD_main.pyw" ' + self.settings['cl_options'] 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 bs = 0
else: else:
command = os.path.join(sys.path[0], 'HUD_main.pyw') command = os.path.join(sys.path[0], 'HUD_main.pyw')
command = [command, ] + string.split(self.settings['cl_options']) command = [command, ] + string.split(self.settings['cl_options'])
bs = 1 bs = 1
try:
print _("opening pipe to HUD") print _("opening pipe to HUD")
try:
if Configuration.FROZEN or (os.name == "nt" and win32console.GetConsoleWindow()) == 0: if Configuration.FROZEN or (os.name == "nt" and win32console.GetConsoleWindow()) == 0:
self.pipe_to_hud = subprocess.Popen(command, bufsize=bs, self.pipe_to_hud = subprocess.Popen(command, bufsize=bs,
stdin=subprocess.PIPE, stdin=subprocess.PIPE,
@ -242,8 +244,6 @@ class GuiAutoImport (threading.Thread):
) )
else: else:
self.pipe_to_hud = subprocess.Popen(command, bufsize=bs, stdin=subprocess.PIPE, universal_newlines=True) 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: except:
err = traceback.extract_tb(sys.exc_info()[2])[-1] 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])) #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: if self.pipe_to_hud.poll() is not None:
self.addText(_("\n * Stop Auto Import: HUD already terminated")) self.addText(_("\n * Stop Auto Import: HUD already terminated"))
else: else:
self.pipe_to_hud.terminate()
#print >>self.pipe_to_hud.stdin, "\n" #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.pipe_to_hud = None
self.startButton.set_label(_(u' Start _Auto Import ')) self.startButton.set_label(_(u' Start _Auto Import '))

View File

@ -224,9 +224,6 @@ class GuiGraphViewer (threading.Thread):
self.graphBox.add(self.canvas) self.graphBox.add(self.canvas)
self.canvas.show() self.canvas.show()
self.canvas.draw() self.canvas.draw()
#TODO: Do something useful like alert user
#print "No hands returned by graph query"
else: else:
self.ax.set_title(_("Profit graph for ring games"+names),fontsize=12) self.ax.set_title(_("Profit graph for ring games"+names),fontsize=12)
@ -340,7 +337,10 @@ class GuiGraphViewer (threading.Thread):
if len(winnings) == 0: if len(winnings) == 0:
return (None, None, None) 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) 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) red = map(lambda x: float(x[1]) if x[2] == False else 0.0, winnings)
greenline = cumsum(green) greenline = cumsum(green)

View File

@ -397,7 +397,7 @@ class GuiPositionalStats (threading.Thread):
query = query.replace("<selectgt.bigBlind>", bigblindselect) query = query.replace("<selectgt.bigBlind>", bigblindselect)
query = query.replace("<groupbygt.bigBlind>", "") query = query.replace("<groupbygt.bigBlind>", "")
query = query.replace("<hcgametypeId>", "-1") query = query.replace("<hcgametypeId>", "-1")
query = query.replace("<hgameTypeId>", "-1") query = query.replace("<hgametypeId>", "-1")
else: else:
if self.db.backend == self.MYSQL_INNODB: if self.db.backend == self.MYSQL_INNODB:
bigblindselect = """concat('$', trim(leading ' ' from bigblindselect = """concat('$', trim(leading ' ' from
@ -416,7 +416,7 @@ class GuiPositionalStats (threading.Thread):
query = query.replace("<selectgt.bigBlind>", bigblindselect) query = query.replace("<selectgt.bigBlind>", bigblindselect)
query = query.replace("<groupbygt.bigBlind>", ",gt.bigBlind") query = query.replace("<groupbygt.bigBlind>", ",gt.bigBlind")
query = query.replace("<hcgametypeId>", "hc.gametypeId") query = query.replace("<hcgametypeId>", "hc.gametypeId")
query = query.replace("<hgameTypeId>", "h.gameTypeId") query = query.replace("<hgametypeId>", "h.gametypeId")
# Filter on dates # Filter on dates
query = query.replace("<datestest>", " between '" + dates[0] + "' and '" + dates[1] + "'") query = query.replace("<datestest>", " between '" + dates[0] + "' and '" + dates[1] + "'")

338
pyfpdb/GuiReplayer.py Normal file
View 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())

View File

@ -75,10 +75,6 @@ onlinehelp = {'Game':_('Type of Game'),
class DemoTips(TreeViewTooltips): class DemoTips(TreeViewTooltips):
def __init__(self, customer_column): 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 # call base class init
TreeViewTooltips.__init__(self) TreeViewTooltips.__init__(self)
@ -91,11 +87,6 @@ class DemoTips(TreeViewTooltips):
return (display) return (display)
def location(self, x, y, w, h): 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 # this will place the tooltip above and to the right
return x + 30, y - (h + 10) return x + 30, y - (h + 10)
@ -661,18 +652,18 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats):
query = query.replace("<gtbigBlind_test>", bbtest) query = query.replace("<gtbigBlind_test>", bbtest)
if holecards: # re-use level variables for hole card query if holecards: # re-use level variables for hole card query
query = query.replace("<hgameTypeId>", "hp.startcards") query = query.replace("<hgametypeId>", "hp.startcards")
query = query.replace("<orderbyhgameTypeId>" query = query.replace("<orderbyhgametypeId>"
, ",case when floor((hp.startcards-1)/13) >= mod((hp.startcards-1),13) then hp.startcards + 0.1 " , ",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 " + " else 13*mod((hp.startcards-1),13) + floor((hp.startcards-1)/13) + 1 "
+ " end desc ") + " end desc ")
else: else:
query = query.replace("<orderbyhgameTypeId>", "") query = query.replace("<orderbyhgametypeId>", "")
groupLevels = "show" not in str(limits) groupLevels = "show" not in str(limits)
if groupLevels: 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: else:
query = query.replace("<hgameTypeId>", "h.gameTypeId") query = query.replace("<hgametypeId>", "h.gametypeId")
# process self.detailFilters (a list of tuples) # process self.detailFilters (a list of tuples)
flagtest = '' flagtest = ''

View File

@ -37,8 +37,6 @@ try:
from matplotlib.finance import candlestick2 from matplotlib.finance import candlestick2
from numpy import diff, nonzero, sum, cumsum, max, min, append from numpy import diff, nonzero, sum, cumsum, max, min, append
# from matplotlib.dates import DateFormatter, WeekdayLocator, HourLocator, \
# DayLocator, MONDAY, timezone
except ImportError, inst: except ImportError, inst:
print _("""Failed to load numpy and/or matplotlib in Session Viewer""") 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 # make sure Hand column is not displayed
#[x for x in self.columns if x[0] == 'hand'][0][1] = False #[x for x in self.columns if x[0] == 'hand'][0][1] = False
if DEBUG == False: if DEBUG == False:
warning_string = """ warning_string = _("Session Viewer is proof of concept code only, and contains many bugs.\n")
Session Viewer is proof of concept code only, and contains many bugs. 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")
Feel free to use the viewer, but there is no guarantee that the data is accurate. warning_string += _("Thankyou")
If you are interested in developing the code further please contact us via the usual channels.
Thankyou
"""
self.warning_box(warning_string) self.warning_box(warning_string)
def warning_box(self, str, diatitle=_("FPDB WARNING")): def warning_box(self, str, diatitle=_("FPDB WARNING")):
@ -265,8 +258,9 @@ Thankyou
#end def fillStatsFrame(self, vbox): #end def fillStatsFrame(self, vbox):
def generateDatasets(self, playerids, sitenos, limits, seats): def generateDatasets(self, playerids, sitenos, limits, seats):
THRESHOLD = 1800 # Minimum number of seconds between consecutive hands before being considered a new session print "DEBUG: Starting generateDatasets"
PADDING = 5 # Additional time in minutes to add to a session, session startup, shutdown etc (FiXME: user configurable) 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 # Get a list of all handids and their timestampts
#FIXME: Query still need to filter on blind levels #FIXME: Query still need to filter on blind levels
@ -284,10 +278,15 @@ Thankyou
self.db.cursor.execute(q) self.db.cursor.execute(q)
hands = self.db.cursor.fetchall() 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 # Take that list and create an array of the time between hands
times = map(lambda x:long(x[0]), hands) times = map(lambda x:long(x[0]), hands)
handids = map(lambda x:int(x[1]), hands) handids = map(lambda x:int(x[1]), hands)
winnings = map(lambda x:float(x[4]), 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)) #print "DEBUG: len(times) %s" %(len(times))
diffs = diff(times) # This array is the difference in starttime between consecutive hands 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 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 cum_sum = cum_sum/100
sid = 1 sid = 1
# Take all results and format them into a list for feeding into gui model. # 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])): 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: if hds > 0:
stime = strftime("%d/%m/%Y %H:%M", localtime(times[first_idx])) # Formatted start time 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 etime = strftime("%d/%m/%Y %H:%M", localtime(times[index[0][i]])) # Formatted end time
@ -328,12 +328,14 @@ Thankyou
minutesplayed = 1 minutesplayed = 1
minutesplayed = minutesplayed + PADDING minutesplayed = minutesplayed + PADDING
hph = hds*60/minutesplayed # Hands per hour hph = hds*60/minutesplayed # Hands per hour
won = sum(winnings[first_idx:index[0][i]])/100.0 end_idx = first_idx+hds+1
hwm = max(cum_sum[first_idx:index[0][i]]) won = sum(winnings[first_idx:end_idx])/100.0
lwm = min(cum_sum[first_idx:index[0][i]]) #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 open = (sum(winnings[:first_idx]))/100
close = (sum(winnings[:index[0][i]]))/100 close = (sum(winnings[:end_idx]))/100
#print "DEBUG: range: (%s, %s) - (min, max): (%s, %s) - (open,close): (%s, %s)" %(first_idx, index[0][i], lwm, hwm, open, close) #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]) results.append([sid, hds, stime, etime, hph, won])
opens.append(open) opens.append(open)
@ -374,17 +376,17 @@ Thankyou
def generateGraph(self, opens, closes, highs, lows): def generateGraph(self, opens, closes, highs, lows):
self.clearGraphData() self.clearGraphData()
# print "DEBUG:" #print "DEBUG:"
# print "highs = %s" % highs #print "\thighs = %s" % highs
# print "lows = %s" % lows #print "\tlows = %s" % lows
# print "opens = %s" % opens #print "\topens = %s" % opens
# print "closes = %s" % closes #print "\tcloses = %s" % closes
# print "len(highs): %s == len(lows): %s" %(len(highs), len(lows)) #print "\tlen(highs): %s == len(lows): %s" %(len(highs), len(lows))
# print "len(opens): %s == len(closes): %s" %(len(opens), len(closes)) #print "\tlen(opens): %s == len(closes): %s" %(len(opens), len(closes))
#
# for i in range(len(highs)): #for i in range(len(highs)):
# print "DEBUG: (%s, %s, %s, %s)" %(lows[i], opens[i], closes[i], highs[i]) # 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: diffs h/l: %s o/c: %s" %(lows[i] - highs[i], opens[i] - closes[i])
self.ax = self.fig.add_subplot(111) self.ax = self.fig.add_subplot(111)

222
pyfpdb/GuiStove.py Normal file
View 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

View File

@ -382,7 +382,7 @@ class GuiTourneyPlayerStats (GuiPlayerStats.GuiPlayerStats):
#query = query.replace("<gtbigBlind_test>", bbtest) #query = query.replace("<gtbigBlind_test>", bbtest)
#query = query.replace("<orderbyhgameTypeId>", "") #query = query.replace("<orderbyhgametypeId>", "")
# process self.detailFilters (a list of tuples) # process self.detailFilters (a list of tuples)
flagtest = '' flagtest = ''

View File

@ -2,7 +2,7 @@
<FreePokerToolsConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FreePokerToolsConfig.xsd"> <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 <!-- These values determine what stats are displayed in the HUD
@ -104,9 +104,9 @@ Left-Drag to Move"
<site enabled="True" <site enabled="True"
site_name="PokerStars" site_name="PokerStars"
table_finder="PokerStars.exe" table_finder="PokerStars.exe"
screen_name="YOUR SCREEN NAME HERE" screen_name="Hero"
site_path="C:/Program Files/PokerStars/" 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" decoder="pokerstars_decode_table"
converter="PokerStarsToFpdb" converter="PokerStarsToFpdb"
bgcolor="#000000" bgcolor="#000000"
@ -165,9 +165,9 @@ Left-Drag to Move"
<site enabled="True" <site enabled="True"
site_name="Full Tilt Poker" site_name="Full Tilt Poker"
table_finder="FullTiltPoker" table_finder="FullTiltPoker"
screen_name="YOUR SCREEN NAME HERE" screen_name="Hero"
site_path="C:/Program Files/Full Tilt Poker/" 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" decoder="fulltilt_decode_table"
converter="FulltiltToFpdb" converter="FulltiltToFpdb"
bgcolor="#000000" bgcolor="#000000"
@ -214,7 +214,7 @@ Left-Drag to Move"
<site enabled="False" <site enabled="False"
site_name="Everleaf" site_name="Everleaf"
table_finder="Everleaf.exe" table_finder="Everleaf.exe"
screen_name="YOUR SCREEN NAME HERE" screen_name="Hero"
site_path="" site_path=""
HH_path="" HH_path=""
decoder="everleaf_decode_table" decoder="everleaf_decode_table"
@ -258,7 +258,7 @@ Left-Drag to Move"
<site enabled="False" <site enabled="False"
site_name="Win2day" site_name="Win2day"
table_finder="Win2day.exe" table_finder="Win2day.exe"
screen_name="YOUR SCREEN NAME HERE" screen_name="Hero"
site_path="" site_path=""
HH_path="" HH_path=""
decoder="everleaf_decode_table" decoder="everleaf_decode_table"
@ -303,7 +303,7 @@ Left-Drag to Move"
<site enabled="False" <site enabled="False"
site_name="Absolute" site_name="Absolute"
table_finder="AbsolutePoker.exe" table_finder="AbsolutePoker.exe"
screen_name="YOUR SCREEN NAME HERE" screen_name="Hero"
site_path="" site_path=""
HH_path="" HH_path=""
decoder="everleaf_decode_table" decoder="everleaf_decode_table"
@ -348,9 +348,9 @@ Left-Drag to Move"
<site enabled="False" <site enabled="False"
site_name="PartyPoker" site_name="PartyPoker"
table_finder="PartyGaming.exe" table_finder="PartyGaming.exe"
screen_name="YOUR SCREEN NAME HERE" screen_name="Hero"
site_path="C:/Program Files/PartyGaming/PartyPoker" 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" decoder="everleaf_decode_table"
converter="PartyPokerToFpdb" converter="PartyPokerToFpdb"
supported_games="holdem"> supported_games="holdem">
@ -393,9 +393,9 @@ Left-Drag to Move"
<site enabled="False" <site enabled="False"
site_name="Betfair" site_name="Betfair"
table_finder="Betfair Poker.exe" table_finder="Betfair Poker.exe"
screen_name="YOUR SCREEN NAME HERE" screen_name="Hero"
site_path="C:/Program Files/Betfair/Betfair Poker/" 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" decoder="everleaf_decode_table"
converter="BetfairToFpdb" converter="BetfairToFpdb"
supported_games="holdem"> supported_games="holdem">

View File

@ -12,7 +12,7 @@
config_difficulty="expert" 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> <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" /> <col col_name="game" disp_all="True" disp_posn="True" col_title="Game" xalignment="0.0" field_format="%s" field_type="str" />

View File

@ -23,42 +23,33 @@
Main for FreePokerTools HUD. 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 # Standard Library modules
import sys import sys
import os import os
import Options
import traceback import traceback
(options, argv) = Options.fpdb_options()
import thread import thread
import time import time
import string import string
import re
# pyGTK modules # pyGTK modules
import pygtk
import gtk import gtk
import gobject import gobject
# FreePokerTools modules # FreePokerTools modules
import Configuration import Configuration
import Database 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 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 import locale
lang = locale.getdefaultlocale()[0][0:2] lang = locale.getdefaultlocale()[0][0:2]
@ -79,28 +70,23 @@ else:
c = Configuration.Config(file=options.config, dbname=options.dbname) 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') log = Configuration.get_logger("logging.conf", "hud", log_dir=c.dir_log, log_file='HUD-log.txt')
class HUD_main(object): class HUD_main(object):
"""A main() object to own both the read_stdin thread and the gui.""" """A main() object to own both the read_stdin thread and the gui."""
# This class mainly provides state for controlling the multiple HUDs. # This class mainly provides state for controlling the multiple HUDs.
def __init__(self, db_name='fpdb'): def __init__(self, db_name='fpdb'):
print _("\nHUD_main: starting ...")
self.db_name = db_name self.db_name = db_name
self.config = c 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: try:
if not options.errorsToConsole: if not options.errorsToConsole:
fileName = os.path.join(self.config.dir_log, 'HUD-errors.txt') fileName = os.path.join(self.config.dir_log, 'HUD-errors.txt')
print _("Note: error output is being diverted to:\n") + fileName \ log.info("Note: error output is being diverted to:" + fileName)
+ _("\nAny major error will be reported there _only_.\n") 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) errorFile = open(fileName, 'w', 0)
sys.stderr = errorFile sys.stderr = errorFile
sys.stderr.write(_("HUD_main: starting ...\n")) sys.stderr.write("HUD_main: starting ...\n")
self.hud_dict = {} self.hud_dict = {}
self.hud_params = self.config.get_hud_ui_parameters() self.hud_params = self.config.get_hud_ui_parameters()
@ -111,6 +97,17 @@ class HUD_main(object):
# a main window # a main window
self.main_window = gtk.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_moved", self.client_moved)
self.main_window.connect("client_resized", self.client_resized) self.main_window.connect("client_resized", self.client_resized)
self.main_window.connect("client_destroyed", self.client_destroyed) 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("table_changed", self.table_changed)
self.main_window.connect("destroy", self.destroy) self.main_window.connect("destroy", self.destroy)
self.vb = gtk.VBox() 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.vb.add(self.label)
self.main_window.add(self.vb) 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') cards = os.path.join(os.getcwd(), '..','gfx','fpdb-cards.png')
if os.path.exists(cards): if os.path.exists(cards):
self.main_window.set_icon_from_file(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') self.main_window.set_icon_from_file('/usr/share/pixmaps/fpdb-cards.png')
else: else:
self.main_window.set_icon_stock(gtk.STOCK_HOME) self.main_window.set_icon_stock(gtk.STOCK_HOME)
self.main_window.show_all() if not options.hidden:
gobject.timeout_add(100, self.check_tables) self.main_window.show_all()
# gobject.timeout_add(100, self.check_tables)
except: except:
log.error("*** Exception in HUD_main.init() *** ") log.exception("Error initializing main_window")
for e in traceback.format_tb(sys.exc_info()[2]): gtk.main_quit() # we're hosed, just terminate
log.error(e)
def client_moved(self, widget, hud): def client_moved(self, widget, hud):
hud.up_update_table_position() hud.up_update_table_position()
def client_resized(self, widget, hud): 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 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): def game_changed(self, widget, hud):
print _("hud_main: Game changed.") print "hud_main: Game changed."
def table_changed(self, widget, hud): def table_changed(self, widget, hud):
print _("hud_main: Table changed.") self.kill_hud(None, hud.table.key)
self.kill_hud(None, hud.table.name)
def destroy(self, *args): # call back for terminating the main eventloop def destroy(self, *args): # call back for terminating the main eventloop
log.info(_("Terminating normally.")) log.info("Terminating normally.")
gtk.main_quit() gtk.main_quit()
def kill_hud(self, event, table): def kill_hud(self, event, table):
# called by an event in the HUD, to kill this specific HUD gobject.idle_add(idle_kill, self, table)
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)
def check_tables(self): def check_tables(self):
for hud in self.hud_dict.keys(): for hud in self.hud_dict.keys():
self.hud_dict[hud].table.check_table(self.hud_dict[hud]) self.hud_dict[hud].table.check_table(self.hud_dict[hud])
return True 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""" """type is "ring" or "tour" used to set hud_params"""
def idle_func(): 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
gtk.gdk.threads_enter() self.hud_dict[temp_key].stat_dict = stat_dict
try: self.hud_dict[temp_key].cards = cards
table.gdkhandle = gtk.gdk.window_foreign_new(table.number) table.hud = self.hud_dict[temp_key]
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
# set agg_bb_mult so that aggregate_tour and aggregate_ring can be ignored, # 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: # agg_bb_mult == 1 means no aggregation after these if statements:
if type == "tour" and self.hud_params['aggregate_tour'] == False: 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: 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: 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: 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?) # sqlcoder: I forget why these are set to true (aren't they ignored from now on?)
# but I think it's needed: # but I think it's needed:
self.hud_params['aggregate_ring'] = True self.hud_params['aggregate_ring'] = True
@ -222,28 +188,12 @@ class HUD_main(object):
self.hud_params['aggregate_tour'] = True self.hud_params['aggregate_tour'] = True
self.hud_params['h_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] [aw.update_data(new_hand_id, self.db_connection) for aw in self.hud_dict[temp_key].aux_windows]
gobject.idle_add(idle_func) 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): def update_HUD(self, new_hand_id, table_name, config):
"""Update a HUD gui from inside the non-gui read_stdin thread.""" """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 gobject.idle_add(idle_update, self, new_hand_id, table_name, config)
# 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)
def read_stdin(self): # This is the thread function def read_stdin(self): # This is the thread function
"""Do all the non-gui heavy lifting for the HUD program.""" """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 while 1: # wait for a new hand number on stdin
new_hand_id = sys.stdin.readline() new_hand_id = sys.stdin.readline()
t0 = time.time()
t1 = t2 = t3 = t4 = t5 = t6 = t0
new_hand_id = string.rstrip(new_hand_id) 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 if new_hand_id == "": # blank line means quit
self.destroy() self.destroy()
break # this thread is not always killed immediately with gtk.main_quit() 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: if not found:
for site in self.config.get_supported_sites(): for site in self.config.get_supported_sites():
result = self.db_connection.get_site_id(site) 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 # get basic info about the new hand from the db
# if there is a db error, complain, skip hand, and proceed # 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: try:
(table_name, max, poker_game, type, site_id, site_name, num_seats, tour_number, tab_number) = \ (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) self.db_connection.get_table_info(new_hand_id)
except Exception: except Exception:
log.error(_("db error: skipping %s" % new_hand_id)) log.exception("db error: skipping %s" % new_hand_id)
continue continue
t1 = time.time()
if type == "tour": # hand is from a tournament if type == "tour": # hand is from a tournament
temp_key = tour_number temp_key = "%s Table %s" % (tour_number, tab_number)
else: else:
temp_key = table_name temp_key = table_name
@ -301,26 +253,19 @@ class HUD_main(object):
# get stats using hud's specific params and get cards # 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.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']) , 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, 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) self.hero_ids[site_id], num_seats)
t3 = time.time()
try: try:
self.hud_dict[temp_key].stat_dict = stat_dict self.hud_dict[temp_key].stat_dict = stat_dict
except KeyError: # HUD instance has been killed off, key is stale except KeyError: # HUD instance has been killed off, key is stale
log.error(_('hud_dict[%s] was not found\n') % temp_key) log.error('hud_dict[%s] was not found\n' % temp_key)
log.error(_('will not send hand\n')) log.error('will not send hand\n')
# Unlocks table, copied from end of function # Unlocks table, copied from end of function
self.db_connection.connection.rollback() self.db_connection.connection.rollback()
return return
cards = self.db_connection.get_cards(new_hand_id)
t4 = time.time() self.hud_dict[temp_key].cards = self.get_cards(new_hand_id)
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
[aw.update_data(new_hand_id, self.db_connection) for aw in self.hud_dict[temp_key].aux_windows] [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) 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'] ) 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, stat_dict = self.db_connection.get_stats_from_hand(new_hand_id, type, self.hud_params,
self.hero_ids[site_id], num_seats) self.hero_ids[site_id], num_seats)
cards = self.db_connection.get_cards(new_hand_id) cards = self.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']
table_kwargs = dict(table_name=table_name, tournament=tour_number, table_number=tab_number) table_kwargs = dict(table_name=table_name, tournament=tour_number, table_number=tab_number)
tablewindow = Tables.Table(self.config, site_name, **table_kwargs) tablewindow = Tables.Table(self.config, site_name, **table_kwargs)
if tablewindow is None: if tablewindow is None:
# If no client window is found on the screen, complain and continue # If no client window is found on the screen, complain and continue
if type == "tour": if type == "tour":
table_name = "%s %s" % (tour_number, tab_number) 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: else:
tablewindow.key = temp_key
tablewindow.max = max tablewindow.max = max
tablewindow.site = site_name tablewindow.site = site_name
# Test that the table window still exists # 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) self.create_HUD(new_hand_id, tablewindow, temp_key, max, poker_game, type, stat_dict, cards)
else: else:
log.error(_('Table "%s" no longer exists\n') % table_name) 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() self.db_connection.connection.rollback()
# if type == "tour": if type == "tour":
# tablewindow.check_table_no(None) try:
# # Ray!! tablewindow::check_table_no expects a HUD as an argument! 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__": if __name__== "__main__":
# start the HUD_main object # start the HUD_main object

View File

@ -261,11 +261,11 @@ db: a connected Database object"""
if not db.isDuplicate(self.dbid_gt, hh['siteHandNo']): if not db.isDuplicate(self.dbid_gt, hh['siteHandNo']):
# Hands - Summary information of hand indexed by handId - gameinfo # Hands - Summary information of hand indexed by handId - gameinfo
hh['gameTypeId'] = self.dbid_gt hh['gametypeId'] = self.dbid_gt
# seats TINYINT NOT NULL, # seats TINYINT NOT NULL,
hh['seats'] = len(self.dbid_pids) 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.dbid_hpid = db.storeHandsPlayers(self.dbid_hands, self.dbid_pids,
self.stats.getHandsPlayers(), printdata = printtest) self.stats.getHandsPlayers(), printdata = printtest)
if self.saveActions: if self.saveActions:
@ -278,76 +278,14 @@ db: a connected Database object"""
def updateHudCache(self, db): def updateHudCache(self, db):
db.storeHudCache(self.dbid_gt, self.dbid_pids, self.startTime, self.stats.getHandsPlayers()) 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 """ """ Function to create Hand object from database """
c = cnxn.cursor() c = db.get_cursor()
q = """SELECT
# 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
hp.seatno, hp.seatno,
round(hp.winnings / 100.0,2) as winnings, round(hp.winnings / 100.0,2) as winnings,
p.name, p.name,
@ -355,69 +293,101 @@ db: a connected Database object"""
hp.card1,hp.card2, hp.card1,hp.card2,
hp.position hp.position
FROM FROM
handsplayers as hp, HandsPlayers as hp,
players as p Players as p
WHERE WHERE
hp.handid = %(handid)s hp.handId = %s
and p.id = hp.playerid 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(): for (seat, winnings, name, chips, card1,card2, position) in c.fetchall():
h.addPlayer(seat,name,chips) print "DEBUG: seat: '%s'\tname: '%s'\tchips: '%s'" % (seat, name, chips)
if card1 and card2: self.addPlayer(seat,name,str(chips))
h.addHoleCards(map(Card.valueSuitFromCard, (card1,card2)), name, dealt=True) #if card1 and card2:
if winnings > 0: # self.addHoleCards(map(Card.valueSuitFromCard, (card1,card2)), name, dealt=True)
h.addCollectPot(name, winnings) #if winnings > 0:
if position == 'B': # self.addCollectPot(name, winnings)
h.buttonpos = seat #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 # actions
c.execute("""SELECT #c.execute("""SELECT
(ha.street,ha.actionno) as actnum, # (ha.street,ha.actionno) as actnum,
p.name, # p.name,
ha.street, # ha.street,
ha.action, # ha.action,
ha.allin, # ha.allin,
round(ha.amount / 100.0,2) # round(ha.amount / 100.0,2)
FROM # FROM
handsplayers as hp, # handsplayers as hp,
handsactions as ha, # handsactions as ha,
players as p # players as p
WHERE # WHERE
hp.handid = %(handid)s # hp.handid = %(handid)s
and ha.handsplayerid = hp.id # and ha.handsplayerid = hp.id
and p.id = hp.playerid # and p.id = hp.playerid
ORDER BY # ORDER BY
ha.street,ha.actionno # ha.street,ha.actionno
""", {'handid':handid}) # """, {'handid':handid})
res = c.fetchall() #res = c.fetchall()
for (actnum,player, streetnum, act, allin, amount) in res: #for (actnum,player, streetnum, act, allin, amount) in res:
act=act.strip() # act=act.strip()
street = h.allStreets[streetnum+1] # street = h.allStreets[streetnum+1]
if act==u'blind': # if act==u'blind':
h.addBlind(player, 'big blind', amount) # h.addBlind(player, 'big blind', amount)
# TODO: The type of blind is not recorded in the DB. # # TODO: The type of blind is not recorded in the DB.
# TODO: preflop street name anomalies in Hand # # TODO: preflop street name anomalies in Hand
elif act==u'fold': # elif act==u'fold':
h.addFold(street,player) # h.addFold(street,player)
elif act==u'call': # elif act==u'call':
h.addCall(street,player,amount) # h.addCall(street,player,amount)
elif act==u'bet': # elif act==u'bet':
h.addBet(street,player,amount) # h.addBet(street,player,amount)
elif act==u'check': # elif act==u'check':
h.addCheck(street,player) # h.addCheck(street,player)
elif act==u'unbet': # elif act==u'unbet':
pass # pass
else: # else:
print act, player, streetnum, allin, amount # print act, player, streetnum, allin, amount
# TODO : other actions # # TODO : other actions
#hhc.readShowdownActions(self) #hhc.readShowdownActions(self)
#hc.readShownCards(self) #hc.readShownCards(self)
h.totalPot() #h.totalPot()
h.rake = h.totalpot - h.totalcollected #h.rake = h.totalpot - h.totalcollected
return h
def addPlayer(self, seat, name, chips): def addPlayer(self, seat, name, chips):
"""\ """\
@ -850,10 +820,11 @@ class HoldemOmahaHand(Hand):
hhc.readOther(self) hhc.readOther(self)
#print "\nHand:\n"+str(self) #print "\nHand:\n"+str(self)
elif builtFrom == "DB": elif builtFrom == "DB":
if handid is not None: #if handid is not None:
self.select(handid) # Will need a handId # self.select(handid) # Will need a handId
else: #else:
log.warning(_("HoldemOmahaHand.__init__:Can't assemble hand from db without a handid")) # log.warning(_("HoldemOmahaHand.__init__:Can't assemble hand from db without a handid"))
print "DEBUG: HoldemOmaha hand initialised for select()"
else: else:
log.warning(_("HoldemOmahaHand.__init__:Neither HHC nor DB+handid provided")) log.warning(_("HoldemOmahaHand.__init__:Neither HHC nor DB+handid provided"))
pass pass
@ -1577,6 +1548,11 @@ Add a complete on [street] by [player] to [amountTo]
else: 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_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)) 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 return holecards

View File

@ -664,7 +664,7 @@ or None if we fail to get the info """
def getTableTitleRe(type, table_name=None, tournament = None, table_number=None): def getTableTitleRe(type, table_name=None, tournament = None, table_number=None):
"Returns string to search in windows titles" "Returns string to search in windows titles"
if type=="tour": if type=="tour":
return "%s.+Table.+%s" % (tournament, table_number) return "%s.+Table %s" % (tournament, table_number)
else: else:
return table_name return table_name

View File

@ -32,6 +32,8 @@ import sys
import pygtk import pygtk
import gtk import gtk
import gobject import gobject
import L10n
_ = L10n.get_translation()
# FreePokerTools modules # FreePokerTools modules
from Mucked import Aux_Window from Mucked import Aux_Window

View File

@ -536,6 +536,16 @@ class Hud:
aux.destroy() aux.destroy()
self.aux_windows = [] 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): def reposition_windows(self, *args):
self.update_table_position() self.update_table_position()
for w in self.stat_windows.itervalues(): for w in self.stat_windows.itervalues():

244
pyfpdb/IdentifySite.py Normal file → Executable file
View File

@ -1,122 +1,122 @@
#!/usr/bin/python #!/usr/bin/python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
#Copyright 2010 Chaz Littlejohn #Copyright 2010 Chaz Littlejohn
#This program is free software: you can redistribute it and/or modify #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 #it under the terms of the GNU Affero General Public License as published by
#the Free Software Foundation, version 3 of the License. #the Free Software Foundation, version 3 of the License.
# #
#This program is distributed in the hope that it will be useful, #This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of #but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details. #GNU General Public License for more details.
# #
#You should have received a copy of the GNU Affero General Public License #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/>. #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. #In the "official" distribution you can find the license in agpl-3.0.txt.
import L10n import L10n
_ = L10n.get_translation() _ = L10n.get_translation()
import re import re
import sys import sys
import os import os
import os.path import os.path
from optparse import OptionParser from optparse import OptionParser
import codecs import codecs
import Configuration import Configuration
import Database import Database
__ARCHIVE_PRE_HEADER_REGEX='^Hand #(\d+)\s*$|\*{20}\s#\s\d+\s\*+\s+' __ARCHIVE_PRE_HEADER_REGEX='^Hand #(\d+)\s*$|\*{20}\s#\s\d+\s\*+\s+'
re_SplitArchive = re.compile(__ARCHIVE_PRE_HEADER_REGEX) re_SplitArchive = re.compile(__ARCHIVE_PRE_HEADER_REGEX)
class IdentifySite: class IdentifySite:
def __init__(self, config, in_path = '-'): def __init__(self, config, in_path = '-'):
self.in_path = in_path self.in_path = in_path
self.config = config self.config = config
self.db = Database.Database(config) self.db = Database.Database(config)
self.sitelist = {} self.sitelist = {}
self.filelist = {} self.filelist = {}
self.generateSiteList() self.generateSiteList()
self.walkDirectory(self.in_path, self.sitelist) self.walkDirectory(self.in_path, self.sitelist)
def generateSiteList(self): def generateSiteList(self):
"""Generates a ordered dictionary of site, filter and filter name for each site in hhcs""" """Generates a ordered dictionary of site, filter and filter name for each site in hhcs"""
for site, hhc in self.config.hhcs.iteritems(): for site, hhc in self.config.hhcs.iteritems():
filter = hhc.converter filter = hhc.converter
filter_name = filter.replace("ToFpdb", "") filter_name = filter.replace("ToFpdb", "")
result = self.db.get_site_id(site) result = self.db.get_site_id(site)
if len(result) == 1: if len(result) == 1:
self.sitelist[result[0][0]] = (site, filter, filter_name) self.sitelist[result[0][0]] = (site, filter, filter_name)
else: else:
pass pass
def walkDirectory(self, dir, sitelist): def walkDirectory(self, dir, sitelist):
"""Walks a directory, and executes a callback on each file""" """Walks a directory, and executes a callback on each file"""
dir = os.path.abspath(dir) dir = os.path.abspath(dir)
for file in [file for file in os.listdir(dir) if not file in [".",".."]]: for file in [file for file in os.listdir(dir) if not file in [".",".."]]:
nfile = os.path.join(dir,file) nfile = os.path.join(dir,file)
if os.path.isdir(nfile): if os.path.isdir(nfile):
self.walkDirectory(nfile, sitelist) self.walkDirectory(nfile, sitelist)
else: else:
self.idSite(nfile, sitelist) self.idSite(nfile, sitelist)
def __listof(self, x): def __listof(self, x):
if isinstance(x, list) or isinstance(x, tuple): if isinstance(x, list) or isinstance(x, tuple):
return x return x
else: else:
return [x] return [x]
def idSite(self, file, sitelist): def idSite(self, file, sitelist):
"""Identifies the site the hh file originated from""" """Identifies the site the hh file originated from"""
if file.endswith('.txt'): if file.endswith('.txt'):
self.filelist[file] = '' self.filelist[file] = ''
archive = False archive = False
for site, info in sitelist.iteritems(): for site, info in sitelist.iteritems():
mod = __import__(info[1]) mod = __import__(info[1])
obj = getattr(mod, info[2], None) obj = getattr(mod, info[2], None)
for kodec in self.__listof(obj.codepage): for kodec in self.__listof(obj.codepage):
try: try:
in_fh = codecs.open(file, 'r', kodec) in_fh = codecs.open(file, 'r', kodec)
whole_file = in_fh.read() whole_file = in_fh.read()
in_fh.close() in_fh.close()
if info[2] in ('OnGame', 'Winamax'): if info[2] in ('OnGame', 'Winamax'):
m = obj.re_HandInfo.search(whole_file) m = obj.re_HandInfo.search(whole_file)
elif info[2] in ('PartyPoker'): elif info[2] in ('PartyPoker'):
m = obj.re_GameInfoRing.search(whole_file) m = obj.re_GameInfoRing.search(whole_file)
if not m: if not m:
m = obj.re_GameInfoTrny.search(whole_file) m = obj.re_GameInfoTrny.search(whole_file)
else: else:
m = obj.re_GameInfo.search(whole_file) m = obj.re_GameInfo.search(whole_file)
if re_SplitArchive.search(whole_file): if re_SplitArchive.search(whole_file):
archive = True archive = True
if m: if m:
self.filelist[file] = [info[0]] + [info[1]] + [kodec] + [archive] self.filelist[file] = [info[0]] + [info[1]] + [kodec] + [archive]
break break
except: except:
pass pass
def main(argv=None): def main(argv=None):
if argv is None: if argv is None:
argv = sys.argv[1:] argv = sys.argv[1:]
config = Configuration.Config(file = "HUD_config.test.xml") config = Configuration.Config(file = "HUD_config.test.xml")
in_path = 'regression-test-files/' in_path = 'regression-test-files/'
IdSite = IdentifySite(config, in_path) IdSite = IdentifySite(config, in_path)
print "\n----------- SITE LIST -----------" print "\n----------- SITE LIST -----------"
for site, info in IdSite.sitelist.iteritems(): for site, info in IdSite.sitelist.iteritems():
print site, info print site, info
print "----------- END SITE LIST -----------" print "----------- END SITE LIST -----------"
print "\n----------- ID REGRESSION FILES -----------" print "\n----------- ID REGRESSION FILES -----------"
for file, site in IdSite.filelist.iteritems(): for file, site in IdSite.filelist.iteritems():
print file, site print file, site
print "----------- END ID REGRESSION FILES -----------" print "----------- END ID REGRESSION FILES -----------"
if __name__ == '__main__': if __name__ == '__main__':
sys.exit(main()) sys.exit(main())

19
pyfpdb/Mucked.py Executable file → Normal file
View File

@ -25,17 +25,17 @@ Mucked cards display for FreePokerTools HUD.
# to do # to do
# Standard Library modules # Standard Library modules
import sys #import sys
import pprint #import pprint
# pyGTK modules # pyGTK modules
import pygtk #import pygtk
import gtk import gtk
import gobject import gobject
# FreePokerTools modules # FreePokerTools modules
import Configuration #import Configuration
import Database #import Database
import Card import Card
class Aux_Window(object): class Aux_Window(object):
@ -415,9 +415,12 @@ class Aux_Seats(Aux_Window):
# Methods likely to be of use for any Seat_Window implementation # Methods likely to be of use for any Seat_Window implementation
def destroy(self): def destroy(self):
"""Destroy all of the seat windows.""" """Destroy all of the seat windows."""
for i in self.m_windows.keys(): try:
self.m_windows[i].destroy() for i in self.m_windows.keys():
del(self.m_windows[i]) 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 # Methods likely to be useful for mucked card windows (or similar) only
def hide(self): def hide(self):

90
pyfpdb/OSXTables.py Normal file
View 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)

View File

@ -42,11 +42,12 @@ class OnGame(HandHistoryConverter):
siteId = 5 # Needs to match id entry in Sites database siteId = 5 # Needs to match id entry in Sites database
mixes = { } # Legal mixed games 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 = { substitutions = {
'LEGAL_ISO' : "USD|EUR|GBP|CAD|FPP", # legal ISO currency codes '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'} limits = { 'NO_LIMIT':'nl', 'LIMIT':'fl'}
@ -89,10 +90,10 @@ class OnGame(HandHistoryConverter):
( (
(?P<LIMIT>NO_LIMIT|Limit|LIMIT|Pot\sLimit)\s (?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 (?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]+) (%(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_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 re_Button = re.compile('Button: seat (?P<BUTTON>\d+)', re.MULTILINE) # Button: seat 2
@ -174,7 +175,8 @@ class OnGame(HandHistoryConverter):
mg = m.groupdict() mg = m.groupdict()
info['type'] = 'ring' info['type'] = 'ring'
info['currency'] = 'USD' if 'CURRENCY' in mg:
info['currency'] = self.currencies[mg['CURRENCY']]
if 'LIMIT' in mg: if 'LIMIT' in mg:
if mg['LIMIT'] in self.limits: if mg['LIMIT'] in self.limits:
@ -326,7 +328,7 @@ class OnGame(HandHistoryConverter):
def readAction(self, hand, street): def readAction(self, hand, street):
m = self.re_Action.finditer(hand.streets[street]) m = self.re_Action.finditer(hand.streets[street])
for action in m: for action in m:
acts = action.groupdict() #acts = action.groupdict()
#log.debug("readaction: acts: %s" %acts) #log.debug("readaction: acts: %s" %acts)
if action.group('ATYPE') == ' raises': if action.group('ATYPE') == ' raises':
hand.addRaiseBy( street, action.group('PNAME'), action.group('BET') ) hand.addRaiseBy( street, action.group('PNAME'), action.group('BET') )

View File

@ -41,6 +41,9 @@ def fpdb_options():
parser.add_option("-k", "--konverter", parser.add_option("-k", "--konverter",
dest="hhc", default="PokerStarsToFpdb", dest="hhc", default="PokerStarsToFpdb",
help=_("Module name for Hand History Converter")) help=_("Module name for Hand History Converter"))
parser.add_option("-s", "--sitename",
dest="sitename", default=None,
help=_("A sitename"))
parser.add_option("-l", "--logging", parser.add_option("-l", "--logging",
dest = "log_level", dest = "log_level",
choices = ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL', 'EMPTY'), 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")) 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", 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")) 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() (options, argv) = parser.parse_args()
return (options, argv) 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__": if __name__== "__main__":
(options, argv) = fpdb_options() (options, argv) = fpdb_options()
print "errorsToConsole =", options.errorsToConsole print "errorsToConsole =", options.errorsToConsole

View File

@ -45,22 +45,27 @@ class PartyPoker(HandHistoryConverter):
codepage = "utf8" codepage = "utf8"
siteId = 9 siteId = 9
filetype = "text" 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 # Static regexes
# $5 USD NL Texas Hold'em - Saturday, July 25, 07:53:52 EDT 2009 # $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 # 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(""" re_GameInfoRing = re.compile(u"""
(?P<CURRENCY>\$|)\s*(?P<RINGLIMIT>[.,0-9]+)([.,0-9/$]+)?\s*(?:USD)?\s* (?P<CURRENCY>[%(LS)s])\s*(?P<RINGLIMIT>[.,0-9]+)([.,0-9/$]+)?\s*(?:%(LEGAL_ISO)s)?\s*
(?P<LIMIT>(NL|PL|))\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* \s*\-\s*
(?P<DATETIME>.+) (?P<DATETIME>.+)
""", re.VERBOSE | re.UNICODE) """ % substitutions, re.VERBOSE | re.UNICODE)
re_GameInfoTrny = re.compile(""" re_GameInfoTrny = re.compile("""
(?P<LIMIT>(NL|PL|))\s* (?P<LIMIT>(NL|PL|))\s*
(?P<GAME>(Texas\ Hold\'em|Omaha))\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+ Trny:\s?(?P<TOURNO>\d+)\s+
Level:\s*(?P<LEVEL>\d+)\s+ Level:\s*(?P<LEVEL>\d+)\s+
((Blinds|Stakes)(?:-Antes)?)\( ((Blinds|Stakes)(?:-Antes)?)\(
@ -70,15 +75,14 @@ class PartyPoker(HandHistoryConverter):
\) \)
\s*\-\s* \s*\-\s*
(?P<DATETIME>.+) (?P<DATETIME>.+)
""", re.VERBOSE | re.UNICODE) """ % substitutions, re.VERBOSE | re.UNICODE)
re_Hid = re.compile("^Game \#(?P<HID>\d+) starts.") re_Hid = re.compile("Game \#(?P<HID>\d+) starts.")
re_PlayerInfo = re.compile(""" re_PlayerInfo = re.compile(u"""
Seat\s(?P<SEAT>\d+):\s Seat\s(?P<SEAT>\d+):\s
(?P<PNAME>.*)\s (?P<PNAME>.*)\s
\(\s*\$?(?P<CASH>[0-9,.]+)\s*(?:USD|)\s*\) \(\s*[%(LS)s]?(?P<CASH>[0-9,.]+)\s*(?:%(LEGAL_ISO)s|)\s*\)
""" , """ % substitutions, re.VERBOSE| re.UNICODE)
re.VERBOSE)
re_HandInfo = re.compile(""" re_HandInfo = re.compile("""
^Table\s+(?P<TTYPE>[$a-zA-Z0-9 ]+)?\s+ ^Table\s+(?P<TTYPE>[$a-zA-Z0-9 ]+)?\s+
@ -123,18 +127,16 @@ class PartyPoker(HandHistoryConverter):
self.compiledPlayers = players self.compiledPlayers = players
player_re = "(?P<PNAME>" + "|".join(map(re.escape, 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 ''} '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( self.re_PostSB = re.compile(
r"^%(PLYR)s posts small blind \[%(CUR_SYM)s(?P<SB>[.,0-9]+) ?%(CUR)s\]\." % subst, r"^%(PLYR)s posts small blind \[%(CUR_SYM)s(?P<SB>[.,0-9]+) ?%(CUR)s\]\."
re.MULTILINE) % subst, re.MULTILINE)
self.re_PostBB = re.compile( self.re_PostBB = re.compile(
r"^%(PLYR)s posts big blind \[%(CUR_SYM)s(?P<BB>[.,0-9]+) ?%(CUR)s\]\." % subst, u"%(PLYR)s posts big blind \[%(CUR_SYM)s(?P<BB>[.,0-9]+) ?%(CUR)s\]\."
re.MULTILINE) % subst, re.MULTILINE)
self.re_PostDead = re.compile( 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) re.MULTILINE)
self.re_Antes = re.compile( self.re_Antes = re.compile(
r"^%(PLYR)s posts ante \[%(CUR_SYM)s(?P<ANTE>[.,0-9]+) ?%(CUR)s\]" % subst, 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( self.re_HeroCards = re.compile(
r"^Dealt to %(PLYR)s \[\s*(?P<NEWCARDS>.+)\s*\]" % subst, r"^Dealt to %(PLYR)s \[\s*(?P<NEWCARDS>.+)\s*\]" % subst,
re.MULTILINE) 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) ^%(PLYR)s\s+(?P<ATYPE>bets|checks|raises|calls|folds|is\sall-In)
(?:\s+\[%(CUR_SYM)s(?P<BET>[.,\d]+)\s*%(CUR)s\])? (?:\s+\[%(CUR_SYM)s(?P<BET>[.,\d]+)\s*%(CUR)s\])?
""" % subst, """ % subst, re.MULTILINE|re.VERBOSE)
re.MULTILINE|re.VERBOSE)
self.re_ShownCards = re.compile( self.re_ShownCards = re.compile(
r"^%s (?P<SHOWED>(?:doesn\'t )?shows?) " % player_re + r"^%s (?P<SHOWED>(?:doesn\'t )?shows?) " % player_re +
r"\[ *(?P<CARDS>.+) *\](?P<COMBINATION>.+)\.", r"\[ *(?P<CARDS>.+) *\](?P<COMBINATION>.+)\.",
@ -181,10 +182,6 @@ class PartyPoker(HandHistoryConverter):
return self._gameType return self._gameType
return self._gameType return self._gameType
@staticmethod
def decode_hand_text(handText):
return handText.encode("latin1").decode(LOCALE_ENCODING)
def determineGameType(self, handText): def determineGameType(self, handText):
"""inspect the handText and return the gametype dict """inspect the handText and return the gametype dict
@ -192,7 +189,6 @@ class PartyPoker(HandHistoryConverter):
{'limitType': xxx, 'base': xxx, 'category': xxx}""" {'limitType': xxx, 'base': xxx, 'category': xxx}"""
info = {} info = {}
handText = self.decode_hand_text(handText)
m = self._getGameType(handText) m = self._getGameType(handText)
m_20BBmin = self.re_20BBmin.search(handText) m_20BBmin = self.re_20BBmin.search(handText)
if m is None: if m is None:
@ -210,7 +206,6 @@ class PartyPoker(HandHistoryConverter):
'Omaha' : ('hold','omahahi'), 'Omaha' : ('hold','omahahi'),
"7 Card Stud Hi-Lo" : ('stud','studhi'), "7 Card Stud Hi-Lo" : ('stud','studhi'),
} }
currencies = { '$':'USD', '':'T$' }
for expectedField in ['LIMIT', 'GAME']: for expectedField in ['LIMIT', 'GAME']:
if mg[expectedField] is None: if mg[expectedField] is None:
@ -243,7 +238,7 @@ class PartyPoker(HandHistoryConverter):
info['bb'] = "%.2f" % (bb) info['bb'] = "%.2f" % (bb)
info['sb'] = "%.2f" % (sb) info['sb'] = "%.2f" % (sb)
info['currency'] = currencies[mg['CURRENCY']] info['currency'] = self.currencies[mg['CURRENCY']]
else: else:
info['sb'] = clearMoneyString(mg['SB']) info['sb'] = clearMoneyString(mg['SB'])
info['bb'] = clearMoneyString(mg['BB']) info['bb'] = clearMoneyString(mg['BB'])
@ -253,15 +248,11 @@ class PartyPoker(HandHistoryConverter):
def readHandInfo(self, hand): 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 = {} info = {}
try: try:
info.update(self.re_Hid.search(hand.handText).groupdict()) info.update(self.re_Hid.search(hand.handText).groupdict())
except: except AttributeError, e:
raise FpdbParseError(_("Cannot read HID for current hand")) raise FpdbParseError(_("Cannot read HID for current hand: %s" % e))
try: try:
info.update(self.re_HandInfo.search(hand.handText,re.DOTALL).groupdict()) info.update(self.re_HandInfo.search(hand.handText,re.DOTALL).groupdict())
@ -374,7 +365,6 @@ class PartyPoker(HandHistoryConverter):
else: else:
#zero stacked players are added later #zero stacked players are added later
zeroStackPlayers.append([int(a.group('SEAT')), a.group('PNAME'), clearMoneyString(a.group('CASH'))]) zeroStackPlayers.append([int(a.group('SEAT')), a.group('PNAME'), clearMoneyString(a.group('CASH'))])
if hand.gametype['type'] == 'ring': if hand.gametype['type'] == 'ring':
#finds first vacant seat after an exact seat #finds first vacant seat after an exact seat
def findFirstEmptySeat(startSeat): def findFirstEmptySeat(startSeat):

View File

@ -57,9 +57,11 @@ class PokerStars(HandHistoryConverter):
'20.00': ('5.00', '10.00'), '20': ('5.00', '10.00'), '20.00': ('5.00', '10.00'), '20': ('5.00', '10.00'),
'30.00': ('10.00', '15.00'), '30': ('10.00', '15.00'), '30.00': ('10.00', '15.00'), '30': ('10.00', '15.00'),
'60.00': ('15.00', '30.00'), '60': ('15.00', '30.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'), '100.00': ('25.00', '50.00'), '100': ('25.00', '50.00'),
'200.00': ('50.00', '100.00'), '200': ('50.00', '100.00'), '200.00': ('50.00', '100.00'), '200': ('50.00', '100.00'),
'400.00': ('100.00', '200.00'), '400': ('100.00', '200.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') '1000.00': ('250.00', '500.00'),'1000': ('250.00', '500.00')
} }
@ -153,7 +155,7 @@ class PokerStars(HandHistoryConverter):
(\scards?(\s\[(?P<DISCARDED>.+?)\])?)?\s*$""" (\scards?(\s\[(?P<DISCARDED>.+?)\])?)?\s*$"""
% subst, re.MULTILINE|re.VERBOSE) % subst, re.MULTILINE|re.VERBOSE)
self.re_ShowdownAction = re.compile(r"^%s: shows \[(?P<CARDS>.*)\]" % player_re, re.MULTILINE) 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_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) 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" hand.buyinCurrency="PSFP"
else: else:
#FIXME: handle other currencies, FPP, play money #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') info['BIAMT'] = info['BIAMT'].strip(u'$€FPP')
@ -297,7 +299,7 @@ class PokerStars(HandHistoryConverter):
hand.tablename = info[key] hand.tablename = info[key]
if key == 'BUTTON': if key == 'BUTTON':
hand.buttonpos = info[key] hand.buttonpos = info[key]
if key == 'MAX': if key == 'MAX' and info[key] != None:
hand.maxseats = int(info[key]) hand.maxseats = int(info[key])
if key == 'MIXED': if key == 'MIXED':

View File

@ -1355,7 +1355,42 @@ class Sql:
street3Raises INT, street3Raises INT,
street4Raises 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': if db_server == 'mysql':
self.query['addTourneyIndex'] = """ALTER TABLE Tourneys ADD UNIQUE INDEX siteTourneyNo(siteTourneyNo, tourneyTypeId)""" 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)""" self.query['addTourneyIndex'] = """CREATE UNIQUE INDEX siteTourneyNo ON Tourneys (siteTourneyNo, tourneyTypeId)"""
if db_server == 'mysql': 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': 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': 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': if db_server == 'mysql':
self.query['addPlayersIndex'] = """ALTER TABLE Players ADD UNIQUE INDEX name(name, siteId)""" 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) 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'] = """ self.query['get_stats_from_hand'] = """
SELECT hc.playerId AS player_id, SELECT hc.playerId AS player_id,
hp.seatNo AS seat, hp.seatNo AS seat,
@ -2110,7 +2173,7 @@ class Sql:
if db_server == 'mysql': if db_server == 'mysql':
self.query['playerDetailedStats'] = """ self.query['playerDetailedStats'] = """
select <hgameTypeId> AS hgametypeid select <hgametypeId> AS hgametypeid
,<playerName> AS pname ,<playerName> AS pname
,gt.base ,gt.base
,gt.category ,gt.category
@ -2196,7 +2259,7 @@ class Sql:
,variance(hp.totalProfit/100.0) AS variance ,variance(hp.totalProfit/100.0) AS variance
from HandsPlayers hp from HandsPlayers hp
inner join Hands h on (h.id = hp.handId) 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 Sites s on (s.Id = gt.siteId)
inner join Players p on (p.Id = hp.playerId) inner join Players p on (p.Id = hp.playerId)
where hp.playerId in <player_test> where hp.playerId in <player_test>
@ -2207,7 +2270,7 @@ class Sql:
<flagtest> <flagtest>
<gtbigBlind_test> <gtbigBlind_test>
and date_format(h.startTime, '%Y-%m-%d %T') <datestest> and date_format(h.startTime, '%Y-%m-%d %T') <datestest>
group by hgameTypeId group by hgametypeId
,pname ,pname
,gt.base ,gt.base
,gt.category ,gt.category
@ -2224,14 +2287,14 @@ class Sql:
when 'S' then 'S' when 'S' then 'S'
else concat('Z', <position>) else concat('Z', <position>)
end end
<orderbyhgameTypeId> <orderbyhgametypeId>
,upper(gt.limitType) desc ,upper(gt.limitType) desc
,maxbigblind desc ,maxbigblind desc
,s.name ,s.name
""" """
elif db_server == 'postgresql': elif db_server == 'postgresql':
self.query['playerDetailedStats'] = """ self.query['playerDetailedStats'] = """
select <hgameTypeId> AS hgametypeid select <hgametypeId> AS hgametypeid
,<playerName> AS pname ,<playerName> AS pname
,gt.base ,gt.base
,gt.category ,gt.category
@ -2317,7 +2380,7 @@ class Sql:
,variance(hp.totalProfit/100.0) AS variance ,variance(hp.totalProfit/100.0) AS variance
from HandsPlayers hp from HandsPlayers hp
inner join Hands h on (h.id = hp.handId) 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 Sites s on (s.Id = gt.siteId)
inner join Players p on (p.Id = hp.playerId) inner join Players p on (p.Id = hp.playerId)
where hp.playerId in <player_test> where hp.playerId in <player_test>
@ -2328,7 +2391,7 @@ class Sql:
<flagtest> <flagtest>
<gtbigBlind_test> <gtbigBlind_test>
and to_char(h.startTime, 'YYYY-MM-DD HH24:MI:SS') <datestest> and to_char(h.startTime, 'YYYY-MM-DD HH24:MI:SS') <datestest>
group by hgameTypeId group by hgametypeId
,pname ,pname
,gt.base ,gt.base
,gt.category ,gt.category
@ -2346,14 +2409,14 @@ class Sql:
when '0' then 'Y' when '0' then 'Y'
else 'Z'||<position> else 'Z'||<position>
end end
<orderbyhgameTypeId> <orderbyhgametypeId>
,upper(gt.limitType) desc ,upper(gt.limitType) desc
,maxbigblind desc ,maxbigblind desc
,s.name ,s.name
""" """
elif db_server == 'sqlite': elif db_server == 'sqlite':
self.query['playerDetailedStats'] = """ self.query['playerDetailedStats'] = """
select <hgameTypeId> AS hgametypeid select <hgametypeId> AS hgametypeid
,<playerName> AS pname ,<playerName> AS pname
,gt.base ,gt.base
,gt.category AS category ,gt.category AS category
@ -2439,7 +2502,7 @@ class Sql:
,variance(hp.totalProfit/100.0) AS variance ,variance(hp.totalProfit/100.0) AS variance
from HandsPlayers hp from HandsPlayers hp
inner join Hands h on (h.id = hp.handId) 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 Sites s on (s.Id = gt.siteId)
inner join Players p on (p.Id = hp.playerId) inner join Players p on (p.Id = hp.playerId)
where hp.playerId in <player_test> where hp.playerId in <player_test>
@ -2450,7 +2513,7 @@ class Sql:
<flagtest> <flagtest>
<gtbigBlind_test> <gtbigBlind_test>
and datetime(h.startTime) <datestest> and datetime(h.startTime) <datestest>
group by hgameTypeId group by hgametypeId
,hp.playerId ,hp.playerId
,gt.base ,gt.base
,gt.category ,gt.category
@ -2468,7 +2531,7 @@ class Sql:
when '0' then 'Y' when '0' then 'Y'
else 'Z'||<position> else 'Z'||<position>
end end
<orderbyhgameTypeId> <orderbyhgametypeId>
,upper(gt.limitType) desc ,upper(gt.limitType) desc
,max(gt.bigBlind) desc ,max(gt.bigBlind) desc
,s.name ,s.name
@ -2479,7 +2542,11 @@ class Sql:
select s.name AS siteName select s.name AS siteName
,t.tourneyTypeId AS tourneyTypeId ,t.tourneyTypeId AS tourneyTypeId
,tt.currency AS currency ,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.fee/100.0 AS fee
,tt.category AS category ,tt.category AS category
,tt.limitType AS limitType ,tt.limitType AS limitType
@ -2512,7 +2579,11 @@ class Sql:
select s.name AS siteName select s.name AS siteName
,t.tourneyTypeId AS tourneyTypeId ,t.tourneyTypeId AS tourneyTypeId
,tt.currency AS currency ,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.fee/100.0 AS fee
,tt.category AS category ,tt.category AS category
,tt.limitType AS limitType ,tt.limitType AS limitType
@ -2546,7 +2617,11 @@ class Sql:
select s.name AS siteName select s.name AS siteName
,t.tourneyTypeId AS tourneyTypeId ,t.tourneyTypeId AS tourneyTypeId
,tt.currency AS currency ,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.fee/100.0 AS fee
,tt.category AS category ,tt.category AS category
,tt.limitType AS limitType ,tt.limitType AS limitType
@ -2646,7 +2721,7 @@ class Sql:
,format( sum(activeSeats*HDs)/(sum(HDs)+0.0), 2) AS AvgSeats ,format( sum(activeSeats*HDs)/(sum(HDs)+0.0), 2) AS AvgSeats
from Gametypes gt from Gametypes gt
inner join Sites s on s.Id = gt.siteId 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> where hc.playerId in <player_test>
and <gtbigBlind_test> and <gtbigBlind_test>
and hc.activeSeats <seats_test> and hc.activeSeats <seats_test>
@ -2667,7 +2742,7 @@ class Sql:
else variance(hprof.profit/100.0) else variance(hprof.profit/100.0)
end as variance end as variance
from from
(select hp.handId, <hgameTypeId> as gtId, hp.totalProfit as profit (select hp.handId, <hgametypeId> as gtId, hp.totalProfit as profit
from HandsPlayers hp from HandsPlayers hp
inner join Hands h ON h.id = hp.handId inner join Hands h ON h.id = hp.handId
where hp.playerId in <player_test> where hp.playerId in <player_test>
@ -2751,7 +2826,7 @@ class Sql:
,to_char(sum(activeSeats*HDs)/(sum(HDs)+0.0),'90D00') AS AvgSeats ,to_char(sum(activeSeats*HDs)/(sum(HDs)+0.0),'90D00') AS AvgSeats
from Gametypes gt from Gametypes gt
inner join Sites s on s.Id = gt.siteId 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> where hc.playerId in <player_test>
and <gtbigBlind_test> and <gtbigBlind_test>
and hc.activeSeats <seats_test> and hc.activeSeats <seats_test>
@ -2772,7 +2847,7 @@ class Sql:
else variance(hprof.profit/100.0) else variance(hprof.profit/100.0)
end as variance end as variance
from from
(select hp.handId, <hgameTypeId> as gtId, hp.totalProfit as profit (select hp.handId, <hgametypeId> as gtId, hp.totalProfit as profit
from HandsPlayers hp from HandsPlayers hp
inner join Hands h ON (h.id = hp.handId) inner join Hands h ON (h.id = hp.handId)
where hp.playerId in <player_test> where hp.playerId in <player_test>
@ -2874,7 +2949,7 @@ class Sql:
,format( sum(activeSeats*HDs)/(sum(HDs)+0.0), 2) AS AvgSeats ,format( sum(activeSeats*HDs)/(sum(HDs)+0.0), 2) AS AvgSeats
from Gametypes gt from Gametypes gt
inner join Sites s on s.Id = gt.siteId 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> where hc.playerId in <player_test>
and <gtbigBlind_test> and <gtbigBlind_test>
and hc.activeSeats <seats_test> and hc.activeSeats <seats_test>
@ -2904,7 +2979,7 @@ class Sql:
else variance(hprof.profit/100.0) else variance(hprof.profit/100.0)
end as variance end as variance
from from
(select hp.handId, <hgameTypeId> as gtId, hp.position (select hp.handId, <hgametypeId> as gtId, hp.position
, hp.totalProfit as profit , hp.totalProfit as profit
from HandsPlayers hp from HandsPlayers hp
inner join Hands h ON (h.id = hp.handId) 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 ,to_char(sum(activeSeats*HDs)/(sum(HDs)+0.0),'90D00') AS AvgSeats
from Gametypes gt from Gametypes gt
inner join Sites s on (s.Id = gt.siteId) 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> where hc.playerId in <player_test>
and <gtbigBlind_test> and <gtbigBlind_test>
and hc.activeSeats <seats_test> and hc.activeSeats <seats_test>
@ -3043,14 +3118,14 @@ class Sql:
else variance(hprof.profit/100.0) else variance(hprof.profit/100.0)
end as variance end as variance
from from
(select hp.handId, <hgameTypeId> as gtId, hp.position (select hp.handId, <hgametypeId> as gtId, hp.position
, hp.totalProfit as profit , hp.totalProfit as profit
from HandsPlayers hp from HandsPlayers hp
inner join Hands h ON (h.id = hp.handId) inner join Hands h ON (h.id = hp.handId)
where hp.playerId in <player_test> where hp.playerId in <player_test>
and hp.tourneysPlayersId IS NULL and hp.tourneysPlayersId IS NULL
and to_char(h.startTime, 'YYYY-MM-DD') <datestest> 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 ) hprof
group by hprof.gtId, PlPosition group by hprof.gtId, PlPosition
) hprof2 ) hprof2
@ -3144,7 +3219,7 @@ class Sql:
SELECT UNIX_TIMESTAMP(h.startTime) as time, hp.handId, hp.startCash, hp.winnings, hp.totalProfit SELECT UNIX_TIMESTAMP(h.startTime) as time, hp.handId, hp.startCash, hp.winnings, hp.totalProfit
FROM HandsPlayers hp FROM HandsPlayers hp
INNER JOIN Hands h on (h.id = hp.handId) 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 Sites s on (s.Id = gt.siteId)
INNER JOIN Players p on (p.Id = hp.playerId) INNER JOIN Players p on (p.Id = hp.playerId)
WHERE hp.playerId in <player_test> 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 SELECT EXTRACT(epoch from h.startTime) as time, hp.handId, hp.startCash, hp.winnings, hp.totalProfit
FROM HandsPlayers hp FROM HandsPlayers hp
INNER JOIN Hands h on (h.id = hp.handId) 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 Sites s on (s.Id = gt.siteId)
INNER JOIN Players p on (p.Id = hp.playerId) INNER JOIN Players p on (p.Id = hp.playerId)
WHERE hp.playerId in <player_test> 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 SELECT STRFTIME('<ampersand_s>', h.startTime) as time, hp.handId, hp.startCash, hp.winnings, hp.totalProfit
FROM HandsPlayers hp FROM HandsPlayers hp
INNER JOIN Hands h on (h.id = hp.handId) 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 Sites s on (s.Id = gt.siteId)
INNER JOIN Players p on (p.Id = hp.playerId) INNER JOIN Players p on (p.Id = hp.playerId)
WHERE hp.playerId in <player_test> WHERE hp.playerId in <player_test>
@ -3968,13 +4043,104 @@ class Sql:
AND playerId=%s AND playerId=%s
AND activeSeats=%s AND activeSeats=%s
AND position=%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""" AND styleKey=%s"""
self.query['get_hero_hudcache_start'] = """select min(hc.styleKey) self.query['get_hero_hudcache_start'] = """select min(hc.styleKey)
from HudCache hc from HudCache hc
where hc.playerId in <playerid_list> where hc.playerId in <playerid_list>
and hc.styleKey like 'd%'""" 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': if db_server == 'mysql':
self.query['analyze'] = """ self.query['analyze'] = """

View File

@ -9,7 +9,9 @@
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License. # the Free Software Foundation, version 3 of the License.
# #
#TODO: gettextify
import L10n
_ = L10n.get_translation()
import sys, random import sys, random
import pokereval import pokereval
@ -22,13 +24,56 @@ OFFSUIT = 2
ev = pokereval.PokerEval() ev = pokereval.PokerEval()
holder = None
class Holder: class Stove:
def __init__(self): def __init__(self):
self.hand = None self.hand = None
self.board = 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: class Cards:
@ -104,37 +149,17 @@ class SumEV:
self.n_ties += ev.n_ties self.n_ties += ev.n_ties
self.n_losses += ev.n_losses 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)) win_pct = 100 * (float(self.n_wins) / float(self.n_hands))
lose_pct = 100 * (float(self.n_losses) / 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)) tie_pct = 100 * (float(self.n_ties) / float(self.n_hands))
print 'Enumerated %d possible plays.' % self.n_hands print 'Enumerated %d possible plays.' % self.n_hands
print 'Your hand: (%s %s)' % (hand.c1, hand.c2) 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 ' Win Lose Tie'
print ' %5.2f%% %5.2f%% %5.2f%%' % (win_pct, lose_pct, tie_pct) 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. # Expands hand abbreviations such as JJ and AK to full hand ranges.
@ -159,7 +184,7 @@ def expand_hands(abbrev, hand, board):
else: else:
selection = ANY selection = ANY
range = [] h_range = []
considered = set() considered = set()
for s1 in SUITS: for s1 in SUITS:
c1 = r1 + s1 c1 = r1 + s1
@ -173,54 +198,18 @@ def expand_hands(abbrev, hand, board):
elif selection == OFFSUIT and s1 == s2: elif selection == OFFSUIT and s1 == s2:
continue continue
if c2 not in considered and c2 not in known_cards: if c2 not in considered and c2 not in known_cards:
range.append(Cards(c1, c2)) h_range.append(Cards(c1, c2))
return range return h_range
def parse_args(args, container): def parse_args(args, container):
# args[0] is the path being executed; need 3 more args # args[0] is the path being executed; need 3 more args
if len(args) < 4: if len(args) < 4:
return False return False
board = Board() container.set_board_string(args[1])
container.set_hero_cards_string(args[2])
# Board container.set_villain_range_string(args[3])
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
return True return True
@ -269,11 +258,11 @@ def odds_for_range(holder):
b.append("__") b.append("__")
if monte_carlo: if monte_carlo:
print 'No board given. Using Monte-Carlo simulation...' print _('No board given. Using Monte-Carlo simulation...')
iters = random.randint(25000, 125000) iters = random.randint(25000, 125000)
else: else:
iters = -1 iters = -1
for h in holder.range.get(): for h in holder.h_range.get():
e = odds_for_hand( e = odds_for_hand(
[holder.hand.c1, holder.hand.c2], [holder.hand.c1, holder.hand.c2],
[h.c1, h.c2], [h.c1, h.c2],
@ -282,28 +271,35 @@ def odds_for_range(holder):
) )
sev.add(e) 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() To use: %s '<board cards>' '<your hand>' '<opponent's range>' [...]
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
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())

View File

@ -116,6 +116,8 @@ class Table_Window(object):
self.config = config self.config = config
self.site = site self.site = site
self.hud = None # fill in later
self.gdkhandle = None
if tournament is not None and table_number is not None: if tournament is not None and table_number is not None:
self.tournament = int(tournament) self.tournament = int(tournament)
self.table = int(table_number) self.table = int(table_number)
@ -150,7 +152,7 @@ class Table_Window(object):
# __str__ method for testing # __str__ method for testing
likely_attrs = ("number", "title", "site", "width", "height", "x", "y", likely_attrs = ("number", "title", "site", "width", "height", "x", "y",
"tournament", "table", "gdkhandle", "window", "parent", "tournament", "table", "gdkhandle", "window", "parent",
"game", "search_string", "tableno_re") "key", "hud", "game", "search_string", "tableno_re")
temp = 'TableWindow object\n' temp = 'TableWindow object\n'
for a in likely_attrs: for a in likely_attrs:
if getattr(self, a, 0): if getattr(self, a, 0):
@ -185,13 +187,13 @@ class Table_Window(object):
return False return False
try: 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' except AttributeError: #'Table' object has no attribute 'tableno_re'
return False return False
if mo is not None: if mo is not None:
#print "get_table_no: mo=",mo.groups() #print "get_table_no: mo=",mo.groups()
return mo.group(1) return int(mo.group(1))
return False return False
#################################################################### ####################################################################
@ -234,7 +236,9 @@ class Table_Window(object):
return "client_destroyed" return "client_destroyed"
elif self.width != new_geo['width'] or self.height != new_geo['height']: # window resized elif self.width != new_geo['width'] or self.height != new_geo['height']: # window resized
self.oldwidth = self.width
self.width = new_geo['width'] self.width = new_geo['width']
self.oldheight = self.height
self.height = new_geo['height'] self.height = new_geo['height']
return "client_resized" return "client_resized"
return False # no change return False # no change
@ -256,7 +260,7 @@ class Table_Window(object):
if result != False and result != self.table: if result != False and result != self.table:
self.table = result self.table = result
if hud is not None: if hud is not None:
hud.main_window.emit("table_changed", hud) hud.parent.main_window.emit("table_changed", hud)
return True return True
def check_bad_words(self, title): def check_bad_words(self, title):

View File

@ -22,24 +22,25 @@ Main program module to test/demo the Tables subclasses.
######################################################################## ########################################################################
import L10n
_ = L10n.get_translation()
# Standard Library modules # Standard Library modules
import sys import sys
import os
# pyGTK modules # pyGTK modules
import pygtk
import gtk import gtk
import gobject import gobject
# fpdb/free poker tools modules # fpdb/free poker tools modules
import Configuration import Configuration
import L10n
_ = L10n.get_translation()
# get the correct module for the current os # get the correct module for the current os
if os.name == 'posix': if sys.platform == 'linux2':
import XTables as Tables 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 import WinTables as Tables
config = Configuration.Config() config = Configuration.Config()
@ -60,7 +61,7 @@ if __name__=="__main__":
self.main_window.set_title(_("Fake HUD Main Window")) self.main_window.set_title(_("Fake HUD Main Window"))
self.main_window.move(table.x + dx, table.y + dy) self.main_window.move(table.x + dx, table.y + dy)
self.main_window.show_all() self.main_window.show_all()
table.topify(self) table.topify(self.main_window)
# These are the currently defined signals. Do this in the HUD. # These are the currently defined signals. Do this in the HUD.
self.main_window.connect("client_moved", self.client_moved) self.main_window.connect("client_moved", self.client_moved)
@ -103,9 +104,12 @@ if __name__=="__main__":
table_kwargs = dict(table_name = table_name) table_kwargs = dict(table_name = table_name)
table = Tables.Table(config, "Full Tilt Poker", **table_kwargs) table = Tables.Table(config, "Full Tilt Poker", **table_kwargs)
table.gdkhandle = gtk.gdk.window_foreign_new(table.number)
print table print table
fake = fake_hud(table) fake = fake_hud(table)
fake.parent = fake
gobject.timeout_add(1000, table.check_game, fake) gobject.timeout_add(1000, table.check_game, fake)
gobject.timeout_add(100, table.check_table, fake) gobject.timeout_add(100, table.check_table, fake)
print "calling main" print "calling main"

View File

@ -28,6 +28,9 @@ import Configuration
import Database import Database
import SQL import SQL
import fpdb_import import fpdb_import
import Options
import datetime
import pytz
class FpdbError: class FpdbError:
@ -59,6 +62,69 @@ class FpdbError:
idx = f.find('regression') idx = f.find('regression')
print "(%3d) : %s" %(self.histogram[f], f[idx:]) 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): def compare(leaf, importer, errors, site):
filename = leaf filename = leaf
#print "DEBUG: fileanme: %s" % filename #print "DEBUG: fileanme: %s" % filename
@ -69,39 +135,13 @@ def compare(leaf, importer, errors, site):
importer.addBulkImportImportFileOrDir(filename, site=site) importer.addBulkImportImportFileOrDir(filename, site=site)
(stored, dups, partial, errs, ttime) = importer.runImport() (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: if errs > 0:
errors.error_report(filename, False, "Parse", False, False, False) 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() importer.clearFileList()
@ -117,10 +157,28 @@ def walk_testfiles(dir, function, importer, errors, site):
else: else:
compare(nfile, importer, errors, site) compare(nfile, importer, errors, site)
def usage():
print "USAGE:"
sys.exit(0)
def main(argv=None): def main(argv=None):
if argv is None: if argv is None:
argv = sys.argv[1:] 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") config = Configuration.Config(file = "HUD_config.test.xml")
db = Database.Database(config) db = Database.Database(config)
sql = SQL.Sql(db_server = 'sqlite') sql = SQL.Sql(db_server = 'sqlite')
@ -159,21 +217,27 @@ def main(argv=None):
] ]
sites = { sites = {
'PokerStars' : True, 'PokerStars' : False,
'Full Tilt Poker' : True, 'Full Tilt Poker' : False,
'PartyPoker' : True, 'PartyPoker' : False,
'Betfair' : True, 'Betfair' : False,
'OnGame' : True, 'OnGame' : False,
'Absolute' : True, 'Absolute' : False,
'UltimateBet' : True, 'UltimateBet' : False,
'Everleaf' : True, 'Everleaf' : False,
'Carbon' : True, 'Carbon' : False,
'PKR' : False, #'PKR' : False,
'iPoker' : True, 'iPoker' : False,
'Win2day' : True, 'Win2day' : False,
'Winamax' : True, 'Winamax' : False,
} }
if test_all_sites == True:
for s in sites:
sites[s] = True
else:
sites[options.sitename] = True
if sites['PokerStars'] == True: if sites['PokerStars'] == True:
walk_testfiles("regression-test-files/cash/Stars/", compare, importer, PokerStarsErrors, "PokerStars") walk_testfiles("regression-test-files/cash/Stars/", compare, importer, PokerStarsErrors, "PokerStars")
walk_testfiles("regression-test-files/tour/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") walk_testfiles("regression-test-files/cash/Everleaf/", compare, importer, EverleafErrors, "Everleaf")
if sites['Carbon'] == True: if sites['Carbon'] == True:
walk_testfiles("regression-test-files/cash/Carbon/", compare, importer, CarbonErrors, "Carbon") walk_testfiles("regression-test-files/cash/Carbon/", compare, importer, CarbonErrors, "Carbon")
if sites['PKR'] == True: #if sites['PKR'] == True:
walk_testfiles("regression-test-files/cash/PKR/", compare, importer, PKRErrors, "PKR") # walk_testfiles("regression-test-files/cash/PKR/", compare, importer, PKRErrors, "PKR")
if sites['iPoker'] == True: if sites['iPoker'] == True:
walk_testfiles("regression-test-files/cash/iPoker/", compare, importer, iPokerErrors, "iPoker") walk_testfiles("regression-test-files/cash/iPoker/", compare, importer, iPokerErrors, "iPoker")
if sites['Winamax'] == True: if sites['Winamax'] == True:
walk_testfiles("regression-test-files/cash/Winamax/", compare, importer, WinamaxErrors, "Winamax") 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: if sites['Win2day'] == True:
walk_testfiles("regression-test-files/cash/Win2day/", compare, importer, Win2dayErrors, "Win2day") walk_testfiles("regression-test-files/cash/Win2day/", compare, importer, Win2dayErrors, "Win2day")

View File

@ -76,6 +76,11 @@ class Table(Table_Window):
self.title = titles[hwnd] self.title = titles[hwnd]
self.hud = None self.hud = None
self.number = hwnd 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): def get_geometry(self):
try: try:

View File

@ -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 # 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 # Table: 'Charenton-le-Pont' 9-max (real money) Seat #5 is the button
re_HandInfo = re.compile(u""" 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<GAME>Holdem|Omaha)\s
(?P<LIMIT>no\slimit|pot\slimit)\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<SB>[.0-9]+)(%(LS)s)?)/
((%(LS)s)?(?P<BB>[.0-9]+)(%(LS)s)?) ((%(LS)s)?(?P<BB>[.0-9]+)(%(LS)s)?)
\)\s-\s \)\s-\s
(?P<DATETIME>.*) (?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) """ % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE)
re_TailSplitHands = re.compile(r'\n\s*\n') 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_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_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_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_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_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_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_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) 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", "fl"],
["ring", "hold", "nl"], ["ring", "hold", "nl"],
["ring", "hold", "pl"], ["ring", "hold", "pl"],
["tour", "hold", "fl"],
["tour", "hold", "nl"],
["tour", "hold", "pl"],
] ]
def determineGameType(self, handText): def determineGameType(self, handText):
@ -160,7 +174,11 @@ class Winamax(HandHistoryConverter):
mg = m.groupdict() mg = m.groupdict()
info['type'] = 'ring' if mg.get('TOUR'):
info['type'] = 'tour'
elif mg.get('RING'):
info['type'] = 'ring'
info['currency'] = 'EUR' info['currency'] = 'EUR'
if 'LIMIT' in mg: 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 = 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") hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, "CET", "UTC")
if key == 'HID1': if key == 'HID1':
hand.handid = "1%.4d%s%s"%(int(info['HID2']),info['HID1'],info['HID3'])
# Need to remove non-alphanumerics for MySQL # 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': if key == 'TABLE':
hand.tablename = info[key] 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 # TODO: These
hand.buttonpos = 1 hand.buttonpos = 1
hand.maxseats = 10 # Set to None - Hand.py will guessMaxSeats() hand.maxseats = 10 # Set to None - Hand.py will guessMaxSeats()

View File

@ -44,6 +44,10 @@ class Table(Table_Window):
def find_table_parameters(self): 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 = ''' reg = '''
\s+(?P<XID>[\dxabcdef]+) # XID in hex \s+(?P<XID>[\dxabcdef]+) # XID in hex
\s(?P<TITLE>.+): # window title \s(?P<TITLE>.+): # window title
@ -53,38 +57,53 @@ class Table(Table_Window):
for listing in os.popen('xwininfo -root -tree').readlines(): for listing in os.popen('xwininfo -root -tree').readlines():
if re.search(self.search_string, listing, re.I): if re.search(self.search_string, listing, re.I):
mo = re.match(reg, listing, re.VERBOSE) 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"]) title = re.sub('\"', '', mo.groupdict()["TITLE"])
if self.check_bad_words(title): continue if self.check_bad_words(title): continue
self.number = int( mo.groupdict()["XID"], 0 ) self.number = int( mo.groupdict()["XID"], 0 )
self.title = title self.title = title
self.hud = None # specified later
break break
if self.number is None: if self.number is None:
return None return None
(self.window, self.parent) = self.get_window_from_xid(self.number)
self.window = self.get_window_from_xid(self.number)
self.parent = self.window.query_tree().parent # 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): def get_window_from_xid(self, id):
for outside in root.query_tree().children: for top_level in root.query_tree().children:
if outside.id == id: if top_level.id == id:
return outside return (top_level, None)
for inside in outside.query_tree().children: for w in treewalk(top_level):
if inside.id == id: if w.id == id:
return inside return (w, top_level)
return None
def get_geometry(self): def get_geometry(self):
try: try:
my_geo = self.window.get_geometry() my_geo = self.window.get_geometry()
pa_geo = self.parent.get_geometry() if self.parent is None:
return {'x' : my_geo.x + pa_geo.x, return {'x' : my_geo.x,
'y' : my_geo.y + pa_geo.y, 'y' : my_geo.y,
'width' : my_geo.width, 'width' : my_geo.width,
'height' : my_geo.height '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: except:
return None return None
@ -96,7 +115,18 @@ class Table(Table_Window):
except AttributeError: except AttributeError:
return None 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)

View File

@ -14,7 +14,6 @@
#You should have received a copy of the GNU Affero General Public License #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/>. #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. #In the "official" distribution you can find the license in agpl-3.0.txt.
import L10n import L10n
_ = L10n.get_translation() _ = L10n.get_translation()
@ -76,7 +75,7 @@ try:
pygtk.require('2.0') pygtk.require('2.0')
import gtk import gtk
import pango import pango
except: except ImportError:
print _("Unable to load PyGTK modules required for GUI. Please install PyCairo, PyGObject, and PyGTK from www.pygtk.org.") 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.")) raw_input(_("Press ENTER to continue."))
exit() exit()
@ -87,18 +86,18 @@ import interlocks
try: try:
import matplotlib import matplotlib
matplotlib_version = matplotlib.__version__ matplotlib_version = matplotlib.__version__
except: except ImportError:
matplotlib_version = 'not found' matplotlib_version = 'not found'
try: try:
import numpy import numpy
numpy_version = numpy.__version__ numpy_version = numpy.__version__
except: except ImportError:
numpy_version = 'not found' numpy_version = 'not found'
try: try:
import sqlite3 import sqlite3
sqlite3_version = sqlite3.version sqlite3_version = sqlite3.version
sqlite_version = sqlite3.sqlite_version sqlite_version = sqlite3.sqlite_version
except: except ImportError:
sqlite3_version = 'not found' sqlite3_version = 'not found'
sqlite_version = 'not found' sqlite_version = 'not found'
@ -116,13 +115,15 @@ import GuiAutoImport
import GuiGraphViewer import GuiGraphViewer
import GuiTourneyGraphViewer import GuiTourneyGraphViewer
import GuiSessionViewer import GuiSessionViewer
import GuiReplayer
import GuiStove
import SQL import SQL
import Database import Database
import Configuration import Configuration
import Exceptions import Exceptions
import Stats import Stats
VERSION = "0.21-rc1" VERSION = "0.21-rc1 plus git"
class fpdb: class fpdb:
@ -203,7 +204,7 @@ class fpdb:
gtk.Button.set_relief(button, gtk.RELIEF_NONE) gtk.Button.set_relief(button, gtk.RELIEF_NONE)
settings = gtk.Widget.get_settings(button); settings = gtk.Widget.get_settings(button);
(w,h) = gtk.icon_size_lookup_for_settings(settings, gtk.ICON_SIZE_SMALL_TOOLBAR); (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() image.show()
iconBox.pack_start(image, True, False, 0) iconBox.pack_start(image, True, False, 0)
button.add(iconBox) button.add(iconBox)
@ -778,6 +779,8 @@ class fpdb:
<menuitem action="tourneyviewer"/> <menuitem action="tourneyviewer"/>
<menuitem action="posnstats"/> <menuitem action="posnstats"/>
<menuitem action="sessionstats"/> <menuitem action="sessionstats"/>
<menuitem action="replayer"/>
<menuitem action="stove"/>
</menu> </menu>
<menu action="database"> <menu action="database">
<menuitem action="maintaindbs"/> <menuitem action="maintaindbs"/>
@ -814,11 +817,13 @@ class fpdb:
('hudConfigurator', None, _('_HUD Configurator'), _('<control>H'), 'HUD Configurator', self.diaHudConfigurator), ('hudConfigurator', None, _('_HUD Configurator'), _('<control>H'), 'HUD Configurator', self.diaHudConfigurator),
('graphs', None, _('_Graphs'), _('<control>G'), 'Graphs', self.tabGraphViewer), ('graphs', None, _('_Graphs'), _('<control>G'), 'Graphs', self.tabGraphViewer),
('tourneygraphs', None, _('Tourney Graphs'), None, 'TourneyGraphs', self.tabTourneyGraphViewer), ('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), ('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), ('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), ('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), ('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), ('sessionstats', None, _('Session Stats'), None, 'Session Stats', self.tab_session_stats),
('replayer', None, _('Hand _Replayer'), None, 'Hand Replayer', self.tab_replayer),
('database', None, _('_Database')), ('database', None, _('_Database')),
('maintaindbs', None, _('_Maintain Databases'), None, 'Maintain Databases', self.dia_maintain_dbs), ('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), ('createtabs', None, _('Create or Recreate _Tables'), None, 'Create or Recreate Tables ', self.dia_recreate_tables),
@ -929,6 +934,7 @@ class fpdb:
response = diaDbVersionWarning.run() response = diaDbVersionWarning.run()
diaDbVersionWarning.destroy() diaDbVersionWarning.destroy()
# TODO: This should probably be setup in GUI Init
if self.status_bar is None: if self.status_bar is None:
self.status_bar = gtk.Label("") self.status_bar = gtk.Label("")
self.main_vbox.pack_end(self.status_bar, False, True, 0) self.main_vbox.pack_end(self.status_bar, False, True, 0)
@ -962,8 +968,8 @@ class fpdb:
self.quitting = True self.quitting = True
# TODO: check if current settings differ from profile, if so offer to save or abort # TODO: check if current settings differ from profile, if so offer to save or abort
if self.db!=None: if self.db is not None:
if self.db.backend==self.db.MYSQL_INNODB: if self.db.backend == self.db.MYSQL_INNODB:
try: try:
import _mysql_exceptions import _mysql_exceptions
if self.db is not None and self.db.is_connected(): if self.db is not None and self.db.is_connected():
@ -989,8 +995,11 @@ class fpdb:
"""opens the auto import tab""" """opens the auto import tab"""
new_aimp_thread = GuiAutoImport.GuiAutoImport(self.settings, self.config, self.sql, self.window) new_aimp_thread = GuiAutoImport.GuiAutoImport(self.settings, self.config, self.sql, self.window)
self.threads.append(new_aimp_thread) 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")) 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): def tab_bulk_import(self, widget, data=None):
"""opens a tab for bulk importing""" """opens a tab for bulk importing"""
@ -1000,7 +1009,7 @@ class fpdb:
self.add_and_display_tab(bulk_tab, _("Bulk Import")) self.add_and_display_tab(bulk_tab, _("Bulk Import"))
def tab_tourney_import(self, widget, data=None): 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) new_import_thread = GuiTourneyImport.GuiTourneyImport(self.settings, self.config, self.sql, self.window)
self.threads.append(new_import_thread) self.threads.append(new_import_thread)
bulk_tab=new_import_thread.get_vbox() bulk_tab=new_import_thread.get_vbox()
@ -1043,6 +1052,12 @@ class fpdb:
ps_tab=new_ps_thread.get_vbox() ps_tab=new_ps_thread.get_vbox()
self.add_and_display_tab(ps_tab, _("Session Stats")) 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): def tab_main_help(self, widget, data=None):
"""Displays a tab with the main fpdb help screen""" """Displays a tab with the main fpdb help screen"""
mh_tab=gtk.Label(_("""Fpdb needs translators! 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() gv_tab = new_gv_thread.get_vbox()
self.add_and_display_tab(gv_tab, _("Tourney Graphs")) 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): def __init__(self):
# no more than 1 process can this lock at a time: # no more than 1 process can this lock at a time:
self.lock = interlocks.InterProcessLock(name="fpdb_global_lock") self.lock = interlocks.InterProcessLock(name="fpdb_global_lock")
self.db = None self.db = None
self.status_bar = None self.status_bar = None
self.quitting = False self.quitting = False
self.visible = 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) 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("delete_event", self.delete_event)
self.window.connect("destroy", self.destroy) self.window.connect("destroy", self.destroy)
self.window.set_title("Free Poker DB - v%s" % (VERSION, )) 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) self.window.set_border_width(1)
defx, defy = 900, 720 defx, defy = 900, 720
sx, sy = gtk.gdk.screen_width(), gtk.gdk.screen_height() 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_default_size(defx, defy)
self.window.set_resizable(True) self.window.set_resizable(True)
# main area of window
self.main_vbox = gtk.VBox(False, 1) self.main_vbox = gtk.VBox(False, 1)
self.main_vbox.set_border_width(1) self.main_vbox.set_border_width(1)
self.window.add(self.main_vbox) self.window.add(self.main_vbox)
self.main_vbox.show() self.main_vbox.show()
# create our Main Menu Bar
menubar = self.get_menu(self.window) menubar = self.get_menu(self.window)
self.main_vbox.pack_start(menubar, False, True, 0) self.main_vbox.pack_start(menubar, False, True, 0)
menubar.show() 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 = gtk.Notebook()
self.nb.set_show_tabs(True) self.nb.set_show_tabs(True)
self.nb.show() self.nb.show()
self.main_vbox.pack_start(self.nb, True, True, 0) self.main_vbox.pack_start(self.nb, True, True, 0)
self.tabs=[] # the event_boxes forming the actual tabs 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.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.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.nb_tab_names = [] # list of tab names currently displayed in notebook
# create the first tab
self.tab_main_help(None, None) 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() if not options.hidden:
self.visible = True # Flip on self.window.show()
self.visible = True # Flip on
self.load_profile(create_db = True) self.load_profile(create_db = True)
# setup error logging
if not options.errorsToConsole: if not options.errorsToConsole:
fileName = os.path.join(self.config.dir_log, 'fpdb-errors.txt') 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) \ 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) errorFile = open(fileName, 'w', 0)
sys.stderr = errorFile sys.stderr = errorFile
# set up tray-icon and menu
self.statusIcon = gtk.StatusIcon() self.statusIcon = gtk.StatusIcon()
# use getcwd() here instead of sys.path[0] so that py2exe works: # use getcwd() here instead of sys.path[0] so that py2exe works:
cards = os.path.join(os.getcwd(), '..','gfx','fpdb-cards.png') cards = os.path.join(os.getcwd(), '..','gfx','fpdb-cards.png')
if os.path.exists(cards): if os.path.exists(cards):
self.statusIcon.set_from_file(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'): elif os.path.exists('/usr/share/pixmaps/fpdb-cards.png'):
self.statusIcon.set_from_file('/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') 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.set_tooltip("Free Poker Database")
self.statusIcon.connect('activate', self.statusicon_activate) self.statusIcon.connect('activate', self.statusicon_activate)
self.statusMenu = gtk.Menu() self.statusMenu = gtk.Menu()
menuItem = gtk.ImageMenuItem(gtk.STOCK_ABOUT)
menuItem.connect('activate', self.dia_about) # set default menu options
self.statusMenu.append(menuItem) self.addImageToTrayMenu(gtk.STOCK_ABOUT, self.dia_about)
self.addImageToTrayMenu(gtk.STOCK_QUIT, self.quit)
menuItem = gtk.ImageMenuItem(gtk.STOCK_QUIT)
menuItem.connect('activate', self.quit)
self.statusMenu.append(menuItem)
self.statusIcon.connect('popup-menu', self.statusicon_menu, self.statusMenu) self.statusIcon.connect('popup-menu', self.statusicon_menu, self.statusMenu)
self.statusIcon.set_visible(True) self.statusIcon.set_visible(True)
self.window.connect('window-state-event', self.window_state_event_cb) self.window.connect('window-state-event', self.window_state_event_cb)
sys.stderr.write(_("fpdb starting ...")) 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): def __iconify(self):
self.visible = False self.visible = False

24
pyfpdb/fpdb_import.py Executable file → Normal file
View File

@ -83,6 +83,7 @@ class Importer:
self.pos_in_file = {} # dict to remember how far we have read in the file self.pos_in_file = {} # dict to remember how far we have read in the file
#Set defaults #Set defaults
self.callHud = self.config.get_import_parameters().get("callFpdbHud") self.callHud = self.config.get_import_parameters().get("callFpdbHud")
self.cacheSessions = self.config.get_import_parameters().get("cacheSessions")
# CONFIGURATION OPTIONS # CONFIGURATION OPTIONS
self.settings.setdefault("minPrint", 30) self.settings.setdefault("minPrint", 30)
@ -110,6 +111,9 @@ class Importer:
#Set functions #Set functions
def setCallHud(self, value): def setCallHud(self, value):
self.callHud = value self.callHud = value
def setCacheSessions(self, value):
self.cacheSessions = value
def setMinPrint(self, value): def setMinPrint(self, value):
self.settings['minPrint'] = int(value) self.settings['minPrint'] = int(value)
@ -491,14 +495,22 @@ class Importer:
if hand is not None and not hand.is_duplicate: if hand is not None and not hand.is_duplicate:
hand.updateHudCache(self.database) hand.updateHudCache(self.database)
self.database.commit() 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 #pipe the Hands.id out to the HUD
for hid in to_hud: if self.caller:
try: for hid in to_hud:
print _("fpdb_import: sending hand to hud"), hand.dbid_hands, "pipe =", self.caller.pipe_to_hud try:
self.caller.pipe_to_hud.stdin.write("%s" % (hid) + os.linesep) print _("fpdb_import: sending hand to hud"), hand.dbid_hands, "pipe =", self.caller.pipe_to_hud
except IOError, e: self.caller.pipe_to_hud.stdin.write("%s" % (hid) + os.linesep)
log.error(_("Failed to send hand to HUD: %s") % e) except IOError, e:
log.error(_("Failed to send hand to HUD: %s") % e)
errors = getattr(hhc, 'numErrors') errors = getattr(hhc, 'numErrors')
stored = getattr(hhc, 'numHands') stored = getattr(hhc, 'numHands')

View File

@ -45,7 +45,7 @@ class InterProcessLockBase:
def acquire_impl(self, wait): abstract 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: if source == None:
source="Unknown" source="Unknown"
if self._has_lock: # make sure 2nd acquire in same process fails if self._has_lock: # make sure 2nd acquire in same process fails

View File

@ -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 1 - PLAYER1 ($0.17 in chips)
Seat 2 - PLAYER2 ($0.36 in chips) Seat 2 - PLAYER2 ($0.36 in chips)
Seat 3 - PLAYER3 ($3.46 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 6 - PLAYER5 ($1.07 in chips)
Seat 7 - PLAYER6 ($2.31 in chips) Seat 7 - PLAYER6 ($2.31 in chips)
Seat 8 - PLAYER7 ($0.93 in chips) Seat 8 - PLAYER7 ($0.93 in chips)
@ -12,12 +12,12 @@ PLAYER6 - Ante $0.01
PLAYER3 - Ante $0.01 PLAYER3 - Ante $0.01
PLAYER7 - Ante $0.01 PLAYER7 - Ante $0.01
PLAYER2 - Ante $0.01 PLAYER2 - Ante $0.01
PLAYER4 - Ante $0.01 Hero - Ante $0.01
*** 3rd STREET *** *** 3rd STREET ***
Player1 - Pocket [H H Js] Player1 - Pocket [H H Js]
PLAYER2 - Pocket [H H 7h] PLAYER2 - Pocket [H H 7h]
PLAYER3 - Pocket [H H 6s] PLAYER3 - Pocket [H H 6s]
PLAYER4 - Pocket [10c 5c 7s] Hero - Pocket [10c 5c 7s]
PLAYER5 - Pocket [H H Qh] PLAYER5 - Pocket [H H Qh]
PLAYER6 - Pocket [H H 9c] PLAYER6 - Pocket [H H 9c]
PLAYER7 - Pocket [H H 3s] PLAYER7 - Pocket [H H 3s]
@ -25,13 +25,13 @@ PLAYER7 - Bring-In $0.01
Player1 - Calls $0.01 Player1 - Calls $0.01
PLAYER2 - Folds PLAYER2 - Folds
PLAYER3 - Calls $0.01 PLAYER3 - Calls $0.01
PLAYER4 - Folds Hero - Folds
PLAYER5 - Folds PLAYER5 - Folds
PLAYER6 - Calls $0.01 PLAYER6 - Calls $0.01
*** 4TH STREET *** *** 4TH STREET ***
Player1 - Pocket [H H Js 10d] Player1 - Pocket [H H Js 10d]
PLAYER3 - Pocket [H H 6s Ah] PLAYER3 - Pocket [H H 6s Ah]
PLAYER4 - Pocket [10c 5c 7s] Hero - Pocket [10c 5c 7s]
PLAYER6 - Pocket [H H 9c Ks] PLAYER6 - Pocket [H H 9c Ks]
PLAYER7 - Pocket [H H 3s Qc] PLAYER7 - Pocket [H H 3s Qc]
PLAYER3 - Checks PLAYER3 - Checks
@ -41,7 +41,7 @@ Player1 - Checks
*** 5TH STREET *** *** 5TH STREET ***
Player1 - Pocket [H H Js 10d Kh] Player1 - Pocket [H H Js 10d Kh]
PLAYER3 - Pocket [H H 6s Ah 8c] PLAYER3 - Pocket [H H 6s Ah 8c]
PLAYER4 - Pocket [10c 5c 7s] Hero - Pocket [10c 5c 7s]
PLAYER6 - Pocket [H H 9c Ks 10s] PLAYER6 - Pocket [H H 9c Ks 10s]
PLAYER7 - Pocket [H H 3s Qc 6c] PLAYER7 - Pocket [H H 3s Qc 6c]
PLAYER3 - Bets $0.04 PLAYER3 - Bets $0.04
@ -51,7 +51,7 @@ Player1 - Calls $0.04
*** 6TH STREET *** *** 6TH STREET ***
Player1 - Pocket [H H Js 10d Kh 2c] Player1 - Pocket [H H Js 10d Kh 2c]
PLAYER3 - Pocket [H H 6s Ah 8c Jc] 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] PLAYER6 - Pocket [H H 9c Ks 10s 8h]
PLAYER7 - Pocket [H H 3s Qc 6c Qs] PLAYER7 - Pocket [H H 3s Qc 6c Qs]
PLAYER7 - Checks PLAYER7 - Checks
@ -63,7 +63,7 @@ Player1 - Calls $0.04
*** RIVER *** *** RIVER ***
Player1 - Pocket [H H Js 10d Kh 2c H] Player1 - Pocket [H H Js 10d Kh 2c H]
PLAYER3 - Pocket [H H 6s Ah 8c Jc 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] PLAYER6 - Pocket [H H 9c Ks 10s 8h H]
PLAYER7 - Pocket [H H 3s Qc 6c Qs H] PLAYER7 - Pocket [H H 3s Qc 6c Qs H]
PLAYER7 - Checks 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 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 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 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 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 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] 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]

View File

@ -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) Table Death 1 6-max (Real Money)
Seat 2 is the button Seat 2 is the button
Total number of active players : 6 Total number of active players : 6
Seat 1: Player6 ( $1 ) Seat 1: Hero ( $1 )
Seat 2: Player3 ( $9.38 ) Seat 2: Player3 ( $9.38 )
Seat 3: Player2 ( $2.82 ) Seat 3: Player2 ( $2.82 )
Seat 4: Player4 ( $4.13 ) Seat 4: Player4 ( $4.13 )
@ -11,18 +11,18 @@ Seat 5: Player5 ( $28.77 )
Seat 6: Player1 ( $6.46 ) Seat 6: Player1 ( $6.46 )
Player2 posts small blind [$0.05] Player2 posts small blind [$0.05]
Player4 posts big blind [$0.10] Player4 posts big blind [$0.10]
Player6 posts big blind [$0.10] Hero posts big blind [$0.10]
** Dealing down cards ** ** Dealing down cards **
Dealt to Player6 [ 7c, 6c, 5h, Jh ] Dealt to Hero [ 7c, 6c, 5h, Jh ]
Player5 folds Player5 folds
Player1 calls [$0.10] Player1 calls [$0.10]
Player6 checks Hero checks
Player3 calls [$0.10] Player3 calls [$0.10]
Player2 raises to [$0.30] Player2 raises to [$0.30]
Player4 calls [$0.20] Player4 calls [$0.20]
Player1 calls [$0.20] Player1 calls [$0.20]
Player6 goes all-in Hero goes all-in
Player6 raises to [$1] Hero raises to [$1]
Player3 calls [$0.90] Player3 calls [$0.90]
Player2 calls [$0.70] Player2 calls [$0.70]
Player4 calls [$0.70] Player4 calls [$0.70]
@ -43,7 +43,7 @@ Player4 goes all-in
Player4 bets [$3.03] Player4 bets [$3.03]
Player1 calls [$3.03] Player1 calls [$3.03]
** Showdown ** ** 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 Player4 shows [ 7d, 8c, 3d, 6h ] a straight flush, Seven to Three
Player1 shows [ 3h, 4h, Td, 4s ] four of a kind, Fours Player1 shows [ 3h, 4h, Td, 4s ] four of a kind, Fours
** Hand Conclusion ** ** Hand Conclusion **

View File

@ -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"> <game id="15245216-1000" starttime="20081013150000" numholecards="2" gametype="2" realmoney="true" data="20081013|Niagara Falls (15245216)|15245216|15245216-1000|false">
<players dealer="8"> <players dealer="8">
<player seat="3" nickname="Player1" balance="$34.13" dealtin="true" /> <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="1" nickname="Player3" balance="$55.64" dealtin="true" />
<player seat="0" nickname="Player4" balance="$19.72" dealtin="true" /> <player seat="0" nickname="Player4" balance="$19.72" dealtin="true" />
<player seat="7" nickname="Player5" balance="$25.16" dealtin="true" /> <player seat="7" nickname="Player5" balance="$25.16" dealtin="true" />

View File

@ -92,7 +92,7 @@
'wonWhenSeenStreet2': 0.0, 'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0, 'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}, 'wonWhenSeenStreet4': 0.0},
u'Player2': { 'card1': 13, u'Hero': { 'card1': 13,
'card2': 46, 'card2': 46,
'card3': 0, 'card3': 0,
'card4': 0, 'card4': 0,

View File

@ -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

View File

@ -5,19 +5,19 @@ Table Cortland XIV
Seat 6 is the button Seat 6 is the button
Total number of players: 6 Total number of players: 6
Seat 1: zlodeu123 ( $ 12.40 USD ) Seat 1: zlodeu123 ( $ 12.40 USD )
Seat 2: EricBlade ( $ 5 USD ) Seat 2: Hero ( $ 5 USD )
Seat 3: gabitzatoade ( $ 5.45 USD ) Seat 3: gabitzatoade ( $ 5.45 USD )
Seat 5: N0pr3s3n7 ( $ 10.29 USD ) Seat 5: N0pr3s3n7 ( $ 10.29 USD )
Seat 6: Coolcatcool ( $ 8.30 USD ) Seat 6: Coolcatcool ( $ 8.30 USD )
zlodeu123: posts small blind [$ 0.05 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 ** ** Dealing down cards **
Dealt to EricBlade [ 9h, Qd ] Dealt to Hero [ 9h, Qd ]
gabitzatoade folds gabitzatoade folds
N0pr3s3n7 raises [$ 0.35 USD] N0pr3s3n7 raises [$ 0.35 USD]
Coolcatcool folds Coolcatcool folds
zlodeu123 folds zlodeu123 folds
EricBlade folds Hero folds
N0pr3s3n7 does not show cards N0pr3s3n7 does not show cards
N0pr3s3n7 wins $ 0.25 USD from main pot N0pr3s3n7 wins $ 0.25 USD from main pot
@ -30,21 +30,21 @@ Table Cortland XIV
Seat 1 is the button Seat 1 is the button
Total number of players: 5 Total number of players: 5
Seat 1: zlodeu123 ( $ 12.35 USD ) 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 3: gabitzatoade ( $ 5.45 USD )
Seat 5: N0pr3s3n7 ( $ 10.44 USD ) Seat 5: N0pr3s3n7 ( $ 10.44 USD )
Seat 6: Coolcatcool ( $ 8.30 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] gabitzatoade: posts big blind [$ 0.10 USD]
** Dealing down cards ** ** Dealing down cards **
Dealt to EricBlade [ Qd, 9d ] Dealt to Hero [ Qd, 9d ]
N0pr3s3n7 folds N0pr3s3n7 folds
Coolcatcool folds Coolcatcool folds
zlodeu123 folds zlodeu123 folds
EricBlade raises [$ 0.25 USD] Hero raises [$ 0.25 USD]
gabitzatoade folds gabitzatoade folds
EricBlade does not show cards Hero does not show cards
EricBlade wins $ 0.20 USD from main pot Hero wins $ 0.20 USD from main pot
@ -55,7 +55,7 @@ Table Cortland XIV
Seat 2 is the button Seat 2 is the button
Total number of players: 5 Total number of players: 5
Seat 1: zlodeu123 ( $ 12.35 USD ) Seat 1: zlodeu123 ( $ 12.35 USD )
Seat 2: EricBlade ( $ 5 USD ) Seat 2: Hero ( $ 5 USD )
Seat 3: gabitzatoade ( $ 5.35 USD ) Seat 3: gabitzatoade ( $ 5.35 USD )
Seat 4: Miazza ( new player ) Seat 4: Miazza ( new player )
Seat 5: N0pr3s3n7 ( $ 10.44 USD ) Seat 5: N0pr3s3n7 ( $ 10.44 USD )
@ -63,24 +63,24 @@ Seat 6: Coolcatcool ( $ 8.30 USD )
gabitzatoade: posts small blind [$ 0.05 USD] gabitzatoade: posts small blind [$ 0.05 USD]
N0pr3s3n7: posts big blind [$ 0.10 USD] N0pr3s3n7: posts big blind [$ 0.10 USD]
** Dealing down cards ** ** Dealing down cards **
Dealt to EricBlade [ 9c, Ac ] Dealt to Hero [ 9c, Ac ]
Coolcatcool folds Coolcatcool folds
zlodeu123 folds zlodeu123 folds
EricBlade raises [$ 0.35 USD] Hero raises [$ 0.35 USD]
gabitzatoade calls [$ 0.30 USD] gabitzatoade calls [$ 0.30 USD]
N0pr3s3n7 folds N0pr3s3n7 folds
** Dealing Flop ** [ 4c, Kh, 6h ] ** Dealing Flop ** [ 4c, Kh, 6h ]
gabitzatoade checks gabitzatoade checks
EricBlade: bets [$ 0.40 USD] Hero: bets [$ 0.40 USD]
gabitzatoade calls [$ 0.40 USD] gabitzatoade calls [$ 0.40 USD]
** Dealing Turn ** [ Qh ] ** Dealing Turn ** [ Qh ]
gabitzatoade checks gabitzatoade checks
Miazza has joined the table Miazza has joined the table
EricBlade checks Hero checks
** Dealing River ** [ Qd ] ** Dealing River ** [ Qd ]
gabitzatoade checks gabitzatoade checks
EricBlade checks Hero checks
EricBlade shows [ 9c, Ac ] a pair of queens Hero shows [ 9c, Ac ] a pair of queens
gabitzatoade shows [ 4s, 4d ] a full house, fours full 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 ] 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 Seat 3 is the button
Total number of players: 6 Total number of players: 6
Seat 1: zlodeu123 ( $ 12.35 USD ) 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 3: gabitzatoade ( $ 6.12 USD )
Seat 4: Miazza ( $ 5 USD ) Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.34 USD ) Seat 5: N0pr3s3n7 ( $ 10.34 USD )
@ -101,18 +101,18 @@ Seat 6: Coolcatcool ( $ 8.30 USD )
N0pr3s3n7: posts small blind [$ 0.05 USD] N0pr3s3n7: posts small blind [$ 0.05 USD]
Coolcatcool: posts big blind [$ 0.10 USD] Coolcatcool: posts big blind [$ 0.10 USD]
** Dealing down cards ** ** Dealing down cards **
Dealt to EricBlade [ Kc, Jd ] Dealt to Hero [ Kc, Jd ]
zlodeu123 raises [$ 0.35 USD] zlodeu123 raises [$ 0.35 USD]
EricBlade calls [$ 0.35 USD] Hero calls [$ 0.35 USD]
gabitzatoade folds gabitzatoade folds
N0pr3s3n7 folds N0pr3s3n7 folds
Coolcatcool folds Coolcatcool folds
** Dealing Flop ** [ 9s, 3c, Jc ] ** Dealing Flop ** [ 9s, 3c, Jc ]
zlodeu123: bets [$ 0.60 USD] zlodeu123: bets [$ 0.60 USD]
EricBlade raises [$ 1.80 USD] Hero raises [$ 1.80 USD]
zlodeu123 folds zlodeu123 folds
EricBlade does not show cards Hero does not show cards
EricBlade wins $ 1.95 USD from main pot Hero wins $ 1.95 USD from main pot
@ -123,7 +123,7 @@ Table Cortland XIV
Seat 5 is the button Seat 5 is the button
Total number of players: 6 Total number of players: 6
Seat 1: zlodeu123 ( $ 11.40 USD ) 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 3: gabitzatoade ( $ 6.12 USD )
Seat 4: Miazza ( $ 5 USD ) Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.29 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] zlodeu123: posts big blind [$ 0.10 USD]
Miazza sits out Miazza sits out
** Dealing down cards ** ** Dealing down cards **
Dealt to EricBlade [ 6d, 3d ] Dealt to Hero [ 6d, 3d ]
EricBlade folds Hero folds
gabitzatoade calls [$ 0.10 USD] gabitzatoade calls [$ 0.10 USD]
N0pr3s3n7 raises [$ 0.30 USD] N0pr3s3n7 raises [$ 0.30 USD]
Coolcatcool folds Coolcatcool folds
@ -155,21 +155,21 @@ Table Cortland XIV
Seat 6 is the button Seat 6 is the button
Total number of players: 6 Total number of players: 6
Seat 1: zlodeu123 ( $ 11.30 USD ) 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 3: gabitzatoade ( $ 5.82 USD )
Seat 4: Miazza ( $ 5 USD ) Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.71 USD ) Seat 5: N0pr3s3n7 ( $ 10.71 USD )
Seat 6: Coolcatcool ( $ 8.15 USD ) Seat 6: Coolcatcool ( $ 8.15 USD )
zlodeu123: posts small blind [$ 0.05 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 ** ** Dealing down cards **
Dealt to EricBlade [ Qh, Qd ] Dealt to Hero [ Qh, Qd ]
gabitzatoade folds gabitzatoade folds
N0pr3s3n7 folds N0pr3s3n7 folds
Coolcatcool folds Coolcatcool folds
zlodeu123 folds zlodeu123 folds
EricBlade does not show cards Hero does not show cards
EricBlade wins $ 0.10 USD from main pot Hero wins $ 0.10 USD from main pot
@ -180,22 +180,22 @@ Table Cortland XIV
Seat 1 is the button Seat 1 is the button
Total number of players: 6 Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD ) 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 3: gabitzatoade ( $ 5.82 USD )
Seat 4: Miazza ( $ 5 USD ) Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.71 USD ) Seat 5: N0pr3s3n7 ( $ 10.71 USD )
Seat 6: Coolcatcool ( $ 8.15 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] gabitzatoade: posts big blind [$ 0.10 USD]
** Dealing down cards ** ** Dealing down cards **
Dealt to EricBlade [ Ts, Ks ] Dealt to Hero [ Ts, Ks ]
N0pr3s3n7 folds N0pr3s3n7 folds
Coolcatcool folds Coolcatcool folds
zlodeu123 folds zlodeu123 folds
EricBlade raises [$ 0.25 USD] Hero raises [$ 0.25 USD]
gabitzatoade folds gabitzatoade folds
EricBlade does not show cards Hero does not show cards
EricBlade wins $ 0.20 USD from main pot Hero wins $ 0.20 USD from main pot
@ -206,7 +206,7 @@ Table Cortland XIV
Seat 2 is the button Seat 2 is the button
Total number of players: 6 Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD ) 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 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 5 USD ) Seat 4: Miazza ( $ 5 USD )
Seat 5: N0pr3s3n7 ( $ 10.71 USD ) Seat 5: N0pr3s3n7 ( $ 10.71 USD )
@ -214,11 +214,11 @@ Seat 6: Coolcatcool ( $ 8.15 USD )
gabitzatoade: posts small blind [$ 0.05 USD] gabitzatoade: posts small blind [$ 0.05 USD]
Miazza: posts big blind [$ 0.10 USD] Miazza: posts big blind [$ 0.10 USD]
** Dealing down cards ** ** Dealing down cards **
Dealt to EricBlade [ 2c, 4s ] Dealt to Hero [ 2c, 4s ]
N0pr3s3n7 folds N0pr3s3n7 folds
Coolcatcool folds Coolcatcool folds
zlodeu123 raises [$ 0.35 USD] zlodeu123 raises [$ 0.35 USD]
EricBlade folds Hero folds
gabitzatoade calls [$ 0.30 USD] gabitzatoade calls [$ 0.30 USD]
Miazza folds Miazza folds
** Dealing Flop ** [ Ad, 6d, 6s ] ** Dealing Flop ** [ Ad, 6d, 6s ]
@ -245,7 +245,7 @@ Table Cortland XIV
Seat 3 is the button Seat 3 is the button
Total number of players: 6 Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD ) 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 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 4.90 USD ) Seat 4: Miazza ( $ 4.90 USD )
Seat 5: N0pr3s3n7 ( $ 10.71 USD ) Seat 5: N0pr3s3n7 ( $ 10.71 USD )
@ -253,15 +253,15 @@ Seat 6: Coolcatcool ( $ 8.15 USD )
Miazza: posts small blind [$ 0.05 USD] Miazza: posts small blind [$ 0.05 USD]
N0pr3s3n7: posts big blind [$ 0.10 USD] N0pr3s3n7: posts big blind [$ 0.10 USD]
** Dealing down cards ** ** Dealing down cards **
Dealt to EricBlade [ 7d, Kd ] Dealt to Hero [ 7d, Kd ]
Coolcatcool folds Coolcatcool folds
zlodeu123 folds zlodeu123 folds
EricBlade raises [$ 0.35 USD] Hero raises [$ 0.35 USD]
gabitzatoade folds gabitzatoade folds
Miazza folds Miazza folds
N0pr3s3n7 folds N0pr3s3n7 folds
EricBlade does not show cards Hero does not show cards
EricBlade wins $ 0.25 USD from main pot Hero wins $ 0.25 USD from main pot
@ -272,7 +272,7 @@ Table Cortland XIV
Seat 4 is the button Seat 4 is the button
Total number of players: 6 Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD ) 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 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 4.85 USD ) Seat 4: Miazza ( $ 4.85 USD )
Seat 5: N0pr3s3n7 ( $ 10.61 USD ) Seat 5: N0pr3s3n7 ( $ 10.61 USD )
@ -280,9 +280,9 @@ Seat 6: Coolcatcool ( $ 8.15 USD )
N0pr3s3n7: posts small blind [$ 0.05 USD] N0pr3s3n7: posts small blind [$ 0.05 USD]
Coolcatcool: posts big blind [$ 0.10 USD] Coolcatcool: posts big blind [$ 0.10 USD]
** Dealing down cards ** ** Dealing down cards **
Dealt to EricBlade [ 6d, Kc ] Dealt to Hero [ 6d, Kc ]
zlodeu123 folds zlodeu123 folds
EricBlade folds Hero folds
gabitzatoade folds gabitzatoade folds
Miazza raises [$ 0.35 USD] Miazza raises [$ 0.35 USD]
N0pr3s3n7 folds N0pr3s3n7 folds
@ -300,7 +300,7 @@ Table Cortland XIV
Seat 5 is the button Seat 5 is the button
Total number of players: 6 Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD ) 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 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 4.50 USD ) Seat 4: Miazza ( $ 4.50 USD )
Seat 5: N0pr3s3n7 ( $ 10.56 USD ) Seat 5: N0pr3s3n7 ( $ 10.56 USD )
@ -308,8 +308,8 @@ Seat 6: Coolcatcool ( $ 8.55 USD )
Coolcatcool: posts small blind [$ 0.05 USD] Coolcatcool: posts small blind [$ 0.05 USD]
zlodeu123: posts big blind [$ 0.10 USD] zlodeu123: posts big blind [$ 0.10 USD]
** Dealing down cards ** ** Dealing down cards **
Dealt to EricBlade [ 3h, 9s ] Dealt to Hero [ 3h, 9s ]
EricBlade folds Hero folds
gabitzatoade folds gabitzatoade folds
Miazza folds Miazza folds
N0pr3s3n7 folds N0pr3s3n7 folds
@ -326,22 +326,22 @@ Table Cortland XIV
Seat 6 is the button Seat 6 is the button
Total number of players: 6 Total number of players: 6
Seat 1: zlodeu123 ( $ 11.30 USD ) 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 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 4.50 USD ) Seat 4: Miazza ( $ 4.50 USD )
Seat 5: N0pr3s3n7 ( $ 10.56 USD ) Seat 5: N0pr3s3n7 ( $ 10.56 USD )
Seat 6: Coolcatcool ( $ 8.50 USD ) Seat 6: Coolcatcool ( $ 8.50 USD )
zlodeu123: posts small blind [$ 0.05 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 ** ** Dealing down cards **
Dealt to EricBlade [ Kd, 4h ] Dealt to Hero [ Kd, 4h ]
gabitzatoade folds gabitzatoade folds
Miazza folds Miazza folds
N0pr3s3n7 folds N0pr3s3n7 folds
Coolcatcool folds Coolcatcool folds
zlodeu123 folds zlodeu123 folds
EricBlade does not show cards Hero does not show cards
EricBlade wins $ 0.10 USD from main pot Hero wins $ 0.10 USD from main pot
@ -352,25 +352,25 @@ Table Cortland XIV
Seat 1 is the button Seat 1 is the button
Total number of players: 6 Total number of players: 6
Seat 1: zlodeu123 ( $ 11.25 USD ) 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 3: gabitzatoade ( $ 5.72 USD )
Seat 4: Miazza ( $ 4.50 USD ) Seat 4: Miazza ( $ 4.50 USD )
Seat 5: N0pr3s3n7 ( $ 10.56 USD ) Seat 5: N0pr3s3n7 ( $ 10.56 USD )
Seat 6: Coolcatcool ( $ 8.50 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] gabitzatoade: posts big blind [$ 0.10 USD]
** Dealing down cards ** ** Dealing down cards **
Dealt to EricBlade [ 9h, Th ] Dealt to Hero [ 9h, Th ]
Miazza folds Miazza folds
N0pr3s3n7 folds N0pr3s3n7 folds
Coolcatcool folds Coolcatcool folds
zlodeu123 folds zlodeu123 folds
EricBlade raises [$ 0.25 USD] Hero raises [$ 0.25 USD]
gabitzatoade calls [$ 0.20 USD] gabitzatoade calls [$ 0.20 USD]
** Dealing Flop ** [ 3d, 5d, 6c ] ** Dealing Flop ** [ 3d, 5d, 6c ]
EricBlade checks Hero checks
gabitzatoade: bets [$ 0.40 USD] gabitzatoade: bets [$ 0.40 USD]
EricBlade folds Hero folds
gabitzatoade does not show cards gabitzatoade does not show cards
gabitzatoade wins $ 0.57 USD from main pot gabitzatoade wins $ 0.57 USD from main pot
@ -383,7 +383,7 @@ Table Cortland XIV
Seat 2 is the button Seat 2 is the button
Total number of players: 5 Total number of players: 5
Seat 1: zlodeu123 ( $ 11.25 USD ) 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 3: gabitzatoade ( $ 5.99 USD )
Seat 4: Miazza ( $ 4.50 USD ) Seat 4: Miazza ( $ 4.50 USD )
Seat 5: N0pr3s3n7 ( $ 10.56 USD ) Seat 5: N0pr3s3n7 ( $ 10.56 USD )
@ -391,10 +391,10 @@ Seat 6: SAVCOMP ( new player )
gabitzatoade: posts small blind [$ 0.05 USD] gabitzatoade: posts small blind [$ 0.05 USD]
Miazza: posts big blind [$ 0.10 USD] Miazza: posts big blind [$ 0.10 USD]
** Dealing down cards ** ** Dealing down cards **
Dealt to EricBlade [ As, 4d ] Dealt to Hero [ As, 4d ]
N0pr3s3n7 folds N0pr3s3n7 folds
zlodeu123 raises [$ 0.35 USD] zlodeu123 raises [$ 0.35 USD]
EricBlade folds Hero folds
gabitzatoade calls [$ 0.30 USD] gabitzatoade calls [$ 0.30 USD]
SAVCOMP has joined the table SAVCOMP has joined the table
Miazza folds Miazza folds

View File

@ -4,15 +4,15 @@ Seat 2: stark00 ($4.41)
Seat 3: T0r3x ($12.97) Seat 3: T0r3x ($12.97)
Seat 4: yrthligar ($15) Seat 4: yrthligar ($15)
Seat 5: MANUTD ($8.56) Seat 5: MANUTD ($8.56)
Seat 6: gimick ($2) Seat 6: Hero ($2)
Seat 7: vision ($2.97) Seat 7: vision ($2.97)
Seat 8: shleekom ($2) Seat 8: shleekom ($2)
Seat 9: proud2Bwhack ($8.77) Seat 9: proud2Bwhack ($8.77)
MANUTD posts the small blind of $0.02 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 The button is in seat #4
*** HOLE CARDS *** *** HOLE CARDS ***
Dealt to gimick [Qs 4d] Dealt to Hero [Qs 4d]
vision folds vision folds
shleekom folds shleekom folds
proud2Bwhack folds proud2Bwhack folds
@ -23,9 +23,9 @@ yrthligar has 8 seconds left to act
yrthligar has timed out yrthligar has timed out
yrthligar folds yrthligar folds
MANUTD folds MANUTD folds
Uncalled bet of $0.03 returned to gimick Uncalled bet of $0.03 returned to Hero
gimick mucks Hero mucks
gimick wins the pot ($0.04) Hero wins the pot ($0.04)
*** SUMMARY *** *** SUMMARY ***
Total pot $0.04 | Rake $0 Total pot $0.04 | Rake $0
Seat 1: ronaldd1969 didn't bet (folded) 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 3: T0r3x didn't bet (folded)
Seat 4: yrthligar (button) didn't bet (folded) Seat 4: yrthligar (button) didn't bet (folded)
Seat 5: MANUTD (small blind) folded before the Flop 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 7: vision didn't bet (folded)
Seat 8: shleekom didn't bet (folded) Seat 8: shleekom didn't bet (folded)
Seat 9: proud2Bwhack didn't bet (folded) Seat 9: proud2Bwhack didn't bet (folded)

View File

@ -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 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 2: player2 ($0.70)
Seat 3: player1 ($0.98) Seat 3: player1 ($0.98)
Seat 4: player3 ($5.14) Seat 4: player3 ($5.14)
@ -7,24 +7,24 @@ Seat 5: player4 ($2)
Seat 6: player5 ($0.80) Seat 6: player5 ($0.80)
player1 posts the small blind of $0.01 player1 posts the small blind of $0.01
player3 posts the big blind of $0.02 player3 posts the big blind of $0.02
gimick posts $0.02 Hero posts $0.02
5 seconds left to act 5 seconds left to act
player5 posts $0.02 player5 posts $0.02
The button is in seat #2 The button is in seat #2
*** HOLE CARDS *** *** HOLE CARDS ***
Dealt to gimick [Qd Jc] Dealt to Hero [Qd Jc]
player4 folds player4 folds
player5 checks player5 checks
gimick checks Hero checks
player1 calls $0.01 player1 calls $0.01
player3 checks player3 checks
*** FLOP *** [3d As 2h] *** FLOP *** [3d As 2h]
player1 checks player1 checks
player3 checks player3 checks
player5 bets $0.02 player5 bets $0.02
gimick folds Hero folds
player1 folds player1 folds
gimick is sitting out Hero is sitting out
player3 calls $0.02 player3 calls $0.02
*** TURN *** [3d As 2h] [4h] *** TURN *** [3d As 2h] [4h]
player3 checks player3 checks
@ -41,7 +41,7 @@ player5 wins the pot ($0.15)
*** SUMMARY *** *** SUMMARY ***
Total pot $0.16 | Rake $0.01 Total pot $0.16 | Rake $0.01
Board: [3d As 2h 4h 7c] 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 2: player2 (button) is sitting out
Seat 3: player1 (small blind) folded on the Flop Seat 3: player1 (small blind) folded on the Flop
Seat 4: player3 (big blind) folded on the River Seat 4: player3 (big blind) folded on the River

View File

@ -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}

View File

@ -374,7 +374,7 @@
'wonWhenSeenStreet2': 0.0, 'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0, 'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}, 'wonWhenSeenStreet4': 0.0},
u'Player5': { 'card1': 1, u'Hero': { 'card1': 1,
'card2': 34, 'card2': 34,
'card3': 0, 'card3': 0,
'card4': 0, 'card4': 0,

View File

@ -4,15 +4,15 @@ Seat 2: stark00 ($4.41)
Seat 3: T0r3x ($12.97) Seat 3: T0r3x ($12.97)
Seat 4: yrthligar ($15) Seat 4: yrthligar ($15)
Seat 5: MANUTD ($8.56) Seat 5: MANUTD ($8.56)
Seat 6: gimick ($2) Seat 6: Hero ($2)
Seat 7: vision ($2.97) Seat 7: vision ($2.97)
Seat 8: shleekom ($2) Seat 8: shleekom ($2)
Seat 9: proud2Bwhack ($8.77) Seat 9: proud2Bwhack ($8.77)
MANUTD posts the small blind of $0.02 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 The button is in seat #4
*** HOLE CARDS *** *** HOLE CARDS ***
Dealt to gimick [Qs 4d] Dealt to Hero [Qs 4d]
vision folds vision folds
shleekom folds shleekom folds
proud2Bwhack folds proud2Bwhack folds
@ -23,9 +23,9 @@ yrthligar has 8 seconds left to act
yrthligar has timed out yrthligar has timed out
yrthligar folds yrthligar folds
MANUTD folds MANUTD folds
Uncalled bet of $0.03 returned to gimick Uncalled bet of $0.03 returned to Hero
gimick mucks Hero mucks
gimick wins the pot ($0.04) Hero wins the pot ($0.04)
*** SUMMARY *** *** SUMMARY ***
Total pot $0.04 | Rake $0 Total pot $0.04 | Rake $0
Seat 1: ronaldd1969 didn't bet (folded) 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 3: T0r3x didn't bet (folded)
Seat 4: yrthligar (button) didn't bet (folded) Seat 4: yrthligar (button) didn't bet (folded)
Seat 5: MANUTD (small blind) folded before the Flop 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 7: vision didn't bet (folded)
Seat 8: shleekom didn't bet (folded) Seat 8: shleekom didn't bet (folded)
Seat 9: proud2Bwhack didn't bet (folded) Seat 9: proud2Bwhack didn't bet (folded)

View File

@ -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}

View File

@ -186,7 +186,7 @@
'wonWhenSeenStreet2': 0.0, 'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0, 'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}, 'wonWhenSeenStreet4': 0.0},
u'gimick': { 'card1': 50, u'Hero': { 'card1': 50,
'card2': 16, 'card2': 16,
'card3': 0, 'card3': 0,
'card4': 0, 'card4': 0,

View File

@ -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}

View File

@ -280,7 +280,7 @@
'wonWhenSeenStreet2': 0.0, 'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0, 'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}, 'wonWhenSeenStreet4': 0.0},
u'Sorrowful': { 'card1': 15, u'Hero': { 'card1': 15,
'card2': 10, 'card2': 10,
'card3': 42, 'card3': 42,
'card4': 25, 'card4': 25,

View File

@ -3,12 +3,12 @@ Seat 1: bllodshot ($31), is sitting out
Seat 2: kwuiyhw ($62.50) Seat 2: kwuiyhw ($62.50)
Seat 3: chasrigg ($297.50) Seat 3: chasrigg ($297.50)
Seat 4: goulartarm ($94.50) Seat 4: goulartarm ($94.50)
Seat 5: ExecDec ($265.50) Seat 5: Hero ($265.50)
Seat 6: arjun1111 ($41.50) Seat 6: arjun1111 ($41.50)
Seat 7: thebear666 ($101) Seat 7: thebear666 ($101)
Seat 8: FILL A RACK ($128.50) Seat 8: FILL A RACK ($128.50)
chasrigg antes $0.50 chasrigg antes $0.50
ExecDec antes $0.50 Hero antes $0.50
kwuiyhw antes $0.50 kwuiyhw antes $0.50
arjun1111 antes $0.50 arjun1111 antes $0.50
FILL A RACK antes $0.50 FILL A RACK antes $0.50
@ -18,7 +18,7 @@ goulartarm antes $0.50
Dealt to kwuiyhw [9c] Dealt to kwuiyhw [9c]
Dealt to chasrigg [Jh] Dealt to chasrigg [Jh]
Dealt to goulartarm [Qs] Dealt to goulartarm [Qs]
Dealt to ExecDec [5s 2h] [Th] Dealt to Hero [5s 2h] [Th]
Dealt to arjun1111 [As] Dealt to arjun1111 [As]
Dealt to thebear666 [7s] Dealt to thebear666 [7s]
Dealt to FILL A RACK [Ad] Dealt to FILL A RACK [Ad]
@ -31,7 +31,7 @@ chasrigg has 15 seconds left to act
shasatipu adds $316 shasatipu adds $316
chasrigg folds chasrigg folds
goulartarm folds goulartarm folds
ExecDec folds Hero folds
arjun1111 completes it to $3 arjun1111 completes it to $3
thebear666 calls $2 thebear666 calls $2
*** 4TH STREET *** *** 4TH STREET ***
@ -48,7 +48,7 @@ Seat 1: bllodshot is sitting out
Seat 2: kwuiyhw folded on 3rd St. Seat 2: kwuiyhw folded on 3rd St.
Seat 3: chasrigg folded on 3rd St. Seat 3: chasrigg folded on 3rd St.
Seat 4: goulartarm 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 6: arjun1111 collected ($9.50), mucked
Seat 7: thebear666 folded on 4th St. Seat 7: thebear666 folded on 4th St.
Seat 8: FILL A RACK folded on 3rd St. Seat 8: FILL A RACK folded on 3rd St.

View File

@ -1,4 +1,4 @@
{ u'ExecDec': { 'card1': 43, { u'Hero': { 'card1': 43,
'card2': 1, 'card2': 1,
'card3': 9, 'card3': 9,
'card4': 0, 'card4': 0,

View File

@ -3,13 +3,13 @@ Seat 1: bllodshot ($52.50)
Seat 2: kwuiyhw ($48.50) Seat 2: kwuiyhw ($48.50)
Seat 3: chasrigg ($284) Seat 3: chasrigg ($284)
Seat 4: goulartarm ($80) Seat 4: goulartarm ($80)
Seat 5: ExecDec ($223.50) Seat 5: Hero ($223.50)
Seat 7: thebear666 ($87.50) Seat 7: thebear666 ($87.50)
Seat 8: FILL A RACK ($138) Seat 8: FILL A RACK ($138)
kwuiyhw antes $0.50 kwuiyhw antes $0.50
chasrigg antes $0.50 chasrigg antes $0.50
bllodshot antes $0.50 bllodshot antes $0.50
ExecDec antes $0.50 Hero antes $0.50
FILL A RACK antes $0.50 FILL A RACK antes $0.50
thebear666 antes $0.50 thebear666 antes $0.50
goulartarm antes $0.50 goulartarm antes $0.50
@ -18,12 +18,12 @@ Dealt to bllodshot [9c]
Dealt to kwuiyhw [Kc] Dealt to kwuiyhw [Kc]
Dealt to chasrigg [2s] Dealt to chasrigg [2s]
Dealt to goulartarm [2c] Dealt to goulartarm [2c]
Dealt to ExecDec [5h 3c] [Td] Dealt to Hero [5h 3c] [Td]
Dealt to thebear666 [3h] Dealt to thebear666 [3h]
Dealt to FILL A RACK [6c] Dealt to FILL A RACK [6c]
goulartarm is low with [2c] goulartarm is low with [2c]
goulartarm brings in for $1 goulartarm brings in for $1
ExecDec folds Hero folds
thebear666 folds thebear666 folds
FILL A RACK folds FILL A RACK folds
bllodshot folds bllodshot folds
@ -39,7 +39,7 @@ Seat 1: bllodshot folded on 3rd St.
Seat 2: kwuiyhw collected ($5.50), mucked Seat 2: kwuiyhw collected ($5.50), mucked
Seat 3: chasrigg folded on 3rd St. Seat 3: chasrigg folded on 3rd St.
Seat 4: goulartarm 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 7: thebear666 folded on 3rd St.
Seat 8: FILL A RACK folded on 3rd St. Seat 8: FILL A RACK folded on 3rd St.

View File

@ -3,12 +3,12 @@ Seat 1: bllodshot ($31), is sitting out
Seat 2: kwuiyhw ($67) Seat 2: kwuiyhw ($67)
Seat 3: chasrigg ($294.50) Seat 3: chasrigg ($294.50)
Seat 4: goulartarm ($92.50) Seat 4: goulartarm ($92.50)
Seat 5: ExecDec ($306) Seat 5: Hero ($306)
Seat 6: arjun1111 ($37) Seat 6: arjun1111 ($37)
Seat 7: thebear666 ($84.50) Seat 7: thebear666 ($84.50)
Seat 8: shasatipu ($293.50) Seat 8: shasatipu ($293.50)
chasrigg antes $0.50 chasrigg antes $0.50
ExecDec antes $0.50 Hero antes $0.50
kwuiyhw antes $0.50 kwuiyhw antes $0.50
thebear666 antes $0.50 thebear666 antes $0.50
arjun1111 antes $0.50 arjun1111 antes $0.50
@ -18,7 +18,7 @@ goulartarm antes $0.50
Dealt to kwuiyhw [Th] Dealt to kwuiyhw [Th]
Dealt to chasrigg [8h] Dealt to chasrigg [8h]
Dealt to goulartarm [5c] Dealt to goulartarm [5c]
Dealt to ExecDec [Td Jd] [As] Dealt to Hero [Td Jd] [As]
Dealt to arjun1111 [8c] Dealt to arjun1111 [8c]
Dealt to thebear666 [Kc] Dealt to thebear666 [Kc]
Dealt to shasatipu [3c] Dealt to shasatipu [3c]
@ -28,51 +28,51 @@ kwuiyhw folds
chasrigg folds chasrigg folds
kwuiyhw is sitting out kwuiyhw is sitting out
goulartarm folds goulartarm folds
ExecDec completes it to $3 Hero completes it to $3
arjun1111 calls $3 arjun1111 calls $3
thebear666 raises to $6 thebear666 raises to $6
shasatipu has 15 seconds left to act shasatipu has 15 seconds left to act
shasatipu calls $5 shasatipu calls $5
ExecDec calls $3 Hero calls $3
arjun1111 calls $3 arjun1111 calls $3
*** 4TH STREET *** *** 4TH STREET ***
Dealt to ExecDec [Td Jd As] [Jc] Dealt to Hero [Td Jd As] [Jc]
Dealt to arjun1111 [8c] [3h] Dealt to arjun1111 [8c] [3h]
Dealt to thebear666 [Kc] [2h] Dealt to thebear666 [Kc] [2h]
Dealt to shasatipu [3c] [2d] Dealt to shasatipu [3c] [2d]
ExecDec checks Hero checks
arjun1111 checks arjun1111 checks
thebear666 has 15 seconds left to act thebear666 has 15 seconds left to act
thebear666 bets $3 thebear666 bets $3
shasatipu folds shasatipu folds
ExecDec raises to $6 Hero raises to $6
arjun1111 folds arjun1111 folds
thebear666 calls $3 thebear666 calls $3
*** 5TH STREET *** *** 5TH STREET ***
Dealt to ExecDec [Td Jd As Jc] [Js] Dealt to Hero [Td Jd As Jc] [Js]
Dealt to thebear666 [Kc 2h] [3s] Dealt to thebear666 [Kc 2h] [3s]
ExecDec bets $6 Hero bets $6
thebear666 calls $6 thebear666 calls $6
*** 6TH STREET *** *** 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] Dealt to thebear666 [Kc 2h 3s] [4d]
ExecDec bets $6 Hero bets $6
thebear666 calls $6 thebear666 calls $6
*** 7TH STREET *** *** 7TH STREET ***
Dealt to ExecDec [Td Jd As Jc Js 7h] [2s] Dealt to Hero [Td Jd As Jc Js 7h] [2s]
ExecDec bets $6 Hero bets $6
thebear666 calls $6 thebear666 calls $6
*** SHOW DOWN *** *** 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 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 *** *** SUMMARY ***
Total pot $75.50 | Rake $3 Total pot $75.50 | Rake $3
Seat 1: bllodshot is sitting out Seat 1: bllodshot is sitting out
Seat 2: kwuiyhw folded on 3rd St. Seat 2: kwuiyhw folded on 3rd St.
Seat 3: chasrigg folded on 3rd St. Seat 3: chasrigg folded on 3rd St.
Seat 4: goulartarm 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 6: arjun1111 folded on 4th St.
Seat 7: thebear666 mucked [Kd 7c Kc 2h 3s 4d 5h] - a pair of Kings Seat 7: thebear666 mucked [Kd 7c Kc 2h 3s 4d 5h] - a pair of Kings
Seat 8: shasatipu folded on 4th St. Seat 8: shasatipu folded on 4th St.

View File

@ -3,13 +3,13 @@ Seat 1: bllodshot ($38)
Seat 2: kwuiyhw ($64.50) Seat 2: kwuiyhw ($64.50)
Seat 3: chasrigg ($298.50) Seat 3: chasrigg ($298.50)
Seat 4: goulartarm ($98.50) Seat 4: goulartarm ($98.50)
Seat 5: ExecDec ($266.50) Seat 5: Hero ($266.50)
Seat 6: arjun1111 ($42.50) Seat 6: arjun1111 ($42.50)
Seat 7: thebear666 ($84) Seat 7: thebear666 ($84)
Seat 8: FILL A RACK ($129.50) Seat 8: FILL A RACK ($129.50)
thebear666 antes $0.50 thebear666 antes $0.50
kwuiyhw antes $0.50 kwuiyhw antes $0.50
ExecDec antes $0.50 Hero antes $0.50
chasrigg antes $0.50 chasrigg antes $0.50
arjun1111 antes $0.50 arjun1111 antes $0.50
bllodshot antes $0.50 bllodshot antes $0.50
@ -20,7 +20,7 @@ Dealt to bllodshot [8h]
Dealt to kwuiyhw [4c] Dealt to kwuiyhw [4c]
Dealt to chasrigg [7c] Dealt to chasrigg [7c]
Dealt to goulartarm [6d] Dealt to goulartarm [6d]
Dealt to ExecDec [3d 4s] [4d] Dealt to Hero [3d 4s] [4d]
Dealt to arjun1111 [8s] Dealt to arjun1111 [8s]
Dealt to thebear666 [Ac] Dealt to thebear666 [Ac]
Dealt to FILL A RACK [Jh] Dealt to FILL A RACK [Jh]
@ -28,8 +28,8 @@ kwuiyhw is low with [4c]
kwuiyhw brings in for $1 kwuiyhw brings in for $1
chasrigg folds chasrigg folds
goulartarm folds goulartarm folds
ExecDec has 15 seconds left to act Hero has 15 seconds left to act
ExecDec folds Hero folds
arjun1111 folds arjun1111 folds
thebear666 completes it to $3 thebear666 completes it to $3
FILL A RACK folds FILL A RACK folds
@ -55,7 +55,7 @@ Seat 1: bllodshot folded on 5th St.
Seat 2: kwuiyhw folded on 3rd St. Seat 2: kwuiyhw folded on 3rd St.
Seat 3: chasrigg folded on 3rd St. Seat 3: chasrigg folded on 3rd St.
Seat 4: goulartarm 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 6: arjun1111 folded on 3rd St.
Seat 7: thebear666 collected ($17), mucked Seat 7: thebear666 collected ($17), mucked
Seat 8: FILL A RACK folded on 3rd St. Seat 8: FILL A RACK folded on 3rd St.

View File

@ -3,11 +3,11 @@ Seat 1: bllodshot ($34)
Seat 2: kwuiyhw ($78.50) Seat 2: kwuiyhw ($78.50)
Seat 3: chasrigg ($299.50) Seat 3: chasrigg ($299.50)
Seat 4: goulartarm ($100.50) Seat 4: goulartarm ($100.50)
Seat 5: ExecDec ($249.50) Seat 5: Hero ($249.50)
Seat 6: arjun1111 ($43.50) Seat 6: arjun1111 ($43.50)
Seat 7: thebear666 ($86) Seat 7: thebear666 ($86)
Seat 8: FILL A RACK ($131.50) Seat 8: FILL A RACK ($131.50)
ExecDec antes $0.50 Hero antes $0.50
chasrigg antes $0.50 chasrigg antes $0.50
arjun1111 antes $0.50 arjun1111 antes $0.50
bllodshot antes $0.50 bllodshot antes $0.50
@ -20,13 +20,13 @@ Dealt to bllodshot [Qc]
Dealt to kwuiyhw [5d] Dealt to kwuiyhw [5d]
Dealt to chasrigg [9h] Dealt to chasrigg [9h]
Dealt to goulartarm [3s] Dealt to goulartarm [3s]
Dealt to ExecDec [4s Jc] [Th] Dealt to Hero [4s Jc] [Th]
Dealt to arjun1111 [Qd] Dealt to arjun1111 [Qd]
Dealt to thebear666 [8c] Dealt to thebear666 [8c]
Dealt to FILL A RACK [5h] Dealt to FILL A RACK [5h]
goulartarm is low with [3s] goulartarm is low with [3s]
goulartarm brings in for $1 goulartarm brings in for $1
ExecDec folds Hero folds
arjun1111 folds arjun1111 folds
thebear666 folds thebear666 folds
FILL A RACK folds FILL A RACK folds
@ -43,7 +43,7 @@ Seat 1: bllodshot collected ($6), mucked
Seat 2: kwuiyhw folded on 3rd St. Seat 2: kwuiyhw folded on 3rd St.
Seat 3: chasrigg folded on 3rd St. Seat 3: chasrigg folded on 3rd St.
Seat 4: goulartarm 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 6: arjun1111 folded on 3rd St.
Seat 7: thebear666 folded on 3rd St. Seat 7: thebear666 folded on 3rd St.
Seat 8: FILL A RACK folded on 3rd St. Seat 8: FILL A RACK folded on 3rd St.

View File

@ -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 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 1: Player4 ($7.40)
Seat 2: Player13 ($77.20) Seat 2: Hero3 ($77.20)
Seat 3: Player1 ($111.80) Seat 3: Hero ($111.80)
Seat 5: Player5 ($118.70) Seat 5: Player5 ($118.70)
Seat 7: Player6 ($36.30) Seat 7: Player6 ($36.30)
Player1 antes $0.40 Hero antes $0.40
Player4 antes $0.40 Player4 antes $0.40
Player13 antes $0.40 Hero3 antes $0.40
Player5 antes $0.40 Player5 antes $0.40
Player6 antes $0.40 Player6 antes $0.40
*** 3RD STREET *** *** 3RD STREET ***
Dealt to Player4 [9c] Dealt to Player4 [9c]
Dealt to Player13 [8s] Dealt to Hero3 [8s]
Dealt to Player1 [Ac 9h] [3s] Dealt to Hero [Ac 9h] [3s]
Dealt to Player5 [3c] Dealt to Player5 [3c]
Dealt to Player6 [Qs] Dealt to Player6 [Qs]
Player5 is low with [3c] Player5 is low with [3c]
Player5 brings in for $0.50 Player5 brings in for $0.50
Player6 folds Player6 folds
Player4 completes it to $2 Player4 completes it to $2
Player14 sits down Hero4 sits down
Player13 folds Hero3 folds
Player1 folds Hero folds
Player14 adds $152 Hero4 adds $152
Player5 calls $1.50 Player5 calls $1.50
*** 4TH STREET *** *** 4TH STREET ***
Dealt to Player4 [9c] [9d] Dealt to Player4 [9c] [9d]
@ -35,8 +35,8 @@ Player4 wins the pot ($6)
*** SUMMARY *** *** SUMMARY ***
Total pot $6 | Rake $0 Total pot $6 | Rake $0
Seat 1: Player4 collected ($6), mucked Seat 1: Player4 collected ($6), mucked
Seat 2: Player13 folded on 3rd St. Seat 2: Hero3 folded on 3rd St.
Seat 3: Player1 folded on 3rd St. Seat 3: Hero folded on 3rd St.
Seat 5: Player5 folded on 4th St. Seat 5: Player5 folded on 4th St.
Seat 7: Player6 folded on 3rd 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 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 1: Player4 ($12.60)
Seat 2: Player13 ($89.90) Seat 2: Hero3 ($89.90)
Seat 3: Player1 ($110.60) Seat 3: Hero ($110.60)
Seat 5: Player5 ($115.50) Seat 5: Player5 ($115.50)
Seat 6: Player14 ($138.70) Seat 6: Hero4 ($138.70)
Seat 7: Player6 ($35.10) Seat 7: Player6 ($35.10)
Player1 antes $0.40 Hero antes $0.40
Player4 antes $0.40 Player4 antes $0.40
Player13 antes $0.40 Hero3 antes $0.40
Player5 antes $0.40 Player5 antes $0.40
Player14 antes $0.40 Hero4 antes $0.40
Player6 antes $0.40 Player6 antes $0.40
*** 3RD STREET *** *** 3RD STREET ***
Dealt to Player4 [Qc] Dealt to Player4 [Qc]
Dealt to Player13 [5s] Dealt to Hero3 [5s]
Dealt to Player1 [6c 5d] [3d] Dealt to Hero [6c 5d] [3d]
Dealt to Player5 [9d] Dealt to Player5 [9d]
Dealt to Player14 [8h] Dealt to Hero4 [8h]
Dealt to Player6 [Ts] Dealt to Player6 [Ts]
Player1 is low with [3d] Hero is low with [3d]
Player1 brings in for $0.50 Hero brings in for $0.50
Player5 folds Player5 folds
Player14 folds Hero4 folds
Player6 completes it to $2 Player6 completes it to $2
Player4 folds Player4 folds
Player13 folds Hero3 folds
Player1 calls $1.50 Hero calls $1.50
*** 4TH STREET *** *** 4TH STREET ***
Dealt to Player1 [6c 5d 3d] [7c] Dealt to Hero [6c 5d 3d] [7c]
Dealt to Player6 [Ts] [6d] Dealt to Player6 [Ts] [6d]
Player6 bets $2 Player6 bets $2
Player1 calls $2 Hero calls $2
*** 5TH STREET *** *** 5TH STREET ***
Dealt to Player1 [6c 5d 3d 7c] [Qd] Dealt to Hero [6c 5d 3d 7c] [Qd]
Dealt to Player6 [Ts 6d] [9s] Dealt to Player6 [Ts 6d] [9s]
Player1 checks Hero checks
Player6 bets $4 Player6 bets $4
Player1 folds Hero folds
Uncalled bet of $4 returned to Player6 Uncalled bet of $4 returned to Player6
Player6 mucks Player6 mucks
Player6 wins the pot ($10.40) Player6 wins the pot ($10.40)
*** SUMMARY *** *** SUMMARY ***
Total pot $10.40 | Rake $0 Total pot $10.40 | Rake $0
Seat 1: Player4 folded on 3rd St. Seat 1: Player4 folded on 3rd St.
Seat 2: Player13 folded on 3rd St. Seat 2: Hero3 folded on 3rd St.
Seat 3: Player1 folded on 5th St. Seat 3: Hero folded on 5th St.
Seat 5: Player5 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 collected ($10.40), mucked 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 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 1: Player4 ($16.30)
Seat 2: Player13 ($88.70) Seat 2: Hero3 ($88.70)
Seat 3: Player1 ($107.30) Seat 3: Hero ($107.30)
Seat 5: Player5 ($114.30) Seat 5: Player5 ($114.30)
Seat 6: Player14 ($135.50) Seat 6: Hero4 ($135.50)
Seat 7: Player6 ($40.30) Seat 7: Player6 ($40.30)
Player1 antes $0.40 Hero antes $0.40
Player4 antes $0.40 Player4 antes $0.40
Player13 antes $0.40 Hero3 antes $0.40
Player5 antes $0.40 Player5 antes $0.40
Player14 antes $0.40 Hero4 antes $0.40
Player6 antes $0.40 Player6 antes $0.40
*** 3RD STREET *** *** 3RD STREET ***
Dealt to Player4 [9s] Dealt to Player4 [9s]
Dealt to Player13 [9h] Dealt to Hero3 [9h]
Dealt to Player1 [8h Kd] [6s] Dealt to Hero [8h Kd] [6s]
Dealt to Player5 [4c] Dealt to Player5 [4c]
Dealt to Player14 [8d] Dealt to Hero4 [8d]
Dealt to Player6 [6c] Dealt to Player6 [6c]
Player5 is low with [4c] Player5 is low with [4c]
Player10 sits down Hero0 sits down
Player10 adds $40 Hero0 adds $40
Player5 brings in for $0.50 Player5 brings in for $0.50
Player14 folds Hero4 folds
Player6 folds Player6 folds
Player4 folds Player4 folds
Player13 completes it to $2 Hero3 completes it to $2
Player1 folds Hero folds
Player5 folds Player5 folds
Uncalled bet of $1.50 returned to Player13 Uncalled bet of $1.50 returned to Hero3
Player13 mucks Hero3 mucks
Player13 wins the pot ($3.40) Hero3 wins the pot ($3.40)
*** SUMMARY *** *** SUMMARY ***
Total pot $3.40 | Rake $0 Total pot $3.40 | Rake $0
Seat 1: Player4 folded on 3rd St. Seat 1: Player4 folded on 3rd St.
Seat 2: Player13 collected ($3.40), mucked Seat 2: Hero3 collected ($3.40), mucked
Seat 3: Player1 folded on 3rd St. Seat 3: Hero folded on 3rd St.
Seat 5: Player5 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 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 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 1: Player4 ($15.90)
Seat 2: Player13 ($91.20) Seat 2: Hero3 ($91.20)
Seat 3: Player1 ($106.90) Seat 3: Hero ($106.90)
Seat 5: Player5 ($113.40) Seat 5: Player5 ($113.40)
Seat 6: Player14 ($135.10) Seat 6: Hero4 ($135.10)
Seat 7: Player6 ($39.90) Seat 7: Player6 ($39.90)
Seat 8: Player10 ($40) Seat 8: Hero0 ($40)
Player1 antes $0.40 Hero antes $0.40
Player4 antes $0.40 Player4 antes $0.40
Player13 antes $0.40 Hero3 antes $0.40
Player5 antes $0.40 Player5 antes $0.40
Player14 antes $0.40 Hero4 antes $0.40
Player6 antes $0.40 Player6 antes $0.40
Player10 antes $0.40 Hero0 antes $0.40
*** 3RD STREET *** *** 3RD STREET ***
Dealt to Player4 [Qs] Dealt to Player4 [Qs]
Dealt to Player13 [8s] Dealt to Hero3 [8s]
Dealt to Player1 [3h 9c] [Ah] Dealt to Hero [3h 9c] [Ah]
Dealt to Player5 [Qc] Dealt to Player5 [Qc]
Dealt to Player14 [Kc] Dealt to Hero4 [Kc]
Dealt to Player6 [Jh] Dealt to Player6 [Jh]
Dealt to Player10 [6d] Dealt to Hero0 [6d]
Player10 is low with [6d] Hero0 is low with [6d]
Player10 brings in for $0.50 Hero0 brings in for $0.50
Player4 folds Player4 folds
Player13 folds Hero3 folds
Player1 folds Hero folds
Player5 completes it to $2 Player5 completes it to $2
Player14 raises to $4 Hero4 raises to $4
Player6 folds Player6 folds
Player10 calls $3.50 Hero0 calls $3.50
Player5 calls $2 Player5 calls $2
*** 4TH STREET *** *** 4TH STREET ***
Dealt to Player5 [Qc] [3c] Dealt to Player5 [Qc] [3c]
Dealt to Player14 [Kc] [Kh] Dealt to Hero4 [Kc] [Kh]
Dealt to Player10 [6d] [Td] Dealt to Hero0 [6d] [Td]
Player14 has 15 seconds left to act Hero4 has 15 seconds left to act
Player14 bets $4 Hero4 bets $4
Player10 folds Hero0 folds
Player5 folds Player5 folds
Uncalled bet of $4 returned to Player14 Uncalled bet of $4 returned to Hero4
Player14 mucks Hero4 mucks
Player14 wins the pot ($14.80) Hero4 wins the pot ($14.80)
*** SUMMARY *** *** SUMMARY ***
Total pot $14.80 | Rake $0 Total pot $14.80 | Rake $0
Seat 1: Player4 folded on 3rd St. Seat 1: Player4 folded on 3rd St.
Seat 2: Player13 folded on 3rd St. Seat 2: Hero3 folded on 3rd St.
Seat 3: Player1 folded on 3rd St. Seat 3: Hero folded on 3rd St.
Seat 5: Player5 folded on 4th 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 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 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 1: Player4 ($15.50)
Seat 2: Player13 ($90.80) Seat 2: Hero3 ($90.80)
Seat 3: Player1 ($106.50) Seat 3: Hero ($106.50)
Seat 5: Player5 ($109) Seat 5: Player5 ($109)
Seat 6: Player14 ($145.50) Seat 6: Hero4 ($145.50)
Seat 7: Player6 ($39.50) Seat 7: Player6 ($39.50)
Seat 8: Player10 ($35.60) Seat 8: Hero0 ($35.60)
Player10 antes $0.40 Hero0 antes $0.40
Player13 antes $0.40 Hero3 antes $0.40
Player1 antes $0.40 Hero antes $0.40
Player4 antes $0.40 Player4 antes $0.40
Player5 antes $0.40 Player5 antes $0.40
Player14 antes $0.40 Hero4 antes $0.40
Player6 antes $0.40 Player6 antes $0.40
*** 3RD STREET *** *** 3RD STREET ***
Dealt to Player4 [Th] Dealt to Player4 [Th]
Dealt to Player13 [Kc] Dealt to Hero3 [Kc]
Dealt to Player1 [Kh 9c] [5h] Dealt to Hero [Kh 9c] [5h]
Dealt to Player5 [6h] Dealt to Player5 [6h]
Dealt to Player14 [Js] Dealt to Hero4 [Js]
Dealt to Player6 [Ac] Dealt to Player6 [Ac]
Dealt to Player10 [Ah] Dealt to Hero0 [Ah]
Player1 is low with [5h] Hero is low with [5h]
Player1 brings in for $0.50 Hero brings in for $0.50
Player5 folds Player5 folds
Player14 folds Hero4 folds
Player6 folds Player6 folds
Player10 completes it to $2 Hero0 completes it to $2
Player4 calls $2 Player4 calls $2
Player13 folds Hero3 folds
Player1 folds Hero folds
*** 4TH STREET *** *** 4TH STREET ***
Dealt to Player4 [Th] [4h] Dealt to Player4 [Th] [4h]
Dealt to Player10 [Ah] [3c] Dealt to Hero0 [Ah] [3c]
Player10 bets $2 Hero0 bets $2
Player4 calls $2 Player4 calls $2
*** 5TH STREET *** *** 5TH STREET ***
Dealt to Player4 [Th 4h] [9h] Dealt to Player4 [Th 4h] [9h]
Dealt to Player10 [Ah 3c] [8h] Dealt to Hero0 [Ah 3c] [8h]
Player10 has 15 seconds left to act Hero0 has 15 seconds left to act
Player10 bets $4 Hero0 bets $4
Player4 raises to $8 Player4 raises to $8
Player10 folds Hero0 folds
Uncalled bet of $4 returned to Player4 Uncalled bet of $4 returned to Player4
Player4 mucks Player4 mucks
Player4 wins the pot ($19.30) Player4 wins the pot ($19.30)
*** SUMMARY *** *** SUMMARY ***
Total pot $19.30 | Rake $0 Total pot $19.30 | Rake $0
Seat 1: Player4 collected ($19.30), mucked Seat 1: Player4 collected ($19.30), mucked
Seat 2: Player13 folded on 3rd St. Seat 2: Hero3 folded on 3rd St.
Seat 3: Player1 folded on 3rd St. Seat 3: Hero folded on 3rd St.
Seat 5: Player5 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 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 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 1: Player4 ($26)
Seat 2: Player13 ($90) Seat 2: Hero3 ($90)
Seat 3: Player1 ($105.20) Seat 3: Hero ($105.20)
Seat 5: Player5 ($108.20) Seat 5: Player5 ($108.20)
Seat 6: Player14 ($144.70) Seat 6: Hero4 ($144.70)
Seat 7: Player6 ($41.50) Seat 7: Player6 ($41.50)
Seat 8: Player10 ($26.80) Seat 8: Hero0 ($26.80)
Player4 antes $0.40 Player4 antes $0.40
Player13 antes $0.40 Hero3 antes $0.40
Player1 antes $0.40 Hero antes $0.40
Player5 antes $0.40 Player5 antes $0.40
Player10 antes $0.40 Hero0 antes $0.40
Player14 antes $0.40 Hero4 antes $0.40
Player6 antes $0.40 Player6 antes $0.40
*** 3RD STREET *** *** 3RD STREET ***
Dealt to Player4 [9d] Dealt to Player4 [9d]
Dealt to Player13 [Qs] Dealt to Hero3 [Qs]
Dealt to Player1 [9h 9s] [5c] Dealt to Hero [9h 9s] [5c]
Dealt to Player5 [Th] Dealt to Player5 [Th]
Dealt to Player14 [6c] Dealt to Hero4 [6c]
Dealt to Player6 [2d] Dealt to Player6 [2d]
Dealt to Player10 [Qh] Dealt to Hero0 [Qh]
Player6 is low with [2d] Player6 is low with [2d]
Player6 brings in for $0.50 Player6 brings in for $0.50
Player10 folds Hero0 folds
Player4 folds Player4 folds
Player13 folds Hero3 folds
Player1 completes it to $2 Hero completes it to $2
Player5 folds Player5 folds
Player14 folds Hero4 folds
Player6 calls $1.50 Player6 calls $1.50
*** 4TH STREET *** *** 4TH STREET ***
Dealt to Player1 [9h 9s 5c] [3s] Dealt to Hero [9h 9s 5c] [3s]
Dealt to Player6 [2d] [Ah] Dealt to Player6 [2d] [Ah]
Player6 checks Player6 checks
Player1 bets $2 Hero bets $2
Player6 calls $2 Player6 calls $2
*** 5TH STREET *** *** 5TH STREET ***
Dealt to Player1 [9h 9s 5c 3s] [Kh] Dealt to Hero [9h 9s 5c 3s] [Kh]
Dealt to Player6 [2d Ah] [Kc] Dealt to Player6 [2d Ah] [Kc]
Player6 checks Player6 checks
Player1 bets $4 Hero bets $4
Player6 raises to $8 Player6 raises to $8
Player1 calls $4 Hero calls $4
*** 6TH STREET *** *** 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] Dealt to Player6 [2d Ah Kc] [4d]
Player1 bets $4 Hero bets $4
Player6 calls $4 Player6 calls $4
*** 7TH STREET *** *** 7TH STREET ***
Dealt to Player1 [9h 9s 5c 3s Kh 5d] [8s] Dealt to Hero [9h 9s 5c 3s Kh 5d] [8s]
Player1 bets $4 Hero bets $4
Player6 calls $4 Player6 calls $4
*** SHOW DOWN *** *** 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 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 Player6 wins the pot ($40.80) with two pair, Aces and Kings
*** SUMMARY *** *** SUMMARY ***
Total pot $42.80 | Rake $2 Total pot $42.80 | Rake $2
Seat 1: Player4 folded on 3rd St. Seat 1: Player4 folded on 3rd St.
Seat 2: Player13 folded on 3rd St. Seat 2: Hero3 folded on 3rd St.
Seat 3: Player1 showed [9s 9h 5c 3s Kh 5d 8s] and lost with two pair, Nines and Fives 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 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 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 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 1: Hero2 ($66.10)
Seat 2: Player13 ($85.50) Seat 2: Hero3 ($85.50)
Seat 3: Player1 ($81.10) Seat 3: Hero ($81.10)
Seat 4: Player11 ($283.75) Seat 4: Hero1 ($283.75)
Seat 5: Player5 ($109.40) Seat 5: Player5 ($109.40)
Seat 6: Player14 ($140.20) Seat 6: Hero4 ($140.20)
Seat 7: Player6 ($59.80) Seat 7: Player6 ($59.80)
Seat 8: Player10 ($62.10) Seat 8: Hero0 ($62.10)
Player10 antes $0.40 Hero0 antes $0.40
Player13 antes $0.40 Hero3 antes $0.40
Player1 antes $0.40 Hero antes $0.40
Player5 antes $0.40 Player5 antes $0.40
Player14 antes $0.40 Hero4 antes $0.40
Player12 antes $0.40 Hero2 antes $0.40
Player11 antes $0.40 Hero1 antes $0.40
Player6 antes $0.40 Player6 antes $0.40
*** 3RD STREET *** *** 3RD STREET ***
Dealt to Player12 [Qh] Dealt to Hero2 [Qh]
Dealt to Player13 [Kd] Dealt to Hero3 [Kd]
Dealt to Player1 [2d Kc] [5h] Dealt to Hero [2d Kc] [5h]
Dealt to Player11 [9d] Dealt to Hero1 [9d]
Dealt to Player5 [6d] Dealt to Player5 [6d]
Dealt to Player14 [Ad] Dealt to Hero4 [Ad]
Dealt to Player6 [6h] Dealt to Player6 [6h]
Dealt to Player10 [7h] Dealt to Hero0 [7h]
Player1 is low with [5h] Hero is low with [5h]
Player1 brings in for $0.50 Hero brings in for $0.50
Player11 folds Hero1 folds
Player5 folds Player5 folds
Player14 folds Hero4 folds
Player6 folds Player6 folds
Player10 folds Hero0 folds
Player12 folds Hero2 folds
Player13 completes it to $2 Hero3 completes it to $2
Player1 folds Hero folds
Uncalled bet of $1.50 returned to Player13 Uncalled bet of $1.50 returned to Hero3
Player13 mucks Hero3 mucks
Player13 wins the pot ($4.20) Hero3 wins the pot ($4.20)
*** SUMMARY *** *** SUMMARY ***
Total pot $4.20 | Rake $0 Total pot $4.20 | Rake $0
Seat 1: Player12 folded on 3rd St. Seat 1: Hero2 folded on 3rd St.
Seat 2: Player13 collected ($4.20), mucked Seat 2: Hero3 collected ($4.20), mucked
Seat 3: Player1 folded on 3rd St. Seat 3: Hero folded on 3rd St.
Seat 4: Player11 folded on 3rd St. Seat 4: Hero1 folded on 3rd St.
Seat 5: Player5 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 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 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 1: Hero2 ($65.70)
Seat 2: Player13 ($88.80) Seat 2: Hero3 ($88.80)
Seat 3: Player1 ($80.20) Seat 3: Hero ($80.20)
Seat 4: Player11 ($283.35) Seat 4: Hero1 ($283.35)
Seat 5: Player5 ($109) Seat 5: Player5 ($109)
Seat 6: Player14 ($139.80) Seat 6: Hero4 ($139.80)
Seat 7: Player6 ($59.40) Seat 7: Player6 ($59.40)
Seat 8: Player10 ($61.70) Seat 8: Hero0 ($61.70)
Player10 antes $0.40 Hero0 antes $0.40
Player1 antes $0.40 Hero antes $0.40
Player13 antes $0.40 Hero3 antes $0.40
Player5 antes $0.40 Player5 antes $0.40
Player11 antes $0.40 Hero1 antes $0.40
Player12 antes $0.40 Hero2 antes $0.40
Player14 antes $0.40 Hero4 antes $0.40
Player6 antes $0.40 Player6 antes $0.40
*** 3RD STREET *** *** 3RD STREET ***
Dealt to Player12 [Qd] Dealt to Hero2 [Qd]
Dealt to Player13 [5c] Dealt to Hero3 [5c]
Dealt to Player1 [4d 3s] [9s] Dealt to Hero [4d 3s] [9s]
Dealt to Player11 [Ks] Dealt to Hero1 [Ks]
Dealt to Player5 [2c] Dealt to Player5 [2c]
Dealt to Player14 [3d] Dealt to Hero4 [3d]
Dealt to Player6 [2h] Dealt to Player6 [2h]
Dealt to Player10 [2d] Dealt to Hero0 [2d]
Player5 is low with [2c] Player5 is low with [2c]
Player5 brings in for $0.50 Player5 brings in for $0.50
Player14 folds Hero4 folds
Player6 folds Player6 folds
Player10 folds Hero0 folds
Player12 folds Hero2 folds
Player13 folds Hero3 folds
Player1 folds Hero folds
Player11 completes it to $2 Hero1 completes it to $2
Player5 calls $1.50 Player5 calls $1.50
*** 4TH STREET *** *** 4TH STREET ***
Dealt to Player11 [Ks] [Ah] Dealt to Hero1 [Ks] [Ah]
Dealt to Player5 [2c] [5s] Dealt to Player5 [2c] [5s]
Player11 bets $2 Hero1 bets $2
Player5 folds Player5 folds
Uncalled bet of $2 returned to Player11 Uncalled bet of $2 returned to Hero1
Player11 mucks Hero1 mucks
Player11 wins the pot ($7.20) Hero1 wins the pot ($7.20)
*** SUMMARY *** *** SUMMARY ***
Total pot $7.20 | Rake $0 Total pot $7.20 | Rake $0
Seat 1: Player12 folded on 3rd St. Seat 1: Hero2 folded on 3rd St.
Seat 2: Player13 folded on 3rd St. Seat 2: Hero3 folded on 3rd St.
Seat 3: Player1 folded on 3rd St. Seat 3: Hero folded on 3rd St.
Seat 4: Player11 collected ($7.20), mucked Seat 4: Hero1 collected ($7.20), mucked
Seat 5: Player5 folded on 4th St. 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 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 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 2: Player9 ($40), is sitting out
Seat 3: Player1 ($89.20) Seat 3: Hero ($89.20)
Seat 4: Player2 ($96.10) Seat 4: Player2 ($96.10)
Seat 5: Player5 ($105.50), is sitting out Seat 5: Player5 ($105.50), is sitting out
Seat 6: Player14 ($131.70) Seat 6: Hero4 ($131.70)
Seat 7: Player6 ($54.70) Seat 7: Player6 ($54.70)
Seat 8: Player10 ($96.40) Seat 8: Hero0 ($96.40)
Player10 antes $0.40 Hero0 antes $0.40
Player1 antes $0.40 Hero antes $0.40
Player12 antes $0.40 Hero2 antes $0.40
Player14 antes $0.40 Hero4 antes $0.40
Player6 antes $0.40 Player6 antes $0.40
5 seconds left to act 5 seconds left to act
Player2 is sitting out Player2 is sitting out
*** 3RD STREET *** *** 3RD STREET ***
Dealt to Player12 [5c] Dealt to Hero2 [5c]
Dealt to Player1 [Td 9d] [Kc] Dealt to Hero [Td 9d] [Kc]
Dealt to Player14 [5h] Dealt to Hero4 [5h]
Dealt to Player6 [4s] Dealt to Player6 [4s]
Dealt to Player10 [7s] Dealt to Hero0 [7s]
Player6 is low with [4s] Player6 is low with [4s]
Player2 stands up Player2 stands up
Player6 brings in for $0.50 Player6 brings in for $0.50
Player10 folds Hero0 folds
Player12 folds Hero2 folds
Player1 completes it to $2 Hero completes it to $2
Player14 calls $2 Hero4 calls $2
Player6 folds Player6 folds
*** 4TH STREET *** *** 4TH STREET ***
Dealt to Player1 [Td 9d Kc] [9s] Dealt to Hero [Td 9d Kc] [9s]
Dealt to Player14 [5h] [9h] Dealt to Hero4 [5h] [9h]
Player1 bets $2 Hero bets $2
Player14 raises to $4 Hero4 raises to $4
Player1 calls $2 Hero calls $2
*** 5TH STREET *** *** 5TH STREET ***
Dealt to Player1 [Td 9d Kc 9s] [Tc] Dealt to Hero [Td 9d Kc 9s] [Tc]
Dealt to Player14 [5h 9h] [3d] Dealt to Hero4 [5h 9h] [3d]
Player1 checks Hero checks
Player14 checks Hero4 checks
*** 6TH STREET *** *** 6TH STREET ***
Dealt to Player1 [Td 9d Kc 9s Tc] [9c] Dealt to Hero [Td 9d Kc 9s Tc] [9c]
Dealt to Player14 [5h 9h 3d] [Th] Dealt to Hero4 [5h 9h 3d] [Th]
Player1 bets $4 Hero bets $4
Player14 calls $4 Hero4 calls $4
*** 7TH STREET *** *** 7TH STREET ***
Dealt to Player1 [Td 9d Kc 9s Tc 9c] [7h] Dealt to Hero [Td 9d Kc 9s Tc 9c] [7h]
Player1 bets $4 Hero bets $4
Player14 calls $4 Hero4 calls $4
*** SHOW DOWN *** *** SHOW DOWN ***
Player1 shows [Td 9d Kc 9s Tc 9c 7h] a full house, Nines full of Tens Hero shows [Td 9d Kc 9s Tc 9c 7h] a full house, Nines full of Tens
Player14 mucks Hero4 mucks
Player1 wins the pot ($29.50) with a full house, Nines full of Tens Hero wins the pot ($29.50) with a full house, Nines full of Tens
*** SUMMARY *** *** SUMMARY ***
Total pot $30.50 | Rake $1 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 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 4: Player2 is sitting out
Seat 5: Player5 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 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 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 2: Player9 ($40), is sitting out
Seat 3: Player1 ($103.90) Seat 3: Hero ($103.90)
Seat 6: Player14 ($116.40) Seat 6: Hero4 ($116.40)
Seat 7: Player6 ($58.40) Seat 7: Player6 ($58.40)
Seat 8: Player10 ($95.60) Seat 8: Hero0 ($95.60)
Player10 antes $0.40 Hero0 antes $0.40
Player1 antes $0.40 Hero antes $0.40
Player6 antes $0.40 Player6 antes $0.40
Player3 sits down Player3 sits down
Player14 antes $0.40 Hero4 antes $0.40
Player12 antes $0.40 Hero2 antes $0.40
*** 3RD STREET *** *** 3RD STREET ***
Dealt to Player12 [9c] Dealt to Hero2 [9c]
Dealt to Player1 [Ts 4h] [9h] Dealt to Hero [Ts 4h] [9h]
Dealt to Player14 [7c] Dealt to Hero4 [7c]
Dealt to Player6 [7s] Dealt to Player6 [7s]
Dealt to Player10 [2h] Dealt to Hero0 [2h]
Player10 is low with [2h] Hero0 is low with [2h]
Player3 adds $40 Player3 adds $40
Player10 brings in for $0.50 Hero0 brings in for $0.50
Player12 folds Hero2 folds
Player1 completes it to $2 Hero completes it to $2
Player14 folds Hero4 folds
Player6 folds Player6 folds
Player10 folds Hero0 folds
Uncalled bet of $1.50 returned to Player1 Uncalled bet of $1.50 returned to Hero
Player1 mucks Hero mucks
Player1 wins the pot ($3) Hero wins the pot ($3)
*** SUMMARY *** *** SUMMARY ***
Total pot $3 | Rake $0 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 2: Player9 is sitting out
Seat 3: Player1 collected ($3), mucked Seat 3: Hero collected ($3), mucked
Seat 6: Player14 folded on 3rd St. Seat 6: Hero4 folded on 3rd St.
Seat 7: Player6 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 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 2: Player9 ($24.35)
Seat 3: Player1 ($147.90) Seat 3: Hero ($147.90)
Seat 4: Player3 ($74.10) Seat 4: Player3 ($74.10)
Seat 5: Player8 ($63.10) Seat 5: Player8 ($63.10)
Seat 6: Player14 ($103) Seat 6: Hero4 ($103)
Seat 7: Player6 ($63.20) Seat 7: Player6 ($63.20)
Seat 8: Player7 ($48.40) Seat 8: Player7 ($48.40)
Player7 antes $0.40 Player7 antes $0.40
Player1 antes $0.40 Hero antes $0.40
Player8 antes $0.40 Player8 antes $0.40
Player3 antes $0.40 Player3 antes $0.40
Player9 antes $0.40 Player9 antes $0.40
Player12 antes $0.40 Hero2 antes $0.40
Player14 antes $0.40 Hero4 antes $0.40
Player6 antes $0.40 Player6 antes $0.40
*** 3RD STREET *** *** 3RD STREET ***
Dealt to Player12 [As] Dealt to Hero2 [As]
Dealt to Player9 [7s] Dealt to Player9 [7s]
Dealt to Player1 [7h 6s] [8d] Dealt to Hero [7h 6s] [8d]
Dealt to Player3 [2d] Dealt to Player3 [2d]
Dealt to Player8 [3c] Dealt to Player8 [3c]
Dealt to Player14 [7c] Dealt to Hero4 [7c]
Dealt to Player6 [8h] Dealt to Player6 [8h]
Dealt to Player7 [Qs] Dealt to Player7 [Qs]
Player3 is low with [2d] Player3 is low with [2d]
Player3 brings in for $0.50 Player3 brings in for $0.50
Player8 folds Player8 folds
Player14 folds Hero4 folds
Player6 folds Player6 folds
Player7 folds Player7 folds
Player12 completes it to $2 Hero2 completes it to $2
Player9 folds Player9 folds
Player1 calls $2 Hero calls $2
Player3 calls $1.50 Player3 calls $1.50
*** 4TH STREET *** *** 4TH STREET ***
Dealt to Player12 [As] [5d] Dealt to Hero2 [As] [5d]
Dealt to Player1 [7h 6s 8d] [Qc] Dealt to Hero [7h 6s 8d] [Qc]
Dealt to Player3 [2d] [3h] Dealt to Player3 [2d] [3h]
Player12 bets $2 Hero2 bets $2
Player1 folds Hero folds
Player3 calls $2 Player3 calls $2
*** 5TH STREET *** *** 5TH STREET ***
Dealt to Player12 [As 5d] [4c] Dealt to Hero2 [As 5d] [4c]
Dealt to Player3 [2d 3h] [5s] Dealt to Player3 [2d 3h] [5s]
Player12 bets $4 Hero2 bets $4
Player3 folds Player3 folds
Uncalled bet of $4 returned to Player12 Uncalled bet of $4 returned to Hero2
Player12 mucks Hero2 mucks
Player12 wins the pot ($13.20) Hero2 wins the pot ($13.20)
*** SUMMARY *** *** SUMMARY ***
Total pot $13.20 | Rake $0 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 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 4: Player3 folded on 5th St.
Seat 5: Player8 folded on 3rd 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 7: Player6 folded on 3rd St.
Seat 8: Player7 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 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 2: Player0 ($60)
Seat 3: Player1 ($129.30) Seat 3: Hero ($129.30)
Seat 4: Player3 ($125.75) Seat 4: Player3 ($125.75)
Seat 5: Player8 ($40.10) Seat 5: Player8 ($40.10)
Seat 7: Player6 ($72) Seat 7: Player6 ($72)
@ -615,24 +615,24 @@ Seat 8: Player7 ($32.20)
Player0 antes $0.40 Player0 antes $0.40
Player8 antes $0.40 Player8 antes $0.40
Player7 antes $0.40 Player7 antes $0.40
Player1 antes $0.40 Hero antes $0.40
Player3 antes $0.40 Player3 antes $0.40
Player6 antes $0.40 Player6 antes $0.40
*** 3RD STREET *** *** 3RD STREET ***
Dealt to Player0 [Th] Dealt to Player0 [Th]
Dealt to Player1 [9s Qc] [7d] Dealt to Hero [9s Qc] [7d]
Dealt to Player3 [Qh] Dealt to Player3 [Qh]
Dealt to Player8 [Kd] Dealt to Player8 [Kd]
Dealt to Player6 [Jd] Dealt to Player6 [Jd]
Dealt to Player7 [Jh] Dealt to Player7 [Jh]
Player1 is low with [7d] Hero is low with [7d]
Player1 brings in for $0.50 Hero brings in for $0.50
Player3 folds Player3 folds
Player8 folds Player8 folds
Player6 folds Player6 folds
Player7 completes it to $2 Player7 completes it to $2
Player0 calls $2 Player0 calls $2
Player1 folds Hero folds
*** 4TH STREET *** *** 4TH STREET ***
Dealt to Player0 [Th] [As] Dealt to Player0 [Th] [As]
Dealt to Player7 [Jh] [8c] Dealt to Player7 [Jh] [8c]
@ -654,7 +654,7 @@ Player0 wins the pot ($10.90)
*** SUMMARY *** *** SUMMARY ***
Total pot $10.90 | Rake $0 Total pot $10.90 | Rake $0
Seat 2: Player0 collected ($10.90), mucked 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 4: Player3 folded on 3rd St.
Seat 5: Player8 folded on 3rd St. Seat 5: Player8 folded on 3rd St.
Seat 7: Player6 folded on 3rd St. Seat 7: Player6 folded on 3rd St.

View File

@ -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}

View File

@ -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}}

View File

@ -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}

View File

@ -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}}

View File

@ -1,79 +1,79 @@
***** History for hand R5-81962116-232 ***** ***** History for hand R5-81962116-232 *****
Start hand: Mon Sep 13 00:21:02 GMT+0100 2010 Start hand: Mon Sep 13 00:21:02 GMT+0100 2010
Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money) Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 3 Button: seat 3
Players in round: 4 Players in round: 4
Seat 8: DamonV2 ($0.07) Seat 8: DamonV2 ($0.07)
Seat 10: tchazx ($1) Seat 10: Hero ($1)
Seat 1: x Diabolo666 ($11.23) Seat 1: x Diabolo666 ($11.23)
Seat 3: velabianca ($0.51) Seat 3: velabianca ($0.51)
DamonV2 posts small blind ($0.02) DamonV2 posts small blind ($0.02)
tchazx posts big blind ($0.05) Hero posts big blind ($0.05)
--- ---
Dealing pocket cards 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 x Diabolo666 raises $0.10 to $0.10
velabianca folds velabianca folds
DamonV2 folds DamonV2 folds
tchazx calls $0.05 Hero calls $0.05
--- ---
tchazx changed 2 cards Hero changed 2 cards
New hand for tchazx: [8h, 9h, 6s, Ah, Jh] New hand for Hero: [8h, 9h, 6s, Ah, Jh]
x Diabolo666 changed 3 cards x Diabolo666 changed 3 cards
tchazx checks Hero checks
x Diabolo666 checks x Diabolo666 checks
--- ---
Summary: Summary:
Main pot: $0.22 won by x Diabolo666 ($0.21) Main pot: $0.22 won by x Diabolo666 ($0.21)
Rake taken: $0.01 Rake taken: $0.01
Seat 8: DamonV2 ($0.05), net: -$0.02 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 1: x Diabolo666 ($11.34), net: +$0.11, [2c, Ac, Td, As, Qc] (PAIR ACE)
Seat 3: velabianca ($0.51) Seat 3: velabianca ($0.51)
***** End of hand R5-81962116-232 ***** ***** End of hand R5-81962116-232 *****
***** History for hand R5-81962116-233 ***** ***** History for hand R5-81962116-233 *****
Start hand: Mon Sep 13 00:21:42 GMT+0100 2010 Start hand: Mon Sep 13 00:21:42 GMT+0100 2010
Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money) Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 8 Button: seat 8
Players in round: 5 Players in round: 5
Seat 10: tchazx ($0.90) Seat 10: Hero ($0.90)
Seat 1: x Diabolo666 ($11.34) Seat 1: x Diabolo666 ($11.34)
Seat 3: velabianca ($0.51) Seat 3: velabianca ($0.51)
Seat 4: grommek ($9.40) Seat 4: grommek ($9.40)
Seat 8: DamonV2 ($0.05) Seat 8: DamonV2 ($0.05)
tchazx posts small blind ($0.02) Hero posts small blind ($0.02)
x Diabolo666 posts big blind ($0.05) x Diabolo666 posts big blind ($0.05)
grommek posts big blind ($0.05) grommek posts big blind ($0.05)
grommek posts dead blind ($0.02) grommek posts dead blind ($0.02)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to tchazx: [Jd, 5s, 8h, 4h, 7d] Dealing to Hero: [Jd, 5s, 8h, 4h, 7d]
velabianca calls $0.05 velabianca calls $0.05
grommek checks grommek checks
DamonV2 calls $0.05 [all in] DamonV2 calls $0.05 [all in]
tchazx calls $0.03 Hero calls $0.03
x Diabolo666 checks x Diabolo666 checks
--- ---
tchazx changed 1 cards Hero changed 1 cards
New hand for tchazx: [Ah, 5s, 8h, 4h, 7d] New hand for Hero: [Ah, 5s, 8h, 4h, 7d]
x Diabolo666 changed 4 cards x Diabolo666 changed 4 cards
velabianca changed 2 cards velabianca changed 2 cards
grommek changed 3 cards grommek changed 3 cards
DamonV2 changed 2 cards DamonV2 changed 2 cards
tchazx checks Hero checks
x Diabolo666 checks x Diabolo666 checks
velabianca bets $0.10 velabianca bets $0.10
grommek folds grommek folds
tchazx folds Hero folds
x Diabolo666 folds x Diabolo666 folds
--- ---
--- ---
Summary: Summary:
Main pot: $0.27 won by velabianca ($0.26) Main pot: $0.27 won by velabianca ($0.26)
Rake taken: $0.01 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 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 3: velabianca ($0.72), net: +$0.21, [As, 9s, 6s, 6c, 9h] (TWO_PAIR NINE, SIX)
Seat 4: grommek ($9.33), net: -$0.07 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 ***** ***** History for hand R5-81962116-234 *****
Start hand: Mon Sep 13 00:22:36 GMT+0100 2010 Start hand: Mon Sep 13 00:22:36 GMT+0100 2010
Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money) Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 10 Button: seat 10
Players in round: 4 Players in round: 4
Seat 1: x Diabolo666 ($11.29) Seat 1: x Diabolo666 ($11.29)
Seat 3: velabianca ($0.72) Seat 3: velabianca ($0.72)
Seat 4: grommek ($9.33) Seat 4: grommek ($9.33)
Seat 10: tchazx ($0.85) Seat 10: Hero ($0.85)
x Diabolo666 posts small blind ($0.02) x Diabolo666 posts small blind ($0.02)
velabianca posts big blind ($0.05) velabianca posts big blind ($0.05)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to tchazx: [Kh, 9d, As, 4s, 7c] Dealing to Hero: [Kh, 9d, As, 4s, 7c]
grommek calls $0.05 grommek calls $0.05
tchazx folds Hero folds
x Diabolo666 folds x Diabolo666 folds
velabianca checks velabianca checks
velabianca changed 3 cards velabianca changed 3 cards
@ -110,37 +110,37 @@ Rake taken: $0
Seat 1: x Diabolo666 ($11.27), net: -$0.02 Seat 1: x Diabolo666 ($11.27), net: -$0.02
Seat 3: velabianca ($0.67), net: -$0.05 Seat 3: velabianca ($0.67), net: -$0.05
Seat 4: grommek ($9.40), net: +$0.07 Seat 4: grommek ($9.40), net: +$0.07
Seat 10: tchazx ($0.85) Seat 10: Hero ($0.85)
***** End of hand R5-81962116-234 ***** ***** End of hand R5-81962116-234 *****
***** History for hand R5-81962116-235 ***** ***** History for hand R5-81962116-235 *****
Start hand: Mon Sep 13 00:23:04 GMT+0100 2010 Start hand: Mon Sep 13 00:23:04 GMT+0100 2010
Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money) Table: Suez [81962116] (LIMIT FIVE_CARD_DRAW $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 1 Button: seat 1
Players in round: 4 Players in round: 4
Seat 3: velabianca ($0.67) Seat 3: velabianca ($0.67)
Seat 4: grommek ($9.40) Seat 4: grommek ($9.40)
Seat 10: tchazx ($0.85) Seat 10: Hero ($0.85)
Seat 1: x Diabolo666 ($11.27) Seat 1: x Diabolo666 ($11.27)
velabianca posts small blind ($0.02) velabianca posts small blind ($0.02)
grommek posts big blind ($0.05) grommek posts big blind ($0.05)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to tchazx: [8d, Td, 2s, 3d, Qd] Dealing to Hero: [8d, Td, 2s, 3d, Qd]
tchazx calls $0.05 Hero calls $0.05
x Diabolo666 raises $0.10 to $0.10 x Diabolo666 raises $0.10 to $0.10
velabianca calls $0.08 velabianca calls $0.08
grommek calls $0.05 grommek calls $0.05
tchazx calls $0.05 Hero calls $0.05
--- ---
velabianca changed 2 cards velabianca changed 2 cards
grommek changed 2 cards grommek changed 2 cards
tchazx changed 1 cards Hero changed 1 cards
New hand for tchazx: [8d, Td, 8h, 3d, Qd] New hand for Hero: [8d, Td, 8h, 3d, Qd]
x Diabolo666 changed 3 cards x Diabolo666 changed 3 cards
velabianca checks velabianca checks
grommek checks grommek checks
tchazx checks Hero checks
x Diabolo666 checks x Diabolo666 checks
--- ---
Summary: Summary:
@ -148,6 +148,6 @@ Main pot: $0.40 won by velabianca ($0.38)
Rake taken: $0.02 Rake taken: $0.02
Seat 3: velabianca ($0.95), net: +$0.28 Seat 3: velabianca ($0.95), net: +$0.28
Seat 4: grommek ($9.30), net: -$0.10 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) Seat 1: x Diabolo666 ($11.17), net: -$0.10, [6d, Qc, 4c, Th, Qs] (PAIR QUEEN)
***** End of hand R5-81962116-235 ***** ***** End of hand R5-81962116-235 *****

View File

@ -1,39 +1,39 @@
***** History for hand R5-75443872-61 ***** ***** History for hand R5-75443872-61 *****
Start hand: Wed Aug 18 19:32:32 GMT+0100 2010 Start hand: Wed Aug 18 19:32:32 GMT+0100 2010
Table: someplace [75443872] (LIMIT TEXAS_HOLDEM 0.50/1, Real money) Table: someplace [75443872] (LIMIT TEXAS_HOLDEM 0.50/1, Real money)
User: player3 User: Hero
Button: seat 5 Button: seat 5
Players in round: 5 Players in round: 5
Seat 7: player4 (34.70) Seat 7: player4 (34.70)
Seat 9: player5 (1.05) Seat 9: player5 (1.05)
Seat 1: player3 (23.90) Seat 1: Hero (23.90)
Seat 3: player2 (33.95) Seat 3: player2 (33.95)
Seat 5: player1 (14.20) Seat 5: player1 (14.20)
player4 posts small blind (0.25) player4 posts small blind (0.25)
player5 posts big blind (0.50) player5 posts big blind (0.50)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to player3: [Kd, Ks] Dealing to Hero: [Kd, Ks]
player3 raises 1 to 1 Hero raises 1 to 1
player2 folds player2 folds
player1 calls 1 player1 calls 1
player4 folds player4 folds
player5 raises 0.55 to 1.05 [all in] player5 raises 0.55 to 1.05 [all in]
player3 calls 0.05 Hero calls 0.05
player1 calls 0.05 player1 calls 0.05
--- Dealing flop [2d, Ad, Th] --- Dealing flop [2d, Ad, Th]
player3 bets 0.50 Hero bets 0.50
player1 folds player1 folds
--- Dealing flop [2d, Ad, Th] --- Dealing flop [2d, Ad, Th]
--- Dealing turn [8s] --- Dealing turn [8s]
--- Dealing river [7d] --- Dealing river [7d]
--- ---
Summary: Summary:
Main pot: 3.40 won by player3 (3.25) Main pot: 3.40 won by Hero (3.25)
Rake taken: $0.15 Rake taken: $0.15
Seat 7: player4 (34.45), net: -0.25 Seat 7: player4 (34.45), net: -0.25
Seat 9: player5 (0), net: -1.05, [Qd, Qh] (PAIR QUEEN) 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 3: player2 (33.95)
Seat 5: player1 (13.15), net: -1.05 Seat 5: player1 (13.15), net: -1.05
***** End of hand R5-75443872-61 ***** ***** End of hand R5-75443872-61 *****

View File

@ -186,7 +186,7 @@
'wonWhenSeenStreet2': 0.0, 'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0, 'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}, 'wonWhenSeenStreet4': 0.0},
u'player3': { 'card1': 25, u'Hero': { 'card1': 25,
'card2': 51, 'card2': 51,
'card3': 0, 'card3': 0,
'card4': 0, 'card4': 0,

View File

@ -1,66 +1,66 @@
***** History for hand R5-81867677-656 ***** ***** History for hand R5-81867677-656 *****
Start hand: Mon Sep 13 00:26:26 GMT+0100 2010 Start hand: Mon Sep 13 00:26:26 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 8 Button: seat 8
Players in round: 3 Players in round: 3
Seat 3: nickgerm ($3.74) Seat 3: nickgerm ($3.74)
Seat 4: tchazx ($5) Seat 4: Hero ($5)
Seat 8: XYXY26XYXY ($1.79) Seat 8: XYXY26XYXY ($1.79)
nickgerm posts small blind ($0.02) nickgerm posts small blind ($0.02)
tchazx posts big blind ($0.05) Hero posts big blind ($0.05)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to tchazx: [Ks, 4s, 6s, Th] Dealing to Hero: [Ks, 4s, 6s, Th]
XYXY26XYXY calls $0.05 XYXY26XYXY calls $0.05
nickgerm calls $0.03 nickgerm calls $0.03
tchazx checks Hero checks
--- Dealing flop [5h, 7d, 2s] --- Dealing flop [5h, 7d, 2s]
nickgerm checks nickgerm checks
tchazx checks Hero checks
XYXY26XYXY checks XYXY26XYXY checks
--- Dealing turn [Qs] --- Dealing turn [Qs]
nickgerm checks nickgerm checks
tchazx checks Hero checks
XYXY26XYXY checks XYXY26XYXY checks
--- Dealing river [4d] --- Dealing river [4d]
nickgerm bets $0.10 nickgerm bets $0.10
tchazx folds Hero folds
XYXY26XYXY folds XYXY26XYXY folds
--- ---
Summary: Summary:
Main pot: $0.15 won by nickgerm ($0.15) Main pot: $0.15 won by nickgerm ($0.15)
Rake taken: $0 Rake taken: $0
Seat 3: nickgerm ($3.84), net: +$0.10 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 Seat 8: XYXY26XYXY ($1.74), net: -$0.05
***** End of hand R5-81867677-656 ***** ***** End of hand R5-81867677-656 *****
***** History for hand R5-81867677-657 ***** ***** History for hand R5-81867677-657 *****
Start hand: Mon Sep 13 00:27:13 GMT+0100 2010 Start hand: Mon Sep 13 00:27:13 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 3 Button: seat 3
Players in round: 3 Players in round: 3
Seat 4: tchazx ($4.95) Seat 4: Hero ($4.95)
Seat 8: XYXY26XYXY ($1.74) Seat 8: XYXY26XYXY ($1.74)
Seat 3: nickgerm ($3.84) Seat 3: nickgerm ($3.84)
tchazx posts small blind ($0.02) Hero posts small blind ($0.02)
XYXY26XYXY posts big blind ($0.05) XYXY26XYXY posts big blind ($0.05)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to tchazx: [Jd, Td, 8h, Tc] Dealing to Hero: [Jd, Td, 8h, Tc]
nickgerm calls $0.05 nickgerm calls $0.05
tchazx calls $0.03 Hero calls $0.03
XYXY26XYXY checks XYXY26XYXY checks
--- Dealing flop [4h, 7c, 2c] --- Dealing flop [4h, 7c, 2c]
tchazx checks Hero checks
XYXY26XYXY checks XYXY26XYXY checks
nickgerm checks nickgerm checks
--- Dealing turn [Kc] --- Dealing turn [Kc]
tchazx checks Hero checks
XYXY26XYXY checks XYXY26XYXY checks
nickgerm bets $0.10 nickgerm bets $0.10
tchazx folds Hero folds
XYXY26XYXY calls $0.10 XYXY26XYXY calls $0.10
--- Dealing river [3d] --- Dealing river [3d]
XYXY26XYXY checks XYXY26XYXY checks
@ -70,30 +70,30 @@ XYXY26XYXY calls $0.10
Summary: Summary:
Main pot: $0.55 won by nickgerm ($0.27), XYXY26XYXY ($0.26) Main pot: $0.55 won by nickgerm ($0.27), XYXY26XYXY ($0.26)
Rake taken: $0.02 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 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) Seat 3: nickgerm ($3.86), net: +$0.02, [7d, 6s, Ks, Jc] (TWO_PAIR KING, SEVEN)
***** End of hand R5-81867677-657 ***** ***** End of hand R5-81867677-657 *****
***** History for hand R5-81867677-658 ***** ***** History for hand R5-81867677-658 *****
Start hand: Mon Sep 13 00:28:06 GMT+0100 2010 Start hand: Mon Sep 13 00:28:06 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 4 Button: seat 4
Players in round: 5 Players in round: 5
Seat 8: XYXY26XYXY ($1.75) Seat 8: XYXY26XYXY ($1.75)
Seat 10: Mandala14 ($3) Seat 10: Mandala14 ($3)
Seat 1: ANOKATO ($2.33) Seat 1: ANOKATO ($2.33)
Seat 3: nickgerm ($3.86) Seat 3: nickgerm ($3.86)
Seat 4: tchazx ($4.90) Seat 4: Hero ($4.90)
XYXY26XYXY posts small blind ($0.02) XYXY26XYXY posts small blind ($0.02)
Mandala14 posts big blind ($0.05) Mandala14 posts big blind ($0.05)
ANOKATO posts big blind ($0.05) ANOKATO posts big blind ($0.05)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to tchazx: [Ad, Js, Jc, 9h] Dealing to Hero: [Ad, Js, Jc, 9h]
ANOKATO checks ANOKATO checks
nickgerm raises $0.10 to $0.10 nickgerm raises $0.10 to $0.10
tchazx calls $0.10 Hero calls $0.10
XYXY26XYXY calls $0.08 XYXY26XYXY calls $0.08
Mandala14 calls $0.05 Mandala14 calls $0.05
ANOKATO calls $0.05 ANOKATO calls $0.05
@ -102,24 +102,24 @@ XYXY26XYXY checks
Mandala14 checks Mandala14 checks
ANOKATO bets $0.05 ANOKATO bets $0.05
nickgerm raises $0.10 to $0.10 nickgerm raises $0.10 to $0.10
tchazx calls $0.10 Hero calls $0.10
XYXY26XYXY folds XYXY26XYXY folds
Mandala14 calls $0.10 Mandala14 calls $0.10
ANOKATO raises $0.10 to $0.15 ANOKATO raises $0.10 to $0.15
nickgerm calls $0.05 nickgerm calls $0.05
tchazx calls $0.05 Hero calls $0.05
Mandala14 calls $0.05 Mandala14 calls $0.05
--- Dealing turn [Kh] --- Dealing turn [Kh]
Mandala14 checks Mandala14 checks
ANOKATO bets $0.10 ANOKATO bets $0.10
nickgerm calls $0.10 nickgerm calls $0.10
tchazx calls $0.10 Hero calls $0.10
Mandala14 calls $0.10 Mandala14 calls $0.10
--- Dealing river [Ks] --- Dealing river [Ks]
Mandala14 bets $0.10 Mandala14 bets $0.10
ANOKATO calls $0.10 ANOKATO calls $0.10
nickgerm folds nickgerm folds
tchazx calls $0.10 Hero calls $0.10
--- ---
Summary: Summary:
Main pot: $1.80 won by Mandala14 ($1.71) 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 10: Mandala14 ($4.26), net: +$1.26, [As, Ah, 5s, Qs] (TWO_PAIR ACE, KING)
Seat 1: ANOKATO ($1.88), net: -$0.45 Seat 1: ANOKATO ($1.88), net: -$0.45
Seat 3: nickgerm ($3.51), net: -$0.35 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 ***** ***** End of hand R5-81867677-658 *****
***** History for hand R5-81867677-659 ***** ***** History for hand R5-81867677-659 *****
Start hand: Mon Sep 13 00:29:21 GMT+0100 2010 Start hand: Mon Sep 13 00:29:21 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 8 Button: seat 8
Players in round: 5 Players in round: 5
Seat 10: Mandala14 ($4.26) Seat 10: Mandala14 ($4.26)
Seat 1: ANOKATO ($1.88) Seat 1: ANOKATO ($1.88)
Seat 3: nickgerm ($3.51) Seat 3: nickgerm ($3.51)
Seat 4: tchazx ($4.45) Seat 4: Hero ($4.45)
Seat 8: XYXY26XYXY ($1.65) Seat 8: XYXY26XYXY ($1.65)
Mandala14 posts small blind ($0.02) Mandala14 posts small blind ($0.02)
ANOKATO posts big blind ($0.05) ANOKATO posts big blind ($0.05)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to tchazx: [5h, Tc, 9c, 3h] Dealing to Hero: [5h, Tc, 9c, 3h]
nickgerm raises $0.10 to $0.10 nickgerm raises $0.10 to $0.10
tchazx calls $0.10 Hero calls $0.10
XYXY26XYXY calls $0.10 XYXY26XYXY calls $0.10
Mandala14 calls $0.08 Mandala14 calls $0.08
ANOKATO calls $0.05 ANOKATO calls $0.05
@ -155,7 +155,7 @@ ANOKATO calls $0.05
Mandala14 checks Mandala14 checks
ANOKATO checks ANOKATO checks
nickgerm bets $0.05 nickgerm bets $0.05
tchazx calls $0.05 Hero calls $0.05
XYXY26XYXY calls $0.05 XYXY26XYXY calls $0.05
Mandala14 calls $0.05 Mandala14 calls $0.05
ANOKATO calls $0.05 ANOKATO calls $0.05
@ -163,7 +163,7 @@ ANOKATO calls $0.05
Mandala14 checks Mandala14 checks
ANOKATO bets $0.10 ANOKATO bets $0.10
nickgerm raises $0.20 to $0.20 nickgerm raises $0.20 to $0.20
tchazx folds Hero folds
XYXY26XYXY calls $0.20 XYXY26XYXY calls $0.20
Mandala14 calls $0.20 Mandala14 calls $0.20
ANOKATO raises $0.20 to $0.30 ANOKATO raises $0.20 to $0.30
@ -183,51 +183,51 @@ Rake taken: $0.09
Seat 10: Mandala14 ($3.81), net: -$0.45 Seat 10: Mandala14 ($3.81), net: -$0.45
Seat 1: ANOKATO ($3.29), net: +$1.41 Seat 1: ANOKATO ($3.29), net: +$1.41
Seat 3: nickgerm ($3.06), net: -$0.45 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 Seat 8: XYXY26XYXY ($1.20), net: -$0.45
***** End of hand R5-81867677-659 ***** ***** End of hand R5-81867677-659 *****
***** History for hand R5-81867677-660 ***** ***** History for hand R5-81867677-660 *****
Start hand: Mon Sep 13 00:30:43 GMT+0100 2010 Start hand: Mon Sep 13 00:30:43 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 10 Button: seat 10
Players in round: 5 Players in round: 5
Seat 1: ANOKATO ($3.29) Seat 1: ANOKATO ($3.29)
Seat 3: nickgerm ($3.06) Seat 3: nickgerm ($3.06)
Seat 4: tchazx ($4.30) Seat 4: Hero ($4.30)
Seat 8: XYXY26XYXY ($1.20) Seat 8: XYXY26XYXY ($1.20)
Seat 10: Mandala14 ($3.81) Seat 10: Mandala14 ($3.81)
ANOKATO posts small blind ($0.02) ANOKATO posts small blind ($0.02)
nickgerm posts big blind ($0.05) nickgerm posts big blind ($0.05)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to tchazx: [Qh, 4d, Ts, 9d] Dealing to Hero: [Qh, 4d, Ts, 9d]
tchazx calls $0.05 Hero calls $0.05
XYXY26XYXY calls $0.05 XYXY26XYXY calls $0.05
Mandala14 calls $0.05 Mandala14 calls $0.05
ANOKATO calls $0.03 ANOKATO calls $0.03
nickgerm raises $0.05 to $0.10 nickgerm raises $0.05 to $0.10
tchazx calls $0.05 Hero calls $0.05
XYXY26XYXY calls $0.05 XYXY26XYXY calls $0.05
Mandala14 calls $0.05 Mandala14 calls $0.05
ANOKATO calls $0.05 ANOKATO calls $0.05
--- Dealing flop [6d, 3c, Qc] --- Dealing flop [6d, 3c, Qc]
ANOKATO checks ANOKATO checks
nickgerm bets $0.05 nickgerm bets $0.05
tchazx calls $0.05 Hero calls $0.05
XYXY26XYXY calls $0.05 XYXY26XYXY calls $0.05
Mandala14 calls $0.05 Mandala14 calls $0.05
ANOKATO calls $0.05 ANOKATO calls $0.05
--- Dealing turn [7h] --- Dealing turn [7h]
ANOKATO checks ANOKATO checks
nickgerm checks nickgerm checks
tchazx checks Hero checks
XYXY26XYXY checks XYXY26XYXY checks
Mandala14 checks Mandala14 checks
--- Dealing river [Jh] --- Dealing river [Jh]
ANOKATO bets $0.10 ANOKATO bets $0.10
nickgerm folds nickgerm folds
tchazx calls $0.10 Hero calls $0.10
XYXY26XYXY folds XYXY26XYXY folds
Mandala14 folds Mandala14 folds
--- ---
@ -236,34 +236,34 @@ Main pot: $0.95 won by ANOKATO ($0.91)
Rake taken: $0.04 Rake taken: $0.04
Seat 1: ANOKATO ($3.95), net: +$0.66, [7c, Qd, Ks, 5d] (TWO_PAIR QUEEN, SEVEN) 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 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 8: XYXY26XYXY ($1.05), net: -$0.15
Seat 10: Mandala14 ($3.66), net: -$0.15 Seat 10: Mandala14 ($3.66), net: -$0.15
***** End of hand R5-81867677-660 ***** ***** End of hand R5-81867677-660 *****
***** History for hand R5-81867677-661 ***** ***** History for hand R5-81867677-661 *****
Start hand: Mon Sep 13 00:31:54 GMT+0100 2010 Start hand: Mon Sep 13 00:31:54 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 1 Button: seat 1
Players in round: 5 Players in round: 5
Seat 3: nickgerm ($2.91) Seat 3: nickgerm ($2.91)
Seat 4: tchazx ($4.05) Seat 4: Hero ($4.05)
Seat 8: XYXY26XYXY ($1.05) Seat 8: XYXY26XYXY ($1.05)
Seat 10: Mandala14 ($3.66) Seat 10: Mandala14 ($3.66)
Seat 1: ANOKATO ($3.95) Seat 1: ANOKATO ($3.95)
nickgerm posts small blind ($0.02) nickgerm posts small blind ($0.02)
tchazx posts big blind ($0.05) Hero posts big blind ($0.05)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to tchazx: [5d, 9h, 6h, 4h] Dealing to Hero: [5d, 9h, 6h, 4h]
XYXY26XYXY calls $0.05 XYXY26XYXY calls $0.05
Mandala14 calls $0.05 Mandala14 calls $0.05
ANOKATO calls $0.05 ANOKATO calls $0.05
nickgerm calls $0.03 nickgerm calls $0.03
tchazx checks Hero checks
--- Dealing flop [2d, 4d, Jh] --- Dealing flop [2d, 4d, Jh]
nickgerm bets $0.05 nickgerm bets $0.05
tchazx folds Hero folds
XYXY26XYXY calls $0.05 XYXY26XYXY calls $0.05
Mandala14 folds Mandala14 folds
ANOKATO calls $0.05 ANOKATO calls $0.05
@ -285,7 +285,7 @@ Summary:
Main pot: $1.70 won by nickgerm ($1.62) Main pot: $1.70 won by nickgerm ($1.62)
Rake taken: $0.08 Rake taken: $0.08
Seat 3: nickgerm ($3.93), net: +$1.02, [9c, 4s, Jd, 6c] (FULL_HOUSE JACK, FOUR) 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 8: XYXY26XYXY ($0.65), net: -$0.40
Seat 10: Mandala14 ($3.61), net: -$0.05 Seat 10: Mandala14 ($3.61), net: -$0.05
Seat 1: ANOKATO ($3.35), net: -$0.60 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 ***** ***** History for hand R5-81867677-662 *****
Start hand: Mon Sep 13 00:33:20 GMT+0100 2010 Start hand: Mon Sep 13 00:33:20 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 3 Button: seat 3
Players in round: 5 Players in round: 5
Seat 4: tchazx ($4) Seat 4: Hero ($4)
Seat 8: XYXY26XYXY ($0.65) Seat 8: XYXY26XYXY ($0.65)
Seat 10: Mandala14 ($3.61) Seat 10: Mandala14 ($3.61)
Seat 1: ANOKATO ($3.35) Seat 1: ANOKATO ($3.35)
Seat 3: nickgerm ($3.93) Seat 3: nickgerm ($3.93)
tchazx posts small blind ($0.02) Hero posts small blind ($0.02)
XYXY26XYXY posts big blind ($0.05) XYXY26XYXY posts big blind ($0.05)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to tchazx: [5s, 6c, Kc, 3s] Dealing to Hero: [5s, 6c, Kc, 3s]
Mandala14 calls $0.05 Mandala14 calls $0.05
ANOKATO calls $0.05 ANOKATO calls $0.05
nickgerm raises $0.10 to $0.10 nickgerm raises $0.10 to $0.10
tchazx folds Hero folds
XYXY26XYXY calls $0.05 XYXY26XYXY calls $0.05
Mandala14 calls $0.05 Mandala14 calls $0.05
ANOKATO calls $0.05 ANOKATO calls $0.05
@ -335,7 +335,7 @@ nickgerm checks
Summary: Summary:
Main pot: $1.07 won by ANOKATO ($1.02) Main pot: $1.07 won by ANOKATO ($1.02)
Rake taken: $0.05 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 8: XYXY26XYXY ($0.50), net: -$0.15
Seat 10: Mandala14 ($3.51), net: -$0.10 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) 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 ***** ***** History for hand R5-81867677-663 *****
Start hand: Mon Sep 13 00:34:34 GMT+0100 2010 Start hand: Mon Sep 13 00:34:34 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 4 Button: seat 4
Players in round: 5 Players in round: 5
Seat 8: XYXY26XYXY ($0.50) Seat 8: XYXY26XYXY ($0.50)
Seat 10: Mandala14 ($3.51) Seat 10: Mandala14 ($3.51)
Seat 1: ANOKATO ($3.97) Seat 1: ANOKATO ($3.97)
Seat 3: nickgerm ($3.53) Seat 3: nickgerm ($3.53)
Seat 4: tchazx ($3.98) Seat 4: Hero ($3.98)
XYXY26XYXY posts small blind ($0.02) XYXY26XYXY posts small blind ($0.02)
Mandala14 posts big blind ($0.05) Mandala14 posts big blind ($0.05)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to tchazx: [Ac, 9h, 6h, Jc] Dealing to Hero: [Ac, 9h, 6h, Jc]
ANOKATO calls $0.05 ANOKATO calls $0.05
nickgerm calls $0.05 nickgerm calls $0.05
tchazx calls $0.05 Hero calls $0.05
XYXY26XYXY calls $0.03 XYXY26XYXY calls $0.03
Mandala14 checks Mandala14 checks
--- Dealing flop [7s, 4c, 8s] --- Dealing flop [7s, 4c, 8s]
@ -367,7 +367,7 @@ XYXY26XYXY checks
Mandala14 checks Mandala14 checks
ANOKATO bets $0.05 ANOKATO bets $0.05
nickgerm calls $0.05 nickgerm calls $0.05
tchazx calls $0.05 Hero calls $0.05
XYXY26XYXY calls $0.05 XYXY26XYXY calls $0.05
Mandala14 calls $0.05 Mandala14 calls $0.05
--- Dealing turn [2d] --- Dealing turn [2d]
@ -375,7 +375,7 @@ XYXY26XYXY checks
Mandala14 checks Mandala14 checks
ANOKATO bets $0.10 ANOKATO bets $0.10
nickgerm raises $0.20 to $0.20 nickgerm raises $0.20 to $0.20
tchazx calls $0.20 Hero calls $0.20
XYXY26XYXY calls $0.20 XYXY26XYXY calls $0.20
Mandala14 calls $0.20 Mandala14 calls $0.20
ANOKATO calls $0.10 ANOKATO calls $0.10
@ -384,7 +384,7 @@ XYXY26XYXY bets $0.10
Mandala14 folds Mandala14 folds
ANOKATO calls $0.10 ANOKATO calls $0.10
nickgerm raises $0.20 to $0.20 nickgerm raises $0.20 to $0.20
tchazx folds Hero folds
XYXY26XYXY calls $0.10 [all in] XYXY26XYXY calls $0.10 [all in]
ANOKATO folds 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 10: Mandala14 ($3.21), net: -$0.30
Seat 1: ANOKATO ($3.57), net: -$0.40 Seat 1: ANOKATO ($3.57), net: -$0.40
Seat 3: nickgerm ($3.03), net: -$0.50, [6s, Th, 3d, 5d] (STRAIGHT EIGHT) 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 ***** ***** End of hand R5-81867677-663 *****
***** History for hand R5-81867677-664 ***** ***** History for hand R5-81867677-664 *****
Start hand: Mon Sep 13 00:36:21 GMT+0100 2010 Start hand: Mon Sep 13 00:36:21 GMT+0100 2010
Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money) Table: Tilburg [81867677] (LIMIT OMAHA_HI $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 8 Button: seat 8
Players in round: 5 Players in round: 5
Seat 10: Mandala14 ($3.21) Seat 10: Mandala14 ($3.21)
Seat 1: ANOKATO ($3.57) Seat 1: ANOKATO ($3.57)
Seat 3: nickgerm ($3.03) Seat 3: nickgerm ($3.03)
Seat 4: tchazx ($3.68) Seat 4: Hero ($3.68)
Seat 8: XYXY26XYXY ($1.90) Seat 8: XYXY26XYXY ($1.90)
Mandala14 posts small blind ($0.02) Mandala14 posts small blind ($0.02)
ANOKATO posts big blind ($0.05) ANOKATO posts big blind ($0.05)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to tchazx: [7d, Kh, 4s, Jh] Dealing to Hero: [7d, Kh, 4s, Jh]
nickgerm calls $0.05 nickgerm calls $0.05
tchazx calls $0.05 Hero calls $0.05
XYXY26XYXY folds XYXY26XYXY folds
Mandala14 calls $0.03 Mandala14 calls $0.03
ANOKATO checks ANOKATO checks
@ -422,23 +422,23 @@ ANOKATO checks
Mandala14 checks Mandala14 checks
ANOKATO folds ANOKATO folds
nickgerm bets $0.05 nickgerm bets $0.05
tchazx calls $0.05 Hero calls $0.05
Mandala14 calls $0.05 Mandala14 calls $0.05
--- Dealing turn [8c] --- Dealing turn [8c]
Mandala14 checks Mandala14 checks
nickgerm checks nickgerm checks
tchazx checks Hero checks
--- Dealing river [3d] --- Dealing river [3d]
Mandala14 checks Mandala14 checks
nickgerm checks nickgerm checks
tchazx checks Hero checks
--- ---
Summary: Summary:
Main pot: $0.35 won by tchazx ($0.34) Main pot: $0.35 won by Hero ($0.34)
Rake taken: $0.01 Rake taken: $0.01
Seat 10: Mandala14 ($3.11), net: -$0.10, [7h, 4d, Qh, 6d] (PAIR FOUR) Seat 10: Mandala14 ($3.11), net: -$0.10, [7h, 4d, Qh, 6d] (PAIR FOUR)
Seat 1: ANOKATO ($3.52), net: -$0.05 Seat 1: ANOKATO ($3.52), net: -$0.05
Seat 3: nickgerm ($2.93), net: -$0.10, [7s, Qd, 6s, Ah] (PAIR ACE) 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) Seat 8: XYXY26XYXY ($1.90)
***** End of hand R5-81867677-664 ***** ***** End of hand R5-81867677-664 *****

View File

@ -1,21 +1,21 @@
***** History for hand R5-70000684-006 ***** ***** History for hand R5-70000684-006 *****
Start hand: Wed Aug 11 03:21:00 GMT+0100 2010 Start hand: Wed Aug 11 03:21:00 GMT+0100 2010
Table: Kassel [73910684] (NO_LIMIT TEXAS_HOLDEM 0.05/0.10, Real money) Table: Kassel [73910684] (NO_LIMIT TEXAS_HOLDEM 0.05/0.10, Real money)
User: Player3 User: Hero
Button: seat 8 Button: seat 8
Players in round: 5 Players in round: 5
Seat 9: Player1 (4.35) Seat 9: Player1 (4.35)
Seat 3: Player0 (10.90) Seat 3: Player0 (10.90)
Seat 5: Player2 (12.88) Seat 5: Player2 (12.88)
Seat 6: Player3 (14.18) Seat 6: Hero (14.18)
Seat 8: Player4 (9) Seat 8: Player4 (9)
Player1 posts small blind (0.05) Player1 posts small blind (0.05)
Player0 posts big blind (0.10) Player0 posts big blind (0.10)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to Player3: [6s, 7h] Dealing to Hero: [6s, 7h]
Player2 folds Player2 folds
Player3 folds Hero folds
Player4 raises 0.30 to 0.30 Player4 raises 0.30 to 0.30
Player1 calls 0.25 Player1 calls 0.25
Player0 folds Player0 folds
@ -35,7 +35,7 @@ Rake taken: $0.04
Seat 9: Player1 (4.81), net: +0.46 Seat 9: Player1 (4.81), net: +0.46
Seat 3: Player0 (10.80), net: -0.10 Seat 3: Player0 (10.80), net: -0.10
Seat 5: Player2 (12.88) Seat 5: Player2 (12.88)
Seat 6: Player3 (14.18) Seat 6: Hero (14.18)
Seat 8: Player4 (8.60), net: -0.40 Seat 8: Player4 (8.60), net: -0.40
***** End of hand R5-73910684-276 ***** ***** End of hand R5-73910684-276 *****

View File

@ -1,27 +1,27 @@
***** History for hand R5-79836934-72 ***** ***** History for hand R5-79836934-72 *****
Start hand: Sat Sep 4 05:34:19 GMT+0100 2010 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) Table: Bnei Brak [79836934] (NO_LIMIT TEXAS_HOLDEM $0.05/$0.10, Real money)
User: tchazx User: Hero
Button: seat 10 Button: seat 10
Players in round: 2 Players in round: 2
Seat 1: feradf ($6.86) Seat 1: feradf ($6.86)
Seat 10: tchazx ($15.44) Seat 10: Hero ($15.44)
tchazx posts big blind ($0.10) Hero posts big blind ($0.10)
tchazx posts dead blind ($0.05) Hero posts dead blind ($0.05)
feradf posts big blind ($0.10) feradf posts big blind ($0.10)
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to tchazx: [Qh, 4h] Dealing to Hero: [Qh, 4h]
tchazx raises $0.20 to $0.30 Hero raises $0.20 to $0.30
feradf calls $0.20 feradf calls $0.20
--- Dealing flop [6c, Qs, 7h] --- Dealing flop [6c, Qs, 7h]
feradf checks feradf checks
tchazx bets $0.45 Hero bets $0.45
feradf folds feradf folds
--- ---
Summary: Summary:
Main pot: $0.65 won by tchazx ($0.62) Main pot: $0.65 won by Hero ($0.62)
Rake taken: $0.03 Rake taken: $0.03
Seat 1: feradf ($6.56), net: -$0.30 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 ***** ***** End of hand R5-79836934-72 *****

View File

@ -1,10 +1,10 @@
***** History for hand R5-82086688-607 ***** ***** History for hand R5-82086688-607 *****
Start hand: Mon Sep 13 22:31:30 GMT+0100 2010 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) Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money)
User: tchazx User: Hero
Players in round: 5 Players in round: 5
Seat 1: the bAAr ($6.53) Seat 1: the bAAr ($6.53)
Seat 2: tchazx ($2) Seat 2: Hero ($2)
Seat 6: kueto ($6.30) Seat 6: kueto ($6.30)
Seat 8: E6y Ko3y ($2.70) Seat 8: E6y Ko3y ($2.70)
Seat 10: telozver123 ($6.49) Seat 10: telozver123 ($6.49)
@ -12,11 +12,11 @@ the bAAr posts ante $0.02
kueto posts ante $0.02 kueto posts ante $0.02
E6y Ko3y posts ante $0.02 E6y Ko3y posts ante $0.02
telozver123 posts ante $0.02 telozver123 posts ante $0.02
tchazx posts ante $0.02 Hero posts ante $0.02
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to the bAAr: [-, -, Kh] Dealing to the bAAr: [-, -, Kh]
Dealing to tchazx: [Jh, 9d, Ac] Dealing to Hero: [Jh, 9d, Ac]
Dealing to kueto: [-, -, 4h] Dealing to kueto: [-, -, 4h]
Dealing to E6y Ko3y: [-, -, Ad] Dealing to E6y Ko3y: [-, -, Ad]
Dealing to telozver123: [-, -, 6h] Dealing to telozver123: [-, -, 6h]
@ -24,54 +24,54 @@ kueto small bring in $0.05
E6y Ko3y calls $0.05 E6y Ko3y calls $0.05
telozver123 calls $0.05 telozver123 calls $0.05
the bAAr calls $0.05 the bAAr calls $0.05
tchazx calls $0.05 Hero calls $0.05
--- ---
Dealing 4th street Dealing 4th street
Dealing to the bAAr: [3h] Dealing to the bAAr: [3h]
Dealing to tchazx: [7h] Dealing to Hero: [7h]
Dealing to kueto: [3d] Dealing to kueto: [3d]
Dealing to E6y Ko3y: [Qs] Dealing to E6y Ko3y: [Qs]
Dealing to telozver123: [Ts] Dealing to telozver123: [Ts]
E6y Ko3y bets $0.10 E6y Ko3y bets $0.10
telozver123 calls $0.10 telozver123 calls $0.10
the bAAr calls $0.10 the bAAr calls $0.10
tchazx calls $0.10 Hero calls $0.10
kueto folds kueto folds
--- ---
Dealing 5th street Dealing 5th street
Dealing to the bAAr: [9s] Dealing to the bAAr: [9s]
Dealing to tchazx: [Js] Dealing to Hero: [Js]
Dealing to E6y Ko3y: [6c] Dealing to E6y Ko3y: [6c]
Dealing to telozver123: [Kd] Dealing to telozver123: [Kd]
E6y Ko3y checks E6y Ko3y checks
telozver123 checks telozver123 checks
the bAAr bets $0.20 the bAAr bets $0.20
tchazx calls $0.20 Hero calls $0.20
E6y Ko3y calls $0.20 E6y Ko3y calls $0.20
telozver123 folds telozver123 folds
--- ---
Dealing 6th street Dealing 6th street
Dealing to the bAAr: [8s] Dealing to the bAAr: [8s]
Dealing to tchazx: [5c] Dealing to Hero: [5c]
Dealing to E6y Ko3y: [5d] Dealing to E6y Ko3y: [5d]
E6y Ko3y checks E6y Ko3y checks
the bAAr bets $0.20 the bAAr bets $0.20
tchazx calls $0.20 Hero calls $0.20
E6y Ko3y calls $0.20 E6y Ko3y calls $0.20
--- ---
Dealing river Dealing river
Dealing to tchazx: [9h] Dealing to Hero: [9h]
E6y Ko3y checks E6y Ko3y checks
the bAAr checks the bAAr checks
tchazx bets $0.20 Hero bets $0.20
E6y Ko3y folds E6y Ko3y folds
the bAAr calls $0.20 the bAAr calls $0.20
--- ---
Summary: Summary:
Main pot: $2.35 won by tchazx ($2.24) Main pot: $2.35 won by Hero ($2.24)
Rake taken: $0.11 Rake taken: $0.11
Seat 1: the bAAr ($5.76), net: -$0.77 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 6: kueto ($6.23), net: -$0.07
Seat 8: E6y Ko3y ($2.13), net: -$0.57 Seat 8: E6y Ko3y ($2.13), net: -$0.57
Seat 10: telozver123 ($6.32), net: -$0.17 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 ***** ***** History for hand R5-82086688-608 *****
Start hand: Mon Sep 13 22:32:47 GMT+0100 2010 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) Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money)
User: tchazx User: Hero
Players in round: 5 Players in round: 5
Seat 1: the bAAr ($5.76) Seat 1: the bAAr ($5.76)
Seat 2: tchazx ($3.47) Seat 2: Hero ($3.47)
Seat 6: kueto ($6.23) Seat 6: kueto ($6.23)
Seat 8: E6y Ko3y ($2.13) Seat 8: E6y Ko3y ($2.13)
Seat 10: telozver123 ($6.32) Seat 10: telozver123 ($6.32)
the bAAr posts ante $0.02 the bAAr posts ante $0.02
tchazx posts ante $0.02 Hero posts ante $0.02
kueto posts ante $0.02 kueto posts ante $0.02
E6y Ko3y posts ante $0.02 E6y Ko3y posts ante $0.02
telozver123 posts ante $0.02 telozver123 posts ante $0.02
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to the bAAr: [-, -, 4s] Dealing to the bAAr: [-, -, 4s]
Dealing to tchazx: [8h, Ks, Qd] Dealing to Hero: [8h, Ks, Qd]
Dealing to kueto: [-, -, 5h] Dealing to kueto: [-, -, 5h]
Dealing to E6y Ko3y: [-, -, 2h] Dealing to E6y Ko3y: [-, -, 2h]
Dealing to telozver123: [-, -, 3c] Dealing to telozver123: [-, -, 3c]
E6y Ko3y small bring in $0.05 E6y Ko3y small bring in $0.05
telozver123 folds telozver123 folds
the bAAr calls $0.05 the bAAr calls $0.05
tchazx calls $0.05 Hero calls $0.05
kueto folds kueto folds
--- ---
Dealing 4th street Dealing 4th street
Dealing to the bAAr: [Ad] Dealing to the bAAr: [Ad]
Dealing to tchazx: [8d] Dealing to Hero: [8d]
Dealing to E6y Ko3y: [Qh] Dealing to E6y Ko3y: [Qh]
the bAAr bets $0.10 the bAAr bets $0.10
tchazx calls $0.10 Hero calls $0.10
E6y Ko3y folds E6y Ko3y folds
--- ---
Dealing 5th street Dealing 5th street
Dealing to the bAAr: [4c] Dealing to the bAAr: [4c]
Dealing to tchazx: [Ah] Dealing to Hero: [Ah]
the bAAr bets $0.20 the bAAr bets $0.20
tchazx calls $0.20 Hero calls $0.20
--- ---
Dealing 6th street Dealing 6th street
Dealing to the bAAr: [3d] Dealing to the bAAr: [3d]
Dealing to tchazx: [Jh] Dealing to Hero: [Jh]
the bAAr checks the bAAr checks
tchazx checks Hero checks
--- ---
Dealing river Dealing river
Dealing to tchazx: [Kh] Dealing to Hero: [Kh]
the bAAr bets $0.20 the bAAr bets $0.20
tchazx calls $0.20 Hero calls $0.20
--- ---
Summary: Summary:
Main pot: $1.25 won by tchazx ($1.19) Main pot: $1.25 won by Hero ($1.19)
Rake taken: $0.06 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 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 6: kueto ($6.21), net: -$0.02
Seat 8: E6y Ko3y ($2.06), net: -$0.07 Seat 8: E6y Ko3y ($2.06), net: -$0.07
Seat 10: telozver123 ($6.30), net: -$0.02 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 ***** ***** History for hand R5-82086688-609 *****
Start hand: Mon Sep 13 22:33:42 GMT+0100 2010 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) Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money)
User: tchazx User: Hero
Players in round: 5 Players in round: 5
Seat 1: the bAAr ($5.19) Seat 1: the bAAr ($5.19)
Seat 2: tchazx ($4.09) Seat 2: Hero ($4.09)
Seat 6: kueto ($6.21) Seat 6: kueto ($6.21)
Seat 8: E6y Ko3y ($2.06) Seat 8: E6y Ko3y ($2.06)
Seat 10: telozver123 ($6.30) Seat 10: telozver123 ($6.30)
the bAAr posts ante $0.02 the bAAr posts ante $0.02
tchazx posts ante $0.02 Hero posts ante $0.02
kueto posts ante $0.02 kueto posts ante $0.02
E6y Ko3y posts ante $0.02 E6y Ko3y posts ante $0.02
telozver123 posts ante $0.02 telozver123 posts ante $0.02
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to the bAAr: [-, -, 5c] Dealing to the bAAr: [-, -, 5c]
Dealing to tchazx: [Ad, As, Kh] Dealing to Hero: [Ad, As, Kh]
Dealing to kueto: [-, -, Qs] Dealing to kueto: [-, -, Qs]
Dealing to E6y Ko3y: [-, -, 8s] Dealing to E6y Ko3y: [-, -, 8s]
Dealing to telozver123: [-, -, Tc] Dealing to telozver123: [-, -, Tc]
the bAAr small bring in $0.05 the bAAr small bring in $0.05
tchazx bets $0.10 Hero bets $0.10
kueto calls $0.10 kueto calls $0.10
E6y Ko3y folds E6y Ko3y folds
telozver123 folds telozver123 folds
the bAAr folds the bAAr folds
--- ---
Dealing 4th street Dealing 4th street
Dealing to tchazx: [Ks] Dealing to Hero: [Ks]
Dealing to kueto: [Qd] Dealing to kueto: [Qd]
tchazx bets $0.10 Hero bets $0.10
kueto calls $0.10 kueto calls $0.10
--- ---
Dealing 5th street Dealing 5th street
Dealing to tchazx: [8c] Dealing to Hero: [8c]
Dealing to kueto: [7s] Dealing to kueto: [7s]
tchazx bets $0.20 Hero bets $0.20
kueto calls $0.20 kueto calls $0.20
--- ---
Dealing 6th street Dealing 6th street
Dealing to tchazx: [7d] Dealing to Hero: [7d]
Dealing to kueto: [5s] Dealing to kueto: [5s]
tchazx bets $0.20 Hero bets $0.20
kueto calls $0.20 kueto calls $0.20
--- ---
Dealing river Dealing river
Dealing to tchazx: [7h] Dealing to Hero: [7h]
tchazx bets $0.20 Hero bets $0.20
kueto calls $0.20 kueto calls $0.20
--- ---
Summary: Summary:
Main pot: $1.75 won by kueto ($1.67) Main pot: $1.75 won by kueto ($1.67)
Rake taken: $0.08 Rake taken: $0.08
Seat 1: the bAAr ($5.12), net: -$0.07 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 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 8: E6y Ko3y ($2.04), net: -$0.02
Seat 10: telozver123 ($6.28), 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 ***** ***** History for hand R5-82086688-610 *****
Start hand: Mon Sep 13 22:34:25 GMT+0100 2010 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) Table: Milwaukee [82086688] (LIMIT SEVEN_CARD_STUD $0.10/$0.20, ante: $0.02, Real money)
User: tchazx User: Hero
Players in round: 5 Players in round: 5
Seat 1: the bAAr ($5.12) Seat 1: the bAAr ($5.12)
Seat 2: tchazx ($3.27) Seat 2: Hero ($3.27)
Seat 6: kueto ($7.06) Seat 6: kueto ($7.06)
Seat 8: E6y Ko3y ($2.04) Seat 8: E6y Ko3y ($2.04)
Seat 10: telozver123 ($6.28) Seat 10: telozver123 ($6.28)
the bAAr posts ante $0.02 the bAAr posts ante $0.02
tchazx posts ante $0.02 Hero posts ante $0.02
kueto posts ante $0.02 kueto posts ante $0.02
E6y Ko3y posts ante $0.02 E6y Ko3y posts ante $0.02
telozver123 posts ante $0.02 telozver123 posts ante $0.02
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to the bAAr: [-, -, Ts] Dealing to the bAAr: [-, -, Ts]
Dealing to tchazx: [9s, 6s, 7s] Dealing to Hero: [9s, 6s, 7s]
Dealing to kueto: [-, -, Qs] Dealing to kueto: [-, -, Qs]
Dealing to E6y Ko3y: [-, -, 3s] Dealing to E6y Ko3y: [-, -, 3s]
Dealing to telozver123: [-, -, 9d] Dealing to telozver123: [-, -, 9d]
E6y Ko3y small bring in $0.05 E6y Ko3y small bring in $0.05
telozver123 folds telozver123 folds
the bAAr calls $0.05 the bAAr calls $0.05
tchazx calls $0.05 Hero calls $0.05
kueto calls $0.05 kueto calls $0.05
--- ---
Dealing 4th street Dealing 4th street
Dealing to the bAAr: [Qd] Dealing to the bAAr: [Qd]
Dealing to tchazx: [Ah] Dealing to Hero: [Ah]
Dealing to kueto: [7h] Dealing to kueto: [7h]
Dealing to E6y Ko3y: [Th] Dealing to E6y Ko3y: [Th]
tchazx checks Hero checks
kueto checks kueto checks
E6y Ko3y checks E6y Ko3y checks
the bAAr bets $0.10 the bAAr bets $0.10
tchazx calls $0.10 Hero calls $0.10
kueto folds kueto folds
E6y Ko3y folds E6y Ko3y folds
--- ---
Dealing 5th street Dealing 5th street
Dealing to the bAAr: [Jh] Dealing to the bAAr: [Jh]
Dealing to tchazx: [5c] Dealing to Hero: [5c]
tchazx checks Hero checks
the bAAr bets $0.20 the bAAr bets $0.20
tchazx calls $0.20 Hero calls $0.20
--- ---
Dealing 6th street Dealing 6th street
Dealing to the bAAr: [7d] Dealing to the bAAr: [7d]
Dealing to tchazx: [7c] Dealing to Hero: [7c]
tchazx checks Hero checks
the bAAr bets $0.20 the bAAr bets $0.20
tchazx calls $0.20 Hero calls $0.20
--- ---
Dealing river Dealing river
Dealing to tchazx: [5h] Dealing to Hero: [5h]
tchazx checks Hero checks
the bAAr checks the bAAr checks
--- ---
Summary: Summary:
Main pot: $1.30 won by the bAAr ($1.24) Main pot: $1.30 won by the bAAr ($1.24)
Rake taken: $0.06 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 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 6: kueto ($6.99), net: -$0.07
Seat 8: E6y Ko3y ($1.97), net: -$0.07 Seat 8: E6y Ko3y ($1.97), net: -$0.07
Seat 10: telozver123 ($6.26), net: -$0.02 Seat 10: telozver123 ($6.26), net: -$0.02

View File

@ -1,9 +1,9 @@
***** History for hand R5-78227816-62 ***** ***** History for hand R5-78227816-62 *****
Start hand: Sat Aug 28 20:33:38 GMT+0300 2010 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) 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 Players in round: 8
Seat 1: XMAN1 ($25) Seat 1: Hero ($25)
Seat 3: boneos56 ($27.78) Seat 3: boneos56 ($27.78)
Seat 5: grumset2007 ($3.48) Seat 5: grumset2007 ($3.48)
Seat 6: mylonas77 ($40.73) Seat 6: mylonas77 ($40.73)
@ -18,10 +18,10 @@ Lee Clayton posts ante $0.05
guggi_cool posts ante $0.05 guggi_cool posts ante $0.05
HangEv posts ante $0.05 HangEv posts ante $0.05
mylonas77 posts ante $0.05 mylonas77 posts ante $0.05
XMAN1 posts ante $0.05 Hero posts ante $0.05
--- ---
Dealing pocket cards Dealing pocket cards
Dealing to XMAN1: [8d, 8s, 4d] Dealing to Hero: [8d, 8s, 4d]
Dealing to boneos56: [-, -, Kd] Dealing to boneos56: [-, -, Kd]
Dealing to grumset2007: [-, -, Ks] Dealing to grumset2007: [-, -, Ks]
Dealing to mylonas77: [-, -, 5c] Dealing to mylonas77: [-, -, 5c]
@ -29,7 +29,7 @@ Dealing to YMAN1: [-, -, As]
Dealing to Lee Clayton: [-, -, Js] Dealing to Lee Clayton: [-, -, Js]
Dealing to guggi_cool: [-, -, 9s] Dealing to guggi_cool: [-, -, 9s]
Dealing to HangEv: [-, -, 6s] Dealing to HangEv: [-, -, 6s]
XMAN1 small bring in $0.12 Hero small bring in $0.12
boneos56 folds boneos56 folds
grumset2007 folds grumset2007 folds
mylonas77 calls $0.12 mylonas77 calls $0.12
@ -39,33 +39,33 @@ guggi_cool folds
HangEv folds HangEv folds
--- ---
Dealing 4th street Dealing 4th street
Dealing to XMAN1: [3h] Dealing to Hero: [3h]
Dealing to mylonas77: [2h] Dealing to mylonas77: [2h]
mylonas77 bets $0.25 mylonas77 bets $0.25
XMAN1 calls $0.25 Hero calls $0.25
--- ---
Dealing 5th street Dealing 5th street
Dealing to XMAN1: [8c] Dealing to Hero: [8c]
Dealing to mylonas77: [Kh] Dealing to mylonas77: [Kh]
mylonas77 bets $0.50 mylonas77 bets $0.50
XMAN1 raises $1 to $1.37 Hero raises $1 to $1.37
mylonas77 calls $0.50 mylonas77 calls $0.50
--- ---
Dealing 6th street Dealing 6th street
Dealing to XMAN1: [4c] Dealing to Hero: [4c]
Dealing to mylonas77: [Qh] Dealing to mylonas77: [Qh]
XMAN1 bets $0.50 Hero bets $0.50
mylonas77 calls $0.50 mylonas77 calls $0.50
--- ---
Dealing river Dealing river
Dealing to XMAN1: [5h] Dealing to Hero: [5h]
XMAN1 bets $0.50 Hero bets $0.50
mylonas77 calls $0.50 mylonas77 calls $0.50
--- ---
Summary: Summary:
Main pot: $5.14 won by XMAN1 ($4.89) Main pot: $5.14 won by Hero ($4.89)
Rake taken: $0.25 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 3: boneos56 ($27.73), net: -$0.05
Seat 5: grumset2007 ($3.43), net: -$0.05 Seat 5: grumset2007 ($3.43), net: -$0.05
Seat 6: mylonas77 ($38.31), net: -$2.42 Seat 6: mylonas77 ($38.31), net: -$2.42

View File

@ -13,17 +13,17 @@ Seat 2: Player2 - $5.28
Seat 3: Player3 - $1.80 Seat 3: Player3 - $1.80
Seat 4: allout96 - $3.99 Seat 4: allout96 - $3.99
Seat 5: Player4 - $1.47 Seat 5: Player4 - $1.47
Seat 6: Player5 - $4 Seat 6: Hero - $4
Moving Button to seat 1 Moving Button to seat 1
Player2 posts small blind ($0.02) Player2 posts small blind ($0.02)
Player3 posts big blind ($0.04) Player3 posts big blind ($0.04)
Player5 posts $0.04 Hero posts $0.04
Shuffling Deck Shuffling Deck
Dealing Cards Dealing Cards
Dealing [Ad 8h] to Player5 Dealing [Ad 8h] to Hero
allout96 folds allout96 folds
Player4 calls $0.04 Player4 calls $0.04
Player5 checks Hero checks
Player1 folds Player1 folds
Player2 calls $0.04 Player2 calls $0.04
Player3 checks Player3 checks
@ -31,7 +31,7 @@ Dealing Flop [9s Ac 5s]
Player2 bets $0.08 Player2 bets $0.08
Player3 calls $0.08 Player3 calls $0.08
Player4 calls $0.08 Player4 calls $0.08
Player5 raises to $0.16 Hero raises to $0.16
Player2 calls $0.16 Player2 calls $0.16
Player3 calls $0.16 Player3 calls $0.16
Player4 calls $0.16 Player4 calls $0.16
@ -39,11 +39,11 @@ Dealing Turn [4s]
Player2 checks Player2 checks
Player3 bets $0.04 Player3 bets $0.04
Player4 calls $0.04 Player4 calls $0.04
Player5 raises to $0.72 Hero raises to $0.72
Player2 folds Player2 folds
Player3 raises to $1.40 Player3 raises to $1.40
Player4 calls $1.27 (all-in) Player4 calls $1.27 (all-in)
Player5 folds Hero folds
Returning $0.13 to Player3 uncalled Returning $0.13 to Player3 uncalled
Player3 shows [2h 3d] Player3 shows [2h 3d]
Player4 shows [4d 9c] Player4 shows [4d 9c]
@ -56,6 +56,6 @@ Seat 2: Player2 - $5.08
Seat 3: Player3 - $3.99 Seat 3: Player3 - $3.99
Seat 4: allout96 - $3.99 Seat 4: allout96 - $3.99
Seat 5: Player4 - $0 Seat 5: Player4 - $0
Seat 6: Player5 - $3.08 Seat 6: Hero - $3.08
End Of Hand #746382682 End Of Hand #746382682

View File

@ -374,7 +374,7 @@
'wonWhenSeenStreet2': 0.0, 'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0, 'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}, 'wonWhenSeenStreet4': 0.0},
u'Player5': { 'card1': 26, u'Hero': { 'card1': 26,
'card2': 7, 'card2': 7,
'card3': 0, 'card3': 0,
'card4': 0, 'card4': 0,

View File

@ -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

View File

@ -1,3 +1,6 @@
Game #9423586142 starts.
#Game No : 9423586142
***** Hand History For Game 9423586142 ***** ***** Hand History For Game 9423586142 *****
0.01/0.02 Texas Hold'em Game Table (NL) - Mon Jul 12 13:38:32 EDT 2010 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 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 2: Player2 ($0.57)
Seat 3: Player3 ($0.86) Seat 3: Player3 ($0.86)
Seat 4: Player4 ($1.71) Seat 4: Player4 ($1.71)
Seat 5: Player5 ($1.76) Seat 5: Hero ($1.76)
Seat 6: Player6 ($0.44) Seat 6: Player6 ($0.44)
Seat 7: Player7 ($0.76) Seat 7: Player7 ($0.76)
Seat 8: Player8 ($0.68) Seat 8: Player8 ($0.68)
@ -14,8 +17,8 @@ Seat 9: Player9 ($0.38)
Player2 posts small blind (0.01) Player2 posts small blind (0.01)
Player3 posts big blind (0.02) Player3 posts big blind (0.02)
** Dealing down cards ** ** Dealing down cards **
Dealt to Player5 [ Tc, 9d ] Dealt to Hero [ Tc, 9d ]
Player5 folds Hero folds
Player6 calls (0.02) Player6 calls (0.02)
Player8 folds Player8 folds
Player9 folds Player9 folds
@ -34,7 +37,7 @@ Player1 balance $0.95, didn't bet (folded)
Player2 balance $0.55, lost $0.02 (folded) Player2 balance $0.55, lost $0.02 (folded)
Player3 balance $0.96, bet $0.21, collected $0.31, net +$0.1 Player3 balance $0.96, bet $0.21, collected $0.31, net +$0.1
Player4 balance $1.71, sits out 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) Player6 balance $0.36, lost $0.08 (folded)
Player7 balance $0.76, sits out Player7 balance $0.76, sits out
Player8 balance $0.68, didn't bet (folded) Player8 balance $0.68, didn't bet (folded)

View File

@ -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) Table 20BB Min Speed #1770998 (Real Money)
Seat 1 is the button Seat 1 is the button
Total number of players : 4/9 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 5: Player2 ( $0.01 USD )
Seat 9: Player3 ( $1.02 USD ) Seat 9: Player3 ( $1.02 USD )
Seat 1: Player4 ( $1.20 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]. Player2 posts big blind [$0.01 USD].
** Dealing down cards ** ** Dealing down cards **
Dealt to Player1 [ 8h Kc ] Dealt to Hero [ 8h Kc ]
Player3 folds Player3 folds
Player4 calls [$0.02 USD] Player4 calls [$0.02 USD]
Player1 calls [$0.01 USD] Hero calls [$0.01 USD]
** Dealing Flop ** [ Td, 7c, 9h ] ** Dealing Flop ** [ Td, 7c, 9h ]
Player1 checks Hero checks
Player4 checks Player4 checks
** Dealing Turn ** [ 3h ] ** Dealing Turn ** [ 3h ]
Player1 checks Hero checks
Player4 checks Player4 checks
** Dealing River ** [ Jc ] ** Dealing River ** [ Jc ]
Player1 bets [$0.04 USD] Hero bets [$0.04 USD]
Player4 folds 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. 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. Hero 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.03 USD from the main pot with a straight, Seven to Jack.
Player2 has left the table. Player2 has left the table.

View File

@ -186,7 +186,7 @@
'wonWhenSeenStreet2': 0.0, 'wonWhenSeenStreet2': 0.0,
'wonWhenSeenStreet3': 0.0, 'wonWhenSeenStreet3': 0.0,
'wonWhenSeenStreet4': 0.0}, 'wonWhenSeenStreet4': 0.0},
u'heulot': { 'card1': 49, u'Hero': { 'card1': 49,
'card2': 9, 'card2': 9,
'card3': 0, 'card3': 0,
'card4': 0, 'card4': 0,

View File

@ -8,7 +8,7 @@ Seat 3 is the button
Total number of players : 9/9 Total number of players : 9/9
Seat 9: Player1 ( $1.60 USD ) Seat 9: Player1 ( $1.60 USD )
Seat 4: Player2 ( $1.98 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 3: Player4 ( $1.97 USD )
Seat 8: Player5 ( $2.43 USD ) Seat 8: Player5 ( $2.43 USD )
Seat 6: Player6 ( $2 USD ) Seat 6: Player6 ( $2 USD )
@ -20,9 +20,9 @@ Player2 posts small blind [$0.01 USD].
Player7 posts big blind [$0.02 USD]. Player7 posts big blind [$0.02 USD].
Player8 posts big blind [$0.02 USD]. Player8 posts big blind [$0.02 USD].
** Dealing down cards ** ** Dealing down cards **
Dealt to Player3 [ 7c 6c ] Dealt to Hero [ 7c 6c ]
Player6 calls [$0.02 USD] Player6 calls [$0.02 USD]
Player3 calls [$0.02 USD] Hero calls [$0.02 USD]
Player5 calls [$0.02 USD] Player5 calls [$0.02 USD]
Player1 folds Player1 folds
Player9 folds Player9 folds
@ -34,12 +34,12 @@ Player7 checks
Player2 checks Player2 checks
Player7 bets [$0.09 USD] Player7 bets [$0.09 USD]
Player6 folds Player6 folds
Player3 calls [$0.09 USD] Hero calls [$0.09 USD]
Player5 folds Player5 folds
Player8 folds Player8 folds
Player2 folds Player2 folds
** Dealing Turn ** [ Kd ] ** Dealing Turn ** [ Kd ]
Player7 bets [$0.21 USD] Player7 bets [$0.21 USD]
Player3 folds Hero folds
Player7 does not show cards. Player7 does not show cards.
Player7 wins $0.50 USD Player7 wins $0.50 USD

View File

@ -8,13 +8,13 @@ Seat 2 is the button
Total number of players : 5/6 Total number of players : 5/6
Seat 5: Player1 ( $1.60 USD ) Seat 5: Player1 ( $1.60 USD )
Seat 1: Player2 ( $2.45 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 2: Player4 ( $2.80 USD )
Seat 3: Player5 ( $0.01 USD ) Seat 3: Player5 ( $0.01 USD )
Player5 posts small blind [$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 ** ** Dealing down cards **
Dealt to Player3 [ 6s 2c ] Dealt to Hero [ 6s 2c ]
Player1 folds Player1 folds
Player2 folds Player2 folds
Player4 folds Player4 folds
@ -22,7 +22,7 @@ Player4 folds
** Dealing Turn ** [ Js ] ** Dealing Turn ** [ Js ]
** Dealing River ** [ Kc ] ** Dealing River ** [ Kc ]
Player5 shows [ 5h, 5s ]a pair of Fives. Player5 shows [ 5h, 5s ]a pair of Fives.
Player3 shows [ 6s, 2c ]high card Ace. Hero shows [ 6s, 2c ]high card Ace.
Player3 wins $0.03 USD from the side pot 1 with 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 wins $0.02 USD from the main pot with a pair of Fives.
Player5 has left the table. Player5 has left the table.

View File

@ -6,7 +6,7 @@ $4 USD NL Texas Hold'em - Wednesday, August 11, 23:21:44 CEST 2010
Table Table 178011 (Real Money) Table Table 178011 (Real Money)
Seat 4 is the button Seat 4 is the button
Total number of players : 6/9 Total number of players : 6/9
Seat 6: Player1 ( $4 USD ) Seat 6: Hero ( $4 USD )
Seat 7: Player2 ( $2.92 USD ) Seat 7: Player2 ( $2.92 USD )
Seat 5: Player3 ( $0.74 USD ) Seat 5: Player3 ( $0.74 USD )
Seat 3: Player4 ( $4 USD ) Seat 3: Player4 ( $4 USD )
@ -14,25 +14,25 @@ Seat 4: Player5 ( $2.97 USD )
Seat 8: Player6 ( $2 USD ) Seat 8: Player6 ( $2 USD )
Player3 posts small blind [$0.02 USD]. Player3 posts small blind [$0.02 USD].
Player7 has joined the table. 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]. Player2 posts big blind [$0.04 USD].
Player7 posts big blind [$0.04 USD]. Player7 posts big blind [$0.04 USD].
** Dealing down cards ** ** Dealing down cards **
Dealt to Player1 [ Ad 4c ] Dealt to Hero [ Ad 4c ]
Player8 has joined the table. Player8 has joined the table.
Player2 checks Player2 checks
Player9 has joined the table. Player9 has joined the table.
Player7 checks Player7 checks
Player5 folds Player5 folds
Player3 calls [$0.02 USD] Player3 calls [$0.02 USD]
Player1 checks Hero checks
** Dealing Flop ** [ 4h, Tc, 3s ] ** Dealing Flop ** [ 4h, Tc, 3s ]
Player3 checks Player3 checks
Player1 checks Hero checks
Player2 checks Player2 checks
Player7 bets [$0.12 USD] Player7 bets [$0.12 USD]
Player3 folds Player3 folds
Player1 folds Hero folds
Player2 folds Player2 folds
Player7 does not show cards. Player7 does not show cards.
Player7 wins $0.28 USD Player7 wins $0.28 USD

View File

@ -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) Table Table 136403 (Real Money)
Seat 0 is the button Seat 0 is the button
Total number of players : 7/8 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 5: ISqzUSqueal ( $31.02 USD )
Seat 7: PPPPPositive ( $4.20 USD ) Seat 7: PPPPPositive ( $4.20 USD )
Seat 8: Unladylike ( $19 USD ) Seat 8: Unladylike ( $19 USD )
@ -15,20 +15,20 @@ Seat 2: strandalleen ( $17.55 USD )
Seat 1: tubby09 ( $24.20 USD ) Seat 1: tubby09 ( $24.20 USD )
tubby09 posts ante [$0.05 USD] tubby09 posts ante [$0.05 USD]
strandalleen 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] ISqzUSqueal posts ante [$0.05 USD]
YMAN1 posts ante [$0.05 USD] YMAN1 posts ante [$0.05 USD]
PPPPPositive posts ante [$0.05 USD] PPPPPositive posts ante [$0.05 USD]
Unladylike posts ante [$0.05 USD] Unladylike posts ante [$0.05 USD]
** Dealing ** ** Dealing **
Dealt to XMAN1 [ Td 5s 3c ] Dealt to Hero [ Td 5s 3c ]
YMAN1 opens YMAN1 opens
YMAN1 bring-ins [$0.25 USD] YMAN1 bring-ins [$0.25 USD]
PPPPPositive completes [$0.50 USD] PPPPPositive completes [$0.50 USD]
Unladylike folds Unladylike folds
tubby09 folds tubby09 folds
strandalleen calls [$0.50 USD] strandalleen calls [$0.50 USD]
XMAN1 folds Hero folds
ISqzUSqueal folds ISqzUSqueal folds
YMAN1 calls [$0.25 USD] YMAN1 calls [$0.25 USD]
** Dealing Fourth street ** ** Dealing Fourth street **

View File

@ -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 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 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 2: rumble1111 ($4.58 in chips)
Seat 3: Eisenherz73 ($7.54 in chips) Seat 3: Eisenherz73 ($7.54 in chips)
Seat 4: cypis28 ($1.40 in chips) Seat 4: cypis28 ($1.40 in chips)
Seat 5: bakter9 ($0.78 in chips) Seat 5: bakter9 ($0.78 in chips)
Seat 6: TheLabman ($6.31 in chips) Seat 6: TheLabman ($6.31 in chips)
TheLabman: posts small blind $0.05 TheLabman: posts small blind $0.05
s0rrow: posts big blind $0.10 Hero: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [8s Ts 8h 2s 3s] Dealt to Hero [8s Ts 8h 2s 3s]
rumble1111: calls $0.10 rumble1111: calls $0.10
Eisenherz73: folds Eisenherz73: folds
cypis28: raises $0.10 to $0.20 cypis28: raises $0.10 to $0.20
bakter9: raises $0.10 to $0.30 bakter9: raises $0.10 to $0.30
TheLabman: folds TheLabman: folds
s0rrow: folds Hero: folds
rumble1111: calls $0.20 rumble1111: calls $0.20
cypis28: raises $0.10 to $0.40 cypis28: raises $0.10 to $0.40
Betting is capped 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 bakter9 collected $2.01 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $2.11 | Rake $0.10 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 2: rumble1111 folded after the 1st Draw
Seat 3: Eisenherz73 folded before the Draw (didn't bet) 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 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 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 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 2: rumble1111 ($4.18 in chips)
Seat 3: Eisenherz73 ($7.54 in chips) Seat 3: Eisenherz73 ($7.54 in chips)
Seat 4: cypis28 ($0.62 in chips) Seat 4: cypis28 ($0.62 in chips)
Seat 5: bakter9 ($2.01 in chips) Seat 5: bakter9 ($2.01 in chips)
Seat 6: TheLabman ($6.26 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 rumble1111: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [Kh Th 3d Tc 7c] Dealt to Hero [Kh Th 3d Tc 7c]
Eisenherz73: folds Eisenherz73: folds
cypis28: folds cypis28: folds
bakter9: calls $0.10 bakter9: calls $0.10
TheLabman: folds TheLabman: folds
s0rrow: calls $0.05 Hero: calls $0.05
rumble1111: checks rumble1111: checks
*** FIRST DRAW *** *** FIRST DRAW ***
s0rrow: discards 2 cards [Kh Th] Hero: discards 2 cards [Kh Th]
Dealt to s0rrow [3d Tc 7c] [5c Qs] Dealt to Hero [3d Tc 7c] [5c Qs]
rumble1111: discards 2 cards rumble1111: discards 2 cards
bakter9: discards 2 cards bakter9: discards 2 cards
s0rrow: checks Hero: checks
rumble1111: bets $0.10 rumble1111: bets $0.10
bakter9: folds bakter9: folds
s0rrow: calls $0.10 Hero: calls $0.10
*** SECOND DRAW *** *** SECOND DRAW ***
s0rrow: discards 2 cards [Qs Tc] Hero: discards 2 cards [Qs Tc]
Dealt to s0rrow [3d 7c 5c] [4c 2s] Dealt to Hero [3d 7c 5c] [4c 2s]
rumble1111: stands pat rumble1111: stands pat
s0rrow: bets $0.20 Hero: bets $0.20
rumble1111: calls $0.20 rumble1111: calls $0.20
*** THIRD DRAW *** *** THIRD DRAW ***
s0rrow: stands pat on [3d 7c 5c 4c 2s] Hero: stands pat on [3d 7c 5c 4c 2s]
rumble1111: discards 1 card rumble1111: discards 1 card
s0rrow: bets $0.20 Hero: bets $0.20
rumble1111: calls $0.20 rumble1111: calls $0.20
*** SHOW DOWN *** *** 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 rumble1111: mucks hand
s0rrow collected $1.24 from pot Hero collected $1.24 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $1.30 | Rake $0.06 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 2: rumble1111 (big blind) mucked [8s 7d 3c 6d 2h]
Seat 3: Eisenherz73 folded before the Draw (didn't bet) Seat 3: Eisenherz73 folded before the Draw (didn't bet)
Seat 4: cypis28 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 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 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 2: rumble1111 ($3.58 in chips)
Seat 3: Eisenherz73 ($7.54 in chips) Seat 3: Eisenherz73 ($7.54 in chips)
Seat 4: cypis28 ($0.62 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 rumble1111: posts small blind $0.05
Eisenherz73: posts big blind $0.10 Eisenherz73: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [Tc 9s Qc 8h 3d] Dealt to Hero [Tc 9s Qc 8h 3d]
cypis28: folds cypis28: folds
bakter9: folds bakter9: folds
TheLabman: folds TheLabman: folds
s0rrow: folds Hero: folds
rumble1111: folds rumble1111: folds
Uncalled bet ($0.05) returned to Eisenherz73 Uncalled bet ($0.05) returned to Eisenherz73
Eisenherz73 collected $0.10 from pot Eisenherz73 collected $0.10 from pot
Eisenherz73: doesn't show hand Eisenherz73: doesn't show hand
*** SUMMARY *** *** SUMMARY ***
Total pot $0.10 | Rake $0 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 2: rumble1111 (small blind) folded before the Draw
Seat 3: Eisenherz73 (big blind) collected ($0.10) Seat 3: Eisenherz73 (big blind) collected ($0.10)
Seat 4: cypis28 folded before the Draw (didn't bet) 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 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 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 2: rumble1111 ($3.53 in chips)
Seat 3: Eisenherz73 ($7.59 in chips) Seat 3: Eisenherz73 ($7.59 in chips)
Seat 4: cypis28 ($0.62 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 Eisenherz73: posts small blind $0.05
cypis28: posts big blind $0.10 cypis28: posts big blind $0.10
*** DEALING HANDS *** *** 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 bakter9: raises $0.10 to $0.20
TheLabman: folds TheLabman: folds
s0rrow: folds Hero: folds
rumble1111: folds rumble1111: folds
Eisenherz73: folds Eisenherz73: folds
cypis28: raises $0.10 to $0.30 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 bakter9 collected $1.23 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $1.29 | Rake $0.06 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 2: rumble1111 (button) folded before the Draw (didn't bet)
Seat 3: Eisenherz73 (small blind) folded before the Draw 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 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 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 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 2: rumble1111 ($3.53 in chips)
Seat 3: Eisenherz73 ($7.54 in chips) Seat 3: Eisenherz73 ($7.54 in chips)
Seat 5: bakter9 ($2.52 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 bakter9: posts small blind $0.05
TheLabman: posts big blind $0.10 TheLabman: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [2c 3c Ts Jc Kc] Dealt to Hero [2c 3c Ts Jc Kc]
cypis28 leaves the table cypis28 leaves the table
s0rrow: folds Hero: folds
rumble1111: folds rumble1111: folds
Eisenherz73: folds Eisenherz73: folds
bakter9: calls $0.05 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 TheLabman collected $0.58 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $0.60 | Rake $0.02 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 2: rumble1111 folded before the Draw (didn't bet)
Seat 3: Eisenherz73 (button) 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 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 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 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 2: rumble1111 ($3.53 in chips)
Seat 3: Eisenherz73 ($7.54 in chips) Seat 3: Eisenherz73 ($7.54 in chips)
Seat 4: tom1206 ($4 in chips) Seat 4: tom1206 ($4 in chips)
Seat 5: bakter9 ($2.22 in chips) Seat 5: bakter9 ($2.22 in chips)
Seat 6: TheLabman ($6.54 in chips) Seat 6: TheLabman ($6.54 in chips)
TheLabman: posts small blind $0.05 TheLabman: posts small blind $0.05
s0rrow: posts big blind $0.10 Hero: posts big blind $0.10
tom1206: posts big blind $0.10 tom1206: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [5d Js 7d Jd 4d] Dealt to Hero [5d Js 7d Jd 4d]
rumble1111: calls $0.10 rumble1111: calls $0.10
Eisenherz73: calls $0.10 Eisenherz73: calls $0.10
tom1206: checks tom1206: checks
bakter9: folds bakter9: folds
TheLabman: calls $0.05 TheLabman: calls $0.05
s0rrow: checks Hero: checks
*** FIRST DRAW *** *** FIRST DRAW ***
TheLabman: discards 3 cards TheLabman: discards 3 cards
s0rrow: discards 2 cards [Js Jd] Hero: discards 2 cards [Js Jd]
Dealt to s0rrow [5d 7d 4d] [6d 2s] Dealt to Hero [5d 7d 4d] [6d 2s]
rumble1111: discards 2 cards rumble1111: discards 2 cards
Eisenherz73: discards 2 cards Eisenherz73: discards 2 cards
tom1206: discards 2 cards tom1206: discards 2 cards
TheLabman: checks TheLabman: checks
s0rrow: checks Hero: checks
rumble1111: checks rumble1111: checks
Eisenherz73: checks Eisenherz73: checks
tom1206: checks tom1206: checks
*** SECOND DRAW *** *** SECOND DRAW ***
TheLabman: discards 3 cards 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 rumble1111: discards 2 cards
Eisenherz73: discards 1 card Eisenherz73: discards 1 card
tom1206: discards 2 cards tom1206: discards 2 cards
TheLabman: checks TheLabman: checks
s0rrow: checks Hero: checks
rumble1111: checks rumble1111: checks
Eisenherz73: checks Eisenherz73: checks
tom1206: checks tom1206: checks
*** THIRD DRAW *** *** THIRD DRAW ***
TheLabman: discards 2 cards 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 rumble1111: discards 1 card
The deck is reshuffled The deck is reshuffled
Eisenherz73: discards 1 card Eisenherz73: discards 1 card
tom1206: discards 2 cards tom1206: discards 2 cards
TheLabman: checks TheLabman: checks
s0rrow: bets $0.20 Hero: bets $0.20
rumble1111: folds rumble1111: folds
Eisenherz73: folds Eisenherz73: folds
Eisenherz73 is sitting out Eisenherz73 is sitting out
Eisenherz73 leaves the table Eisenherz73 leaves the table
tom1206: folds tom1206: folds
TheLabman: 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 X USN-USMC joins the table at seat #3
s0rrow collected $0.48 from pot Hero collected $0.48 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $0.50 | Rake $0.02 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 2: rumble1111 folded after the 3rd Draw
Seat 3: Eisenherz73 folded after the 3rd Draw Seat 3: Eisenherz73 folded after the 3rd Draw
Seat 4: tom1206 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 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 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 2: rumble1111 ($3.43 in chips)
Seat 3: X USN-USMC ($4 in chips) Seat 3: X USN-USMC ($4 in chips)
Seat 4: tom1206 ($3.90 in chips) Seat 4: tom1206 ($3.90 in chips)
Seat 5: bakter9 ($2.22 in chips) Seat 5: bakter9 ($2.22 in chips)
Seat 6: TheLabman ($6.44 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 rumble1111: posts big blind $0.10
X USN-USMC: posts big blind $0.10 X USN-USMC: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [Th Js Kd 2h Qc] Dealt to Hero [Th Js Kd 2h Qc]
X USN-USMC: checks X USN-USMC: checks
tom1206 has timed out tom1206 has timed out
tom1206: folds tom1206: folds
tom1206 is sitting out tom1206 is sitting out
bakter9: folds bakter9: folds
TheLabman: calls $0.10 TheLabman: calls $0.10
s0rrow: folds Hero: folds
tom1206 has returned tom1206 has returned
rumble1111: checks rumble1111: checks
*** FIRST DRAW *** *** FIRST DRAW ***
@ -357,7 +357,7 @@ X USN-USMC collected $1.19 from pot
X USN-USMC: doesn't show hand X USN-USMC: doesn't show hand
*** SUMMARY *** *** SUMMARY ***
Total pot $1.25 | Rake $0.06 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 2: rumble1111 (big blind) folded after the 3rd Draw
Seat 3: X USN-USMC collected ($1.19) Seat 3: X USN-USMC collected ($1.19)
Seat 4: tom1206 folded before the Draw (didn't bet) 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 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 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 2: rumble1111 ($3.03 in chips)
Seat 3: X USN-USMC ($4.79 in chips) Seat 3: X USN-USMC ($4.79 in chips)
Seat 4: tom1206 ($3.90 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 rumble1111: posts small blind $0.05
X USN-USMC: posts big blind $0.10 X USN-USMC: posts big blind $0.10
*** DEALING HANDS *** *** 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 tom1206: raises $0.10 to $0.20
bakter9: folds bakter9: folds
TheLabman: folds TheLabman: folds
s0rrow: folds Hero: folds
rumble1111: calls $0.15 rumble1111: calls $0.15
X USN-USMC: calls $0.10 X USN-USMC: calls $0.10
*** FIRST DRAW *** *** FIRST DRAW ***
@ -414,7 +414,7 @@ tom1206: mucks hand
rumble1111 collected $2.38 from pot rumble1111 collected $2.38 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $2.50 | Rake $0.12 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 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 3: X USN-USMC (big blind) folded after the 3rd Draw
Seat 4: tom1206 mucked [4h 6d 8d 5c 3d] 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 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 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 2: rumble1111 ($4.51 in chips)
Seat 3: X USN-USMC ($4.09 in chips) Seat 3: X USN-USMC ($4.09 in chips)
Seat 4: tom1206 ($3 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 X USN-USMC: posts small blind $0.05
tom1206: posts big blind $0.10 tom1206: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [8c 3s Tc Ac Qd] Dealt to Hero [8c 3s Tc Ac Qd]
bakter9: calls $0.10 bakter9: calls $0.10
TheLabman: calls $0.10 TheLabman: calls $0.10
s0rrow: folds Hero: folds
rumble1111: calls $0.10 rumble1111: calls $0.10
X USN-USMC: calls $0.05 X USN-USMC: calls $0.05
tom1206: checks 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 tom1206 collected $1.62 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $1.70 | Rake $0.08 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 2: rumble1111 (button) folded after the 3rd Draw
Seat 3: X USN-USMC (small blind) 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 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 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 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 2: rumble1111 ($4.21 in chips)
Seat 3: X USN-USMC ($3.79 in chips) Seat 3: X USN-USMC ($3.79 in chips)
Seat 4: tom1206 ($4.12 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 tom1206: posts small blind $0.05
bakter9: posts big blind $0.10 bakter9: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [3d 7h 7c Jh 5s] Dealt to Hero [3d 7h 7c Jh 5s]
TheLabman: folds TheLabman: folds
s0rrow: calls $0.10 Hero: calls $0.10
rumble1111: folds rumble1111: folds
rumble1111 leaves the table rumble1111 leaves the table
X USN-USMC: folds X USN-USMC: folds
tom1206: calls $0.05 tom1206: calls $0.05
bakter9: raises $0.10 to $0.20 bakter9: raises $0.10 to $0.20
s0rrow: calls $0.10 Hero: calls $0.10
tom1206: calls $0.10 tom1206: calls $0.10
*** FIRST DRAW *** *** FIRST DRAW ***
tom1206: discards 3 cards tom1206: discards 3 cards
bakter9: discards 2 cards bakter9: discards 2 cards
s0rrow: discards 2 cards [7c Jh] Hero: discards 2 cards [7c Jh]
Dealt to s0rrow [3d 7h 5s] [9h Ad] Dealt to Hero [3d 7h 5s] [9h Ad]
tom1206: checks tom1206: checks
bakter9: bets $0.10 bakter9: bets $0.10
s0rrow: calls $0.10 Hero: calls $0.10
tom1206: calls $0.10 tom1206: calls $0.10
*** SECOND DRAW *** *** SECOND DRAW ***
tom1206: discards 2 cards tom1206: discards 2 cards
bakter9: discards 1 card bakter9: discards 1 card
s0rrow: discards 1 card [9h] Hero: discards 1 card [9h]
Dealt to s0rrow [3d 7h 5s Ad] [4c] Dealt to Hero [3d 7h 5s Ad] [4c]
tom1206: bets $0.20 tom1206: bets $0.20
bakter9: raises $0.20 to $0.40 bakter9: raises $0.20 to $0.40
bakter9 said, "zzzzzzzzzzzzzzzzzzz" bakter9 said, "zzzzzzzzzzzzzzzzzzz"
s0rrow: calls $0.40 Hero: calls $0.40
tom1206: calls $0.20 tom1206: calls $0.20
*** THIRD DRAW *** *** THIRD DRAW ***
tom1206: discards 1 card tom1206: discards 1 card
bakter9: stands pat bakter9: stands pat
s0rrow: stands pat on [3d 7h 5s Ad 4c] Hero: stands pat on [3d 7h 5s Ad 4c]
tom1206: checks tom1206: checks
bakter9: bets $0.20 bakter9: bets $0.20
s0rrow: calls $0.20 Hero: calls $0.20
tom1206: raises $0.20 to $0.40 tom1206: raises $0.20 to $0.40
bakter9: calls $0.20 bakter9: calls $0.20
s0rrow: calls $0.20 Hero: calls $0.20
*** SHOW DOWN *** *** SHOW DOWN ***
tom1206: shows [4h 3c Qc 2c 6c] (Lo: Q,6,4,3,2) 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) 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 bakter9 collected $3.14 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $3.30 | Rake $0.16 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 2: rumble1111 folded before the Draw (didn't bet)
Seat 3: X USN-USMC (button) 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 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 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 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 3: X USN-USMC ($3.79 in chips)
Seat 4: tom1206 ($3.02 in chips) Seat 4: tom1206 ($3.02 in chips)
Seat 5: bakter9 ($3.76 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 bakter9: posts small blind $0.05
TheLabman: posts big blind $0.10 TheLabman: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [Ah 7s Ad 5d As] Dealt to Hero [Ah 7s Ad 5d As]
bakter9 said, "ty" bakter9 said, "ty"
s0rrow: raises $0.10 to $0.20 Hero: raises $0.10 to $0.20
X USN-USMC: folds X USN-USMC: folds
tom1206: folds tom1206: folds
bakter9: folds bakter9: folds
TheLabman: calls $0.10 TheLabman: calls $0.10
*** FIRST DRAW *** *** FIRST DRAW ***
TheLabman: discards 2 cards TheLabman: discards 2 cards
s0rrow: discards 2 cards [7s Ad] Hero: discards 2 cards [7s Ad]
Dealt to s0rrow [Ah 5d As] [5h 8s] Dealt to Hero [Ah 5d As] [5h 8s]
TheLabman: checks TheLabman: checks
Mamega joins the table at seat #2 Mamega joins the table at seat #2
s0rrow: bets $0.10 Hero: bets $0.10
TheLabman: calls $0.10 TheLabman: calls $0.10
*** SECOND DRAW *** *** SECOND DRAW ***
TheLabman: discards 1 card TheLabman: discards 1 card
s0rrow: stands pat on [Ah 5d As 5h 8s] Hero: stands pat on [Ah 5d As 5h 8s]
TheLabman: checks TheLabman: checks
s0rrow: bets $0.20 Hero: bets $0.20
TheLabman: calls $0.20 TheLabman: calls $0.20
*** THIRD DRAW *** *** THIRD DRAW ***
TheLabman: discards 1 card TheLabman: discards 1 card
s0rrow: stands pat on [Ah 5d As 5h 8s] Hero: stands pat on [Ah 5d As 5h 8s]
TheLabman: checks TheLabman: checks
s0rrow: bets $0.20 Hero: bets $0.20
TheLabman: folds TheLabman: folds
Uncalled bet ($0.20) returned to s0rrow Uncalled bet ($0.20) returned to Hero
s0rrow collected $1 from pot Hero collected $1 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $1.05 | Rake $0.05 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 3: X USN-USMC folded before the Draw (didn't bet)
Seat 4: tom1206 (button) 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 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 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 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 3: X USN-USMC ($3.79 in chips)
Seat 4: tom1206 ($3.02 in chips) Seat 4: tom1206 ($3.02 in chips)
Seat 5: bakter9 ($3.71 in chips) Seat 5: bakter9 ($3.71 in chips)
Seat 6: TheLabman ($5.44 in chips) Seat 6: TheLabman ($5.44 in chips)
TheLabman: posts small blind $0.05 TheLabman: posts small blind $0.05
s0rrow: posts big blind $0.10 Hero: posts big blind $0.10
Mamega: sits out Mamega: sits out
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [3h 6d 9s 5s Kc] Dealt to Hero [3h 6d 9s 5s Kc]
X USN-USMC: calls $0.10 X USN-USMC: calls $0.10
tom1206: calls $0.10 tom1206: calls $0.10
bakter9: folds bakter9: folds
TheLabman: calls $0.05 TheLabman: calls $0.05
s0rrow: checks Hero: checks
*** FIRST DRAW *** *** FIRST DRAW ***
TheLabman: discards 1 card TheLabman: discards 1 card
s0rrow: discards 1 card [Kc] Hero: discards 1 card [Kc]
Dealt to s0rrow [3h 6d 9s 5s] [Jh] Dealt to Hero [3h 6d 9s 5s] [Jh]
X USN-USMC: discards 2 cards X USN-USMC: discards 2 cards
tom1206: discards 2 cards tom1206: discards 2 cards
TheLabman: checks TheLabman: checks
s0rrow: checks Hero: checks
X USN-USMC: bets $0.10 X USN-USMC: bets $0.10
tom1206: raises $0.10 to $0.20 tom1206: raises $0.10 to $0.20
TheLabman: calls $0.20 TheLabman: calls $0.20
s0rrow: folds Hero: folds
X USN-USMC: calls $0.10 X USN-USMC: calls $0.10
*** SECOND DRAW *** *** SECOND DRAW ***
TheLabman: discards 1 card TheLabman: discards 1 card
@ -662,7 +662,7 @@ X USN-USMC collected $3.24 from pot
LumBita joins the table at seat #5 LumBita joins the table at seat #5
*** SUMMARY *** *** SUMMARY ***
Total pot $3.40 | Rake $0.16 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 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 4: tom1206 mucked [8d 7c 4h 5h 3d]
Seat 5: bakter9 (button) folded before the Draw (didn't bet) 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 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 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 2: Mamega ($4 in chips)
Seat 3: X USN-USMC ($5.93 in chips) Seat 3: X USN-USMC ($5.93 in chips)
Seat 4: tom1206 ($1.92 in chips) Seat 4: tom1206 ($1.92 in chips)
Seat 5: LumBita ($1 in chips) Seat 5: LumBita ($1 in chips)
Seat 6: TheLabman ($4.34 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 Mamega: posts big blind $0.10
LumBita: posts big blind $0.10 LumBita: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [5c Kc Js Ts Jc] Dealt to Hero [5c Kc Js Ts Jc]
X USN-USMC: calls $0.10 X USN-USMC: calls $0.10
tom1206: calls $0.10 tom1206: calls $0.10
LumBita: checks LumBita: checks
TheLabman: folds TheLabman: folds
s0rrow: folds Hero: folds
Mamega: checks Mamega: checks
*** FIRST DRAW *** *** FIRST DRAW ***
Mamega: stands pat Mamega: stands pat
@ -722,7 +722,7 @@ LumBita: mucks hand
X USN-USMC collected $1.29 from pot X USN-USMC collected $1.29 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $1.35 | Rake $0.06 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 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 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] 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 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 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 2: Mamega ($3.90 in chips)
Seat 3: X USN-USMC ($6.82 in chips) Seat 3: X USN-USMC ($6.82 in chips)
Seat 4: tom1206 ($1.52 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 Mamega: posts small blind $0.05
X USN-USMC: posts big blind $0.10 X USN-USMC: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [2c Ah 3h 8h 5s] Dealt to Hero [2c Ah 3h 8h 5s]
tom1206: calls $0.10 tom1206: calls $0.10
LumBita: calls $0.10 LumBita: calls $0.10
TheLabman: folds TheLabman: folds
s0rrow: raises $0.10 to $0.20 Hero: raises $0.10 to $0.20
Mamega: folds Mamega: folds
X USN-USMC: folds X USN-USMC: folds
tom1206: calls $0.10 tom1206: calls $0.10
@ -754,37 +754,37 @@ LumBita: calls $0.10
*** FIRST DRAW *** *** FIRST DRAW ***
tom1206: discards 2 cards tom1206: discards 2 cards
LumBita: discards 2 cards LumBita: discards 2 cards
s0rrow: discards 1 card [8h] Hero: discards 1 card [8h]
Dealt to s0rrow [2c Ah 3h 5s] [8d] Dealt to Hero [2c Ah 3h 5s] [8d]
tom1206: checks tom1206: checks
LumBita: checks LumBita: checks
s0rrow: bets $0.10 Hero: bets $0.10
tom1206: calls $0.10 tom1206: calls $0.10
LumBita: calls $0.10 LumBita: calls $0.10
*** SECOND DRAW *** *** SECOND DRAW ***
tom1206: discards 2 cards tom1206: discards 2 cards
LumBita: stands pat LumBita: stands pat
s0rrow: discards 1 card [8d] Hero: discards 1 card [8d]
Dealt to s0rrow [2c Ah 3h 5s] [2s] Dealt to Hero [2c Ah 3h 5s] [2s]
tom1206: checks tom1206: checks
LumBita: bets $0.20 LumBita: bets $0.20
s0rrow: calls $0.20 Hero: calls $0.20
tom1206: calls $0.20 tom1206: calls $0.20
*** THIRD DRAW *** *** THIRD DRAW ***
tom1206: discards 1 card tom1206: discards 1 card
LumBita: stands pat LumBita: stands pat
s0rrow: discards 1 card [2s] Hero: discards 1 card [2s]
Dealt to s0rrow [2c Ah 3h 5s] [Qd] Dealt to Hero [2c Ah 3h 5s] [Qd]
tom1206: checks tom1206: checks
LumBita: bets $0.10 and is all-in LumBita: bets $0.10 and is all-in
s0rrow: folds Hero: folds
tom1206: folds tom1206: folds
Uncalled bet ($0.10) returned to LumBita Uncalled bet ($0.10) returned to LumBita
LumBita collected $1.57 from pot LumBita collected $1.57 from pot
LumBita: doesn't show hand LumBita: doesn't show hand
*** SUMMARY *** *** SUMMARY ***
Total pot $1.65 | Rake $0.08 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 2: Mamega (small blind) folded before the Draw
Seat 3: X USN-USMC (big blind) folded before the Draw Seat 3: X USN-USMC (big blind) folded before the Draw
Seat 4: tom1206 folded after the 3rd 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 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 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 2: Mamega ($3.85 in chips)
Seat 3: X USN-USMC ($6.72 in chips) Seat 3: X USN-USMC ($6.72 in chips)
Seat 4: tom1206 ($1.02 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 X USN-USMC: posts small blind $0.05
tom1206: posts big blind $0.10 tom1206: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [Jd 5c 2s 5h Qs] Dealt to Hero [Jd 5c 2s 5h Qs]
LumBita: calls $0.10 LumBita: calls $0.10
TheLabman: folds TheLabman: folds
s0rrow: folds Hero: folds
Mamega: folds Mamega: folds
X USN-USMC: calls $0.05 X USN-USMC: calls $0.05
tom1206: checks tom1206: checks
@ -838,7 +838,7 @@ tom1206: mucks hand
X USN-USMC collected $0.67 from pot X USN-USMC collected $0.67 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $0.70 | Rake $0.03 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 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 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] 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 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 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 2: Mamega ($3.85 in chips)
Seat 3: X USN-USMC ($7.09 in chips) Seat 3: X USN-USMC ($7.09 in chips)
Seat 4: tom1206 ($0.72 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 tom1206: posts small blind $0.05
LumBita: posts big blind $0.10 LumBita: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [Qd 2d 5s Ah 8d] Dealt to Hero [Qd 2d 5s Ah 8d]
TheLabman: folds TheLabman: folds
s0rrow: calls $0.10 Hero: calls $0.10
Mamega: folds Mamega: folds
X USN-USMC: folds X USN-USMC: folds
tom1206: folds tom1206: folds
LumBita: checks LumBita: checks
*** FIRST DRAW *** *** FIRST DRAW ***
LumBita: discards 3 cards LumBita: discards 3 cards
s0rrow: discards 2 cards [Qd 8d] Hero: discards 2 cards [Qd 8d]
Dealt to s0rrow [2d 5s Ah] [Jc 8h] Dealt to Hero [2d 5s Ah] [Jc 8h]
LumBita: checks LumBita: checks
s0rrow: checks Hero: checks
*** SECOND DRAW *** *** SECOND DRAW ***
LumBita: discards 2 cards LumBita: discards 2 cards
s0rrow: discards 1 card [Jc] Hero: discards 1 card [Jc]
Dealt to s0rrow [2d 5s Ah 8h] [9s] Dealt to Hero [2d 5s Ah 8h] [9s]
LumBita: bets $0.20 LumBita: bets $0.20
s0rrow: calls $0.20 Hero: calls $0.20
*** THIRD DRAW *** *** THIRD DRAW ***
LumBita: stands pat LumBita: stands pat
s0rrow: stands pat on [2d 5s Ah 8h 9s] Hero: stands pat on [2d 5s Ah 8h 9s]
LumBita: checks LumBita: checks
s0rrow: checks Hero: checks
*** SHOW DOWN *** *** SHOW DOWN ***
LumBita: shows [7h 2s 5c 8c 6c] (Lo: 8,7,6,5,2) 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 LumBita collected $0.62 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $0.65 | Rake $0.03 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 2: Mamega folded before the Draw (didn't bet)
Seat 3: X USN-USMC (button) 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 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 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 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 2: Mamega ($3.85 in chips)
Seat 3: X USN-USMC ($7.09 in chips) Seat 3: X USN-USMC ($7.09 in chips)
Seat 4: tom1206 ($0.67 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 LumBita: posts small blind $0.05
TheLabman: posts big blind $0.10 TheLabman: posts big blind $0.10
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to s0rrow [Jd As 8h 3s 7c] Dealt to Hero [Jd As 8h 3s 7c]
s0rrow: calls $0.10 Hero: calls $0.10
Mamega: folds Mamega: folds
X USN-USMC: folds X USN-USMC: folds
tom1206: calls $0.10 tom1206: calls $0.10
@ -918,49 +918,49 @@ TheLabman: checks
*** FIRST DRAW *** *** FIRST DRAW ***
LumBita: discards 2 cards LumBita: discards 2 cards
TheLabman: discards 1 card TheLabman: discards 1 card
s0rrow: discards 1 card [Jd] Hero: discards 1 card [Jd]
Dealt to s0rrow [As 8h 3s 7c] [4h] Dealt to Hero [As 8h 3s 7c] [4h]
tom1206: discards 2 cards tom1206: discards 2 cards
LumBita: checks LumBita: checks
TheLabman: bets $0.10 TheLabman: bets $0.10
s0rrow: calls $0.10 Hero: calls $0.10
tom1206: raises $0.10 to $0.20 tom1206: raises $0.10 to $0.20
LumBita: calls $0.20 LumBita: calls $0.20
TheLabman: calls $0.10 TheLabman: calls $0.10
s0rrow: calls $0.10 Hero: calls $0.10
*** SECOND DRAW *** *** SECOND DRAW ***
LumBita: discards 1 card LumBita: discards 1 card
TheLabman: discards 1 card TheLabman: discards 1 card
s0rrow: discards 1 card [8h] Hero: discards 1 card [8h]
Dealt to s0rrow [As 3s 7c 4h] [8d] Dealt to Hero [As 3s 7c 4h] [8d]
tom1206: stands pat tom1206: stands pat
LumBita: checks LumBita: checks
TheLabman: checks TheLabman: checks
s0rrow: checks Hero: checks
tom1206: bets $0.20 tom1206: bets $0.20
LumBita: calls $0.20 LumBita: calls $0.20
TheLabman: calls $0.20 TheLabman: calls $0.20
s0rrow: calls $0.20 Hero: calls $0.20
*** THIRD DRAW *** *** THIRD DRAW ***
LumBita: discards 1 card LumBita: discards 1 card
TheLabman: 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 tom1206: stands pat
LumBita: checks LumBita: checks
TheLabman: checks TheLabman: checks
s0rrow: checks Hero: checks
tom1206: bets $0.17 and is all-in tom1206: bets $0.17 and is all-in
LumBita: calls $0.17 LumBita: calls $0.17
TheLabman: folds TheLabman: folds
s0rrow: calls $0.17 Hero: calls $0.17
*** SHOW DOWN *** *** SHOW DOWN ***
tom1206: shows [5c 6c 4d 2h 8c] (Lo: 8,6,5,4,2) tom1206: shows [5c 6c 4d 2h 8c] (Lo: 8,6,5,4,2)
LumBita: mucks hand LumBita: mucks hand
s0rrow: mucks hand Hero: mucks hand
tom1206 collected $2.39 from pot tom1206 collected $2.39 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $2.51 | Rake $0.12 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 2: Mamega folded before the Draw (didn't bet)
Seat 3: X USN-USMC 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 Seat 4: tom1206 (button) showed [5c 6c 4d 2h 8c] and won ($2.39) with Lo: 8,6,5,4,2

View File

@ -4,25 +4,25 @@ Seat 1: Player1 ($27.95 in chips)
Seat 2: Player2 ($7.50 in chips) Seat 2: Player2 ($7.50 in chips)
Seat 3: Player3 ($12.15 in chips) Seat 3: Player3 ($12.15 in chips)
Seat 4: Player4 ($9.25 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 Player4: posts small blind $0.25
Player5: posts big blind $0.50 Hero: posts big blind $0.50
vega104: sits out vega104: sits out
*** DEALING HANDS *** *** DEALING HANDS ***
Dealt to Player5 [4d 7d 4c 5c Tc] Dealt to Hero [4d 7d 4c 5c Tc]
Player1: folds Player1: folds
Player2: folds Player2: folds
Player3: folds Player3: folds
Player4: calls $0.25 Player4: calls $0.25
Player5: checks Hero: checks
Player4: discards 1 card Player4: discards 1 card
Player5: discards 1 card [4c] Hero: discards 1 card [4c]
Dealt to Player5 [4d 7d 5c Tc] [Ad] Dealt to Hero [4d 7d 5c Tc] [Ad]
Player4: checks Player4: checks
Player5: checks Hero: checks
*** SHOW DOWN *** *** SHOW DOWN ***
Player4: shows [6d Js As Jd 6c] (two pair, Jacks and Sixes) Player4: shows [6d Js As Jd 6c] (two pair, Jacks and Sixes)
Player5: mucks hand Hero: mucks hand
Player4 collected $0.95 from pot Player4 collected $0.95 from pot
*** SUMMARY *** *** SUMMARY ***
Total pot $1 | Rake $0.05 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 2: Player2 folded before the Draw (didn't bet)
Seat 3: Player3 (button) 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 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