Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- - script bg_emp#control -1,{
- OnInit:
- set .minplayer2start,1; // minimum player to start
- set .winningscore,2; // final score to win
- set .eventlasting,20 * 60; // abort the system if there's no progress, 20 mins * seconds
- setarray .rewarditem,7227,100; // reward to the winning team
- end;
- OnStart:
- if ( getwaitingroomstate( 0, .rednpcname$ ) < .minplayer2start || getwaitingroomstate( 0, .bluenpcname$ ) < .minplayer2start )
- end;
- set .red,waitingroom2bg( "bat_a01", 171,346, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead", .rednpcname$ );
- copyarray .team1aid, $@arenamembers, $@arenamembersnum;
- set .team1count,.minplayer2start;
- set .blue,waitingroom2bg( "bat_a01", 162,50, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead", .bluenpcname$ );
- copyarray .team2aid, $@arenamembers, $@arenamembersnum;
- set .team2count,.minplayer2start;
- delwaitingroom .rednpcname$;
- delwaitingroom .bluenpcname$;
- disablenpc .rednpcname$;
- disablenpc .bluenpcname$;
- bg_warp .red, "bat_a01", 171,346;
- bg_warp .blue, "bat_a01", 162,50;
- setwall "bat_a01", 154,51, 6, 4, 0, "bg_emp_town_blue";
- setwall "bat_a01", 164,347, 6, 4, 0, "bg_emp_town_red";
- bg_updatescore "bat_a01", 0, 0;
- sleep 6000 * !.skip;
- mapannounce "bat_a01", "Game Rules : The first one to Break the opponent's Emperium will get a Score.", 0;
- sleep 3000 * !.skip;
- mapannounce "bat_a01", "Score [ "+ .winningscore +" ] Rounds to Win the Game.", 0;
- sleep 3000 * !.skip;
- mapannounce "bat_a01", "Get Ready.",0;
- sleep 2000 * !.skip;
- while (1) {
- //set .Round, .Round + 1;
- for ( set .@i,5; .@i > 0; set .@i,.@i - 1 ) {
- mapannounce "bat_a01", "[ "+ .@i +" ]", 0;
- sleep 1000 * !.skip;
- }
- if ( .score[1] == .winningscore -1 && .score[2] == .winningscore -1 )
- mapannounce "bat_a01", "Final Round Start.", 0;
- else
- //mapannounce "bat_a01", "Round 0"+ .round +" Start.", 0;
- mapannounce "bat_a01", "Round "+( set( .round, .round +1 ) )+" Start.", 0;
- bg_monster .red,"bat_a01",171,346, "--ja--",1915, strnpcinfo(3)+"::OnRedDown";
- bg_monster .blue,"bat_a01",162,50, "--ja--",1914, strnpcinfo(3)+"::OnBlueDown";
- //--------------------------
- bg_monster .red,"bat_a01",171,346, "--ja--",1285, strnpcinfo(3)+"::Onguardian";
- bg_monster .red,"bat_a01",171,346, "--ja--",1286, strnpcinfo(3)+"::Onguardian";
- bg_monster .red,"bat_a01",171,346, "--ja--",1287, strnpcinfo(3)+"::Onguardian";
- bg_monster .blue,"bat_a01",162,50, "--ja--",1285, strnpcinfo(3)+"::Onguardian";
- bg_monster .blue,"bat_a01",162,50, "--ja--",1286, strnpcinfo(3)+"::Onguardian";
- bg_monster .blue,"bat_a01",162,50, "--ja--",1287, strnpcinfo(3)+"::Onguardian";
- //--------------------------
- delwall "bg_emp_town_red";
- delwall "bg_emp_town_blue";
- sleep .eventlasting * 1000 * !.skip;
- bg_updatescore "bat_a01", .score[1], .score[2];
- killmonster "bat_a01", strnpcinfo(3)+"::OnRedDown";
- killmonster "bat_a01", strnpcinfo(3)+"::OnBlueDown";
- //--------------------------
- killmonster "bat_a01", strnpcinfo(3)+"::Onguardian";
- //--------------------------
- if ( getstrlen( .empkiller$ ) )
- mapannounce "bat_a01", "'"+.empkiller$ +"' broke the "+( ( .winside == 1 )? "Blue" : "Red" )+" Team's Emperium.",0;
- sleep2 1000;
- mapannounce "bat_a01", "[ "+( ( .winside == 1 )? "Red" : "Blue" )+" Team ] Scores a Point.", 0;
- if ( .score[1] == .winningscore || .score[2] == .winningscore || !.winside ) break;
- sleep 5000 * !.skip;
- bg_warp .red, "bat_a01", 171,346;
- bg_warp .blue, "bat_a01", 162,50;
- setwall "bat_a01", 154,51, 6, 4, 0, "bg_emp_town_blue";
- setwall "bat_a01", 164,347, 6, 4, 0, "bg_emp_town_red";
- sleep 1000 * !.skip;
- set .winside,0;
- }
- if ( .winside ) {
- mapannounce "bat_a01","Tribe War has Ended.",0;
- sleep2 3000;
- mapannounce "bat_a01", ""+ ( ( .winside == 1 ) ? "Red Team Wins !!" : "Blue Team Wins !!" ) +"", 0;
- // win team
- for ( set .@i,0; .@i < getd(".team"+ .winside +"count"); set .@i,.@i + 1 )
- getitem .rewarditem[0], .rewarditem[1], getd(".team"+ .winside +"aid["+ .@i +"]" );
- // lose team
- for ( set .@i,0; .@i < getd(".team"+ .loseside +"count"); set .@i,.@i + 1 )
- getitem .rewarditem[0], .rewarditem[1], getd(".team"+ .loseside +"aid["+ .@i +"]" );
- } else
- mapannounce "bat_a01", "Time Out. Aborting the match.", 0;
- sleep 5000;
- bg_warp .red, "prontera", 270,349;
- bg_warp .blue, "prontera", 69,63;
- bg_destroy .red;
- bg_destroy .blue;
- delwall "bg_emp_town_red";
- delwall "bg_emp_town_blue";
- deletearray .team1aid;
- deletearray .team2aid;
- set .round,0;
- set .winside,0;
- set .loseside,0;
- set .skip,0;
- set .score[1],0;
- set .score[2],0;
- set .team1count,0;
- set .team2count,0;
- enablenpc .rednpcname$;
- enablenpc .bluenpcname$;
- donpcevent .rednpcname$ +"::OnStart";
- donpcevent .bluenpcname$ +"::OnStart";
- end;
- //--------------------------
- Onguardian:
- end;
- //--------------------------
- OnRedDown: callsub L_EmpDown, 2,1;
- OnBlueDown: callsub L_EmpDown, 1,2;
- L_EmpDown:
- set .empkiller$,strcharinfo(0);
- set .winside,getarg(0);
- set .loseside,getarg(1);
- set .score[ .winside ],.score[ .winside ] + 1;
- awake strnpcinfo(0);
- end;
- OnRedDead: callsub L_dead, 2;
- OnBlueDead: callsub L_dead, 1;
- L_dead:
- for ( set .@i,0; .@i < getd(".team"+ getarg(0) +"count"); set .@i,.@i + 1 )
- getitem 607, 1, getd(".team"+ getarg(0) +"aid["+ .@i +"]" ); // give a yggdrasil berry
- sleep2 1250;
- percentheal 100,100;
- end;
- OnRedQuit: callsub L_quit, 1, "Red", 2;
- OnBlueQuit: callsub L_quit, 2, "Blue", 1;
- L_quit:
- percentheal 100, 100;
- while ( getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ) != getcharid(3) && .@i < getd(".team"+ getarg(0) +"count") )
- set .@i,.@i + 1;
- deletearray getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ), 1;
- setd ".team"+ getarg(0) +"count", getd(".team"+ getarg(0) +"count") -1;
- if ( getd(".team"+ getarg(0) +"count") ) end;
- mapannounce "bat_a01", "All "+ getarg(1) +" team members has Quit !", 0, 0xff3333; // purposely use different color
- set .score[ getarg(2) ],.winningscore;
- set .winside,getarg(2);
- set .skip,1;
- awake strnpcinfo(0);
- end;
- }
- prontera,271,351,3 script Red side#bg_emp 450,{
- end;
- OnInit:
- sleep 1;
- set getvariableofnpc( .rednpcname$, "bg_emp#control" ), strnpcinfo(0);
- OnStart:
- waitingroom "Red side", getvariableofnpc( .minplayer2start, "bg_emp#control" ), strnpcinfo(0)+"::OnJoin", 1;
- end;
- OnJoin:
- announce "The Red side has ["+ getwaitingroomstate(0) +"/"+ getvariableofnpc( .minplayer2start, "bg_emp#control" ) +"] User",
- 0;
- donpcevent "bg_emp#control::OnStart";
- end;
- }
- prontera,71,66,3 script Blue side#bg_emp 624,{
- end;
- OnInit:
- sleep 1;
- set getvariableofnpc( .bluenpcname$, "bg_emp#control" ), strnpcinfo(0);
- OnStart:
- waitingroom "Blue side", getvariableofnpc( .minplayer2start, "bg_emp#control" ), strnpcinfo(0)+"::OnJoin", 1;
- end;
- OnJoin:
- announce "The Blue side has ["+ getwaitingroomstate(0) +"/"+ getvariableofnpc( .minplayer2start, "bg_emp#control" ) +"] User",
- 0;
- donpcevent "bg_emp#control::OnStart";
- end;
- }
- bat_a01 mapflag battleground 2
- bat_a01 mapflag nosave SavePoint
- bat_a01 mapflag nowarp
- bat_a01 mapflag nowarpto
- bat_a01 mapflag noteleport
- bat_a01 mapflag nomemo
- bat_a01 mapflag nopenalty
- bat_a01 mapflag nobranch
- bat_a01 mapflag noicewall
Advertisement
Add Comment
Please, Sign In to add comment