-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathOpenHoldem Release Notes.txt
1722 lines (1371 loc) · 94.9 KB
/
OpenHoldem Release Notes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
v1.9.x
=================
BUG FIXES:
- Correct the protection against dangerously low f$willplay & f$wontplay. Problem identified by a.punter (Matrix)
- Perl preferences didn't load the default formulas name from registry. Thanks to Skyzzo for finding it. (TheHighFish)
- Correct chip scrape routine to stop horizontal scanning on a non-match on the first vertical chip. Thanks Ares. (OpenHoldem)
- Stopped poker tracker code from skipping name check when it thinks it already found a match. This will allow the
code to recover quickly if it happens to mis-scrape a name when originally connecting to a table. Thanks to Booster
for the patch. (OpenHoldem)
v1.9.5 2008-11-24
=================
BUG FIXES:
- Did* symbols not being reset between rounds. Thus if your bot swags in round 1, "didswag" will be non-zero throughout
that same hand. Thanks to PokerBandit1 for originally pointing this out, and thanks to Brass Knuckles for spending an
inordinate amount of time helping to diagnose the root cause. (OpenHoldem)
- Out of range hash points in a .tm file can cause a crash. Bounds checking added. Thanks, peanutym for finding the bug.
(OpenHoldem)
v1.9.4 2008-10-21
=================
BUG FIXES:
- Validation of card information passed in from PokerPro server to avoid crashes when/if bad information
is passed in. (OpenHoldem)
- f$srai would show up as [Cached] in the Autoplayer Trace. This function will now be traced if f$swag is set to be traced. (Spew)
- Corrected error in ICM::GetChairFromDealPos method introduced in 1.9.3a and identified by SNG.Champ (OpenHoldem)
- Eliminated artificial limitations on the number of font or hash records that can be present in any given tablemap (.tm) file.
Previously this was set to 512 for each. Thank you to Nick Coldhand & Folder for busting the limit. (OpenHoldem)
- Fix for non-released crit sec in CDlgScraperOutput::do_update_display. Identification by ZooBoy, patch by Elvis.
- log$ functions were not displayed properly on the main OH display (Spew)
- The formula editor would allow the creation of duplicate lists and udfs. The rename and new operations did not check for uniqueness (Spew)
- Added range check in CTransform::DoPlainFontScan to correct out-of-range error with large fields (more than 169 pixels wide).
This bounds violation can and will cause sporadic access violation crashes. Thanks to Nick for finding the problem and providing
the .tm/frame to diagnose the issue.
- Corrected OH to properly recognize "Network" setting on ManualMode, to report "network$" symbol correctly, and to correctly
retrieve PokerTracker symbols when connected to a ManualMode table.
- Full house hand strength was not working correctly with trips on board. Identification of problem and submission of patch by elvis.
- CSymbols.cpp mofified to give correct pcbits/npcbits value when a straight or straight flush contains an Ace(noted by fn101). (Matrix)
- Fixed problem of seeding of RNG. Spawned threads were not seeding the RNG pseudo-randomly. (Thanks, Matrix, for the fix)
MAINTENANCE:
- Removal of fatal_error.log creation on crash. This has been replaced by minidumps.
- Further stabilization of code tree, especially regarding class encapsulation and thread critical section handling.
- The Optimizer in the compiler has now been enabled by default for Release builds.
v1.9.3 2008-08-22
=================
NEW STUFF:
- NONE PLANNED
BUG FIXES:
- Problem with session_ID causing multiple instances of OH to write into
the same log-file. (Thanks, USBFreak). Unique session IDs are in the range
0..N, as small as possible. (TheHighFish)
- Some preferences setting got not saved correctly. (TheHighFish)
- i3slider jamming fix http://www.maxinmontreal.com/forums/viewtopic.php?f=111&t=5263 (Spew)
- Cancel on apply confirmation dialog in Formula Editor would not cancel the close operation (Spew)
http://www.maxinmontreal.com/forums/viewtopic.php?f=111&t=5189
- Use of re_st_ and re_re_ symbol would always make the Autoplayer Trace output the results of the function being called (Spew)
- Further "crash" bug fixes - removal of superflous code in heartbeat_thread. (OpenHoldem/Spew)
- Error in PokerAction::pf_bets function corrected.
- CScraper::ScrapeName, CScraper::ScrapeBalance, correted code to check seated status with "IsStringSeated" function.
MAINTENANCE:
- Complete reworking of thread model to make use of critical sections more intuitive, and to improve
reliability of code. Current thinking is that thread concurrency issues are a source of the
current spate of crashes, this reworking addresses those concurrency issues.
Specifically, the following classes are now fully encapsulated with access to member variables
being provided via accessor and mutator functions. Access to class members is strictly limited
to the published interface, and is enforced at compile time via private class sections and
const-ness checks. Critical section handling is also now within the class and is used to
serve the relevant mutator functions. Classes that are not included in the list below will be fully
encapsulated at a later date.
- CScraper
- CSymbols
- CIteratorThread
- CAutoplayer
- CHeartbeatThread
- CPokerTrackerThread
- CGlobal (partial)
- Consistency of variable/function naming has been applied for the CScraper and CSymbols classes.
- Minidumps are now generated automatically upon a crash - dumps can be found in your OpenHoldem
startup directory. This feature requires dbghelp.dll to be distributed with OpenHoldem. This file
should be placed in the same directory where OpenHoldem.exe lives.
- Primary formulas (f$alli, f$swag, f$rais, f$call, f$play, f$prefold, f$delay, f$chat) are now only
calculated once per heartbeat and reused. Update of main window (best action, especially) is much more timely.
- System-wide mutex is now created once, upon instantiation of the CAutoplayer class. Locks and unlocks all now
use this single mutex instance. All early, exception-case exits that *may* have resulted in an unintentionally
long-locked mutex have had Unlocks added.
v1.9.2 2008-07-25
=================
NEW STUFF:
- Perl supports now player names and table name; gwp and gwt function (by elvis) (TheHighFish)
- Added to the Hand List Dialog a display of what percentage of hand the current hand list represents (Spew)
BUG FIXES:
- corrected pcbits / npcbits for straight and straight flush cases. (Thanks, pokerbandit) (Matrix)
- Don't clobber the hand number for the first frame of a new hand
- Make the i86 button work.
- Corrected typo in prw1326 vanilla chair init. (Thanks Eesahe) (Matrix)
- Corrected opening of formula to not require exclusive file access (Thanks Spud) (OpenHoldem)
- Associated the OpenHoldemDoc class with both ohf and whf file types. (TheHighFish)
- Perl: Loading interpreter now without restart, when enabled in the preferences dialog. (TheHighFish)
- The infamous "random crash bug" fixed. Occurred during parse, manifested during a dll gws call in
the destructor of skip_grammar http://www.maxinmontreal.com/forums/viewtopic.php?f=156&t=5170 (Spew)
- Fix for this bug fix in 1.9.1: 'Changed button states to not require a perfect match on returned values, but
rather a substring match. Thus a button state returning "true1", "true2", etc will work properly now'
This change negatively impacted the behavior of the sitin/sitout recognition, and the poker tracker
query symbols, at a minimum. This is due to the fix being based on a substring search of the state,
rather than on the first X characters. Thank you to many people for identifying the effects of this
bug, and to quiqsilver for identifying the root cause (OpenHoldem)
v1.9.1 2008-06-27
=================
NEW STUFF:
- Added semantic action to grammar to allow for validation of symbols upon parsing of
formula code. Symbols that are not valid, but syntactically correct, will now be flagged
appropriately. See here for more information on sematic actions in the spirit
library: http://spirit.sourceforge.net/distrib/spirit_1_8_5/libs/spirit/doc/semantic_actions.html
(OpenHoldem)
- Added additional validation of numeric fields. To be considered numeric, a scraped region must not
only contain only these characters "$0123456789,.¢ckm", but must 1. have 0 or 1 decimal points, and
2. If a decimal point is present, then there must be exactly 2 numbers following it. (OpenHoldem)
- User defined functions are now recognized by the Formula Dialog so that they are now colored (Spew)
- islistXXX and vs$XX$pr* symbols are color-coded only if the equivalent hand list is defined (Spew)
- Added f$prefold to the Autoplayer Trace (Spew)
BUG FIXES:
- Only locate/open the versus.bin file during OH initialization to avoid
problems with the current directory changing. (ZooBoy)
- Fix icm_allilose once we're in the money. Avoid potential out-of-bounds
accesses to prizes[]. (ZooBoy)
- Fix assertion failures in ICMCalculator.cpp when reconnecting to a table
without changing the hand in play. (ZooBoy)
- Added recalc of symbols upon press of a flag button (OpenHoldem)
- Changed button states to not require a perfect match on returned values, but
rather a substring match. Thus a button state returning "true1", "true2", etc
will work properly now (OpenHoldem)
- Checking headers of OH formulas for missing trailing string "##",
which caused incorrect array indices and crashes.
Trying to continue gracefully. (TheHighFish)
- Possible buffer overflow with reading of window title text has been corrected in
scraper.h and scraper.cpp (OpenHoldem)
- Poker Tracker symbols no longer permanently fail (always return 0) after red button/
sitting out. (Thanks, Winngy) (quiqsilver)
- Erratic problems with attempting to retrieve Poker Tracker data when using Manual Mode
are now fixed. (Thanks, eesahe) (quiqsilver)
- Correcting possible issue that can cause a crash. Worker threads should not be playing with windows (SetWindowText) - Spew
- The third form of the hand multiplexor (f$$XXx) was not differentiating between suited
and non-suited hole cards correctly. (eesahe/OpenHoldem)
- Corrected prw1326 .weight limit glitch. (Thanks, eesahe) (Matrix)
- Fixed problem where "$$" was passing parse checks. "IsHand" function has been augmented to detect and
report malformed requests. (OpenHoldem)
- Fixed problem where certain malformed symbol combinations would pass parse validation, such as
"$T7s $89s". (OpenHoldem)
MAINTENANCE:
- A single OpenHoldem Formula file (*.ohf) instead of *.whf and *.whx.
The WinHoldem format is still recognized, but gets converted automatically
when saved. (TheHighFish)
- Treating f$evrais and f$evcall now as user defined functions,
as they are not necessary for the majority of poker bots
(only for the default one).
f$delay and f$chat became standard functions, as they could have
a greater impact on the behaviour of bots.
Slightly modified default bot to reflect this change. (TheHighFish)
- Added parameter validity checking on all functions in scraper.cpp.
(OpenHoldem)
- Random button clicking logic changed to further improve distribution of
click points in Autoplayer::get_click_point. (Indiana/OpenHoldem)
v1.9.0 2008-05-16
=================
NEW STUFF:
- Autoplayer Tracing - In Edit->Preferences,Logging you can now enable tracing of specific
functions used by the Autoplayer. When enabled you will see the results of all functions
and all the symbols (and their values) that were accessed by those functions in oh?.log. (Spew)
- Group UDFs - The formula dialog will now place functions whose name match up to the
first "_" together in the left tree.
For example, f$river_raise, f$river_call will be grouped under the group named "river".
This is optional and can be turned on under View->Group UDFs menu (Spew)
- Display Log symbol on OH screen. If log symbol are enabled in OH preferences,
the information box will be enlarge to allow for 4 log symbols to be displayed while OH is running (Spew)
- Added image transform capability with perceptual difference algorithm (OpenHoldem)
- Added support for jamming the slider handle, but only when both an i3handle and an i3slider
are defined in the TM. Also required; f$alli must be true, ismyturn must be true, and scraper
must have found i3handle on the i3slider path. The handle will be grabbed and pulled to the
extent of slider, and i3button or whatever is defined as alli_but will be depressed.
- Check for enough disk space, when shooting replay frames (min. 10 MB). (TheHighFish)
- prw1326, Facility for a dll to activate and control individual chair handlists which are then
used in the OH prwin calculation. Unless explicitly activated from the dll normal prwin logic
is applied. (Matrix)
BUG FIXES:
- Perl menu: "Reload" command was active, even when no formula was loaded (Thank you, JumpingFences).
Same for "Edit" and "Check syntax". Fixed in rev. 283 (TheHighFish)
- Added an "OnBnClickedOk();" accidentally deleted in rev. 278. (TheHighFish)
- Formula gets saved under wrong file name (jumpingfences)
- OH opens not on top and not in focus (jumpingfences)
- uXactive fix in 1.8.2 is now compatible with activemethod. (quiqsilver)
- Closed DC/GDI leakages as identified by ZooBoy here: http://www.maxinmontreal.com/forums/viewtopic.php?f=111&t=4398
(OpenHoldem)
- Version 1.8.2 added this feature: "Added sanity checks around the SWAG action stream - if focus is
stolen from the target window during the four SWAG steps, then the final step (confirmation) will
not be executed." This has been added as a setting in this version. The setting defaults to "Off"
initially (but will be saved if set), so make sure and select it if you need it
(Edit/Preferences/Autoplayer). (OpenHoldem)
- New variable originaldealposition added which remembers dealposition even when the user has folded
a hand. (Matrix)
- Fix in Autoplayer::check_bring_keyboard to correctly enumerate bring system menu items (Thanks,
AndreL for the fix) (OpenHoldem)
- Fix to count_same_scrapes() location in Autoplayer::do_autoplayer, so that it is updated for every
frame and not only for the ones where 2 buttons are visible. (Thanks Spud) (OpenHoldem)
- Unload message sent to dll on OH closedown (Spud's fix - Matrix)
- List handling now recognises the current 1000 lists (Matrix)
- Change in CSymbols::calc_stakes to ensure that ante is reset properly each scrape. (Thanks ZooBoy)
(OpenHoldem)
- A simplification to the pseudo-RNG was made several releases ago, which consolidated the seeding of the
RNG into the COpenHoldemApp class. This has not had the desired effect, and in fact, the pRNG was not
being seeded for things such as random button clicking location, and prwin shuffling. The original
approach has been restored and seeding of the pRNG has been added to the constructors of the CSymbols
and Autoplayer classes, and has been added to the start of the prwin_thread thread. (OpenHoldem)
- Versus code modified to handle >100 handlists - Matrix
MAINTENANCE:
- Active and seated scraping now evaluates p first for efficiency. (quiqsilver)
- As part of the pdiff implementation and tuning, I got tired of updating the table map load/save
code in two places, and have moved this code to the CTransform class where it belongs. A great
deal of code was touched (more than I anticipated), so please test carefully. (OpenHoldem)
- When pressing the green button, a 15 file limit in the scraper directory existed (OH would only search
the first 15 table maps). This limitation has been removed. (OpenHoldem)
v1.8.2 2008-04-25
NEW STUFF:
- Make CFileDialog open in the most recently accessed directory in the context of
file type (.whf, .tm, .dll, .pl) (jumpingfences)
- New type of symbols available for logging: log$YourTextGoesHere
These symbols should make debugging formulas drastically easier.
When executed, they add your specified text to the log.
For example if you have:
[ br == 2 && (nsuited == 3 || nstraight == 3) && log$ItLives ]
in your f$rais formula and you flop a backdoor flush draw,
then OpenHoldem will raise and also add the text "ItLives" to the log file,
just before the RAIS line. Everytime a log$ symbol is accessed it will be flagged for logging.
You can use this to track which part of your formula is to blame for the action taken by OH.
Note: You want to use the log$ symbol at the end of a logic block,
to make sure it only gets flagged when all the previous statements are true. (Strom)
- versus.bin path registry entry (jumpingfences)
BUG FIXES:
- Fixed the uXseated and uXactive regions being ignored. (Strom)
- Fixed a freezing bug that was caused by common card animations and/or occlusion. (Strom)
- Removed "scrapes to name change" and "scrapes to zero balance" from scraper preferences. For names,
if a good name is scraped, the name is set. For balances, if a good number is scraped, the balance
is set, or if "allin" or its variants are scraped, balance is set to zero. (OpenHoldem)
- Userchair identification now requires 2 action buttons to be present (previously, only one needed to
be present). (OpenHoldem)
- Added sanity checks around the SWAG action stream - if focus is stolen from the target window during
the four SWAG steps, then the final step (confirmation) will not be executed. (Thanks, AndreL)
(OpenHoldem)
MAINTENANCE:
- Removed code-clones in registry.cpp. Replaced by functions. (TheHighFish)
- Replaced exception handling code clones by macros. (TheHighFish)
- Used a code indenter to beautify the *.cpp files. Atm *.h files still to do.
Looking for an easier solution. (TheHighFish)
v1.8.1 2008-04-11
NEW STUFF:
- Show wait cursor when parsing f$debug (jumpingfences)
- New symbol s$activemethod is now available. This is used to determine how OH treats
information from the pXactive and uXactive regions.
- 1: (default, legacy) Inactive unless pXactive/uXactive returns true/active
- 2: (new) Active unless pXactive/uXactive returns false/inactive/out/away (Thanks,
Nick Coldhand) (quiqsilver)
- When using ManualMode, the new "Network" option now available in the ManualMode interface
is now used as the network for Poker Tracker data. This means s$sitename and s$network in
the ManualMode table map are no longer used for Poker Tracker. (Thanks, Winngy)
(quiqsilver)
- New dll message phl1k introduced to pass address of OH handlists (Matrix)
- Added memory symbols from SM's DLL (OpenHoldem)
Memory symbols
---------
me_st_abc_123_45 - 'me_st_' stores a value "123.45" in variable "abc"
(use "_" for the decimal in values)
(a function name can also be passed in, instead of a number, for example:
'me_st_def_f$myfunc' would store the results of function f$myfunc in variable def)
me_re_abc - 'me_re_' retrieves the value from variable "abc"
Note to testers: In order to make this work, I had to slightly alter the grammar definition,
Specifically, the definition of a SYMBOL was changed from:
SYMBOL = leaf_node_d[ lexeme_d[ ((alpha_p | '_' | '$') >> *(alnum_p | '_' | '$')) ] ];
to:
SYMBOL = leaf_node_d[ lexeme_d[ ((alpha_p | '_' | '$') >> *(alnum_p | '_' | '$' | '.')) ] ];
- Two visible buttons are now required to be seen by the scraper before the autoplayer will act.
There is no valid Texas Holdem game state where only one button is visible. (OpenHoldem)
- For scraper preferences, the number of "Scrapes to change name" and the number of "Scrapes to zero balance"
defaults to "1", if not already stored in the registry. (Thanks, Nick Coldhand) (OpenHoldem)
BUG FIXES:
- Incorrect initialization of new hand and new betting round (jumpingfences)
- The correct blind size will now be inferred in a heads up situation. (Thanks, PhunkNugget)
(quiqsilver)
- ntraightfill family calculation corrected to give correct result when straight present (Matrix)
- Formula Editor dialog changed to prevent higher than list999 being referenced (Matrix)
- Autoplayer will not act if user not playing (no cards in hand) (Matrix)
- Fixed inconsistent Window Title after disconnecting from table (Spew)
- All "MessageBox(NULL, ..." calls have had "| MB_TOPMOST" added to ensure that these popup warnings
are visible and not hiding below other windows. (OpenHoldem)
- All _beginthread calls have been replaced with AfxCreateThread for better alignment with MFC
standard practice (OpenHoldem)
- Fixed bug in logical OR and logical AND expression evaluation. Was casting resultant component
expressions to an unsigned long prior to doing logical evaluation. Now comparing resultant component
expressions to zero prior to doing logical evaluation. (Thanks, CyberCriminal) (OpenHoldem)
- Betround is now identified based on the highest card seen on the board
if card 5 is seen, then br=4
if card 4 is seen, then br=3
if cards 1, 2 or 3 are seen, then br=2
else br=1
(Thanks, Strom) (OpenHoldem)
- CRunRon::get_counts has been reworked to count common cards that are visible, rather than
expecting them to be there based on the betting round (Thanks, Strom) (OpenHoldem)
v1.8.0 2008-03-29
NEW STUFF:
- New symbol s$potmethod is now available. This is used to determine the appropriate
site interpretation for the contents of c0pot0. s$potmethod can be set to these values:
- 1: (default, legacy) Common pot
- 2: (new) Total pot, including current bets and side bets (Thanks, Nick Coldhand)
(quiqsilver)
- Hand multiplexor symbol capability added. The three valid hand multiplexor symbols are
"f$$X", "f$$XX", and "f$$XXx". Note that the X's and x's are not case sensitive.
The purpose of the hand multiplexor is to transfer control to a specific named formula
based on your actual 2 card hand.
The X's in the three symbols will be substituted with your actual hand values at time
of evaluation. The first "X" will contain the the rank of your highest hole card, the
second "X" will contain the rank of your lowest hole card, and the third "x" will contain
either a "s" or "o" depending if your hole cards have the same suit or not. The $$ will
be replaced with a single dollar sign.
For example, if my hole cards are AhKh, then "f$$X" will result in "f$A" upon evaluation
Similarly, "f$$XX" would result in "f$AK" and "f$$XXx" would result in "f$AKs".
OpenHoldem will then evaluate the corresponding user defined function and return that value
for the hand multiplexor symbol. If there is not a corresponding UDF defined for a given
set of hole cards, then the return result is zero, not an error.
The values returned by the hand specific UDFs are entirely defined by you; one simple
suggestion is to have them return 1 for call and 2 for raise; if you do this then your
raise formula can do this:
"|| [ f$$XXx >= 2 ] //hand specific formula calc"
- Additional symbols from SingleMalt's DLL:
Action symbols
---------
ac_aggressor - which chair was aggressor (might be from previous round)
ac_agchair_after - does the aggressor chair act after me?
ac_preflop_pos - preflop position of the userchair (SB=1 BB=2 Early=3 Middle=4 Late=5 Dealer=6)
ac_prefloprais_pos - preflop position of the raiser (SB=1 BB=2 Early=3 Middle=4 Late=5 Dealer=6)
ac_postflop_pos - postflop position of the userchair (first=1 early=2 middle=3 late=4 last=5)
ac_pf_bets - returns 1 for no callers or blinds only
2 for Called Pot - 1 bet to call
3 for Raised Back - 1 more bet to call because someone behind you raised after you've already bet/called/raised
4 for Raised Pot - 2 bets to call
5 for Reraised Pot - 3+ bets to call
NOTE: Only valid when br==1
ac_first_into_pot - returns true if you are first to act
ac_betposx (x=0-9) - returns bet position of specified chair
ac_dealposx (x=0-9) - returns deal position of specified chair
MyHand symbols
---------
mh_3straightxy (x=1 for wheel, 0 not, y=1 for broadway, 0 not) - returns true if the board
has a wheel straight draw or broadway straight draw, given the wheel/broadway parameters
00 - true if the board has neither a wheel straight draw nor a broadway straight draw
10 - true if the board has a wheel straight draw
01 - true if the board has a broadway straight draw
11 - true if the board has either a wheel straight draw or a broadway straight draw
mh_bottomsd - returns true if I have a bottom straight draw
mh_nsuitedbetter - returns the number of missing suited cards that are higher than my best suited card
mh_kickerbetter - Number of cards that can beat your kicker
mh_kickerrank - The rank of your kicker (returns 0 if kicker is shared [board] and thus useless)
mh_nouts - returns number of outs (HTC's formula)
mh_str_strflush - returns a value from 0-5 (5 best) of the relative strength of your straight flush
mh_str_quads - returns a value from 0-5 (5 best) of the relative strength of your four of a kind
mh_str_fullhouse - returns a value from 0-5 (5 best) of the relative strength of your full house
mh_str_flush - returns a value from 0-5 (5 best) of the relative strength of your flush
mh_str_straight - returns a value from 0-5 (5 best) of the relative strength of your straight
mh_str_trips - returns a value from 0-5 (5 best) of the relative strength of your three of a kind
mh_str_twopair - returns a value from 0-5 (5 best) of the relative strength of your two pair
mh_str_onepair - returns a value from 0-5 (5 best) of the relative strength of your one pair
- Formula Editor: Symbol Tree
- Added a sorted list of all symbols which is in addition to the existing list of symbols grouped by category
- Delayed the insertion of the symbols until the user clicks on the 'Symbol' tab to avoid any performance issues
- Added context menu on Symbols to allow Copy-ing to the clipboard
- Reload Perl Formula (menu) to avoid unload + load. (TheHighFish).
- Perl syntax check. (TheHighFish).
- Added some hotkeys:
* F12 Shoot replay frame
* F4/F5 Load (specific) DLL
* F7..F11 Perl menu
(TheHighFish)
BUG FIXES:
- OH will no longer force blinds to bblind==2*sblind, when bblind!=2*sblind. For example,
sblind=$0.10 and bblind=$0.25 are acceptable. (OpenHoldem, thanks to Spud for fix).
- Typo in CScraper::DoScrape corrected. "if (!seated[i] & !active[i])" fixed to
"if (!is_string_seated(seated[i]) && !is_string_active(active[i]))" (OpenHoldem)
- File selection dialog for Perl fixed. The filter shows now correctly
Perl scripts and modules. (TheHighFish)
- Passing pointer to the callback function now everytime to Perl,
when a new file gets loaded, instead of only once when the
interface is initilaized. (TheHighFish)
- Assertion failure in CFontDialog (jumpingfences)
- Autopost will now work if the autopost button is not present while sitting out. (quiqsilver)
- m_name_known, m_balance_known will be properly set when connected to PPro (spew)
- logging (oh1.log) was not used when connected to PPro (spew)
- Default formula no longer sets modified flag, so you are not prompted to save it when loading
some other formula, or on exit. (OpenHoldem)
- Fixed code that ensures OH window is brought to top on start. It now waits for any formula
loading and parsing to complete before doing so, which was the behavior prior to the 1.7.0 release.
(OpenHoldem)
- Hand resets are now triggered not only by a change in dealer button, but by a change in handnumber
or by a change in the userchair's cards from the previous hand. (OpenHoldem)
- (TheHighFish) Fixed bug with floating point division introduced by this change in 1.7.0:
"Detection of divide-by-zero expressions has been corrected/enhanced for situations that include
invalid symbols (OpenHoldem)"
In grammar.cpp, changed:
unsigned long div = eval_expression(f, i->children.begin()+1, e);
To:
double div = eval_expression(f, i->children.begin()+1, e);
v1.7.0 2008-03-15
NEW STUFF:
- All Poker Tracker-compatible sites are now supported by OH for pulling Poker Tracker data.
The table map must have s$network or s$sitename set to a supported name (see s$network below
for a complete list). (quiqsilver)
- New symbol s$network is now available. This is used to determine the appropriate
network to pull Poker Tracker data for when s$sitename is not a PT supported site. OH will
first check s$sitename for a supported network name, then s$network. These are the supported
names for both s$sitename and s$network and must be lowercase: stars, party, ultimate, absolute,
microgaming, ongame, cryptologic, pacific, fulltilt, b2b, tribeca, worldpex, ipoker, tain,
bodog, everest, boss, and betfair. (quiqsilver)
- OpenHoldem will now use Poker Tracker data when connected to ManualMode if s$network or
s$sitename in ManualMode's table map is set to a Poker Tracker compatible name. (quiqsilver)
- Integration of the ActiveState Perl interpreter. (TheHighFish)
- Automatic poker chat for formula and DLL level. (TheHighFish)
- Warnings have been added when you click the Connect button for common configuration issues.
Font Smoothing, 24+ Bit color, and a check for Title size to catch XP Themes and Font Size settings (Spew)
- Added a check for a card string of "10" instead of "T", to be converted to a "T", in both common and
player card rank fuzzy scrapes (e.g., "if (rankstr=="10") rankstr="T";"). - BillW
BUG FIXES:
- OpenHoldem no longer performs unnecessary Poker Tracker database queries when we are not using
a compatible site. (quiqsilver)
- ishandup and ishandupcommon now determined using memories of the high bits of pokerval rather than
the raw return from hand_eval_N (Matrix)
- Formula Dialog stays open untill File->New and File->Open completes. Toolbar button
sometimes stays pressed after Formula Dialog gets closed. (jumpingfences)
- Removed some circular dependences between some non-GUI modules and MainFrm and OpenHoldem
by moving sessionnum, g_tlist, startup_path to CGlobal. Uncoupled symbols from PokerPro. (jumpingfences)
- Preferences tabs sorted in alphabetical order. (TheHighFish)
- Detection of divide-by-zero expressions has been corrected/enhanced for situations that include invalid
symbols (OpenHoldem)
- ishiflush and ishistraight now properly represent having the highest possible true hand of the respective
type. This does not include hands of a different rank, such as royal flushes and straight flushes.
(Thanks, PokerBandit1 and Winngy) (quiqsilver)
- Side pots (c0pot1-4) not added to 'pot' and 'potcommon' - fixed (Spew)
- Source code: CTransform class (transform.cpp and transform.h) now live outside of the OpenHoldem and OpenScrape
directories, so it can be shared without manually needing to copy code from place to place. (OpenHoldem)
- OpenHoldem's main window will now appear on top at launch. (CMainFrame::OnCreate) (OpenHoldem)
v1.6.0 2008-02-22
NEW STUFF:
- Table maps using fuzzy fonts are now utilized correctly in the scraper engine.
- OpenHoldem and OpenScrape now use an identical CTransform class (this is found in the
transform.cpp/.h files).
- Formula Editor (Thanks Spew for the code)
- Added help links to Wiki and Forum (Help/Wiki, Help/Forum)
- Added popup help for symbols. Look at the formula tree, select the "Symbols" tab,
and hover your mouse pointer over the symbol that you are looking for help on.
- In a further attempt to reduce mis-swags, an additional mouse click on the edit box
has been made after the text is deleted, and before the SWAG text is entered.
(Autoplayer::do_swag)
- Added option to double click on action buttons. This may help in dealing with those
sites that have buttons that are "hard" to push.
Edit/Preferences/Autoplayer/Button Clicking Method (Thanks, Winngy for the idea)
- Added option to disable all symbol caching. (Thanks, Matrix for the idea)
Edit/Preferences/Symbols/Disable all Symbol Caching.
BUG FIXES:
- Seeding of random number generator moved to COpenHoldemApp::InitInstance, and seed
now uses higher quality LowPart of QueryPerformanceCounter. All other instances of
"srand" have been removed. (Thanks, Miathan)
- PokerPro: f$play was using value returned from f$call accidentally. This is a cut'n'paste
typo that has been corrected. (Thanks HTC for the bug find & Spew for the code fix)
(PokerPro::DoAutoplayer)
- PokerPro: when connected to a poker pro server, m_holdem_state[m_ndx].m_title would always
be blank. (Thanks to Bozo for the bug find and Spew for the code fix).
- Parsing of money fields was inconsistently applied. Some money fields recognized the "¢", "k"
and "m" suffixes, and some did not, for example. That function has been unified and all
money fields should behave consistently now. (Thanks, MrRuder)
- the dollar sign ($) leader is discarded
- commas are discarded
- the remaining text is then fed through atof() to generate an internal double
- the cent symbol (¢) or the letter (c) trailer causes the number to be divided by 100
- the thousand (k) trailer causes the number to be multiplied by 1000
- the million (m) trailer causes the number to be multiplied by 1000000
- The stack0-9 symbols were including balances of players not currently playing in the hand.
This has been corrected. (Thanks, BrassKnuckles) (CSymbols::calc_betbalancestack)
v1.5.1 2008-02-15
NEW STUFF:
- "File/Load Profile" menu item changed to "File/Load Table Map" (Oops) (Thanks, Folder)
BUG FIXES:
- ICM prize settings were all being saved to the registry with the 1st prize value.
(Thanks, Nick Coldhand) (CDlgSAPrefs7::OnOK)
- Code accidentally deleted during merge of Matrix's weighted-prwin functionality has been
restored. Thanks to jumpingfences for first identifying the bug, and to Matrix for
finding my merging mistake. (threads.cpp, prwin_thread)
- Between the text selection and text deletion action of a swag event, there was a return of
the cursor to its original position. This may have been a cause of the strange swag entries,
but testing is needed to see if there is a difference. In any case, it has been removed, as
it is redundant, and the only return of the cursor now happens after the completion of the
entire swag event. (Autoplayer::do_swag)
v1.5.0 2008-02-08
NEW STUFF:
- Formula Editor (Code by Spew)
- Added Find Next/Prev to the Edit menu
- Added F3 and Shift F3 shortcuts for Find Next/Prev
- Merged Matrix's alternative weighted-prwin code to the project:
This is the model implemented in the weighted prwin. The two most important points are f$willplay,
the handrank169 value below which opponents will almost certainly play cards; and f$wontplay, the
value above which they are highly unlikely to play. Two further values are provided to allow for
simulation of the case where with low pre-flop betting good cards start to be less likely merely
to be called (f$topclip), but the very best hands might be slowplayed to tease more out of the
pot (f$mustplay).
p |---| ---------
r | | / \
o | | / \
b | | / \
a | |/ \
b | \
l -----------------------------------------------------
e 1 2 3 4 handrank169 ->
1=mustplay
2=topclip
3=willplay
4=wontplay
(with the current statistics available in OH only willplay and wontplay should be used. mustplay
and topclip are debatable constructs at the best of times)
Ideally you would base the calculations of these points on the statistics for opponent betting
pre-flop at various bet levels. This information is not currently available from OH (unless you use
the PokerTracker capabilities), but the single most useful statistic, SingleMalt's floppct, can
be used. Using this to set f$willplay and f$wontplay gives the major advantage which a weighted
prwin gives; the elimination of rags from the iterator calculations. A starting point might be
something like:
##f$willplay##
handsplayed<10?72:180*floppct
##f$wontplay##
f$willplay*1.4
If f$willplay is absent, or returns zero, the prwin weighting is disabled, as it is if the f$P is
greater than 13. The calculation will not weight the cards for an opponent who is BB and has limped
into the flop. f$willplay will be increased internally if it is so low that the iterator cannot assign
cards for all opponents from the available matching hands.
BUG FIXES:
- Manual replay frame shooting: Sometimes, OH will hang indefinitely while waiting for threads to
finish, when snapping a manual replay frame (camera toolbar icon). Put hard stop in code to avoid
an endless wait. (CGlobal::create_replay_frame)
- f$ function results were sometimes being cached in the Formula Editor's working set inappropriately,
and resulting in stale values being presented in the dialog. All working set f$ functions are now
set to "stale" upon each click of the "Calc" button, and on every update of f$debug when it is set
to "Auto" mode. (Thanks, DonPauleone) (CDlgFormulaScintilla::OnBnClickedCalc, and
CDlgFormulaScintilla::update_debug_auto)
- This is not a bug, just code cleanup. Moved the following code out of the inner loop in
CSymbols::calc_nhands. (Thanks, Thrillhouse)
CardMask_OR(playerEvalCards, plCards, comCards);
hv_player = Hand_EVAL_N(playerEvalCards, nplCards+ncomCards);
pl_pokval = calc_pokerval(hv_player, nplCards+ncomCards, &dummy, CARD_NOCARD, CARD_NOCARD);
- Added default case to switch statement in COpenHoldemView::draw_card. (Thanks, jumpingfences)
- vs$xx$prwin/los/tie now works correctly in rounds other then br==1. Internal counters were not being
reset for br==2,3,4. (Thanks, Brass Knuckles) (CVersus::get_counts)
v1.4.4 2008-02-01
NEW STUFF:
- Hand Lists can now contain comments. Comment lines are prefaced with the standard double forward
slash "//". The hand list parsing function has been made more efficient in its processing and by
using pointer arithmetic instead of Mid(). The hand list parsing function has also been moved to
CGlobal::ParseHandList, as there was duplicate code contained in the Formula dialog to handle the
Hand List dialog. (Code by Spew)
- Formula Editor: (Code by Spew)
- Added keyboard shortcuts to take advantage of Scintilla Bookmarks Ctrl-F2 to set, F2 to go to next,
Shift-F2 to go to previous. (Code by Spew)
- Added modeless Find dialog. Implemented such that you can always bring it up but it only works if
you have a valid Formula/Hand List active (But you can have the focus on the tree control).
- Cleaned up Formula dialog code with respect to enabling and disabling. Previously the enabling or
disabling of the UI was interspersed in the various functions that dealt with user input. All the
enables/disables are consolidated in one function that will assess the state of dialog and enable
all the controls/menus/toolbars/etc as necessary.
- Per BillW, commented out loading of i$ records from a profile, until the time when the "Image"
transform is enabled in OH code. (profile.cpp, load_profile)
- Per BillW, removed Save Profile code, as there is no need for this in OpenHoldem any longer, as all
this functionality is contained within OpenScrape. (profile.cpp, profile.h)
- Replay frame creation:
- Settings for replay frame creation can be found in the preferences dialog.
- Press the camera toolbar button on the main window, or use the "View/Shoot Replay Frame" menu option
to create a new replay frame at any time you want, provided that you are connected to a poker window.
- Replay frames are 100% compatible with whreplay.exe; we fully expect to develop a whreplay
replacement in the near future, but this will do for now. In order to use whreplay, either:
1. OpenHoldem and whreplay must exist in your winholdem install folder, or
2. You must change the HKCU/Software/WinHoldEm/InstallFolder registry key to point to the location of your
OpenHoldem directory.
The reason for this is that whreplay uses the value of the HKCU/WinHoldEm/InstallFolder registry key
as the base of the file path in which it looks for the "replay" directory. So when you fire up
whreplay, press F2, and enter your session.frame number, it will look in the "InstallFolder" path
for that session and frame. Personally, I just created that key, pointed it to my OpenHoldem
directory, and dropped whreplay.exe in my OpenHoldem directory - easy peasy. Of course, WinHoldem
is not even installed on my machine any more, so your mileage may vary.
- Autoplayer SWAG: WinHoldem only supported one option for tuning SWAG action; swag delay. Up to this point,
OpenHoldem only supported the one tuning option as well. As of this release, there are now 3 settings:
1. Delay between text selection and text deletion (default 400 ms)
2. Delay between text deletion and swag amount entry (default 400 ms)
3. Delay between swag amount entry and bet confirmation action; this is the old "swag delay" (default 700 ms)
- Autoplayer allin: As we continue to remove support for the legacy WinHoldem allin (slider) functionality,
we are removing the ability to edit "Allin Delay" in Edit/Preferences/Autoplayer in this release. This value
is not used anywhere within the OH code base anyway.
BUG FIXES:
- As OH becomes more widely deployed, in multi-table situations, there have been some reports of accidental
movement of other windows on the screen when the OH autoplayer acts. OH internally uses a system-wide mutex
to prevent this from happening - no OH instance can interfere with anout OH instance. However, when you add
hoppers and other programs/scripts to the mix, there very well can be collisions. In this build, I have added
a mouse movement back to the original position at the end of every input queue. A SetCursorPos was always
executed after the execution of an input queue, this last mouse movement is just for safety purposes. Hopefully
this will make it better, however if this does not solve the problem, then the only solution may be to have
hopper scripts utilize the same system-wide mutex that OH uses. (Autoplayer.cpp) (Thanks, Folder)
- Symbol "elapsedauto" corrected to reset to zero after autoplayer action. (Autoplayer.cpp) (Thanks, Zippy)
- In CGlobal::capture_state, changed the copying of the title to the state structure to use a strncpy instead
of a strcpy. This will protect against buffer overruns with long titles. (Thanks, Spud)
- Formula Editor: During the cleanup I noticed that if you press the New/Rename buttons and Canceled the dialog would
incorrectly switch your focus to the tree control and mark the Formulas as modified (so you were
incorrectly prompted to apply when closing). This has been fixed. (Bug identification and code fix by Spew)
v1.4.3 2008-01-25
NEW STUFF:
- Added File/Connect menu option. This performs the same function as clicking on the
green button. (Thanks, Nick Coldhand)
- Added View/Sort UDF's menu option to the Formula Editor. Its function is self-explanatory,
I hope.
- Formula Editor: expanded/not-expanded states of formula tree nodes are now saved between sessions.
- Formula Editor: when Apply or OK is pressed, the warning that pops up will now *ask* if you want to
disable the autoplayer, rather than assuming you want to do so and just do it. (Thanks, Matrix)
- Nick Coldhand found a site that requires more than the 3 chip stacks currently supported by the
chip scraping engine. The maximum number of stacks that can be scraped is now 10. The maximum
number of chips per stack is still 20. These numbers are #defined in structs_defines.h, btw, if
you ever want to change them. Easy to change/recompile, and you are good to go.
BUG FIXES:
- Fixed problem with bestaction disaply in main window fluctuating rapidly (Thanks, Winngy)
(CMainFrame::OnTimer)
- Fixed a pretty serious error in grammar.cpp, eval_expression. Results of recursive calls to
eval_expression were being casted to a long type, rather than an unsigned long type. The MSB
is important in a number of symbols, a good example being pokerval. To demonstrate the bug,
put the following in f$debug:
=onepair&0xff000000
Press calc, and the result will be zero, which is incorrect. However, this expression returns
the expected result, as the MSB is taken out of the equation:
=onepair&0x7f000000
Another good example is the bitwise not operator (~). In some cases, the wrong result would be returned:
ex: "~1" should return "4294967294" (every bit set except the LSB), but was returning "-2", due to the MSB
being interpreted as the sign. All casts in eval_expression are now of type unsigned long, which
corrects the error.
- Formula Editor: Continuing code review and cleanup by Spew:
a. Replacement of stickybutton class with standard pushbutton-style checkbox
b. Auto button can now be turned off consistently
c. Focus stealing when updating the debug tab has been eliminated, thus eliminating the flickering sometimes
seen when Auto is engaged
- Chip scraping was not using the proper hash seed for the various hash types. Hash1-Hash3 now use the proper
type, and chip scraping works again. (Thanks, UKBotter and Nick Coldhand) (CScraper::do_chip_scrape)
v1.4.2 2008-01-18
NEW STUFF:
- Added hand list editor dialog to Formula Editor. (Thanks, SingleMalt, for the code)
BUG FIXES:
- seatposition symbol corrected to not count empty seats (Thanks, Nick Coldhand)
(CSymbols::calc_roundspositions)
- Weirdness with formula dialog and "Do you want to save your changes?" has been corrected.
Previous to this fix, if you 1) open the formula editor and make a change, and do not press
apply/ok, then 2) close the formula dialog, and select "no" to the save question, then 3) reopen
the formula dialog, it would ask you again if you wanted to save. (Thanks, Matrix for the
bug find and Spew for the code fix) (CDlgFormulaScintilla::OnBnClickedCancel,
CDlgFormulaScintilla::DestroyWindow)
- An issue existed where saving your forumula would add extra blank lines to the whx file (but not
the whf file). This has been corrected, and all extra blank lines that may have been added over
time will be removed the next time you open and save the formula file. (Thanks, Spew for the
code fix) (COpenHoldemDoc::ReadFormula, COpenHoldemDoc::WriteFormula)
- Chip scraping is now displayed in scraper output window correctly. (Thanks, radi8tor for the bug
find and UKbotter for the code fix) (CScraper::scrape_pots)
- Chip scraping had a bug with identification and handling of horizontal and vertical stride regions.
(Thanks, UKbotter for the bug find and code fix) (CGlobal::save_r$indexes)
v1.4.1 2008-01-11
NEW STUFF:
- Logging; on a hand reset, the title text from the table is now recorded in the log. This
should help identify the proper log entries, especially if you do not have a casino/table map
that supports handnumbers.
BUG FIXES:
- ICM
- Player balances are now captured at the beginning of each hand for use by the ICM
calculator; this happens in CSymbols::CalcSymbols, and is stored in the CSymbols
class.
- Removal of ICM::IsResetHandState, ICM::IsBalanceKnown, ICM::GetPlayerBalance, and
ICM::GetPlayerLastBalanceKnown as these methods have been rendered moot by the
above point.
- ICM::GetPlayerCurrentBet method removed and replaced with a direct reference to the values
stored in the CSymbols class.
- Improved time of Green Button to find tables. This function was coded really early on in
the OpenHoldem project and has not been revisited in a long time. It was loading every
.tm/.ws file in the scraper folder once for each candidate window on the screen, thus
there was a geometric relationship between the number of windows times the number of table maps
and the time it took the Green Button to finish it's work. The relationship is now linear as
related to the number of .tm/.ws files in the scraper folder.
(CMainFrame::OnBnClickedGreenCircle; profile.cpp, EnumProcTopLevelWindowList)
(Thanks, Nick Coldhand).
- In the Formula Editor dialog, undo stacks are now properly maintained for each individual
formula in the set. Previously, you could make a change to one formula, switch to another
formula, press undo (Ctrl-z) and see the changes that were made in the other formula be undone
in the new formula. (CFormulaScintilla class) (Bug identification and code fix by Spew)
- Per WinScrape specs, the maximum width of any given individual character in a text
transform field is 31 pixels. Changed MAX_SINGLE_CHAR_WIDTH in structs_defines.h from
30 to 31 to account for this.
v1.4.0 2008-01-04
NEW STUFF:
- File/Convert Profile (Ctrl R) has been removed from OpenHoldem. Please use
OpenScrape to convert your WinScrape profiles to OpenScrape table maps for
use with OpenHoldem.
- OpenHoldem now defaults to looking for .tm files rather than .ws files. It can
still load old converted WinScrape profiles (converted by old versions of OpenHoldem),
but to ensure maximum forward compatibility, you should convert these to OpenScrape's
table map format. At some point, the ability to load old converted WinScrape profiles
will probably be removed.
1. The behavior when pressing the green circle button is that OpenHoldem will search
first for .tm files in the scraper directory, then for .ws files.
2. The behavior when choosing File/Load Profile is to present a file selector box
with *.tm as a file mask. You can chose "All Files" from the "Files of type"
dropdown in the file selector box if you want to manually load an old WinScrape
profile that has been converted by an older version of OpenHoldem.
- Option added to Edit/Preferences, PokerTracker, to entirely disable the PokerTracker
thread within OpenHoldem. Please note that if you are currently using PokerTracker
functionality, you *must* go into Edit/Preferences and uncheck the "Disable
all PokerTracker access" box, otherwise your PokerTracker symbols will not work. This
setting will be saved, and must only be done this one time to get the entry set up
in the registry properly.
- Added ICM calculator (thanks, Spud, for the code donation; thanks Nick Coldhand for the
idea donation). This should very much be considered beta code, and the results should
be carefully validated before using in a production bot. Jump into the "OpenHoldem
Discussion" forum with your thoughts.
1. Settings can be found under Edit/Preferences, ICM
2. New symbols:
- icm : my tournament equity before any action is considered (just balances)
- icm_fold : my tournament equity if I fold
- icm_callwin : my tournament equity if I call and win
- icm_calllose: my tournament equity if I call and lose
- icm_alliwin0: my tournament equity if I push all-in and nobody call
- icm_alliwin1: my tournament equity if I push all-in and win against one caller
- icm_alliwin2: my tournament equity if I push all-in and win against two callers
...
- icm_alliwin9: my tournament equity if I push all-in and win against nine callers
- icm_allilose1: my tournament equity if I push all-in and lose against one caller
- icm_allilose2: my tournament equity if I push all-in and lose against two callers
...
- icm_allilose9: my tournament equity if I push all-in and lose against nine callers
- Added option to start autoplayer automatically upon identification of userchair. Setting
can be found in Edit/Preferences, Autoplayer. If you manually turn off the autoplayer,
then you must press the Red Circle button to disconnect from the table, then press the
Green Circle button to reconnect to a table for the automatic autoplayer start to be
effective again.
- Div/0 errors are now trapped while working in the formula editor and will no longer cause
a OpenHoldem crash. As of this release, div/0 errors will not affect the autoplayer,
however in a future release we may consider halting the autoplayer in a div/0 situation.
- Relaxed retriction on when currentbetx is recorded. Previously, it would not record
currentbet for a seat unless the number of opponents (cardbacks) was greater than zero,
and the total pot was greater than zero. Some sites do not update the total pot in a
reliable field until the individual bets are swept in between betting rounds. (Full Tilt).
The total pot > 0 restriction has been removed. (CSymbols::calc_betbalancestack)
- Ability to engage the prefold button has been added. There are several steps to accomplish
this:
1. In your table map, define any button, label and state region for the prefold button
- The label should probably be a hash, and it needs to return "prefold" as the result
- The button defines the clickable region
- The state should return "yes" or "true" when it is available to be checked. In other
words, yes/true will indicate the unchecked state of the button.
2. Write a formula for f$prefold that returns a non-zero result when the pre-fold button
should be pushed. As an example, this expression would click the pre-fold button only
in betting round one when our hole cards are in the bottom third of the handrank2652 list:
"br==1 && nplayersdealt>4 && handrank2652>2652*0.66 && !currentbet && !f$swag && !f$rais && !f$call"