Welcome, Guest. Please login or register.
April 13, 2021, 03:22:13 AM
Home Help Login Register
News:

Shanky Technologies Poker Bot Support Forum  |  General Category  |  PPL Support (Moderator: sngbot)  |  Topic: How advanced is the User Variable 0 Members and 1 Guest are viewing this topic.
Pages: [1] Print
Author Topic: How advanced is the User Variable  (Read 509 times)
JoeBing
Botter
***

Karma: 5
Posts: 108


« on: January 04, 2021, 09:02:52 AM »

I just tested out the new PLO profile I've been working on and it's not working as intended, and I'm thinking it's something to do with the way that I defined the user variables.

So basically, I have all my hand ranges setup.

i.e.:

Code:
// KKQQ KKJJ KQJT KKTT KKAJ KKAT KKQJ KKAQ //
when DoubleSuited and (hand =KK and hand =QQ or hand =JJ or hand = JT or hand =TT or hand =AsuitedJ or hand =QJ or hand =AsuitedQ) UserMonsterKK

// QQJJ QQTT QQAK QQAJ QQAT QQKJ //
when DoubleSuited and (hand =QQ and hand =JJ or hand =TT or hand =AsuitedK or hand =AsuitedJ or hand =AsuitedT or hand =KJ) UserMonsterQQ

// JT98 JJTT JJT9 //
when DoubleSuited and (hand =JT98 or hand =JJTT or hand =JJT9) UserMonsterJJ

Numerous hand-ranges that all have separate user variables like the above code.

Then I further created a shortcut to the various hand ranges..

For example:

Code:
//[[[[[[[[[ EARLY POSITION / STRONGEST HANDS ]]]]]]]]]//
when (UserAAA or UserAAAus or UserPremiumKK or UserPremiumQQ or UserPremiumJJ or UserBigAA or UserBigKK or UserBigQQ or UserBigJJ or  UserHighWrapDBS or UserHighWrapSS or UserHighWrapPairDBS or UserHighWrapPairSS or UserHighGapperDS1 or UserHighGapperDS2 or UserHighDanglerAAUnsuited or UserHighDanglerKKUnsuited or UserHighDanglerQQ or UserHighDanglerQQUnsuited or UserHighDanglerAsJJ or UserHighDanglerAsJJUnsuited or UserHighDanglerJJ or UserHighDanglerJJUnsuited or UserHighWrapDanglerAK or UserHighWrapDanglerAKUnsuited or UserHighWrapDanglerAQ or UserHighWrapDanglerAQUnsuited or UserHighWrapDanglerKK or UserHighWrapDanglerKKUnsuited or UserHighWrapDanglerAJ or UserHighWrapDanglerKQ or UserHighWrapDanglerQJ or UserHighWrapDanglerJT or UserKKDBLPR or UserQQDBLPR or UserHighDBLPR or UserJJTT99 or UserJJDBLPR or UserTTDBLPR or UserMidDBLPR or User8877 or User876DBLPR or UserSuitedDBLPR or UserGarbageAA or UserGarbageKK) UserEarlyHands

So that I could code different hand-ranges from different positions, # of opponents, Stacksize etc


I thought I could do this to be able to call certain hand-ranges throughout the profile and have one "area" to fix an entire hand-range without having to type all the different possible hands that are playable in PLO, or having to code every hand range separately.

For example:

Code:
when UserShortHanded or UserHeadsUp and UserEarlyHands
When raises = 0 and calls = 0 and StillToAct <= 2 RaisePot force
When raises = 0 and calls >= 2 Call force
When In SmallBlind and raises = 0 and calls = 0 RaisePot force
When In SmallBlind and raises = 0 and calls >= 1 Call force
when In BigBlind and raises = 0 and calls = 0 RaisePot force
When In BigBlind and raises = 1 Call force

Code:
when (User6Max or User5Max or User4Max) and In BigBlind
 and (UserMonsterAA or UserAAsuitedDBLPR or UserAADBLPR or UserHighWrapDBS)
when (raises = 0 and calls >=1) raisepot force
when raises >= 1 and UserBetSize10 call force

I also thought this would help a great deal in tweaking the profile to be profitable.
Being able to instantly add an entire new hand range to a certain position to test, or instantly remove an entire hand-range from a position if it is proving unprofitable.

But it isn't working. The Bot is not identifying the Hands as a User variable.
It completely ignores any hand-range that I've coded separately and just uses the other code
Like it reads this
Code:
When (raises = 0 and calls = 0) raisemax force
when raises >= 1 and UserBetSize10 call force
For any hand the default bot decides to play.

