Advertisement
Guest User

//= AnnieRuru

a guest
Aug 26th, 2014
333
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.19 KB | None | 0 0
  1. - script bg_emp#control -1,{
  2. OnInit:
  3. setarray .rewarditem, 496, 1; // reward to the winning team
  4. set .winningscore, 5; // final score to win
  5. set .eventlasting, 20 * 60; // abort the system if there's no progress, 20 mins * seconds
  6. set .register_lasting, 5 * 60; // 10 minutes to joins, else abort registration, 10 mins * seconds
  7. sleep 1;
  8. disablenpc .rednpcname$;
  9. disablenpc .bluenpcname$;
  10. end;
  11. OnStart:
  12. if ( getwaitingroomstate( 0, .rednpcname$ ) < .minplayer2start || getwaitingroomstate( 0, .bluenpcname$ ) < .minplayer2start ) end;
  13. set .red, waitingroom2bg( "bat_a01", 171,346, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead", .rednpcname$ );
  14. copyarray .team1aid, $@arenamembers, $@arenamembersnum;
  15. set .blue, waitingroom2bg( "bat_a01", 162,50, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead", .bluenpcname$ );
  16. copyarray .team2aid, $@arenamembers, $@arenamembersnum;
  17. .inprogress = 2;
  18. awake strnpcinfo(0);
  19. bg_warp .red, "bat_a01", 171,346;
  20. bg_warp .blue, "bat_a01", 162,50;
  21. setwall "bat_a01", 154,51, 6, 4, 0, "bg_emp_town_blue";
  22. setwall "bat_a01", 164,347, 6, 4, 0, "bg_emp_town_red";
  23. bg_updatescore "bat_a01", 0, 0;
  24. sleep 6000; if ( .inprogress == 0 ) goto L_Abort;
  25. mapannounce "bat_a01", "Rules are simple. The first one to break the opponent's emperium will get a score.", 0;
  26. sleep 3000; if ( .inprogress == 0 ) goto L_Abort;
  27. mapannounce "bat_a01", "Score "+ .winningscore +" rounds to win ! ... GET READY", 0;
  28. sleep 2000; if ( .inprogress == 0 ) goto L_Abort;
  29. while (1) {
  30. for ( .@i = 5; .@i > 0; .@i-- ) {
  31. mapannounce "bat_a01", .@i +"", 0;
  32. sleep 1000; if ( .inprogress == 0 ) goto L_Abort;
  33. }
  34. if ( .score[1] == .winningscore -1 && .score[2] == .winningscore -1 )
  35. mapannounce "bat_a01", "Final Round start!", 0;
  36. else
  37. mapannounce "bat_a01", "Round "+ .round++ +" start!", 0;
  38. bg_monster .red,"bat_a01",171,346, "--ja--",1288, strnpcinfo(3)+"::OnRedDown";
  39. bg_monster .blue,"bat_a01",162,50, "--ja--",1288, strnpcinfo(3)+"::OnBlueDown";
  40.  
  41. //bg_monster .red,"bat_a01",171,346, "--ja--",1915, strnpcinfo(3)+"::OnRedDown";
  42. //bg_monster .blue,"bat_a01",162,50, "--ja--",1914, strnpcinfo(3)+"::OnBlueDown";
  43.  
  44. bg_monster .red,"bat_a01",171,346, "--ja--",1285, strnpcinfo(3)+"::Onguardian";
  45. bg_monster .red,"bat_a01",171,346, "--ja--",1286, strnpcinfo(3)+"::Onguardian";
  46. bg_monster .red,"bat_a01",171,346, "--ja--",1287, strnpcinfo(3)+"::Onguardian";
  47.  
  48. bg_monster .blue,"bat_a01",162,50, "--ja--",1285, strnpcinfo(3)+"::Onguardian";
  49. bg_monster .blue,"bat_a01",162,50, "--ja--",1286, strnpcinfo(3)+"::Onguardian";
  50. bg_monster .blue,"bat_a01",162,50, "--ja--",1287, strnpcinfo(3)+"::Onguardian";
  51.  
  52.  
  53. delwall "bg_emp_town_red";
  54. delwall "bg_emp_town_blue";
  55. sleep .eventlasting * 1000; if ( .inprogress == 0 ) goto L_Abort;
  56. .score[ .winside ]++;
  57. bg_updatescore "bat_a01", .score[1], .score[2];
  58. killmonster "bat_a01", strnpcinfo(3)+"::OnRedDown";
  59. killmonster "bat_a01", strnpcinfo(3)+"::OnBlueDown";
  60.  
  61. killmonster "bat_a01", strnpcinfo(3)+"::Onguardian";
  62. if ( .winside )
  63. mapannounce "bat_a01", .empkiller$ +" has Destroy "+( ( .winside == 1 )?"Blue":"Red" )+"'s side Emperium. "+( ( .winside == 1 )?"Red":"Blue" )+" team score a point !", 0;
  64. if ( .score[1] == .winningscore || .score[2] == .winningscore || !.winside ) break;
  65. sleep 5000; if ( .inprogress == 0 ) goto L_Abort;
  66. bg_warp .red, "bat_a01", 171,346;
  67. bg_warp .blue, "bat_a01", 162,50;
  68. setwall "bat_a01", 154,51, 6, 4, 0, "bg_emp_town_blue";
  69. setwall "bat_a01", 164,347, 6, 4, 0, "bg_emp_town_red";
  70. .winside = 0;
  71. }
  72. if ( .winside ) {
  73. mapannounce "bat_a01", ( ( .winside == 1 )?"Red":"Blue" )+" side wins !", 0;
  74. .@size = getarraysize( getd(".team"+ .winside +"aid") );
  75. for ( .@i = 0; .@i < .@size; .@i++ )
  76. getitem .rewarditem[0], .rewarditem[1], getd(".team"+ .winside +"aid["+ .@i +"]" );
  77. } else
  78. mapannounce "bat_a01", "Time Out. Aborting the match.", 0;
  79. sleep 5000;
  80. L_Abort:
  81. bg_warp .red, "z_agit", 22,47;
  82. bg_warp .blue, "z_agit", 22,47;
  83. bg_destroy .red;
  84. bg_destroy .blue;
  85. delwall "bg_emp_town_red";
  86. delwall "bg_emp_town_blue";
  87. deletearray .team1aid;
  88. deletearray .team2aid;
  89. .round = .winside = .score[2] = .score[1] = .inprogress = 0;
  90. end;
  91. OnRedDown: callsub L_EmpDown, 2;
  92. OnBlueDown: callsub L_EmpDown, 1;
  93. L_EmpDown:
  94. .empkiller$ = strcharinfo(0);
  95. .winside = getarg(0);
  96. awake strnpcinfo(3);
  97. OnRedDead:
  98. OnBlueDead:
  99. end;
  100. Onguardian: end;
  101.  
  102. OnRedQuit: callsub L_quit, .red, "Red", "Blue", 2;
  103. OnBlueQuit: callsub L_quit, .blue, "Blue", "Red", 1;
  104. L_quit:
  105. if ( bg_get_data( getarg(0), 0 ) ) end;
  106. mapannounce "bat_a01", "All "+ getarg(1) +" team members has Quit ! "+ getarg(2) +" side wins !", 0;
  107. .@size = getarraysize( getd(".team"+ getarg(3) +"aid") );
  108. for ( .@i = 0; .@i < .@size; .@i++ )
  109. getitem .rewarditem[0], .rewarditem[1], getd(".team"+ getarg(3) +"aid["+ .@i +"]" );
  110. goto L_Abort;
  111. OnAutoAbort:
  112. sleep .register_lasting * 1000;
  113. delwaitingroom .rednpcname$;
  114. delwaitingroom .bluenpcname$;
  115. disablenpc .rednpcname$;
  116. disablenpc .bluenpcname$;
  117. if ( .inprogress == 1 ) {
  118. .inprogress = 0;
  119. announce "battleground has self-aborted because not enough members", 0;
  120. }
  121. end;
  122. }
  123.  
  124. z_agit,30,40,4 script Battle Starter 728,{
  125. if ( getgmlevel() < 99 ) {
  126. mes "I only talk to gm";
  127. close;
  128. }
  129. if ( getvariableofnpc( .inprogress, "bg_emp#control" ) ) {
  130. mes "abort ?";
  131. next;
  132. if ( select ( "Yes", "No" ) == 2 ) close;
  133. set getvariableofnpc( .inprogress, "bg_emp#control" ), 0;
  134. awake "bg_emp#control";
  135. killmonster "bat_a01", "bg_emp#control::OnRedDown";
  136. killmonster "bat_a01", "bg_emp#control::OnBlueDown";
  137. announce strcharinfo(0) +" has abort the battleground", 0;
  138. close;
  139. }
  140. mes "select how many players to start";
  141. next;
  142. if ( input( .@a, 1, 30 ) ) close;
  143. set getvariableofnpc( .minplayer2start, "bg_emp#control" ), .@a;
  144. announce strcharinfo(0) +" has hosted "+ .@a +"vs"+ .@a +" battleground", 0;
  145. enablenpc getvariableofnpc( .rednpcname$, "bg_emp#control" );
  146. enablenpc getvariableofnpc( .bluenpcname$, "bg_emp#control" );
  147. donpcevent getvariableofnpc( .rednpcname$, "bg_emp#control" ) +"::OnStart";
  148. donpcevent getvariableofnpc( .bluenpcname$, "bg_emp#control" ) +"::OnStart";
  149. set getvariableofnpc( .inprogress, "bg_emp#control" ), 1;
  150. donpcevent "bg_emp#control::OnAutoAbort";
  151. close;
  152. }
  153.  
  154. prontera,111,63,4 script Red side#bg_emp 414,{
  155. end;
  156. OnStart:
  157. waitingroom "Red side", getvariableofnpc( .minplayer2start, "bg_emp#control" ) +1, "bg_emp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_emp#control" );
  158. end;
  159. OnInit:
  160. set getvariableofnpc( .rednpcname$, "bg_emp#control" ), strnpcinfo(0);
  161. end;
  162. }
  163.  
  164. prontera,117,63,4 script Blue side#bg_emp 418,{
  165. end;
  166. OnStart:
  167. waitingroom "Blue side", getvariableofnpc( .minplayer2start, "bg_emp#control" ) +1, "bg_emp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_emp#control" );
  168. end;
  169. OnInit:
  170. set getvariableofnpc( .bluenpcname$, "bg_emp#control" ), strnpcinfo(0);
  171. end;
  172. }
  173.  
  174. bat_a01 mapflag battleground 2
  175. bat_a01 mapflag nosave SavePoint
  176. bat_a01 mapflag nowarp
  177. bat_a01 mapflag nowarpto
  178. bat_a01 mapflag noteleport
  179. bat_a01 mapflag nomemo
  180. bat_a01 mapflag nopenalty
  181. bat_a01 mapflag nobranch
  182. bat_a01 mapflag noicewall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement