actionbot.whf - FREE Limit Pokerbot

Post complete winholdem formula sets here.<br>
Please read the guidelines before posting.

actionbot.whf - FREE Limit Pokerbot

Postby newbee » 2009 Mar 21 Sat 3:27:31 am

Here is a little project of mine, a shorthanded Limit bot.

The bot is playing TAG and 100% bugfree.

Some explanation:

The postflop play is based on a number of factors called:

Prwin (handstrength compared to board)
Actionmeter

Actionmeter consists of 3 important factor's:

- nplayersplaying
- action previous betting rounds
- action current betting round

The bot is not making any strange calls or raises like Winngy's and it's also intensively tested to be bug free. I think this are the 2 most important things to build a bot on, reliability.

So here is the code, feedback is always welcome!

ACTIONBOT.whf

Code: Select all
##2009-03-18 18:04:33##

##notes##


##dll##


##bankroll##
0.000000

##defcon##
0.000000

##rake##
0.000000

##nit##
1000

##f$alli##


##f$swag##


##f$srai##


##f$rais##
   (br==1 && f$raise_preflop)
|| (br==2 && f$raise_flop)
|| (br==3 && f$raise_turn)
|| (br==4 && f$raise_river)

##f$call##
   (call<=0)
|| (prwin>.98 && nplayersplaying>1)
|| (f$rais)

|| (br==1 && f$call_preflop)
|| (br==2 && f$call_flop)
|| (br==3 && f$call_turn)
|| (br==4 && f$call_river)

##f$prefold##


##f$delay##
(elapsed%10<7)

##f$chat##
0

##f$P##
((nopponentsplaying + defcon*nopponentsfolded) && nplayersplaying>1)

##f$play##
// go sit out when less then 3 players
(issittingin && nplayersseated>0 && nplayersseated<=2) ? 0 :

// go sit in when more then 2 players
(issittingout && nplayersseated>2) ? 1 :

-1

##f$test##


##f$debug##
         11.0000 = f$actionmeter_flop
         11.0000 = f$actionmeter_turn
         11.0000 = f$actionmeter_river

          0.0000 = f$handstrength_flop
          0.0000 = f$handstrength_turn
          0.0000 = f$handstrength_river


          1.0000 = nbetstocall
          2.0000 = nbetsround1
          0.0000 = nbetsround2

          0.3070 = prwin

          0.0000 = f$draws

          0.0000 = f$raise_river
          0.0000 = f$call_river


ACTIONMETER.whx

Code: Select all
##list1##
AA  KK  QQ  JJ  TT  99  88  77  66  55  44  33  22 
AKS AQS AJS ATS A9S A8S A7S A6S A5S A4S A3S A2S KQS KJS KTS K9S QJS QTS Q9S JTS J9S T9S T8S 98S 97S 87S 86S 76S 75S 65S 64S 54S 53S 
KA  QA  JA  TA  9A  8A  7A  6A  5A  4A  3A  2A  QK  JK  TK  9K  8K  JQ  TQ  JT

##list2##
AA  KK  QQ  JJ  TT  99  88  77  66 
AKS AQS AJS ATS A9S A8S KQS KJS QJS 
KA  QA  JA  TA  QK

##list3##
AA  KK  QQ  JJ  TT  99  88 
AKS AQS 
KA  QA

##list4##
AA  KK  QQ  JJ  TT  99  88  77
AKS AQS AJS ATS KQS
KA  QA  JA  TA  QK

##list5##
AA  KK  QQ  JJ  TT 
AKS AQS 
KA  QA

##list6##
AA  KK  QQ  JJ  TT  99  88  77
AKS AQS AJS KQS 
KA  QA  JA

##list7##
AA  KK  QQ  JJ  TT  99  88  77  66 
AKS AQS AJS ATS A9S A8S KQS QJS JTS T9s
KA  QA  JA  TA  9A  8A  QK  JQ  JK

##list8##
AA  KK  QQ  JJ  TT  99  88  77  66  55  44  33  22 
AKS AQS AJS ATS A9S A8S A7S A6S A5S A4S A3S A2S KQS KJS KTS QJS QTS JTS 
KA  QA  JA  TA  9A  8A  7A  6A  5A  4A  3A  2A  QK  JK  TK  JQ  TQ

##list9##
T9S T8S 98S 97S 87S 86S 76S 75S 65S 64S 54S 53S 

##list10##
AA  KK  QQ  JJ  TT  99  88  77  66 
AKS AQS AJS ATS A9S A8S KQS KJS KTS K9S QJS QTS Q9S JTS J9S 
KA  QA  JA  TA  QK  JK  TK  JQ  TQ  TJ

##list11##
AA  KK  QQ  JJ  TT  99  88  77  66  55  44  33  22 
AKS AQS AJS ATS A9S A8S A7S A6S A5S A4S A3S A2S KQS KJS KTS K9S QJS QTS Q9S JTS J9S T9S
KA  QA  JA  TA  9A  8A  7A  6A  5A  4A  3A  2A  QK  JK  TK  9K  8K  JQ  TQ  JT

##list12##
AA  KK  QQ  JJ  TT  99  88 
AKS AQS AJS KQS 
KA  QA

##list13##
AA  KK  QQ  JJ  TT  99  88  77  66  55  44  33  22 
ATS A9S A8S A7S A6S A5S A4S A3S A2S KQS KJS KTS K9S K8S K7S K6S K5S K4S K3S K2S QTS Q9S Q8S Q7S Q6S Q5S Q4S Q3S Q2S JTS J9S J8S J7S T9S T8S T7S T6S 98S 97S 96S 87S 86S 85S 76S 75S 65S 64S 54S 53S 43S 32S 42S 
KA  QA  JA  TA  9A  8A  JK  TK  9K  8K  JQ  TQ  TJ

##list14##
77  66  55  44  33  22 
AJS ATS A9S A8S A7S A6S A5S A4S A3S A2S KQS KJS KTS K9S QJS QTS Q9S JTS J9S T9S T8S 98S 97S 87S 86S 76S 75S 65S 64S 54S 53S 
JA  TA  9A  8A  7A  6A  5A  4A  3A  2A  QK  JK  TK  9K  8K  JQ  TQ  TJ

##list15##
99  88  77

##list16##
66  55  44  33  22 
KQS QJS JTS T9S T8S 98S 87S 76S 65S 

##list17##
AA  KK  QQ  JJ  TT  99  88  77  66 

##list18##
99  88  77  66  55  44  33  22 
AJS ATS KQS A9S A8S A7S A6S KJS KTS QJS QTS JTS J9S T9S 98S 87S 76S
JA  TA  9A  8A  7A  QK  JK  TK  JQ  TQ

##list19##
55  44  33  22 
A7S A6S A5S A4S A3S A2S 
9A  8A

##list20##
T9S T8S 98S 87S 76S 65S 

##list21##
99  88  77

##list22##
A7S A6S A5S A4S A3S A2S 
77  66  55  44  33  22

##list23##
99  88  77

##list24##
ATS 
66

##list25##
55  44  33  22 
A9S A8S A7S A6S A5S A4S A3S A2S

##list27##
AA  KK  QQ  JJ  TT  99  88  77  66  55  44  33  22 
AKS AQS AJS ATS A9S A8S A7S A6S A5S A4S A3S A2S KQS KJS KTS K9S QJS QTS JTS
KA  QA  JA  TA  9A  8A  7A  6A  5A  4A  3A  2A  QK  JK  TK  JQ  TQ

##list28##
AA  KK  QQ  JJ  TT  99  88  77  66  55  44  33  22 
AKS AQS AJS ATS A9S A8S A7S A6S A5S A4S A3S A2S KQS KJS KTS K9S QJS QTS JTS T9S 98S 97S 87S
KA  QA  JA  TA  9A  8A  7A  6A  5A  4A  3A  2A  QK  JK  TK  JQ  TQ  JT

##list29##
A9s A8s A7s A6s A5s A4s A3s A2s KQs KJs KTs QJs QTs JTs T9S T8S 98S 87S 76S 65S
88  77  66  55  44  33  22
9A  8A  7A  6A  5A  4A  3A  2A

##list30##
AKS AQS AJS ATS A9S A8S KQS KJS KTS QJS QTS TJS 9TS 
22  33  44  55  66  77  88  99  TT  JJ  QQ  KK  AA 
KA  QA  JA  TA  QK  JK  JQ  TK  TQ

##list31##
ATS A9s A8s A7s A6s A5s A4s A3s A2s KQs KJs KTs K9S K8S K7S K6S K5S K4S K3S K2S QJs QTs Q9S Q8S Q7s Q6s Q5s Q4s Q3s Q2s JTs J9S J8S J7S J6S J5S J4S J3S J2S T9S T8S T7S T6S 98S 97S 96S 87S 86S 76S 75S 65S 54S
88  77  66  55  44  33  22
9A  8A  7A  6A  5A  4A  3A  2A  QK  JK  TK  JQ  TQ  JT

##f$raise_preflop##
        (f$dealposition==1) ?
        {
            (f$actionpreflop_1 && islist1) ? 1 :
            (f$actionpreflop_2 && islist2) ? 1 :
            (f$actionpreflop_3 && islist3) ? 1 :
            (f$actionpreflop_4 && (islist4||f$dealpositionrais==6 && islist30)) ? 1 :
            (f$actionpreflop_5 && islist5) ? 1 :
            (f$actionpreflop_6 && islist6) ? 1 : 0 } :

        (f$dealposition==2) ?
        {
            (call==0 && islist7) ? 1 :
            (nbetstocall<=1 && ncallbets==3 && islist3) ? 1 :
            (nbetstocall<=1 && ncallbets==2 && islist4) ? 1 :
            (f$actionpreflop_5 && islist5) ? 1 :
            (f$actionpreflop_6 && islist6) ? 1 : 0 } :

        (f$dealposition==3) ?
        {
            (f$actionpreflop_1 && islist8) ? 1 :
            (f$actionpreflop_3 && islist3) ? 1 :
            (f$actionpreflop_4 && islist4) ? 1 :
            (f$actionpreflop_5 && islist5) ? 1 :
            (f$actionpreflop_6 && islist6) ? 1 : 0 } :

        (f$dealposition==4) ?
        {
            (f$actionpreflop_1 && islist8) ? 1 :
            (f$actionpreflop_2 && islist10) ? 1 :
            (f$actionpreflop_3 && islist3) ? 1 :
            (f$actionpreflop_4 && islist4) ? 1 :
            (f$actionpreflop_5 && islist5) ? 1 :
            (f$actionpreflop_6 && islist6) ? 1 : 0 } :

        (f$dealposition==5) ?
        {
            (f$actionpreflop_1 && islist28) ? 1 :
            (f$actionpreflop_2 && islist8) ? 1 :
            (f$actionpreflop_3 && islist12) ? 1 :
            (f$actionpreflop_4 && islist4) ? 1 :
            (f$actionpreflop_5 && islist5) ? 1 :
            (f$actionpreflop_6 && islist6) ? 1 : 0 } :

        (f$dealposition==6) ?
        {
            (f$actionpreflop_1 && islist11) ? 1 :
            (f$actionpreflop_2 && islist27) ? 1 :
            (f$actionpreflop_3 && islist12) ? 1 :
            (f$actionpreflop_4 && islist4) ? 1 :
            (f$actionpreflop_5 && islist5) ? 1 :
            (f$actionpreflop_6 && islist6) ? 1 : 0 } :

0

##f$call_preflop##
        (f$dealposition==1) ?
        {
            (ncallbets<=1 && islist13) ? 1 :
            (f$actionpreflop_3 && islist14) ? 1 :
            (f$actionpreflop_4) ?
            {
                (islist15) ? 1 :
                (islist16 && nopponentscalling>2) ? 1 : 0 } :

            (f$actionpreflop_5 && islist17) ? 1 :
            (f$actionpreflop_6 && islist13) ? 1 : 0 } :

        (f$dealposition==2) ?
        {
            (nbetstocall<=1 && ncallbets==3 && islist14) ? 1 :
            (nbetstocall<=1 && ncallbets==2 && islist18) ? 1 :
            (f$actionpreflop_5 && islist17) ? 1 :
            (f$actionpreflop_6 && islist13) ? 1 : 0 } :

        (f$dealposition==3) ?
        {
            (f$actionpreflop_3 && islist14) ? 1 :
            (f$actionpreflop_4 && islist15) ? 1 :
            (f$actionpreflop_5 && islist17) ? 1 :
            (f$actionpreflop_6 && islist13) ? 1 : 0 } :

        (f$dealposition==4) ?
        {
            (f$actionpreflop_2 && islist19) ? 1 :
            (f$actionpreflop_3 && islist14) ? 1 :
            (f$actionpreflop_4 && islist15) ? 1 :
            (f$actionpreflop_5 && islist17) ? 1 :
            (f$actionpreflop_6 && islist13) ? 1 : 0 } :

        (f$dealposition==5) ?
        {
            (f$actionpreflop_2 && (islist20 && nopponentscalling>0||islist31 && nopponentscalling>1)) ? 1 :
            (f$actionpreflop_3 && islist14) ? 1 :
            (f$actionpreflop_4) ?
            {
                (islist21) ? 1 :
                (islist22 && nopponentscalling>3) ? 1 : 0 } :

            (f$actionpreflop_5 && islist17) ? 1 :
            (f$actionpreflop_6 && islist13) ? 1 : 0 } :

        (f$dealposition==6) ?
        {
            (f$actionpreflop_2 && (islist29 && nopponentscalling>0||islist31 && nopponentscalling>1)) ? 1 :
            (f$actionpreflop_3 && islist14) ? 1 :
            (f$actionpreflop_4) ?
            {
                (islist23) ? 1 :
                (islist24 && nopponentscalling>=2) ? 1 :
                (islist25 && nopponentscalling>=3) ? 1 : 0 } :

            (f$actionpreflop_5 && islist17) ? 1 :
            (f$actionpreflop_6 && islist13) ? 1 : 0 } :

