yuhsing

Untitled

Dec 2nd, 2012
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.93 KB | None | 0 0
  1. //=======================================================================================================//
  2. // To-Do //
  3. // ** Add reward (in-game) //
  4. // e.g : Add Reward , Check Reward , Remove Reward //
  5. // //
  6. // ** Add timer to start (in-game) //
  7. // e.g : Admin will set 5 minutes then the script will countdown until 5 minutes and enable Team NPC//
  8. //=======================================================================================================//
  9.  
  10. - script bg_emp#control -1,{
  11. OnInit:
  12. setarray .rewarditem, 7539, 100; // reward to the winning team
  13. set .winningscore, 3; // final score to win
  14. set .eventlasting, 20 * 60; // abort the system if there's no progress, 20 mins * seconds
  15. set .register_lasting, 15 * 60; // 10 minutes to joins, else abort registration, 10 mins * seconds
  16. sleep 1;
  17. disablenpc .rednpcname$;
  18. disablenpc .bluenpcname$;
  19. end;
  20. OnStart:
  21. if ( getwaitingroomstate( 0, .rednpcname$ ) < .minplayer2start || getwaitingroomstate( 0, .bluenpcname$ ) < .minplayer2start ) end;
  22. set .red, waitingroom2bg( "bat_a01", 171,346, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead", .rednpcname$ );
  23. copyarray .team1aid, $@arenamembers, $@arenamembersnum;
  24. set .blue, waitingroom2bg( "bat_a01", 162,50, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead", .bluenpcname$ );
  25. copyarray .team2aid, $@arenamembers, $@arenamembersnum;
  26. .inprogress = 2;
  27. awake strnpcinfo(0);
  28. bg_warp .red, "bat_a01", 171,346;
  29. bg_warp .blue, "bat_a01", 162,50;
  30. setwall "bat_a01", 154,51, 6, 4, 0, "bg_emp_town_blue";
  31. setwall "bat_a01", 164,347, 6, 4, 0, "bg_emp_town_red";
  32. bg_updatescore "bat_a01", 0, 0;
  33. sleep 6000; if ( .inprogress == 0 ) goto L_Abort;
  34. mapannounce "bat_a01", "Rules are simple. The first one to break the opponent's emperium will get a score.", 0;
  35. sleep 3000; if ( .inprogress == 0 ) goto L_Abort;
  36. mapannounce "bat_a01", "Score "+ .winningscore +" rounds to win ! ... GET READY", 0;
  37. sleep 2000; if ( .inprogress == 0 ) goto L_Abort;
  38. while (1) {
  39. for ( .@i = 5; .@i > 0; .@i-- ) {
  40. mapannounce "bat_a01", .@i +"", 0;
  41. sleep 1000; if ( .inprogress == 0 ) goto L_Abort;
  42. }
  43. if ( .score[1] == .winningscore -1 && .score[2] == .winningscore -1 )
  44. mapannounce "bat_a01", "Final Round start!", 0;
  45. else
  46. mapannounce "bat_a01", "Round "+ .round++ +" start!", 0;
  47. bg_monster .red,"bat_a01",171,346, "--ja--",1915, strnpcinfo(3)+"::OnRedDown";
  48. bg_monster .blue,"bat_a01",162,50, "--ja--",1914, strnpcinfo(3)+"::OnBlueDown";
  49. delwall "bg_emp_town_red";
  50. delwall "bg_emp_town_blue";
  51. sleep .eventlasting * 1000; if ( .inprogress == 0 ) goto L_Abort;
  52. .score[ .winside ]++;
  53. bg_updatescore "bat_a01", .score[1], .score[2];
  54. killmonster "bat_a01", strnpcinfo(3)+"::OnRedDown";
  55. killmonster "bat_a01", strnpcinfo(3)+"::OnBlueDown";
  56. if ( .winside )
  57. mapannounce "bat_a01", .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_a01", 171,346;
  61. bg_warp .blue, "bat_a01", 162,50;
  62. setwall "bat_a01", 154,51, 6, 4, 0, "bg_emp_town_blue";
  63. setwall "bat_a01", 164,347, 6, 4, 0, "bg_emp_town_red";
  64. .winside = 0;
  65. }
  66. if ( .winside ) {
  67. mapannounce "bat_a01", ( ( .winside == 1 )?"Red":"Blue" )+" side wins !", 0;
  68. .@size = getarraysize( getd(".team"+ .winside +"aid") );
  69. for ( .@i = 0; .@i < .@size; .@i++ )
  70. getitem .rewarditem[0], .rewarditem[1], getd(".team"+ .winside +"aid["+ .@i +"]" );
  71. } else
  72. mapannounce "bat_a01", "Time Out. Aborting the match.", 0;
  73. sleep 5000;
  74. L_Abort:
  75. bg_warp .red, "prontera", 155,182;
  76. bg_warp .blue, "prontera", 158,182;
  77. bg_destroy .red;
  78. bg_destroy .blue;
  79. delwall "bg_emp_town_red";
  80. delwall "bg_emp_town_blue";
  81. deletearray .team1aid;
  82. deletearray .team2aid;
  83. .round = .winside = .score[2] = .score[1] = .inprogress = 0;
  84. end;
  85. OnRedDown: callsub L_EmpDown, 2;
  86. OnBlueDown: callsub L_EmpDown, 1;
  87. L_EmpDown:
  88. .empkiller$ = strcharinfo(0);
  89. .winside = getarg(0);
  90. awake strnpcinfo(3);
  91. OnRedDead:
  92. OnBlueDead:
  93. end;
  94. OnRedQuit: callsub L_quit, .red, "Red", "Blue", 2;
  95. OnBlueQuit: callsub L_quit, .blue, "Blue", "Red", 1;
  96. L_quit:
  97. if ( bg_get_data( getarg(0), 0 ) ) end;
  98. mapannounce "bat_a01", "All "+ getarg(1) +" team members has Quit ! "+ getarg(2) +" side wins !", 0;
  99. .@size = getarraysize( getd(".team"+ getarg(3) +"aid") );
  100. for ( .@i = 0; .@i < .@size; .@i++ )
  101. getitem .rewarditem[0], .rewarditem[1], getd(".team"+ getarg(3) +"aid["+ .@i +"]" );
  102. goto L_Abort;
  103. OnAutoAbort:
  104. sleep .register_lasting * 1000;
  105. delwaitingroom .rednpcname$;
  106. delwaitingroom .bluenpcname$;
  107. disablenpc .rednpcname$;
  108. disablenpc .bluenpcname$;
  109. if ( .inprogress == 1 ) {
  110. .inprogress = 0;
  111. announce "Battleground has self-aborted because not enough members", 0;
  112. }
  113. end;
  114.  
  115. OnSetReward:
  116. if( getarraysize( .rewarditem ) > 1 ){
  117. for( .@i = 0; .@i < getarraysize( .rewarditem ); .@i += 2 )
  118. mes getitemname( .rewarditem[.@i] )+" x "+.rewarditem[.@i+1];
  119. }else{
  120. mes "No Reward is set..";
  121. }
  122. if( select("Set New Reward:Cancel") == 1 ){
  123. .@index = 0;
  124. do{
  125. mes "Input Item ID:";
  126. do{
  127. input .rewarditem[.@index],512,32767;
  128. }while( getitemname( .rewarditem[.@index] ) == "null" );
  129. mes "Input Amount:";
  130. input .rewarditem[.@index+1],1,30000;
  131. mes "Added "+getitemname( .rewarditem[.@index] );
  132. .@index += 2;
  133. next;
  134. }while( select("Continue:Cancel") == 1 );
  135. }
  136. close;
  137. }
  138.  
  139. quiz_01,48,189,5 script Lord Vennis 965,{
  140. if ( getgmlevel() < 99 ) {
  141. mes "Sorry, I only talk to NeutralRO Administrator.";
  142. close;
  143. }
  144. if ( getvariableofnpc( .inprogress, "bg_emp#control" ) ) {
  145. mes "abort ?";
  146. next;
  147. if ( select ( "Yes", "No" ) == 2 ) close;
  148. set getvariableofnpc( .inprogress, "bg_emp#control" ), 0;
  149. awake "bg_emp#control";
  150. killmonster "bat_a01", "bg_emp#control::OnRedDown";
  151. killmonster "bat_a01", "bg_emp#control::OnBlueDown";
  152. announce "[ADMIN] "+strcharinfo(0)+" has abort the Battleground", 0;
  153. close;
  154. }
  155. switch( select("Set Reward:Change Player Amount") ){
  156. Case 1:
  157. doevent "bg_emp#control::OnSetReward";
  158. break;
  159. Case 2:
  160. mes "Please select how many players to start";
  161. next;
  162. if ( input( .@a, 1, 30 ) ) close;
  163. set getvariableofnpc( .minplayer2start, "bg_emp#control" ), .@a;
  164. announce "[ADMIN] "+strcharinfo(0)+" has hosted "+ .@a +" vs "+ .@a +" Battleground!! Please come to Event Room now to join.", 0;
  165. enablenpc getvariableofnpc( .rednpcname$, "bg_emp#control" );
  166. enablenpc getvariableofnpc( .bluenpcname$, "bg_emp#control" );
  167. donpcevent getvariableofnpc( .rednpcname$, "bg_emp#control" ) +"::OnStart";
  168. donpcevent getvariableofnpc( .bluenpcname$, "bg_emp#control" ) +"::OnStart";
  169. set getvariableofnpc( .inprogress, "bg_emp#control" ), 1;
  170. donpcevent "bg_emp#control::OnAutoAbort";
  171. break;
  172. }
  173. close;
  174. }
  175.  
  176. quiz_01,49,184,4 script Red Team#bg_emp 414,{
  177. end;
  178. OnStart:
  179. waitingroom "Red Team", getvariableofnpc( .minplayer2start, "bg_emp#control" ) +1, "bg_emp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_emp#control" );
  180. end;
  181. OnInit:
  182. set getvariableofnpc( .rednpcname$, "bg_emp#control" ), strnpcinfo(0);
  183. end;
  184. }
  185.  
  186. quiz_01,56,184,4 script Blue Team#bg_emp 419,{
  187. end;
  188. OnStart:
  189. waitingroom "Blue Team", getvariableofnpc( .minplayer2start, "bg_emp#control" ) +1, "bg_emp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_emp#control" );
  190. end;
  191. OnInit:
  192. set getvariableofnpc( .bluenpcname$, "bg_emp#control" ), strnpcinfo(0);
  193. end;
  194. }
  195.  
  196. bat_a01 mapflag battleground 2
  197. bat_a01 mapflag nosave SavePoint
  198. bat_a01 mapflag nowarp
  199. bat_a01 mapflag nowarpto
  200. bat_a01 mapflag noteleport
  201. bat_a01 mapflag nomemo
  202. bat_a01 mapflag nopenalty
  203. bat_a01 mapflag nobranch
  204. bat_a01 mapflag noicewall
Advertisement
Add Comment
Please, Sign In to add comment