I don't really have a lot of time to code it all out or whatever... Or even test but this is a quick example I came up with.
prontera,163,187,6 script dual warp 100,{
.@len = getarraysize(.waiting_list$);
if( !.init && !compare("|"+implode(.waiting_list$,"|")+"|", "|"+getcharid(0)+"|") ) {
.waiting_list$[.@len] = ""+getcharid(0);
.@len++;
npctalk .@len + "";
if( .@len == 10 ) {
.init = 1;
.@map_len = getarraysize(.maps$);
copyarray .@maps$,.maps$,.@map_len;
copyarray .@cordx,.cordx,.@map_len;
copyarray .@cordy,.cordy,.@map_len;
while( .@len ) {
.@rng = rand(.@len);
.@map_rng = .@rng % .@map_len;
.@map$ = .@maps$[ .@map_rng ];
.@x = .@cordx[ .@map_rng ];
.@y = .@cordy[ .@map_rng ];
warp .@map$,.@x,.@y,atoi(.waiting_list$[.@rng]);
deletearray .waiting_list$[.@rng], 1;
.@len--;
.@rng = rand(.@len);
warp .@map$,.@x,.@y,atoi(.waiting_list$[.@rng]);
deletearray .waiting_list$[.@rng], 1;
deletearray .@maps$[ .@map_rng ], 1;
deletearray .@cordx[ .@map_rng ], 1;
deletearray .@cordy[ .@map_rng ], 1;
.@map_len--;
.@len--;
}
.init = 0;
}
}
end;
OnInit:
setarray .maps$, "prontera", "izlude", "geffen", "comodo", "amatsu";
setarray .cordx, 10, 100, 50, 20, 40;
setarray .cordy, 10, 100, 50, 20, 40;
}