You could try to change the order in your execKey parameter:
instead of closing your menu first and then sending a response, send the menuresponse first.
execKey "8" { scriptMenuResponse "admin"; play "mouse_over"; close quickmessage; }
if a menuresponse occurs with a menu of "-1", as far as i can say from my expirience, in most cases an indicator of a not precached menu.
I also added a debug-sound in the response to see if it is properly triggered. You should also do something like this:
self waittill( "menuresponse" , menu , response );
iPrintLn( "Menu: " + menu + " Response: " + response );
as additional debug.