((didcall||didchec||didswag) && nbetstocall<=1 && handrank169<50) ? 1 :

0

##f$dealposition##
[
dealposition==1 ? 1:
dealposition==2 ? 2:


nopponentsdealt==9 ? (dealposition==3 ? 3 :
                      dealposition==4 ? 3 :
                      dealposition==5 ? 4 :
                      dealposition==6 ? 4 :
                      dealposition==7 ? 5 :
                      dealposition==8 ? 5 :
                      dealposition==9 ? 6 :
                      dealposition==10 ? 6 : 0):

nopponentsdealt==8 ? (dealposition==3 ? 3 :
                      dealposition==4 ? 3 :
                      dealposition==5 ? 4 :
                      dealposition==6 ? 4 :
                      dealposition==7 ? 5 :
                      dealposition==8 ? 5 :
                      dealposition==9 ? 6 : 0):

nopponentsdealt==7 ? (dealposition==3 ? 3 :
                      dealposition==4 ? 4 :
                      dealposition==5 ? 4 :
                      dealposition==6 ? 5 :
                      dealposition==7 ? 5 :
                      dealposition==8 ? 6 : 0):

nopponentsdealt==6 ? (dealposition==3 ? 3 :
                      dealposition==4 ? 4 :
                      dealposition==5 ? 5 :
                      dealposition==6 ? 5 :
                      dealposition==7 ? 6 : 0):

nopponentsdealt==5 ? (dealposition==3 ? 3 :
                      dealposition==4 ? 4 :
                      dealposition==5 ? 5 :
                      dealposition==6 ? 6 : 0):

nopponentsdealt==4 ? (dealposition==3 ? 4 :
                      dealposition==4 ? 5 :
                      dealposition==5 ? 6 : 0):

nopponentsdealt==3 ? (dealposition==3 ? 5 :
                      dealposition==4 ? 6 : 0):

nopponentsdealt==2 ? (dealposition==3 ? 6 : 0):
0]

##f$dealpositionrais##
[
dealpositionrais==1 ? 1:
dealpositionrais==2 ? 2:

nopponentsdealt==6 ? (dealpositionrais==3 ? 3 :
                      dealpositionrais==4 ? 4 :
                      dealpositionrais==5 ? 5 :
                      dealpositionrais==6 ? 5 :
                      dealpositionrais==7 ? 6 : 0):

nopponentsdealt==5 ? (dealpositionrais==3 ? 3 :
                      dealpositionrais==4 ? 4 :
                      dealpositionrais==5 ? 5 :
                      dealpositionrais==6 ? 6 : 0):

nopponentsdealt==4 ? (dealpositionrais==3 ? 4 :
                      dealpositionrais==4 ? 5 :
                      dealpositionrais==5 ? 6 : 0):

nopponentsdealt==3 ? (dealpositionrais==3 ? 5 :
                      dealpositionrais==4 ? 6 : 0):

nopponentsdealt==2 ? (dealpositionrais==3 ? 6 : 0):
0]

##f$raise_flop##
(didraisround1 && nplayersplaying==2 && call==0) ||
(f$actionmeter_flop<2 && f$handstrength_flop>=1) ||
(f$actionmeter_flop<4 && f$handstrength_flop>=2) ||
(f$actionmeter_flop<6 && f$handstrength_flop>=3) ||
(f$actionmeter_flop<8 && f$handstrength_flop>=4) ||
(f$actionmeter_flop<12 && f$handstrength_flop>=5) ||
(f$actionmeter_flop<16 && f$handstrength_flop>=6) ||
(f$actionmeter_flop<20 && f$handstrength_flop>=7) ||
(f$actionmeter_flop<25 && f$handstrength_flop>=8) ||
(f$actionmeter_flop>=25 && f$handstrength_flop>=9)