Rather than taking into account that it should only raise the hand-ranges I've identified depending on position, and # of opponents:
Code:
When (UserMonsterAA or UserAAsuitedDBLPR or UserAADBLPR or UserHighWrapDBS) and In Button
When (raises = 0 and calls = 0) raisemax force
when raises >= 1 and UserBetSize10 call force

Given that my plan to make this easy and organized is not working, I'm guessing I have to start again from scratch and code each hand range separately?

Is there something specific that I might be missing to continue with my plan or have you seen something like what I'm trying to achieve work somewhere that I can use as a base and see where I might be going wrong?

I really don't like the idea of coding every hand range separately (there's 100's of them) and it will make the file unnecessarily massive, but if I can somehow see what I'm doing wrong in regards to why it ignores the User variables (when it has a hand range), maybe I can salvage all the work I've done somehow... and continue in my current line of logic..
Logged
Andrey
Confident Newbie
**

Karma: 0
Posts: 53


« Reply #1 on: January 04, 2021, 09:37:21 AM »

variable in variable work, if not, then you have no options.
you already have a list of hands, you can copy and paste


tried to do so for the sake of experiment?

When ((hand = KK and hand = QQ or hand = JJ or hand = JT or hand = TT or hand = AsuitedJ or hand = QJ or hand = AsuitedQ) or (hand = QQ and hand = JJ or hand = TT or hand = AsuitedK or hand = AsuitedJ or hand = AsuitedT or hand = KJ) or  (рука = JT98 или рука = JJTT или рука = JJT9))(etc) UserEarlyHands

Variable UserEarlyHands is below all variables "UserAAA or UserAAAus or UserPremiumKK, etc"?
Logged
JoeBing
Botter
***

Karma: 5
Posts: 108


« Reply #2 on: January 04, 2021, 10:06:52 AM »

Sorry I have no idea what you are saying?
Logged
JoeBing
Botter
***

Karma: 5
Posts: 108


« Reply #3 on: January 04, 2021, 10:45:47 AM »

What I want to know is if its possible to code hands:

Code:
// KKQQ KKJJ KQJT KKTT KKAJ KKAT KKQJ KKAQ //
when DoubleSuited and (hand =KK and hand =QQ or hand =JJ or hand = JT or hand =TT or hand =AsuitedJ or hand =QJ or hand =AsuitedQ) UserMonsterKK

// QQJJ QQTT QQAK QQAJ QQAT QQKJ //
when DoubleSuited and (hand =QQ and hand =JJ or hand =TT or hand =AsuitedK or hand =AsuitedJ or hand =AsuitedT or hand =KJ) UserMonsterQQ

// JT98 JJTT JJT9 //
when DoubleSuited and (hand =JT98 or hand =JJTT or hand =JJT9) UserMonsterJJ

Then code hand-ranges:

Code:
When (UserMonsterKK or UserMonsterQQ or UserMonsterJJ)  UserMonster

And then code situations with those hand-ranges:

Code:
When UserMonster
When raises = 0 and calls = 0 and StillToAct <= 2 RaisePot force
When raises = 0 and calls >= 2 Call force
When In SmallBlind and raises = 0 and calls = 0 RaisePot force
When In SmallBlind and raises = 0 and calls >= 1 Call force
when In BigBlind and raises = 0 and calls = 0 RaisePot force
When In BigBlind and raises = 1 Call force

Is this even possible at all? Am I doing something out of order?
Logged
Andrey
Confident Newbie
**

Karma: 0
Posts: 53


« Reply #4 on: January 04, 2021, 11:06:03 AM »

Quote
custom
preflop

When (Hand = A Suited or Hand = K Suited or Hand = Q Suited or Hand = J Suited or Hand = T Suited or Hand = 9 Suited or Hand = 8 Suited or Hand = 7 Suited or Hand = 6 Suited or Hand = 5 Suited or Hand = 4 Suited or Hand = 32 Suited) UserSu
When (Hand = A or Hand = K or Hand = Q or Hand = J or Hand = T or Hand = 9 or Hand = 8 or Hand = 7 or Hand = 6 or Hand = 5 or Hand = 4 or Hand = 32) UserOfSu
When (PairInHand) UserPaur

When (UserPaur or UserOfSu or UserSu) UserAll
When UserAll fold force



