yuhsing

Untitled

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