##f$raise_turn##
(f$actionmeter_turn<2 && f$handstrength_turn>=1) ||
(f$actionmeter_turn<3 && f$handstrength_turn>=2) ||
(f$actionmeter_turn<5 && f$handstrength_turn>=3) ||
(f$actionmeter_turn<8 && f$handstrength_turn>=4) ||
(f$actionmeter_turn<10 && f$handstrength_turn>=5) ||
(f$actionmeter_turn<15 && f$handstrength_turn>=6) ||
(f$actionmeter_turn<20 && f$handstrength_turn>=7) ||
(f$actionmeter_turn<30 && f$handstrength_turn>=8) ||
(f$actionmeter_turn>=30 && f$handstrength_turn>=9)

##f$raise_river##
(f$actionmeter_river<2 && f$handstrength_river>=1) ||
(f$actionmeter_river<3 && f$handstrength_river>=2) ||
(f$actionmeter_river<5 && f$handstrength_river>=3) ||
(f$actionmeter_river<8 && f$handstrength_river>=4) ||
(f$actionmeter_river<10 && f$handstrength_river>=5) ||
(f$actionmeter_river<20 && f$handstrength_river>=6) ||
(f$actionmeter_river<35 && f$handstrength_river>=7) ||
(f$actionmeter_river<50 && f$handstrength_river>=8) ||
(f$actionmeter_river>=50 && f$handstrength_river>=9)

##f$call_flop##
(f$actionmeter_flop<2 && f$handstrength_flop>=1) ||
(f$actionmeter_flop<6 && f$handstrength_flop>=2) ||
(f$actionmeter_flop<12 && f$handstrength_flop>=3) ||
(f$actionmeter_flop<16 && f$handstrength_flop>=4) ||
(f$actionmeter_flop<18 && f$handstrength_flop>=5) ||
(f$actionmeter_flop<20 && f$handstrength_flop>=6) ||
(f$actionmeter_flop<23 && f$handstrength_flop>=7) ||
(f$actionmeter_flop<25 && f$handstrength_flop>=8) ||
(f$actionmeter_flop>=25 && f$handstrength_flop>=9)

##f$call_turn##
(f$actionmeter_turn<2 && f$handstrength_turn>=1) ||
(f$actionmeter_turn<5 && f$handstrength_turn>=2) ||
(f$actionmeter_turn<7 && f$handstrength_turn>=3) ||
(f$actionmeter_turn<10 && f$handstrength_turn>=4) ||
(f$actionmeter_turn<15 && f$handstrength_turn>=5) ||
(f$actionmeter_turn<20 && f$handstrength_turn>=6) ||
(f$actionmeter_turn<25 && f$handstrength_turn>=7) ||
(f$actionmeter_turn<30 && f$handstrength_turn>=8) ||
(f$actionmeter_turn>=30 && f$handstrength_turn>=9)

##f$call_river##
(f$actionmeter_river<2 && f$handstrength_river>=1) ||
(f$actionmeter_river<4 && f$handstrength_river>=2) ||
(f$actionmeter_river<6 && f$handstrength_river>=3) ||
(f$actionmeter_river<10 && f$handstrength_river>=4) ||
(f$actionmeter_river<20 && f$handstrength_river>=5) ||
(f$actionmeter_river<30 && f$handstrength_river>=6) ||
(f$actionmeter_river<40 && f$handstrength_river>=7) ||
(f$actionmeter_river<50 && f$handstrength_river>=8) ||
(f$actionmeter_river>=50 && f$handstrength_river>=9)

##f$draws##
(!f$twopair && nsuited==4 && nsuitedcommon==2 && nstraight==4 && nstraightcommon<3 && !f$wheeldraw && nrankedcommon==1) ||
(!f$twopair && nsuited==4 && nsuitedcommon==3 && nstraight==4 && !f$wheeldraw && `((~srankbits&0x7fff)>>srankhiplayer)<=3 && nstraightcommon<3 && nrankedcommon==1) ||
(br==2 && !f$twopair && nsuited==4 && nsuitedcommon==2 && nstraight==4 && !f$wheeldraw && nstraightcommon<3 && nrankedcommon==2) ||
(br==2 && !f$twopair && nsuited==4 && nsuitedcommon==3 && nstraight==4 && !f$wheeldraw && `((~srankbits&0x7fff)>>srankhiplayer)<=3 && nstraightcommon<3 && nrankedcommon==2) ? 4 :


