what would you like it to do?
should it have different keywords to display messages, or should it remember where you are in the menu?
different keywords:
onActivate>self>VCE_ifValue[<var:cl:lastMsg>][==][shop][1 5] //line 0
onVariableTrue>client>chatMsg[Here is the shop:]
onVariableTrue>client>chatMsg[Gun: 5 points]
onVariableTrue>client>chatMsg[Shotgun: 15 points]
onVariableTrue>client>chatMsg[Minigun: 25 points]
onVariableFalse>self>VCE_ifValue[<var:cl:lastMsg>][==][gun][9 10] //line 5
onVariableTrue>player>addItem[gun] //put before the the score check to not interfere with the lastMsg check, could put at the very end instead
onVariableTrue>client>incScore[-5]
onVariableFalse>client>chatMsg[Not enough points]
onVariableTrue>self>VCE_ifValue<var:cl:score>][>=][5][6 8] //line 9
onVariableFalse>self>VCE_ifValue[<var:cl:lastMsg>][==][shotgun][14 15] //line 10
onVariableTrue>player>addItem[shotgun] //put before the the score check to not interfere with the lastMsg check, could put at the very end instead
onVariableTrue>client>incScore[-15]
onVariableFalse>client>chatMsg[Not enough points]
onVariableTrue>self>VCE_ifValue<var:cl:score>][>=][5][11 13] //line 14
onVariableFalse>self>VCE_ifValue[<var:cl:lastMsg>][==][minigun][19 20] //line 15
onVariableTrue>player>addItem[gun] //put before the the score check to not interfere with the lastMsg check, could put at the very end instead
onVariableTrue>client>incScore[-5]
onVariableFalse>client>chatMsg[Not enough points]
onVariableTrue>self>VCE_ifValue<var:cl:score>][>=][5][16 18] //line 19
onVariableFalse>self>VCE_ifValue[<var:cl:lastMsg>][==][teleports][21 25] //line 20
onVariableTrue>client>chatMsg[Here are the teleport locations:]
onVariableTrue>client>chatMsg[House]
onVariableTrue>client>chatMsg[Factory]
onVariableTrue>client>chatMsg[Pond]
onVariableFalse>self>VCE_ifValue[<var:cl:lastMsg>][==][House][26 27] //line 25
onVariableTrue>namedBrick[House]>setPlayerTransform
onVariableFalse>self>VCE_ifValue[<var:cl:lastMsg>][==][House][28 29] //line 27
onVariableTrue>namedBrick[House]>setPlayerTransform
onVariableFalse>self>VCE_ifValue[<var:cl:lastMsg>][==][House][30 33] //line 29
onVariableTrue>namedBrick[House]>setPlayerTransform
onVariableFalse>client>chatMsg[Available menus:]
onVariableFalse>client>chatMsg[Shop]
onVariableFalse>client>chatMsg[Teleports]
default menu is at the end, in case all other options are false
if you want to have a state based menu, like 20 questions and yes/no options each time, then you'd want to save that in a variable and read text based on it
(it may be better for me to just show all of this ingame)