Quote
Shanky Technologies Holdem Version 11.0.5 Hand: Td Ah
Players = 5 have AT
Fold if any raise, raise if folds and no calls else call
hands played in session = 1
in timer: players = 5, folds in game= 2, raises = 0, checks = 0, calls = 0, bets = 0, folds = 2
casino = , No Limit Cash, BB = 0.02, Pot = 1 BBs, Stack = 1.00, TI = 0 BBs
Amount To Call = 1 BBs
User defined variable UserOfSu set to true at line 5
Matching user defined condition at line 8, Action = fold force
clicking Fold

Shanky Technologies Holdem Version 11.0.5 Hand: Jh 9s
Players = 5 have J9
raise if oppponents left <= 2 and no calls and first card is black else fold
hands played in session = 2
in timer: players = 5, folds in game= 1, raises = 0, checks = 0, calls = 0, bets = 0, folds = 1
casino = , No Limit Cash, BB = 0.02, Pot = 1 BBs, Stack = 1.00, TI = 0 BBs
Amount To Call = 1 BBs
User defined variable UserOfSu set to true at line 5
Matching user defined condition at line 8, Action = fold force
clicking Fold

Shanky Technologies Holdem Version 11.0.5 Hand: Kd 3c
Players = 5 Fold
hands played in session = 3
in timer: players = 5, folds in game= 0, raises = 0, checks = 0, calls = 0, bets = 0, folds = 0
casino =, No Limit Cash, BB = 0.02, Pot = 1 BBs, Stack = 1.00, TI = 0 BBs
Amount To Call = 1 BBs
User defined variable UserOfSu set to true at line 5
Matching user defined condition at line 8, Action = fold force
clicking Fold

everything works, you are doing something wrong
Logged
JoeBing
Botter
***

Karma: 5
Posts: 108


« Reply #5 on: January 04, 2021, 11:09:30 AM »

Interesting, thanks for that

God knows what I'm doing wrong because other user-variables are working, just none with hand-ranges.

I'll have another look, appreciate knowing that it's possible and it's just something I'm doing wrong.

Thanks again
Logged
Andrey
Confident Newbie
**

Karma: 0
Posts: 53


« Reply #6 on: January 04, 2021, 11:10:01 AM »

check that these variables

Quote
// KKQQ KKJJ KQJT KKTT KKAJ KKAT KKQJ KKAQ //
when DoubleSuited and (hand =KK and hand =QQ or hand =JJ or hand = JT or hand =TT or hand =AsuitedJ or hand =QJ or hand =AsuitedQ) UserMonsterKK

// QQJJ QQTT QQAK QQAJ QQAT QQKJ //
when DoubleSuited and (hand =QQ and hand =JJ or hand =TT or hand =AsuitedK or hand =AsuitedJ or hand =AsuitedT or hand =KJ) UserMonsterQQ

// JT98 JJTT JJT9 //
when DoubleSuited and (hand =JT98 or hand =JJTT or hand =JJT9) UserMonsterJJ

were above these

Quote
When (UserMonsterKK or UserMonsterQQ or UserMonsterJJ)  UserMonster


Logged
ykcip75
Experienced Botter
*****

Karma: 68
Posts: 394


Shanky Bonus Bots Rock!


« Reply #7 on: January 04, 2021, 11:55:22 AM »

You forgot or misplaced the parentheses between your AND and OR condition
it's when DoubleSuited and hand =KK and (hand =QQ or hand =JJ or hand = JT or hand =TT or hand =AsuitedJ or hand =QJ or hand =AsuitedQ) UserMonsterKK
Logged
tapthatace
Botter
***

Karma: 5
Posts: 155


« Reply #8 on: January 04, 2021, 02:09:47 PM »

check that these variables

were above these



You are getting undesired results because of your use of AND/OR

You always need to put your OR's within parenthesis -- ex.
// KKQQ KKJJ KQJT KKTT KKAJ KKAT KKQJ KKAQ //
when DoubleSuited and (hand =KK and hand =QQ or hand =JJ or hand = JT or hand =TT or hand =AsuitedJ or hand =QJ or hand =AsuitedQ) UserMonsterKK

In the above code I am assuming the AND after Hand = KK should be an OR
Logged
JoeBing
Botter
***

Karma: 5
Posts: 108


« Reply #9 on: January 10, 2021, 08:17:34 PM »

Thanks for the guidance all   thanks

I fixed up the code but it still took 3-4 days of testing and one 14 hr "beep force" test on all my actions to figure out my biggest problem... (my custom actions were not working, it was just using the default Omaha profile for everything).

It ended up being.. and I'm putting it in here in case some poor bastard comes across my post one day.. or in case I haven't actually figured it out and there's another way to do it.

But my solution was..

That I had too many user_within_user variables.

To explain..

1.) I have all my hand-ranges setup.

2.) All hand-ranges are tagged with User_Variables, such as:

LEVEL ONE
Code:
// AAKK
when (hand = AcKcAdKd or hand = AcKcAhKh or hand = AcKcAsKs or hand = AdKdAcKc or hand = AdKdAhKh or hand = AdKdAsKs or hand = AhKhAcKc or hand = AhKhAdKd or hand = AhKhAsKs or hand = AsKsAcKc or hand = AsKsAdKd or hand = AsKsAhKh) userAAKK

// AKQJ AKQ9 KQJT QJT9 JT89 (Any-Suit) // MINIMUM IN LATE POSITION ONLY
when (hand = AKQJ or hand = AKQ9 or hand = KQJT or hand = QJT9 or hand = JT89) UserHighWrapSS


2b.) I have grouped those hand-ranges into groups of hands, such as:
LEVEL TWO
Code:
when (userAAKK or userAAKQ or userAAKJ or userAAKT or userAAQQ or userAAQJ or userAAQT or userAAJJ or userAAJT or userAAJ9 or userAATT or userAAT9 or userAA99) userAA_PREMIUM

3b.) Then I have further categorized them by their strength so that I can just call that particular user-variable rather than 100 or so individual ones, such as:
LEVEL THREE

Code:
//[[[[[[[[[ RaisePot HANDS - Call even if Bets Over 10x ]]]]]]]]]

when (UserMonsterAA or UserPremiumAA or UserBigAA or UserHighWrapDBS or UserHighGapperDS1 or UserKKDBLPR or UserHighDBLPR or UserBigKK or UserAAA) UserRaisePotHands
when (userAA_PREMIUM or userKK_PREMIUM) UserRaisePotHands

//[[[[[[[[[ RAISE BIG HANDS - Call up to 9 BB ]]]]]]]]]

When (UserMonsterKK or UserPremiumKK or UserHighDanglerAA or UserAASuitedDBLPR or UserAADBLPR or UserHighDanglerAAUnSuited) UserRaiseBIG9Hands
when (userAA_MEDIUM or userKK_MEDIUM) UserRaiseBIG9Hands

//[[[[[[[[[ GREAT HANDS - Call up to 6 BB ]]]]]]]]]

When (UserHighWrapSS or UserHighWrapPairSS or UserHighGapperSS1 or UserHighDoubleGapperDS or UserHighWrapDanglerAJUnSuited or UserHighWrapDanglerQJ or UserHighWrapDanglerJT or UserHighWrapDanglerJTUnSuited or UserJJTT99 or UserJJDBLPR or UserTTDBLPR or UserMidDBLPR or User887766 or UserSuitedDBLPR or UserAxsRundown or UserAxsMiscDS or UserDBLAxSTR or UserGarbageJJ) UserCall6Hands

My "Actions" were written for just the LEVEL THREE hand-ranges and not individual user variables. As in, all my pre-flop actions were setup for the UserCall6Hands, UserRaiseBIG9Hands or UserRaisePotHands etc. For example:

Code:
when UserShortHanded and UserRaisePotHands and raises >= 0 and calls >= 0 and AmountToCall <= 5 RaisePot force
when User6Max and stilltoact = 4 and UserCall6Hands and AmountToCall <= 6 call force

The profile contained no errors (other than apparently an errant "DoubleSuited" error).   smash

The beep-test showed me that the only user variables that worked were those in (Level One and Level Two).

I've concluded that it must be "too many user within user".. but if anyone has had a lot of user-within-user stuff and got it to work, then I'm all ears  Smiley

So now I've completely redone my profile using the 2nd level, for example:

Code:
//--[[10]]--//---[[[[ STACK OFF HANDS > RAISE MORE THAN 10 BB ]]]]----\\////////////[ ACTIONS ]/////
// -------------------------------------------------------------------------------------------------
when (userAA_PREMIUM or userKK_PREMIUM or userAAKK or userAAKQ or userAAKJ or userAAKT or userAAQQ or userAAQJ or userAAQT or userAAJJ or userAAJT or userAAJ9 or userAATT or userAAT9 or userAA99 or userAKKQ or userAKKJ or userAKKT or userKKQQ or userKKQJ or userKKQT or userKKJJ or userKKJT or userKKJ9 or userKKTT or userKKT9 or UserMonsterAA or UserPremiumAA or UserBigAA or UserHighWrapDBS or UserHighGapperDS1 or UserKKDBLPR or UserHighDBLPR or UserBigKK)
when (UserUTG or UserUTG5) and (calls = 0 and bets = 0 and Raises = 0) RaisePot force
when UserMID and (calls = 0 and bets = 0 and Raises = 0) RaisePot force
when UserMID and AmountToCall <= 3 RaisePot force
when UserMID and (Raises >= 2 and calls >= 1) Call force
when (UserCO5 or UserLATE) and (calls = 0 and bets = 0 and Raises = 0) RaisePot force
when (UserCO5 or UserLATE) and AmountToCall <= 3 RaiseMin force
when (UserCO5 or UserLATE) and (Raises >= 1 and calls >= 1) Call force
when (In Button or UserBu4 or UserBTN5) and (calls = 0 and bets = 0 and Raises = 0) RaisePot force
when (In Button or UserBu4 or UserBTN5) and Raises >= 1 or calls >= 3 Call force
when (In SmallBlind or UserSb4 or UserSB5 or UserSB) and (calls = 0 and bets = 0 and Raises = 0) RaisePot force
when (In SmallBlind or UserSb4 or UserSB5 or UserSB) and Raises >= 1 and calls >= 1 and AmountToCall <= 3 RaisePot force
when (In SmallBlind or UserSb4 or UserSB5 or UserSB) and Raises >= 1 and calls >= 1 and AmountToCall >= 10 Call force
when (In SmallBlind or UserSb4 or UserSB5 or UserSB) and (Raises = 0 and calls = 1) RaisePot force
When In BigBlind and calls <= 2 and Raises = 0 RaisePot force
When In BigBlind and (Raises >= 0 or calls >= 1) and AmountToCall <= 3 RaisePot force
When In BigBlind and Raises >= 1 and calls >= 1 and AmountToCall >= 3 Call force
When calls = 0 and Raises = 0 RaisePot force
When calls <= 2 and Raises = 0 RaisePot force
When Raises >= 1 or calls >= 1 and AmountToCall <= 3 RaisePot force
When AmountToCall <= 3 RaisePot force
When Raises >= 2 Call force
When Raises >= 1 and AmountToCall >= 3 Call force

Not ideal, not the big dream in how I wanted to do things (to be able to just swap out an entire range to be in a different blind size and actions would've been my first choice), but ... I'm so glad it's working and it's awesome to see the profile in action now, it's amazing after weeks of it not doing anything I coded and trying to figure out why.

The alternative was to re-do all my existing Level One groups to have the Level Two groupings, which was an option that would've worked.

e.g. instead of having:
Code:
// AAKK
when (hand = AcKcAdKd or hand = AcKcAhKh or hand = AcKcAsKs or hand = AdKdAcKc or hand = AdKdAhKh or hand = AdKdAsKs or hand = AhKhAcKc or hand = AhKhAdKd or hand = AhKhAsKs or hand = AsKsAcKc or hand = AsKsAdKd or hand = AsKsAhKh) [b]userAAKK[/b]

I could've changed all those Level One hands to be categorized as Level Two by changing the name of the variable:

Code:
// AAKK
when (hand = AcKcAdKd or hand = AcKcAhKh or hand = AcKcAsKs or hand = AdKdAcKc or hand = AdKdAhKh or hand = AdKdAsKs or hand = AhKhAcKc or hand = AhKhAdKd or hand = AhKhAsKs or hand = AsKsAcKc or hand = AsKsAdKd or hand = AsKsAhKh) [b]userAA_PREMIUM[/b]

but because I have hundreds of them, and they were already categorized in Level One and Level Two and Level Three, the job to change every single one of them seemed too big (it would've been ok if I had've done that from the start but it's too tedious to do now).


Anyway, if anyone has used Level Three user-variables successfully.. maybe you could shoot off an example of how you got it work?  There's still some hand ranges I categorized in Level Three that I'm no longer using (hand ranges by position), that I've temporarily given up on until another day. I hope it's not something so simple that I could've saved myself all this frustration, but also hope that it IS simple so that I can include the extra positional hand-ranges I coded. But I have wasted so much time on this, and want to start working on tweaking all the actions now that Pre-Flop is finally working. It's exciting when it actually starts doing what you want it to do so today is a good day Smiley
Logged
Pages: [1] Print 
Shanky Technologies Poker Bot Support Forum  |  General Category  |  PPL Support (Moderator: sngbot)  |  Topic: How advanced is the User Variable
Jump to:  


Login with username, password and session length

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!