((!f$twopair && nsuited==4 && `((~srankbits&0x7fff)>>srankhiplayer)==0 && nsuitedcommon==2 && nrankedcommon==1) ||
(!f$twopair && rankloplayer>rankhicommon && nstraightcommon<3 && nrankedcommon==1 && nsuited==4 && nsuitedcommon==2) ||
(!f$twopair && $AA && nsuitedcommon==3 && nsuited==4 && nrankedcommon==1) ||
(!f$twopair && nstraight==4 && nstraight>nstraightcommon && !f$wheeldraw && ishipair && nsuitedcommon<3 && nrankedcommon==1 && (pokervalcommon < onepair)) ||
(nsuited==4 && nsuited>nsuitedcommon && ishipair && nrankedcommon==1)) ? 3 :


(!f$twopair && nsuited==4 && `((~srankbits&0x7fff)>>srankhiplayer)==0 && nsuitedcommon==3 && nrankedcommon==1) ||
((!f$twopair && nsuited==4 && `((~srankbits&0x7fff)>>srankhiplayer)==0 && nsuitedcommon==3 && nrankedcommon<3) ||
(!f$twopair && nstraight==4 && nstraight>nstraightcommon && !f$wheeldraw && ismidpair && nrankedcommon<3 && nsuitedcommon<3 && nrankedcommon<3 && (pokervalcommon < onepair)) ||
(!f$twopair && nsuited==4 && nsuited>nsuitedcommon && ismidpair && nrankedcommon<3 && (pokervalcommon < onepair)) ||
(!f$twopair && nsuited==4 && `((~srankbits&0x7fff)>>srankhiplayer)==1 && nrankedcommon<3) ||
(!f$twopair && nsuited==4 && `((~srankbits&0x7fff)>>srankhiplayer)==0 && nsuitedcommon==2 && nrankedcommon<3) ||
(!f$twopair && nsuited==4 && `((~srankbits&0x7fff)>>srankhiplayer)==0 && nsuitedcommon==2 && nrankedcommon<3) ||
(!f$twopair && nsuited==4 && `((~srankbits&0x7fff)>>srankhiplayer)==2 && nrankedcommon<3) ||
(!f$twopair && nsuited==4 && nsuitedcommon==2 && nrankedcommon<3) ||
(!f$twopair && nsuited==4 && nsuitedcommon==3 && rankloplayer>11 && nrankedcommon<3) ||
(br==2 && nstraight==4 && nstraightcommon==3 && !f$wheeldraw && nsuitedcommon<3 && nrankedcommon<3 && rankhiplayer>rankhicommon) ||
(!f$twopair && nstraight==4 && nstraightcommon<=2 && nsuitedcommon<3 && nrankedcommon<3 && !f$wheeldraw && nrankedcommon<3) ||
(!f$twopair && nstraight==4 && nstraightcommon==3 && !f$wheeldraw && rankloplayer>ranklocommon && rankhiplayer>rankhicommon && nrankedcommon<3)) ? 2 :


((!f$twopair && (nstraight==2 && nstraightfillcommon==1 && nsuitedcommon<3 && nrankedcommon==1)||(nstraight==3 && nstraightfillcommon==1 && nsuitedcommon<3 && nrankedcommon==1)) ||
(nstraightfill==1 && nsuitedcommon<3) ||
(!f$twopair && nsuitedcommon==3 && nsuited==4 && (srankloplayer>6||srankhiplayer>6) && nrankedcommon==1) ||
(!f$twopair && nstraight==4 && nstraightcommon==3 && nrankedcommon==1) ||
(!f$twopair && nstraight==3 && nstraightcommon==2 && nstraightfillcommon<=2 && nrankedcommon==1) ||
(f$wheeldraw && nrankedcommon==1)) ? 1 :

0

##f$actionpreflop_1##
// No Callers
(ncallbets<=1 && nopponentscalling==0)

##f$actionpreflop_2##
// Called pot
(ncallbets<=1 && nopponentscalling>0)

##f$actionpreflop_3##
// Raised back
(nbetstocall>0 && nbetstocall<=1 && ncallbets>2 && ncallbets<=3)

##f$actionpreflop_4##
// Raised pot
(nbetstocall<=2 && ncallbets>1 && ncallbets<=2)

##f$actionpreflop_5##
// Reraised pot
(ncallbets>2 && nbetstocall>1)

##f$actionpreflop_6##
// Raised back
(nbetstocall>0 && nbetstocall<=1 && ncallbets>3)

##f$twopair##
(pokervalcommon & twopair)

##f$actionmeter_flop##
nplayersplaying>1 ? 0
+ (0

// Number players playing
+(nplayersplaying>=3)*2
+(nplayersplaying>=4)*2
+(nplayersplaying>=5)*2

// Number of bets preflop
+(nbetsround1>=1)
+(nbetsround1>=2)
+(nbetsround1>=3)
+(nbetsround1>=4)

// Number of bets to call in front of us
+(nbetstocall>=1)*5
+(nbetstocall>=2)*6
+(nbetstocall>=3)*5
+(nbetstocall>=4)*5) : 0

##f$actionmeter_turn##
nplayersplaying>1 ? 0
+ (0

// Number players playing
+(nplayersplaying>=3)*2
+(nplayersplaying>=4)*2
+(nplayersplaying>=5)*2

// Number of bets preflop
+(nbetsround1>=1)
+(nbetsround1>=2)
+(nbetsround1>=3)
+(nbetsround1>=4)

// Number of bets on flop
+(nbetsround2>=1)*2
+(nbetsround2>=2)*2
+(nbetsround2>=3)*2
+(nbetsround2>=4)*2

// Number of bets to call in front of us
+(nbetstocall>=1)*5
+(nbetstocall>=2)*6
+(nbetstocall>=3)*5
+(nbetstocall>=4)*5
+(didcall||didrais)*5) : 0

##f$actionmeter_river##
nplayersplaying>1 ? 0
+ (0

// Number players playing
+(nplayersplaying>=3)*2
+(nplayersplaying>=4)*2
+(nplayersplaying>=5)*2

// Number of bets preflop
+(nbetsround1>=1)
+(nbetsround1>=2)
+(nbetsround1>=3)
+(nbetsround1>=4)

// Number of bets on flop
+(nbetsround2>=1)*2
+(nbetsround2>=2)*2
+(nbetsround2>=3)*2
+(nbetsround2>=4)*2

// Number of bets on turn
+(nbetsround3>=1)*3
+(nbetsround3>=2)*3
+(nbetsround3>=3)*3
+(nbetsround3>=4)*3

// Number of bets to call in front of us
+(nbetstocall>=1)*5
+(nbetstocall>=2)*6
+(nbetstocall>=3)*5
+(nbetstocall>=4)*5
+(didcall||didrais)*5) : 0

##f$handstrength_flop##
(prwin>.98||f$draws>3) ? 9 :
(prwin>.95||f$draws>3) ? 8 :
(prwin>.90||f$draws>2) ? 7 :
(prwin>.84||f$draws>2) ? 6 :
(prwin>.78||f$draws>1) ? 5 :
(prwin>.74||f$draws>1) ? 4 :
(prwin>.65||f$draws>1) ? 3 :
(prwin>.60||f$draws>0) ? 2 :
(prwin>.50||f$draws>0) ? 1 :

0

##f$handstrength_turn##
(prwin>.98) ? 9 :
(prwin>.95||f$draws>3) ? 8 :
(prwin>.90||f$draws>2) ? 7 :
(prwin>.85||f$draws>2) ? 6 :
(prwin>.80||f$draws>1) ? 5 :
(prwin>.75||f$draws>1) ? 4 :
(prwin>.65||f$draws>1) ? 3 :
(prwin>.60||f$draws>0) ? 2 :
(prwin>.50||f$draws>0) ? 1 :

0

##f$handstrength_river##
(prwin>.98) ? 9 :
(prwin>.95) ? 8 :
(prwin>.90) ? 7 :
(prwin>.85) ? 6 :
(prwin>.80) ? 5 :
(prwin>.70) ? 4 :
(prwin>.60) ? 3 :
(prwin>.55) ? 2 :
(prwin>.50) ? 1 :

0

##f$wheeldraw##
(rankbits>>9==0b111100)                                 //check AKQJ
|| (rankbits & 0b0000000000011110)==0b0000000000011110        //check 432A

Last edited by newbee on 2009 Mar 21 Sat 3:42:53 am, edited 2 times in total.
newbee
Full House
 
Posts: 227
Joined: 2008 Jun 27 Fri 5:26:43 am
Location: The Netherlands

Postby newbee » 2009 Mar 21 Sat 3:35:51 am

How to make the bot tighter or looser?

The most easy way to make this bot more or less aggresive is adjusting the prwin value's in:

f$handstrength_flop
f$handstrength_turn
f$handstrength_river

This can be done in 5 minutes so extreme easy to tweak for your own needs.

Secondly it's also possible to adjust the main engine of the bot called:

f$actionmeterflop
f$actionmeterturn
f$actionmeterriver

Which consist of nplayersplaying, action in front of us and history action, I gave points to those, you could change those points by changing for example this line:

+(nplayersplaying>=3)*6 to *2 or *3 or whatever you think is more realistic.

How does the bot perform at real money tables:

Not sure yet, probably it's break-even when you get the rakeback payed. So it makes no money at all atm but it will also cost you no money when you have a rakeback deal.
newbee
Full House
 
Posts: 227
Joined: 2008 Jun 27 Fri 5:26:43 am
Location: The Netherlands

Postby efu » 2009 Apr 06 Mon 6:08:29 pm

as reported the bot works great for me but i still want to improve it i see you play strong draws like strong hands and week draws like week hands thats maybe not such a bad idea except for cases where you isolate yourself and this f$draw drives me crazy have to figure it out wat all this arbacadabra means
User avatar
efu
Straight
 
Posts: 94
Joined: 2009 Mar 21 Sat 5:40:49 am

Postby newbee » 2009 Apr 07 Tue 12:34:25 am

For the people that dont know what to do with the above code:

Save the first piece of code as *.whf
Save the second piece of code as *.whx

So now you have 2 files, make sure they are in the same folder, and load the *.whf file into Winholdem. once you did that it automatically loads the whx as well, and there you have a bot.

About f$draws, I will explain one line:

(!f$twopair && nsuited==4 && `((~srankbits&0x7fff)>>srankhiplayer)==0 && nsuitedcommon==2 && nrankedcommon<3)

!f$twopair = there are not twopairs on the board, 5588 ! = is not
nsuited==4 (4 cards of the same suite, our hand + common cards
`((~srankbits&0x7fff)>>srankhiplayer)==0 (means we hold the nutflushdraw, ==0 stands for no cards higher possible of same suit
nsuitedcommon==2 (2 cards of same suit on the board)
(nrankedcommon<3) = max 2 cards of the same rank on the board.
newbee
Full House
 
Posts: 227
Joined: 2008 Jun 27 Fri 5:26:43 am
Location: The Netherlands

Postby efu » 2009 Apr 07 Tue 2:06:22 pm

thank you very much newbee the ((~srankbits&0x7fff)>>srankhiplayer)==0 seems to be quite tricky i dont get it now but the rest is understandable will try to fight through the code cheers efu
User avatar
efu
Straight
 
Posts: 94
Joined: 2009 Mar 21 Sat 5:40:49 am

need complete bot with profile and am a US player

Postby Bricktop » 2009 Apr 08 Wed 5:54:13 pm

can you help me out. you come recommended on this forum. I need a WinHoldem and a profitable profile for playing as a US player, also need help with set-up, so as not to be detected. Can you help me out pls. I currently only have one computer and am willing to get another if necessary. Would just like to mirror whatever is working for you. Please contact me if your interested.

Bricktop
james_field@hotmail.com
Bricktop
Bricktop
High Card
 
Posts: 3
Joined: 2009 Apr 08 Wed 1:45:06 pm

Re: need complete bot with profile and am a US player

Postby newbee » 2009 Apr 09 Thu 1:00:49 pm

Hmmm, who doesn't need a profitable profile :) Getting Winholdem is easy, just buy it at this site. When you get winholdem you can make a start with the bot up here.

I only don't see any reason why I should be interested in contacting/helping you out. Give me a few good reasons and I'll consider it :-D

Oh btw, nice to hear I am recommended :lol: :D 8) :)

Bricktop wrote:can you help me out. you come recommended on this forum. I need a WinHoldem and a profitable profile for playing as a US player, also need help with set-up, so as not to be detected. Can you help me out pls. I currently only have one computer and am willing to get another if necessary. Would just like to mirror whatever is working for you. Please contact me if your interested.

Bricktop
james_field@hotmail.com
newbee
Full House
 
Posts: 227
Joined: 2008 Jun 27 Fri 5:26:43 am
Location: The Netherlands

Postby pokerintheback » 2009 May 07 Thu 5:50:34 am

How many hands have you tested the bot at? Do you have a graph?
pokerintheback
New Player
 
Posts: 1
Joined: 2009 May 07 Thu 5:49:40 am

Postby efu » 2009 May 07 Thu 3:45:44 pm

efu tested it about 80k hands heres part of the sample for one casino http://forum.winholdem.net/wbb/viewtopic.php?p=100131 but in total im back to even now but still some plus becauce of rakeback its great the best i saw for free cheers efu
User avatar
efu
Straight
 
Posts: 94
Joined: 2009 Mar 21 Sat 5:40:49 am


Return to Formula Sets

Who is online

Users browsing this forum: No registered users and 1 guest

cron