自分も使うかなと思ったのでつくりました。制限時間のオプションは・・・(´ω`∪) 
がんばってください。
#module "text_menu"
//
// テキストメニューの初期化
//
#deffunc menu_init
	// 変数を初期化
	dim _len_,1 : _len_ = 32		// 配列数
	dim _flag_, _len_
	dim _x_, _len_
	dim _y_, _len_
	sdim _text_, 64, _len_
	dim _fsize_, _len_
return
//
// テキストメニューの追加
//
// p1 = ID
// p2 = x座標
// p3 = y座標
// p4 = テキスト
// p5 = 文字の大きさ
//
#deffunc menu_add int p1, int p2, int p3, str p4, int p5
	// 配列数を超えてないか確認
	if (p1 >= 0)&(p1 < _len_) {
		_flag_(p1) = 1
		_x_(p1) = p2
		_y_(p1) = p3
		_text_(p1) = p4
		_fsize_(p1) = p5
	}
return
//
// テキストメニュー
//
// p1 = 選択したID
// p2 = 制限時間(省略時はずっと待機)
//
#deffunc menu var p1, int p2
	// 変数初期化
	p1 = -1
	// 制限時間の補正
	if (p2 <= 0) {
		time = -1
	} else {
		time = p2
	}
	// 待機
	repeat time
		// クリック取得
		getkey click, 1
		// 領域判定
		repeat _len_ : i = cnt
			// もし使用されてるなら
			if (_flag_.i == 1) {
				// フォント設定
				font msgothic, _fsize_.i, 17
				// 現在の位置と大きさを考える
				size = strlen(_text_.i)*_fsize_.i
				// 描画
				redraw 0, _x_.i, _y_.i, size+_x_.i, _fsize_.i+_y_.i
					if (mousex > _x_.i)&(mousex < size+_x_.i)&(mousey > _y_.i)&(mousey < _fsize_.i+_y_.i) {
						// テキスト内を選択中
						color 255, 0, 0 : pos _x_.i, _y_.i : mes _text_.i
						// クリック確認
						if (click == 1) {
							// クリックされてるならidを更新
							p1 = i
							break
						}
					} else {
						// テキスト外
						color 128, 128, 128 : pos _x_.i, _y_.i : mes _text_.i
					}
				redraw 1, _x_.i, _y_.i, size+_x_.i, _fsize_.i+_y_.i
			}
		loop
		// idの確認
		if (p1 != -1) {
			break
		}
		// 待機
		await 100
	loop
return
#global
//
// ここから
//
*tit
	menu_init
		menu_add 0, 190, 200, "ストーリー", 20
		menu_add 1, 150, 270, "タイムアタック", 50
	menu id
	cls
	title "選ばれたのは "+id