Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 4 teams composed of 5 each ( adjustable )
- // Black, Yellow, Blue, Orange
- // every party = unique respawn in the same place
- // every round = 5 minutes
- // All dead players = warped out in a certain location
- // when the time meets its limit the highest number of players will receive the point
- // if there's only 1 player left before the time limit means they got the score
- // if everyone are dead means no one gets the point
- // first team to reach 3 points will win
- // is it possible?
- guild_vs1-4,50,50,4 script team_bg_pk 757,{
- .@bg_id = getcharid(4);
- if( .@bg_id ){
- if( .@bg_id == .winner ){
- // rewards for winner team
- getitem 512,1;
- getitem 512,2;
- getitem 512,3;
- }
- bg_leave;
- if( !bg_get_data( .@bg_id,0 ) )
- bg_destroy .@bg_id;
- }
- warp "SavePoint",0,0;
- end;
- OnInit:
- // each team required how many player
- $@team_bg_count = 4;
- // point required to win
- .winner_point = 3;
- // Round duration
- .round_minute = 5;
- // setting for each team. ( npc + temporary save point )
- setarray .teambg_npc$,"teambg_1","teambg_2","teambg_3","teambg_4";
- setarray .teambg_x,5,49,94,49;
- setarray .teambg_y,49,94,49,5;
- // rules for this battlegrounds.
- setarray .rules$,
- "This is a 4 Team PK.",
- "Each Team have to eliminate others team.",
- "Team that grabbed the most kills each round win the points.",
- "Accumulate "+.winner_point+" points to win this.",
- "Player who get killed may not able to join the match until next round.",
- "Only the Team that have it's member survived till the Round end and achieved highest kill points will gain Winning Points.",
- "Good Luck and starting soon.";
- .rules_size = getarraysize( .rules$ );
- .teambg_npc_size = getarraysize( .teambg_npc$ );
- $@team_bg_npc_name$ = strnpcinfo(0);
- .map$ = strnpcinfo(4);
- setmapflag .map$,mf_battleground;
- mapwarp .map$,"prontera",155,175;
- // wall to block some path
- setwall .map$,11,46,7,0,0,"TeamBG_Wall1";
- setwall .map$,26,46,7,0,0,"TeamBG_Wall2";
- setwall .map$,46,88,7,2,0,"TeamBG_Wall3";
- setwall .map$,46,73,7,2,0,"TeamBG_Wall4";
- setwall .map$,88,46,7,0,0,"TeamBG_Wall5";
- setwall .map$,73,46,7,0,0,"TeamBG_Wall6";
- setwall .map$,46,11,7,2,0,"TeamBG_Wall7";
- setwall .map$,46,26,7,2,0,"TeamBG_Wall8";
- donpcevent "::OnTeamBGEnable";
- end;
- OnLeave:
- .@bg_id = getcharid(4);
- if( .@bg_id ){
- bg_leave;
- message strcharinfo(0),"You leaved the Group.";
- if( !bg_get_data( .@bg_id,0 ) )
- bg_destroy .@bg_id;
- }
- end;
- // event register show every hours.
- OnMinute00:
- if( !.status ){
- for( .@i = 3; .@i > 0; .@i-- ){
- announce "Battleground starting soon . Please register your team. Make sure you leaved Battleground before Register.",0;
- sleep 60000;
- }
- donpcevent "::OnTeamBGEnable";
- }
- end;
- OnTeamRegister:
- while( .@i < .teambg_npc_size ){
- .@count[.@i] = getwaitingroomstate( 0,.teambg_npc$[.@i] );
- if( .@count[.@i] < $@team_bg_count ) end;
- .@i++;
- }
- if( getarraysize( .@count ) != .teambg_npc_size ) end;
- .status = 1;
- hideonnpc $@team_bg_npc_name$;
- deletearray .teambg_point;
- deletearray .teambg_count;
- .winner = 0;
- .@i = 0;
- while( .@i < .teambg_npc_size ){
- setd( "."+.teambg_npc$[.@i] ),waitingroom2bg( .map$,.teambg_x[.@i],.teambg_y[.@i],$@team_bg_npc_name$+"::OnLeave",$@team_bg_npc_name$+"::OnDead",.teambg_npc$[.@i] );
- bg_warp getd( "."+.teambg_npc$[.@i] ),.map$,.teambg_x[.@i],.teambg_y[.@i];
- delwaitingroom .teambg_npc$[.@i];
- .@i++;
- }
- for( .@i = 0; .@i < .rules_size; .@i++ ){
- mapannounce .map$,.rules$[.@i],0;
- sleep 3000;
- }
- do{
- .@i = 0;
- while( .@i < .teambg_npc_size ){
- bg_warp getd( "."+.teambg_npc$[.@i] ),.map$,.teambg_x[.@i],.teambg_y[.@i];
- .@i++;
- }
- sleep 3000;
- mapannounce .map$,"Round start shortly. Get yourself ready within 15 seconds.",0;
- sleep 15000;
- .@i = 0;
- while( .@i < .teambg_npc_size ){
- .@temp_bg_id = getd( "."+.teambg_npc$[.@i] );
- bg_warp .@temp_bg_id,.map$,rand( 30,69 ),rand( 30,69 );
- .teambg_count[.@i] = bg_get_data( .@temp_bg_id,0 );
- setd( "."+.teambg_npc$[.@i]+"_kill" ),0;
- .@i++;
- }
- sleep ( .round_minute * 60000 );
- .@i = 0;
- .@killpoint = 0;
- while( .@i < .teambg_npc_size ){
- .@kill = getd( "."+.teambg_npc$[.@i]+"_kill" );
- if( .@kill > .@killpoint && .teambg_count[.@i] ){
- .@round_win = .@i;
- .@killpoint = .@kill;
- }
- .@i++;
- }
- .teambg_point[.@round_win]++;
- mapannounce .map$,"Team "+( .@round_win+1 )+" win this round with "+.@killpoint+" kills and "+.teambg_count[.@round_win]+" survived.",0;
- .@i = 0;
- while( .@i < .teambg_npc_size ){
- if( .teambg_point[.@i] >= .winner_point ){
- .winner = getd( "."+.teambg_npc$[.@i] );
- mapannounce .map$,"Team "+( .@i + 1 )+" has win this Game.",0;
- break;
- }
- .@i++;
- }
- }while( !.winner );
- sleep 4000;
- mapwarp .map$,.map$,50,50;
- hideoffnpc $@team_bg_npc_name$;
- sleep 180000; // delay 3 minute before re-open
- .status = 0;
- end;
- OnDead:
- .@bg_id = getcharid(4);
- while( .@i < .teambg_npc_size ){
- if( .@bg_id == getd( "."+.teambg_npc$[.@i] ) )
- .teambg_count[.@i]--;
- if( .teambg_count[.@i] )
- .@survive_team++;
- .@i++;
- }
- sleep2 1000;
- percentheal 100,100;
- specialeffect2 EF_PROVIDENCE;
- if( .@survive_team == 1 )
- awake $@team_bg_npc_name$;
- end;
- OnPCKillEvent:
- if( strcharinfo(3) == .map$ ){
- .@bg_id = getcharid(4);
- if( .@bg_id ){
- while( .@i < .teambg_npc_size ){
- if( .@bg_id == getd( "."+.teambg_npc$[.@i] ) ){
- setd( "."+.teambg_npc$[.@i]+"_kill" ),getd( "."+.teambg_npc$[.@i]+"_kill" ) + 1;
- break;
- }
- .@i++;
- }
- }
- }
- end;
- }
- prontera,148,175,5 script Team 1::teambg_1 100,{
- doevent $@team_bg_npc_name$+"::OnLeave";
- end;
- OnTeamBGEnable:
- delwaitingroom;
- waitingroom "Team 1",( $@team_bg_count + 1 ),$@team_bg_npc_name$+"::OnTeamRegister",1;
- end;
- }
- prontera,147,167,5 script Team 2::teambg_2 100,{
- doevent $@team_bg_npc_name$+"::OnLeave";
- end;
- OnTeamBGEnable:
- delwaitingroom;
- waitingroom "Team 2",( $@team_bg_count + 1 ),$@team_bg_npc_name$+"::OnTeamRegister",1;
- end;
- }
- prontera,163,175,5 script Team 3::teambg_3 100,{
- doevent $@team_bg_npc_name$+"::OnLeave";
- end;
- OnTeamBGEnable:
- delwaitingroom;
- waitingroom "Team 3",( $@team_bg_count + 1 ),$@team_bg_npc_name$+"::OnTeamRegister",1;
- end;
- }
- prontera,163,167,5 script Team 4::teambg_4 100,{
- doevent $@team_bg_npc_name$+"::OnLeave";
- end;
- OnTeamBGEnable:
- delwaitingroom;
- waitingroom "Team 4",( $@team_bg_count + 1 ),$@team_bg_npc_name$+"::OnTeamRegister",1;
- end;
- }
- - script teambg_healer -1,{
- percentheal 100,100;
- specialeffect2 EF_PROVIDENCE;
- end;
- }
- guild_vs1-4,4,53,4 duplicate(teambg_healer) Healer#teambg01 757
- guild_vs1-4,53,95,4 duplicate(teambg_healer) Healer#teambg02 757
- guild_vs1-4,88,53,4 duplicate(teambg_healer) Healer#teambg03 757
- guild_vs1-4,53,11,4 duplicate(teambg_healer) Healer#teambg04 757
Advertisement
Add Comment
Please, Sign In to add comment