Advertisement
Guest User

Untitled

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