Yes, i have a system which is really neat! Basically, it is an array struct where the player index is the struct ID. Whenever i add buttons to the dialog, i also attach a button ID to it, which i have saved as constants (for instance BTN_YES = 15, BTN_NO = 16, etc). I also have a method for registering triggers to button IDs by saving them in a hashtable using the ID as key. Whenever a button is pressed, it attempts to load a trigger from the hashtable using the button ID and execute it. It also stores important data such as the triggering player etc. It's a bit hard to explain, but you can have a look at the system here. It's a bit hackmeat since i've been adding stuff bit by bit, but it works fine in my map.