Maybe just send "ShowMenu" message?
Code:
message_begin(MSG_ONE, g_msg_menu, {0,0,0}, id)
write_short(0)
write_char(0)
write_byte(0)
write_string("")
message_end()
I use this method to close non-VGUI menu.
Also what the purpose of on ground check?
If you need that check anyway you can use fakemeta instead of engine.