I probably made some typos, but here's your code in ~10 lines:
guild_vs1,50,49,5 script MVP Spawner 403,{
set .@i, select(.menu$);
if (.@i == 1) doevent "Warper::OnMenu";
else atcommand "@monster "+.mobs[.@i-2];
close;
OnInit:
setarray .mobs[0],1511,1647,1785,1630,1039,2068,2238,2240,2236,1272,1719,1046,1389,1112,1115,1418,1871,1252,1768,2165,1086,1885,2241,1649,1651,1832,1492,1734,1251,2202,1779,1688,2156,1646,1373,2131,1147,1059,1150,2022,1087,1190,1038,2235,1157,1159,2237,2087,1623,1650,2239,1583,1708,1312,1751,1685,1648,1917,1658;
set .menu$,"Warp...";
for(set .@i,0; .@i<getarraysize(.mobs); set .@i,.@i+1)
set .menu$, .menu$+strmobinfo(1,.mobs[.@i])+":";
end;
}
guild_vs2,50,50,4 duplicate(MVP Spawner) MVP Spawner#1 403
guild_vs3,50,50,4 duplicate(MVP Spawner) MVP Spawner#2 403
guild_vs4,50,50,4 duplicate(MVP Spawner) MVP Spawner#3 403
Then take any warper script, *cough* mine *cough*, and add this below the header:
OnMenu:
Edit: Ah, never mind.