you can also try something like this.
- script atcmd_example -1,{
OnInit:
bindatcmd "start", strnpcinfo(3) + "::OnAtcommand", 99;
end;
OnAtcommand:
if (.running) {
dispbottom "event currently running at '"+.map$+"' by '"+.gm_name$+"'.";
end;
}
.@getmapusers = getmapusers(strcharinfo(3));
if (.@getmapusers < 0) {
dispbottom "invalid map '"+.map$+"', event stopped.";
}
else if (.@getmapusers <= 2) {
dispbottom "this map lack of user to start event, required at least another 2 users (excluding yourself).";
}
else {
deletearray .player_aid_pool;
.player_aid_pool_size = 0;
.running = 1;
.current_round = 0;
.map$ = strcharinfo(3);
.gm_name$ = strcharinfo(0);
initnpctimer;
dispbottom "event started at '"+.map$+"' by '"+.gm_name$+"'. ";
mapannounce .map$, "event started at '"+.map$+"' by '"+.gm_name$+"'.", bc_all;
if (getmapflag(.map$, MF_LOADEVENT))
setmapflag(.map$, MF_LOADEVENT);
mapwarp .map$, .map$, 0, 0;
}
end;
OnPCLoadMapEvent:
if (.running && !getgmlevel()) {
.player_aid_pool[.player_aid_pool_size] = getcharid(3);
.player_aid_pool_size++;
dispbottom "You are registered as "+.player_aid_pool_size+"th in this event.";
}
end;
OnTimer10000:
if (!.running) {
stopnpctimer;
end;
}
.current_round++;
if (.player_aid_pool_size <= 0) {
mapannounce .map$, "Round "+.current_round+": no more player, event stopped...", bc_map;
donpcevent strnpcinfo(3)+"::OnStop";
}
else if (.player_aid_pool_size <= 1) {
mapannounce .map$, "Round "+.current_round+": we have a winner "+.@player_name$+"!", bc_map;
donpcevent strnpcinfo(3)+"::OnStop";
}
else {
.@i = rand(.player_aid_pool_size);
mapannounce .map$, "Round "+.current_round+": we killed "+rid2name(.player_aid_pool[.@i])+" out of "+.player_aid_pool_size+" players in this map.", bc_map;
unitkill .player_aid_pool[.@i];
specialeffect2 EF_GROUND_EXPLOSION, AREA, .@player_name$[.@i];
initnpctimer;
deletearray .player_aid_pool[.@i], 1;
.player_aid_pool_size--;
}
end;
OnStop:
stopnpctimer;
.running = 0;
.current_round = 0;
.map$ = "";
.gm_name$ = "";
deletearray .player_aid_pool;
.player_aid_pool_size = 0;
if (getmapflag(.map$, MF_LOADEVENT))
removemapflag(.map$, MF_LOADEVENT);
end:
}