Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- - script bg_emp#control -1,{
- OnInit:
- setarray .rewarditem, 31003, 1; // reward to the winning team
- set .winningscore, 3; // final score to win
- set .eventlasting, 30 * 60; // abort the system if there's no progress, 20 mins * seconds
- set .register_lasting, 10 * 60; // 10 minutes to joins, else abort registration, 10 mins * seconds
- set $requiredBGLevel, 150; // required level to enter
- set $requiredBGZeny, 0;
- set $requiredBGPlayer, 4;
- sleep 1;
- end;
- onstart:
- if ( getwaitingroomstate( 0, .rednpcname$ ) < $requiredBGPlayer || getwaitingroomstate( 0, .bluenpcname$ ) < $requiredBGPlayer ) end;
- set .red, waitingroom2bg( "bat_c01", 53,128, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead", .rednpcname$ );
- copyarray .team1aid, $@arenamembers, $@arenamembersnum;
- set .blue, waitingroom2bg( "bat_c01", 146,55, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead", .bluenpcname$ );
- copyarray .team2aid, $@arenamembers, $@arenamembersnum;
- delwaitingroom .rednpcname$;
- delwaitingroom .bluenpcname$;
- disablenpc .rednpcname$;
- disablenpc .bluenpcname$;
- .inprogress = 2;
- awake strnpcinfo(0);
- bg_warp .red, "bat_c01", 53,128;
- bg_warp .blue, "bat_c01", 146,55;
- setwall "bat_c01", 145,61, 6, 2, 0, "bg_emp_town_blue1";
- setwall "bat_c01", 140,56, 6, 0, 0, "bg_emp_town_blue2";
- setwall "bat_c01", 59,127, 6, 4, 0, "bg_emp_town_red1";
- setwall "bat_c01", 54,122, 6, 6, 0, "bg_emp_town_red2";
- bg_updatescore "bat_c01", 0, 0;
- sleep 6000; if ( .inprogress == 0 ) goto L_Abort;
- mapannounce "bat_c01", "Rules are simple. The first one to break the opponent's emperium will get a score.", 0;
- sleep 3000; if ( .inprogress == 0 ) goto L_Abort;
- mapannounce "bat_c01", "Score "+ .winningscore +" rounds to win ! ... GET READY", 0;
- sleep 2000; if ( .inprogress == 0 ) goto L_Abort;
- while (1) {
- for ( .@i = 5; .@i > 0; .@i-- ) {
- mapannounce "bat_c01", .@i +"", 0;
- sleep 1000; if ( .inprogress == 0 ) goto L_Abort;
- }
- if ( .score[1] == .winningscore -1 && .score[2] == .winningscore -1 )
- mapannounce "bat_c01", "Final Round start!", 0;
- else
- mapannounce "bat_c01", "Round "+ .round++ +" start!", 0;
- bg_monster .red,"bat_c01",53,128, "--ja--",1915, strnpcinfo(3)+"::OnRedDown";
- bg_monster .blue,"bat_c01",146,55, "--ja--",1914, strnpcinfo(3)+"::OnBlueDown";
- delwall "bg_emp_town_red1";
- delwall "bg_emp_town_red2";
- delwall "bg_emp_town_blue1";
- delwall "bg_emp_town_blue2";
- sleep .eventlasting * 1000; if ( .inprogress == 0 ) goto L_Abort;
- .score[ .winside ]++;
- bg_updatescore "bat_c01", .score[1], .score[2];
- killmonster "bat_c01", strnpcinfo(3)+"::OnRedDown";
- killmonster "bat_c01", strnpcinfo(3)+"::OnBlueDown";
- if ( .winside )
- mapannounce "bat_c01", .empkiller$ +" has Destroy "+( ( .winside == 1 )?"Blue":"Red" )+"'s side Emperium. "+( ( .winside == 1 )?"Red":"Blue" )+" team score a point !", 0;
- if ( .score[1] == .winningscore || .score[2] == .winningscore || !.winside ) break;
- sleep 5000; if ( .inprogress == 0 ) goto L_Abort;
- bg_warp .red, "bat_c01", 53,128;
- bg_warp .blue, "bat_c01", 146,55;
- setwall "bat_c01", 143,61, 6, 2, 0, "bg_emp_town_blue1";
- setwall "bat_c01", 140,58, 6, 0, 0, "bg_emp_town_blue2";
- setwall "bat_c01", 59,125, 6, 0, 0, "bg_emp_town_red1";
- setwall "bat_c01", 57,122, 6, 2, 0, "bg_emp_town_red2";
- .winside = 0;
- }
- if ( .winside ) {
- mapannounce "bat_c01", ( ( .winside == 1 )?"Red":"Blue" )+" side wins !", 0;
- .@size = getarraysize( getd(".team"+ .winside +"aid") );
- for ( .@i = 0; .@i < .@size; .@i++ )
- getitem .rewarditem[0], .rewarditem[1], getd(".team"+ .winside +"aid["+ .@i +"]" );
- } else
- mapannounce "bat_c01", "Time Out. Aborting the match.", 0;
- sleep 5000;
- L_Abort:
- bg_warp .red, "heiron", 100,37;
- bg_warp .blue, "heiron", 100,37;
- bg_destroy .red;
- bg_destroy .blue;
- delwall "bg_emp_town_red1";
- delwall "bg_emp_town_red2";
- delwall "bg_emp_town_blue1";
- delwall "bg_emp_town_blue2";
- deletearray .team1aid;
- deletearray .team2aid;
- .round = .winside = .score[2] = .score[1] = .inprogress = 0;
- enablenpc .rednpcname$;
- enablenpc .bluenpcname$;
- end;
- OnRedDown: callsub L_EmpDown, 2;
- OnBlueDown: callsub L_EmpDown, 1;
- L_EmpDown:
- .empkiller$ = strcharinfo(0);
- .winside = getarg(0);
- awake strnpcinfo(3);
- OnRedDead:
- OnBlueDead:
- end;
- OnRedQuit: callsub L_quit, .red, "Red", "Blue", 2;
- OnBlueQuit: callsub L_quit, .blue, "Blue", "Red", 1;
- L_quit:
- if ( bg_get_data( getarg(0), 0 ) ) end;
- mapannounce "bat_c01", "All "+ getarg(1) +" team members has Quit ! "+ getarg(2) +" side wins !", 0;
- .@size = getarraysize( getd(".team"+ getarg(3) +"aid") );
- for ( .@i = 0; .@i < .@size; .@i++ )
- getitem .rewarditem[0], .rewarditem[1], getd(".team"+ getarg(3) +"aid["+ .@i +"]" );
- goto L_Abort;
- OnAutoAbort:
- sleep .register_lasting * 1000;
- delwaitingroom .rednpcname$;
- delwaitingroom .bluenpcname$;
- disablenpc .rednpcname$;
- disablenpc .bluenpcname$;
- if ( .inprogress == 1 ) {
- .inprogress = 0;
- announce "battleground has self-aborted because not enough members", 0;
- }
- end;
- }
- - script bg_star -1,{
- OnInit:
- bindatcmd("bgemp", "bg_start::OnAtcommand", 90, 90);
- donpcevent getvariableofnpc( .rednpcname$, "bg_emp#control" ) +"::onstart";
- donpcevent getvariableofnpc( .bluenpcname$, "bg_emp#control" ) +"::onstart";
- set getvariableofnpc( .inprogress, "bg_emp#control" ), 1;
- //donpcevent "bg_emp#control::OnAutoAbort";
- end;
- OnAtcommand:
- if ( getgmlevel() < 99 ) {
- mes "I only talk to gm";
- close;
- }
- if ( getvariableofnpc( .inprogress, "bg_emp#control" ) ) {
- mes "abort ?";
- next;
- if ( select ( "Yes", "No" ) == 2 ) close;
- set getvariableofnpc( .inprogress, "bg_emp#control" ), 0;
- awake "bg_emp#control";
- killmonster "bat_c01", "bg_emp#control::OnRedDown";
- killmonster "bat_c01", "bg_emp#control::OnBlueDown";
- announce strcharinfo(0) +" has abort the battleground", 0;
- close;
- }
- end;
- }
- prontera,151,181,4 script BG Red Side#bg_emp 100,{
- end;
- onstart:
- delwaitingroom;
- waitingroom "BG Red Side", $requiredBGPlayer+1, "bg_emp#control::onstart", $requiredBGPlayer, $requiredBGZeny, $requiredBGLevel, $requiredBGLevel;
- end;
- OnInit:
- set getvariableofnpc( .rednpcname$, "bg_emp#control" ), strnpcinfo(0);
- end;
- }
- prontera,160,181,4 script BG Blue Side#bg_emp 100,{
- end;
- onstart:
- delwaitingroom;
- waitingroom "BG Blue Side", $requiredBGPlayer+1, "bg_emp#control::onstart", $requiredBGPlayer, $requiredBGZeny, $requiredBGLevel, $requiredBGLevel;
- end;
- OnInit:
- set getvariableofnpc( .bluenpcname$, "bg_emp#control" ), strnpcinfo(0);
- end;
- }
- 06guild_01,50,6,0 warp toheiron 2,2,heiron,99,35
- bat_c01 mapflag battleground 2
- bat_c01 mapflag nosave SavePoint
- bat_c01 mapflag nowarp
- bat_c01 mapflag nowarpto
- bat_c01 mapflag noteleport
- bat_c01 mapflag nomemo
- bat_c01 mapflag nopenalty
- bat_c01 mapflag nobranch
- bat_c01 mapflag noicewall
- bat_c01 mapflag nocommand 5
Advertisement
Add Comment
Please, Sign In to add comment