Advertisement
Ryuuji

BG o:!

Mar 31st, 2014
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.51 KB | None | 0 0
  1. - script bg_emp#control -1,{
  2. OnInit:
  3. setarray .rewarditem, 7828, 12; // reward to the winning team
  4. set .winningscore, 2; // final score to win
  5. set .eventlasting, 20 * 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. 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", "Las reglas son simples. Quien rompa primero la piedra del enemigo gana un punto.", 0;
  26. sleep 3000; if ( .inprogress == 0 ) goto L_Abort;
  27. mapannounce "bat_a01", "Se gana con "+ .winningscore +" puntos ! ... PREPARAOS PARA LA BATALLA!", 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", "Comienza Round Decisivo!!", 0;
  36. else
  37. mapannounce "bat_a01", "Round "+ .round++ +" comiencen!!", 0;
  38. bg_monster .red,"bat_a01",171,346, "--ja--",1915, strnpcinfo(3)+"::OnRedDown";
  39. bg_monster .blue,"bat_a01",162,50, "--ja--",1914, strnpcinfo(3)+"::OnBlueDown";
  40. delwall "bg_emp_town_red";
  41. delwall "bg_emp_town_blue";
  42. sleep .eventlasting * 1000; if ( .inprogress == 0 ) goto L_Abort;
  43. .score[ .winside ]++;
  44. bg_updatescore "bat_a01", .score[1], .score[2];
  45. killmonster "bat_a01", strnpcinfo(3)+"::OnRedDown";
  46. killmonster "bat_a01", strnpcinfo(3)+"::OnBlueDown";
  47. if ( .winside )
  48. mapannounce "bat_a01", .empkiller$ +" Destruyo "+( ( .winside == 1 )?"Glacial":"Vulcan" )+"'s Stone. "+( ( .winside == 1 )?"Vulcan":"Glacial" )+" ganan un punto !", 0;
  49. if ( .score[1] == .winningscore || .score[2] == .winningscore || !.winside ) break;
  50. sleep 5000; if ( .inprogress == 0 ) goto L_Abort;
  51. bg_warp .red, "bat_a01", 171,346;
  52. bg_warp .blue, "bat_a01", 162,50;
  53. setwall "bat_a01", 154,51, 6, 4, 0, "bg_emp_town_blue";
  54. setwall "bat_a01", 164,347, 6, 4, 0, "bg_emp_town_red";
  55. .winside = 0;
  56. }
  57. if ( .winside ) {
  58. mapannounce "bat_a01", ( ( .winside == 1 )?"Vulcan":"Glacial" )+" Team gana !", 0;
  59. .@size = getarraysize( getd(".team"+ .winside +"aid") );
  60. for ( .@i = 0; .@i < .@size; .@i++ )
  61. getitem .rewarditem[0], .rewarditem[1], getd(".team"+ .winside +"aid["+ .@i +"]" );
  62. } else
  63. mapannounce "bat_a01", "Tiempo Fuera. Abortando la partida.", 0;
  64. sleep 5000;
  65. L_Abort:
  66. bg_warp .red, "turbo_room", 90,133;
  67. bg_warp .blue, "turbo_room", 79,133;
  68. bg_destroy .red;
  69. bg_destroy .blue;
  70. delwall "bg_emp_town_red";
  71. delwall "bg_emp_town_blue";
  72. deletearray .team1aid;
  73. deletearray .team2aid;
  74. .round = .winside = .score[2] = .score[1] = .inprogress = 0;
  75. end;
  76. OnRedDown: callsub L_EmpDown, 2;
  77. OnBlueDown: callsub L_EmpDown, 1;
  78. L_EmpDown:
  79. .empkiller$ = strcharinfo(0);
  80. .winside = getarg(0);
  81. awake strnpcinfo(3);
  82. OnRedDead:
  83. OnBlueDead:
  84. end;
  85. OnRedQuit: callsub L_quit, .red, "Vulcan", "Glacial", 2;
  86. OnBlueQuit: callsub L_quit, .blue, "Glacial", "Vulcan", 1;
  87. L_quit:
  88. if ( bg_get_data( getarg(0), 0 ) ) end;
  89. mapannounce "bat_a01", "Todos "+ getarg(1) +" se han marchado ! "+ getarg(2) +"'s ganan !", 0;
  90. .@size = getarraysize( getd(".team"+ getarg(3) +"aid") );
  91. for ( .@i = 0; .@i < .@size; .@i++ )
  92. getitem .rewarditem[0], .rewarditem[1], getd(".team"+ getarg(3) +"aid["+ .@i +"]" );
  93. goto L_Abort;
  94. OnAutoAbort:
  95. sleep .register_lasting * 1000;
  96. delwaitingroom .rednpcname$;
  97. delwaitingroom .bluenpcname$;
  98. disablenpc .rednpcname$;
  99. disablenpc .bluenpcname$;
  100. if ( .inprogress == 1 ) {
  101. .inprogress = 0;
  102. announce "Se detuvo el BG por falta de miembros", 0;
  103. }
  104. end;
  105. }
  106.  
  107. izlude,88,138,5 script gm_start 100,{
  108. if ( getgmlevel() < 99 ) {
  109. mes "Espera al admin para jugar";
  110. close;
  111. }
  112. if ( getvariableofnpc( .inprogress, "bg_emp#control" ) ) {
  113. mes "abort ?";
  114. next;
  115. if ( select ( "Yes", "No" ) == 2 ) close;
  116. set getvariableofnpc( .inprogress, "bg_emp#control" ), 0;
  117. awake "bg_emp#control";
  118. killmonster "bat_a01", "bg_emp#control::OnRedDown";
  119. killmonster "bat_a01", "bg_emp#control::OnBlueDown";
  120. announce strcharinfo(0) +" has abort the battleground", 0;
  121. close;
  122. }
  123. mes "select how many players to start";
  124. next;
  125. if ( input( .@a, 1, 30 ) ) close;
  126. set getvariableofnpc( .minplayer2start, "bg_emp#control" ), .@a;
  127. announce strcharinfo(0) +" ha iniciado un "+ .@a +"vs"+ .@a +" Battleground", 0;
  128. enablenpc getvariableofnpc( .rednpcname$, "bg_emp#control" );
  129. enablenpc getvariableofnpc( .bluenpcname$, "bg_emp#control" );
  130. donpcevent getvariableofnpc( .rednpcname$, "bg_emp#control" ) +"::OnStart";
  131. donpcevent getvariableofnpc( .bluenpcname$, "bg_emp#control" ) +"::OnStart";
  132. set getvariableofnpc( .inprogress, "bg_emp#control" ), 1;
  133. donpcevent "bg_emp#control::OnAutoAbort";
  134. close;
  135. }
  136.  
  137. turbo_room,90,139,4 script Red side#bg_emp 100,{
  138. end;
  139. OnStart:
  140. waitingroom "Vulcan Side", getvariableofnpc( .minplayer2start, "bg_emp#control" ) +1, "bg_emp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_emp#control" );
  141. end;
  142. OnInit:
  143. set getvariableofnpc( .rednpcname$, "bg_emp#control" ), strnpcinfo(0);
  144. end;
  145. }
  146.  
  147. turbo_room,79,139,5 script Blue side#bg_emp 100,{
  148. end;
  149. OnStart:
  150. waitingroom "Glacial Side", getvariableofnpc( .minplayer2start, "bg_emp#control" ) +1, "bg_emp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_emp#control" );
  151. end;
  152. OnInit:
  153. set getvariableofnpc( .bluenpcname$, "bg_emp#control" ), strnpcinfo(0);
  154. end;
  155. }
  156.  
  157. bat_a01 mapflag battleground 2
  158. bat_a01 mapflag nosave SavePoint
  159. bat_a01 mapflag nowarp
  160. bat_a01 mapflag nowarpto
  161. bat_a01 mapflag noteleport
  162. bat_a01 mapflag nomemo
  163. bat_a01 mapflag nopenalty
  164. bat_a01 mapflag nobranch
  165. bat_a01 mapflag noicewall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement