yuhsing

Untitled

Sep 19th, 2013
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.83 KB | None | 0 0
  1.  
  2.  
  3.  
  4.  
  5. // 4 teams composed of 5 each ( adjustable )
  6. // Black, Yellow, Blue, Orange
  7. // every party = unique respawn in the same place
  8. // every round = 5 minutes
  9. // All dead players = warped out in a certain location
  10. // when the time meets its limit the highest number of players will receive the point
  11. // if there's only 1 player left before the time limit means they got the score
  12. // if everyone are dead means no one gets the point
  13. // first team to reach 3 points will win
  14. // is it possible?
  15.  
  16.  
  17.  
  18.  
  19. guild_vs1-4,50,50,4 script team_bg_pk 757,{
  20. .@bg_id = getcharid(4);
  21. if( .@bg_id ){
  22. if( .@bg_id == .winner ){
  23. // rewards for winner team
  24. getitem 512,1;
  25. getitem 512,2;
  26. getitem 512,3;
  27. }
  28. bg_leave;
  29. if( !bg_get_data( .@bg_id,0 ) )
  30. bg_destroy .@bg_id;
  31. }
  32. warp "SavePoint",0,0;
  33. end;
  34.  
  35. OnInit:
  36. // each team required how many player
  37. $@team_bg_count = 4;
  38. // point required to win
  39. .winner_point = 3;
  40. // Round duration
  41. .round_minute = 5;
  42.  
  43. // setting for each team. ( npc + temporary save point )
  44. setarray .teambg_npc$,"teambg_1","teambg_2","teambg_3","teambg_4";
  45. setarray .teambg_x,5,49,94,49;
  46. setarray .teambg_y,49,94,49,5;
  47.  
  48. // rules for this battlegrounds.
  49. setarray .rules$,
  50. "This is a 4 Team PK.",
  51. "Each Team have to eliminate others team.",
  52. "Team that grabbed the most kills each round win the points.",
  53. "Accumulate "+.winner_point+" points to win this.",
  54. "Player who get killed may not able to join the match until next round.",
  55. "Only the Team that have it's member survived till the Round end and achieved highest kill points will gain Winning Points.",
  56. "Good Luck and starting soon.";
  57.  
  58. .rules_size = getarraysize( .rules$ );
  59. .teambg_npc_size = getarraysize( .teambg_npc$ );
  60. $@team_bg_npc_name$ = strnpcinfo(0);
  61. .map$ = strnpcinfo(4);
  62. setmapflag .map$,mf_battleground;
  63. mapwarp .map$,"prontera",155,175;
  64. // wall to block some path
  65. setwall .map$,11,46,7,0,0,"TeamBG_Wall1";
  66. setwall .map$,26,46,7,0,0,"TeamBG_Wall2";
  67. setwall .map$,46,88,7,2,0,"TeamBG_Wall3";
  68. setwall .map$,46,73,7,2,0,"TeamBG_Wall4";
  69. setwall .map$,88,46,7,0,0,"TeamBG_Wall5";
  70. setwall .map$,73,46,7,0,0,"TeamBG_Wall6";
  71. setwall .map$,46,11,7,2,0,"TeamBG_Wall7";
  72. setwall .map$,46,26,7,2,0,"TeamBG_Wall8";
  73. donpcevent "::OnTeamBGEnable";
  74. end;
  75.  
  76. OnLeave:
  77. .@bg_id = getcharid(4);
  78. if( .@bg_id ){
  79. bg_leave;
  80. message strcharinfo(0),"You leaved the Group.";
  81. if( !bg_get_data( .@bg_id,0 ) )
  82. bg_destroy .@bg_id;
  83. }
  84. end;
  85.  
  86. // event register show every hours.
  87. OnMinute00:
  88. if( !.status ){
  89. for( .@i = 3; .@i > 0; .@i-- ){
  90. announce "Battleground starting soon . Please register your team. Make sure you leaved Battleground before Register.",0;
  91. sleep 60000;
  92. }
  93. donpcevent "::OnTeamBGEnable";
  94. }
  95. end;
  96.  
  97. OnTeamRegister:
  98. while( .@i < .teambg_npc_size ){
  99. .@count[.@i] = getwaitingroomstate( 0,.teambg_npc$[.@i] );
  100. if( .@count[.@i] < $@team_bg_count ) end;
  101. .@i++;
  102. }
  103. if( getarraysize( .@count ) != .teambg_npc_size ) end;
  104. .status = 1;
  105. hideonnpc $@team_bg_npc_name$;
  106. deletearray .teambg_point;
  107. deletearray .teambg_count;
  108. .winner = 0;
  109. .@i = 0;
  110. while( .@i < .teambg_npc_size ){
  111. setd( "."+.teambg_npc$[.@i] ),waitingroom2bg( .map$,.teambg_x[.@i],.teambg_y[.@i],$@team_bg_npc_name$+"::OnLeave",$@team_bg_npc_name$+"::OnDead",.teambg_npc$[.@i] );
  112. bg_warp getd( "."+.teambg_npc$[.@i] ),.map$,.teambg_x[.@i],.teambg_y[.@i];
  113. delwaitingroom .teambg_npc$[.@i];
  114. .@i++;
  115. }
  116.  
  117. for( .@i = 0; .@i < .rules_size; .@i++ ){
  118. mapannounce .map$,.rules$[.@i],0;
  119. sleep 3000;
  120. }
  121.  
  122. do{
  123. .@i = 0;
  124. while( .@i < .teambg_npc_size ){
  125. bg_warp getd( "."+.teambg_npc$[.@i] ),.map$,.teambg_x[.@i],.teambg_y[.@i];
  126. .@i++;
  127. }
  128. sleep 3000;
  129. mapannounce .map$,"Round start shortly. Get yourself ready within 15 seconds.",0;
  130. sleep 15000;
  131.  
  132. .@i = 0;
  133. while( .@i < .teambg_npc_size ){
  134. .@temp_bg_id = getd( "."+.teambg_npc$[.@i] );
  135. bg_warp .@temp_bg_id,.map$,rand( 30,69 ),rand( 30,69 );
  136. .teambg_count[.@i] = bg_get_data( .@temp_bg_id,0 );
  137. setd( "."+.teambg_npc$[.@i]+"_kill" ),0;
  138. .@i++;
  139. }
  140.  
  141. sleep ( .round_minute * 60000 );
  142.  
  143. .@i = 0;
  144. .@killpoint = 0;
  145.  
  146. while( .@i < .teambg_npc_size ){
  147. .@kill = getd( "."+.teambg_npc$[.@i]+"_kill" );
  148. if( .@kill > .@killpoint && .teambg_count[.@i] ){
  149. .@round_win = .@i;
  150. .@killpoint = .@kill;
  151. }
  152. .@i++;
  153. }
  154. .teambg_point[.@round_win]++;
  155. mapannounce .map$,"Team "+( .@round_win+1 )+" win this round with "+.@killpoint+" kills and "+.teambg_count[.@round_win]+" survived.",0;
  156.  
  157. .@i = 0;
  158. while( .@i < .teambg_npc_size ){
  159. if( .teambg_point[.@i] >= .winner_point ){
  160. .winner = getd( "."+.teambg_npc$[.@i] );
  161. mapannounce .map$,"Team "+( .@i + 1 )+" has win this Game.",0;
  162. break;
  163. }
  164. .@i++;
  165. }
  166.  
  167. }while( !.winner );
  168. sleep 4000;
  169. mapwarp .map$,.map$,50,50;
  170. hideoffnpc $@team_bg_npc_name$;
  171. sleep 180000; // delay 3 minute before re-open
  172. .status = 0;
  173. end;
  174.  
  175. OnDead:
  176. .@bg_id = getcharid(4);
  177. while( .@i < .teambg_npc_size ){
  178. if( .@bg_id == getd( "."+.teambg_npc$[.@i] ) )
  179. .teambg_count[.@i]--;
  180. if( .teambg_count[.@i] )
  181. .@survive_team++;
  182. .@i++;
  183. }
  184. sleep2 1000;
  185. percentheal 100,100;
  186. specialeffect2 EF_PROVIDENCE;
  187. if( .@survive_team == 1 )
  188. awake $@team_bg_npc_name$;
  189. end;
  190.  
  191. OnPCKillEvent:
  192. if( strcharinfo(3) == .map$ ){
  193. .@bg_id = getcharid(4);
  194. if( .@bg_id ){
  195. while( .@i < .teambg_npc_size ){
  196. if( .@bg_id == getd( "."+.teambg_npc$[.@i] ) ){
  197. setd( "."+.teambg_npc$[.@i]+"_kill" ),getd( "."+.teambg_npc$[.@i]+"_kill" ) + 1;
  198. break;
  199. }
  200. .@i++;
  201. }
  202. }
  203. }
  204. end;
  205. }
  206.  
  207.  
  208.  
  209.  
  210. prontera,148,175,5 script Team 1::teambg_1 100,{
  211. doevent $@team_bg_npc_name$+"::OnLeave";
  212. end;
  213.  
  214. OnTeamBGEnable:
  215. delwaitingroom;
  216. waitingroom "Team 1",( $@team_bg_count + 1 ),$@team_bg_npc_name$+"::OnTeamRegister",1;
  217. end;
  218. }
  219.  
  220. prontera,147,167,5 script Team 2::teambg_2 100,{
  221. doevent $@team_bg_npc_name$+"::OnLeave";
  222. end;
  223.  
  224. OnTeamBGEnable:
  225. delwaitingroom;
  226. waitingroom "Team 2",( $@team_bg_count + 1 ),$@team_bg_npc_name$+"::OnTeamRegister",1;
  227. end;
  228. }
  229.  
  230. prontera,163,175,5 script Team 3::teambg_3 100,{
  231. doevent $@team_bg_npc_name$+"::OnLeave";
  232. end;
  233.  
  234. OnTeamBGEnable:
  235. delwaitingroom;
  236. waitingroom "Team 3",( $@team_bg_count + 1 ),$@team_bg_npc_name$+"::OnTeamRegister",1;
  237. end;
  238. }
  239. prontera,163,167,5 script Team 4::teambg_4 100,{
  240. doevent $@team_bg_npc_name$+"::OnLeave";
  241. end;
  242.  
  243. OnTeamBGEnable:
  244. delwaitingroom;
  245. waitingroom "Team 4",( $@team_bg_count + 1 ),$@team_bg_npc_name$+"::OnTeamRegister",1;
  246. end;
  247. }
  248.  
  249.  
  250. - script teambg_healer -1,{
  251. percentheal 100,100;
  252. specialeffect2 EF_PROVIDENCE;
  253. end;
  254. }
  255.  
  256. guild_vs1-4,4,53,4 duplicate(teambg_healer) Healer#teambg01 757
  257. guild_vs1-4,53,95,4 duplicate(teambg_healer) Healer#teambg02 757
  258. guild_vs1-4,88,53,4 duplicate(teambg_healer) Healer#teambg03 757
  259. guild_vs1-4,53,11,4 duplicate(teambg_healer) Healer#teambg04 757
Advertisement
Add Comment
Please, Sign In to add comment