Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/06/22 in all areas

  1. 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: }
    1 point
  2. 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 { .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_map; } end; OnTimer10000: if (!.running) { stopnpctimer; end; } .@total_count = getmapunits(BL_PC, .map$, .@player_name$); .@owner_index = inarray(.@player_name$, .gm_name$); if (.@owner_index != -1) { // offset GM himself deletearray .@player_name$[.@i], 1; .@total_count--; } .current_round++; if (.@total_count <= 0) { mapannounce .map$, "Round "+.current_round+": no more player, event stopped...", bc_map; donpcevent strnpcinfo(3)+"::OnStop"; } else if (.@total_count <= 1) { mapannounce .map$, "Round "+.current_round+": we have a winner "+.@player_name$+"!", bc_map; donpcevent strnpcinfo(3)+"::OnStop"; } else { .@i = rand(.@total_count); mapannounce .map$, "Round "+.current_round+": we killed "+.@player_name$[.@i]+" out of "+.@total_count+" players in this map.", bc_map; unitkill convertpcinfo(.@player_name$[.@i], CPC_ACCOUNT); specialeffect2 EF_GROUND_EXPLOSION, AREA, .@player_name$[.@i]; initnpctimer; } end; OnStop: stopnpctimer; .running = 0; .current_round = 0; .map$ = ""; .gm_name$ = ""; end: }
    1 point
×
×
  • Create New...