TDK's tutorial shows you how to determine whether a botton is being pressed but not in 3D so I'll just post this snippet for you.
rem ****************************
rem **** Name: 3D menu *********
rem **** By: nanogamezguy ******
rem **** Date: 20/05/07 ********
rem ****************************
rem Basics
sync on
autocam off
backdrop on
rem get screensize coordinates
screenx=screen width()
screeny=screen height()
camz#=400 : rem camera position, change this acording to you display mode.
rem Position camera
position camera screenx/2,0-screeny/2,0-camz#
point camera screenx/2,0-screeny/2,0
rem Make botton textures
P1imgtxt$="1 Player"
P2imgtxt$="2 Player"
print P1imgtxt$
get image 1,1,1,text width(P1imgtxt$),text height(P1imgtxt$)
cls
print P2imgtxt$
get image 2,1,1,text width(P2imgtxt$),text height(P2imgtxt$)
rem Size of bottons, you can change this but remember the position is for the middle of the plain
P1bottonxsize=200
P1bottonysize=50
P1bottonx=320
P1bottony=200
P1bottonx=P1bottonx
P1bottony=0-P1bottony
P2bottonxsize=200
P2bottonysize=50
P2bottonx=320
P2bottony=300
P2bottonx=P2bottonx
P2bottony=0-P2bottony
rem make botton objects
make object plain 1,P1bottonxsize,P1bottonysize
position object 1,P1bottonx,P1bottony,0
texture object 1,1
make object plain 2,P2bottonxsize,P2bottonysize
position object 2,P2bottonx,P2bottony,0
texture object 2,2
rem Work out the coordinates of the bottons in 2D
P1Bx1=P1bottonx-P1bottonxsize/2
P1Bx2=P1bottonx+P1bottonxsize/2
P1By1=(0-P1bottony)-P1bottonysize/2
P1By2=(0-P1bottony)+P1bottonysize/2
P2Bx1=P2bottonx-P2bottonxsize/2
P2Bx2=P2bottonx+P2bottonxsize/2
P2By1=(0-P2bottony)-P2bottonysize/2
P2By2=(0-P2bottony)+P2bottonysize/2
do
gosub bottonpress
sync
loop
bottonpress:
if mouseclick()=1
if mousex()>P1Bx1 and mousey()>P1By1 and mousex()<P1Bx2 and mousey()<P1By2
gosub Player1bp
endif
if mousex()>P2Bx1 and mousey()>P2By1 and mousex()<P2Bx2 and mousey()<P2By2
gosub Player2bp
endif
endif
return
Player1bp:
rem do something
ink 0,0
box 1,1,screenx-1,screeny-1
sync
return
Player2bp:
rem do something
ink 0,0
box 1,1,screenx-1,screeny-1
sync
return
The camz# variable changes acording to you display mode. The default display mode is 640 by 480 and that is 400. Another common display mode is 800 by 600. That is 500. If you're using another display mode then ask me and I'll find out for you.

Nothing is impossible...
No really, it is.