Converted document

OpenHoldem

PokerTracker Query Definitions DLL

As you might have noticed a new DLL is part of OpenHoldem since version 4.2.0: PokerTracker_Query_Definitions.DLL. http://code.google.com/p/openholdembot/source/browse/trunk/PokerTracker_Query_Definitions/ This DLL provides the ability to extend the set of PokerTracker-stats easily. The interesting part of the DLL is the file PokerTracker_Queries_Version_4.which h contains the definition of a struct:
typedef struct t_QueryDefinition {    
    CString name;    
    CString description_for_editor;    
    CString first_part_of_query;    
    // The queries will be created on the fly,    
    // for both ring-games and tournaments.    
    // There will be an "infix" added, depending on game-type    
    CString last_part_of_query;    
    int stat_group;    
    bool needs_infix_and_second_part; 
};
  • "name" should be self-explanatory. It is something like "icon" or "vpip".
  • "description_for_editor" is the explanation that will be shown in OpenHoldems formula-editor.
  • “query” is is the database-query, usually containing one or more 3 place-holders %GAMETYPE% , %SITEID% and %SCREENNAME%. OpenHoldem will build the complete query on the fly and automatically replace these place-holders by the correct values. A nice side-effect of this new concept: all stats will automatically work for both ring-games and tournaments; therefore OpenHoldem does no longer distinguish between "pt_" and "ptt_" stats, simply “pt_” will always work.
  • "stat_group": this is one of pt_group_basic / pt_group_advanced / pt_group_positional. Diffferent groups of stats need different sample-sizes to become meaningful or change significantly. Therefore OpenHoldem will evaluate these symbols with different update delays depending on the number of hands a user has played to achieve a good compromise between meaningful stats and a low database-usage.
And all the rest happens automagically. To add a new stat you only have to change the constant
const int k_number_of_pokertracker_stats = 29;
and append your stat to the array
t_QueryDefinition query_definitions[k_number_of_pokertracker_stats] = 
{    
    /* PT4 query to get icon */    
    {       
        // name       
        "icon",          
        // description_for_editor 		
        "Poker Tracker auto-rate icon code", 		
        // query 		
        "SELECT val_icon as result \ 		 
        FROM   player \ 		 
        WHERE  id_site = %SITEID% AND \ 		        
        player_name LIKE ’%SCREENNAME%’", 		
        // stat_group 		
        pt_group_basic 	
    }, 
    /* PT4 query to get number of hands in the database */ 	
    { 		
        // name 		
        "hands",
        ...
After the coding work has been done you need to compile the DLL and put it together with the linker-file (*.lib) into the OpenHoldem directory and everything will work automatically: querying the database, accessing the values in your bot-logic, correct update delays, even the symbol-descriptions in the formula-editor. Despite of its simplicity this approach has some more benefits:
  • it is update-safe. If a new version of OpenHoldem gets released your DLL will work as before without you having to compile a modified version of OpenHoldem or missing important bug-fixes.
  • you can add stats without having to wait for new releases.
  • you can easily contribute to make OpenHoldem better for everyone.
If you need more info about PokerTracker stats or some help you will find it in our PokerTracker sub-forum: http://www.maxinmontreal.com/forums/viewtopic.php?f=273 .
Document generated by eLyXer 1.2.5 (2013-03-10) on 2014-12-26T16:58:59.140000