Advertisement
Guest User

4v4

a guest
Jun 8th, 2012
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.17 KB | None | 0 0
  1. // ------------------------------------------------------------------------------------------
  2. // ------ rAthena Script Release
  3. // Title: Simple 4 vs 4 PVP Gateway
  4. // Author: jTynne - justin@justintynne.com
  5. // Version: 0.1 (Beta)
  6. // Notes:
  7. // v0.1: This is the UNOPTIMIZED release of a simple 4vs4vs4vs4 PVP gateway.
  8. // There are likely bugs in this version. Please report them as you find them!
  9. // Please note that this script uses a TON of global variables. Keep that in mind
  10. // when using this script in the current version.
  11. // ------------------------------------------------------------------------------------------
  12. prontera,161,190,4 script PVP 4vs4 91,{
  13. set .@n$,"[^FF0000PVP Manager^000000]";
  14. set .@charid,getcharid(0);
  15. mes .@n$;
  16. mes "Would you like to register for a 4vs4 PVP Battle?";
  17. next;
  18. menu "Yes",-,"No",L_cancel;
  19. if(getmapusers("guild_vs1") > 0) { mes .@n$; mes "There appears to be a match currently in session. Check back momentarily."; close; end; }
  20. mes .@n$;
  21. mes "Which side of the arena would you like to join?";
  22. next;
  23. menu "North ("+$pvp4nA+"/4)",L_north,"South ("+$pvp4nB+"/4)",L_south,"East ("+$pvp4nC+"/4)",L_east,"West ("+$pvp4nD+"/4)",L_west,"Cancel",L_cancel;
  24. L_north:
  25. if(.@charid == $pvp4nAchar1 || .@charid == $pvp4nAchar2 || .@charid == $pvp4nAchar3 || .@charid == $pvp4nAchar4 || .@charid == $pvp4nBchar1 || .@charid == $pvp4nBchar2 || .@charid == $pvp4nBchar3 || .@charid == $pvp4nBchar4 || .@charid == $pvp4nCchar1 || .@charid == $pvp4nCchar2 || .@charid == $pvp4nCchar3 || .@charid == $pvp4nCchar4 || .@charid == $pvp4nDchar1 || .@charid == $pvp4nDchar2 || .@charid == $pvp4nDchar3 || .@charid == $pvp4nDchar4) { mes .@n$; mes "You may only register once per round."; close; end; }
  26. if($pvp4nA < 4) {
  27. set $pvp4nA,$pvp4nA+1;
  28. if($pvp4nA == 1) { set $pvp4nAchar1,getcharid(0); }
  29. if($pvp4nA == 2) { set $pvp4nAchar2,getcharid(0); }
  30. if($pvp4nA == 3) { set $pvp4nAchar3,getcharid(0); }
  31. if($pvp4nA == 4) { set $pvp4nAchar4,getcharid(0); }
  32. if($pvp4nA == 1 || $pvp4nB == 1 || $pvp4nC == 1 || $pvp4nD == 1) { if($pvp4timer == 0 ) { initnpctimer; set $pvp4timer,1; } }
  33. mes .@n$;
  34. mes "You've joined the selected team. Once the other four teams have filled up, you'll automatically be transferred into the PVP arena. If all four teams do not fill up within the next 30 seconds, this session will be cleared.";
  35. npctalk strcharinfo(0)+" has entered the round on the North side.";
  36. if($pvp4nA == 4 && $pvp4nB == 4 && $pvp4nC == 4 && $pvp4nD == 4) { stopnpctimer; goto L_begin;}
  37. close;
  38. end;
  39. }
  40. goto L_full;
  41. L_south:
  42. if(.@charid == $pvp4nAchar1 || .@charid == $pvp4nAchar2 || .@charid == $pvp4nAchar3 || .@charid == $pvp4nAchar4 || .@charid == $pvp4nBchar1 || .@charid == $pvp4nBchar2 || .@charid == $pvp4nBchar3 || .@charid == $pvp4nBchar4 || .@charid == $pvp4nCchar1 || .@charid == $pvp4nCchar2 || .@charid == $pvp4nCchar3 || .@charid == $pvp4nCchar4 || .@charid == $pvp4nDchar1 || .@charid == $pvp4nDchar2 || .@charid == $pvp4nDchar3 || .@charid == $pvp4nDchar4) { mes .@n$; mes "You may only register once per round."; close; end; }
  43. if($pvp4nB < 4) {
  44. set $pvp4nB,$pvp4nB+1;
  45. if($pvp4nB == 1) { set $pvp4nBchar1,getcharid(0); }
  46. if($pvp4nB == 2) { set $pvp4nBchar2,getcharid(0); }
  47. if($pvp4nB == 3) { set $pvp4nBchar3,getcharid(0); }
  48. if($pvp4nB == 4) { set $pvp4nBchar4,getcharid(0); }
  49. if($pvp4nA == 1 || $pvp4nB == 1 || $pvp4nC == 1 || $pvp4nD == 1) { if($pvp4timer == 0 ) { initnpctimer; } else {set $pvp4timer,1; } }
  50. mes .@n$;
  51. mes "You've joined the selected team. Once the other four teams have filled up, you'll automatically be transferred into the PVP arena. If all four teams do not fill up within the next 30 seconds, this session will be cleared.";
  52. npctalk strcharinfo(0)+" has entered the round on the South side.";
  53. if($pvp4nA == 4 && $pvp4nB == 4 && $pvp4nC == 4 && $pvp4nD == 4) { stopnpctimer; goto L_begin;}
  54. close;
  55. end;
  56. }
  57. goto L_full;
  58. L_east:
  59. if(.@charid == $pvp4nAchar1 || .@charid == $pvp4nAchar2 || .@charid == $pvp4nAchar3 || .@charid == $pvp4nAchar4 || .@charid == $pvp4nBchar1 || .@charid == $pvp4nBchar2 || .@charid == $pvp4nBchar3 || .@charid == $pvp4nBchar4 || .@charid == $pvp4nCchar1 || .@charid == $pvp4nCchar2 || .@charid == $pvp4nCchar3 || .@charid == $pvp4nCchar4 || .@charid == $pvp4nDchar1 || .@charid == $pvp4nDchar2 || .@charid == $pvp4nDchar3 || .@charid == $pvp4nDchar4) { mes .@n$; mes "You may only register once per round."; close; end; }
  60. if($pvp4nC < 4) {
  61. set $pvp4nC,$pvp4nC+1;
  62. if($pvp4nC == 1) { set $pvp4nCchar1,getcharid(0); }
  63. if($pvp4nC == 2) { set $pvp4nCchar2,getcharid(0); }
  64. if($pvp4nC == 3) { set $pvp4nCchar3,getcharid(0); }
  65. if($pvp4nC == 4) { set $pvp4nCchar4,getcharid(0); }
  66. if($pvp4nA == 1 || $pvp4nB == 1 || $pvp4nC == 1 || $pvp4nD == 1) { if($pvp4timer == 0 ) { initnpctimer; } else {set $pvp4timer,1; } }
  67. mes .@n$;
  68. mes "You've joined the selected team. Once the other four teams have filled up, you'll automatically be transferred into the PVP arena. If all four teams do not fill up within the next 30 seconds, this session will be cleared.";
  69. npctalk strcharinfo(0)+" has entered the round on the East side.";
  70. if($pvp4nA == 4 && $pvp4nB == 4 && $pvp4nC == 4 && $pvp4nD == 4) { stopnpctimer; goto L_begin;}
  71. close;
  72. end;
  73. }
  74. goto L_full;
  75. L_west:
  76. if(.@charid == $pvp4nAchar1 || .@charid == $pvp4nAchar2 || .@charid == $pvp4nAchar3 || .@charid == $pvp4nAchar4 || .@charid == $pvp4nBchar1 || .@charid == $pvp4nBchar2 || .@charid == $pvp4nBchar3 || .@charid == $pvp4nBchar4 || .@charid == $pvp4nCchar1 || .@charid == $pvp4nCchar2 || .@charid == $pvp4nCchar3 || .@charid == $pvp4nCchar4 || .@charid == $pvp4nDchar1 || .@charid == $pvp4nDchar2 || .@charid == $pvp4nDchar3 || .@charid == $pvp4nDchar4) { mes .@n$; mes "You may only register once per round."; close; end; }
  77. if($pvp4nD < 4) {
  78. set $pvp4nD,$pvp4nD+1;
  79. if($pvp4nD == 1) { set $pvp4nDchar1,getcharid(0); }
  80. if($pvp4nD == 2) { set $pvp4nDchar2,getcharid(0); }
  81. if($pvp4nD == 3) { set $pvp4nDchar3,getcharid(0); }
  82. if($pvp4nD == 4) { set $pvp4nDchar4,getcharid(0); }
  83. if($pvp4nA == 1 || $pvp4nB == 1 || $pvp4nC == 1 || $pvp4nD == 1) { if($pvp4timer == 0 ) { initnpctimer; } else {set $pvp4timer,1; } }
  84. mes .@n$;
  85. mes "You've joined the selected team. Once the other four teams have filled up, you'll automatically be transferred into the PVP arena. If all four teams do not fill up within the next 30 seconds, this session will be cleared.";
  86. npctalk strcharinfo(0)+" has entered the round on the West side.";
  87. if($pvp4nA == 4 && $pvp4nB == 4 && $pvp4nC == 4 && $pvp4nD == 4) { stopnpctimer; goto L_begin;}
  88. close;
  89. end;
  90. }
  91. goto L_full;
  92. L_full:
  93. mes .@n$;
  94. mes "Sorry, but this team is full. Try another team, please.";
  95. close;
  96. end;
  97. L_begin:
  98. npctalk "All four teams have been filled. All participants currently logged in will be transferred to the arena in ten seconds.";
  99. sleep2 10000;
  100. set .@x,0;
  101. L_warploop:
  102. while (.@x < 16) {
  103. if (.@x == 0)
  104. { warpchar "guild_vs1",49,92,$pvp4nAchar1; }
  105. else if (.@x == 1)
  106. { warpchar "guild_vs1",49,92,$pvp4nAchar2; }
  107. else if (.@x == 2)
  108. { warpchar "guild_vs1",49,92,$pvp4nAchar3; }
  109. else if (.@x == 3)
  110. { warpchar "guild_vs1",49,92,$pvp4nAchar4; }
  111. else if (.@x == 4)
  112. { warpchar "guild_vs1",49,8,$pvp4nBchar1; }
  113. else if (.@x == 5)
  114. { warpchar "guild_vs1",49,8,$pvp4nBchar2; }
  115. else if (.@x == 6)
  116. { warpchar "guild_vs1",49,8,$pvp4nBchar3; }
  117. else if (.@x == 7)
  118. { warpchar "guild_vs1",49,8,$pvp4nBchar4; }
  119. else if (.@x == 8)
  120. { warpchar "guild_vs1",92,50,$pvp4nCchar1; }
  121. else if (.@x == 9)
  122. { warpchar "guild_vs1",92,50,$pvp4nCchar2; }
  123. else if (.@x == 10)
  124. { warpchar "guild_vs1",92,50,$pvp4nCchar3; }
  125. else if (.@x == 11)
  126. { warpchar "guild_vs1",92,50,$pvp4nCchar4; }
  127. else if (.@x == 12)
  128. { warpchar "guild_vs1",7,50,$pvp4nDchar1; }
  129. else if (.@x == 13)
  130. { warpchar "guild_vs1",7,50,$pvp4nDchar2; }
  131. else if (.@x == 14)
  132. { warpchar "guild_vs1",7,50,$pvp4nDchar3; }
  133. else if (.@x == 15)
  134. { warpchar "guild_vs1",7,50,$pvp4nDchar4; }
  135. else
  136. { npctalk "A round is now in session."; goto L_clear;}
  137. set .@x, .@x + 1;
  138. }
  139. goto L_warploop;
  140. end;
  141. L_cancel:
  142. mes .@n$;
  143. mes "Do come back if you change your mind.";
  144. close;
  145. end;
  146. OnTimer10000:
  147. npctalk "Ten seconds have passed. Entry to the round ends in 20 seconds.";
  148. end;
  149. OnTimer20000:
  150. npctalk "Twenty seconds have passed. Entry to the round ends in 10 seconds.";
  151. end;
  152. OnTimer30000:
  153. npctalk "Thirty seconds have passed and thus I have canceled the round.";
  154. stopnpctimer;
  155. goto L_clear;
  156. L_clear:
  157. set $pvp4timer,0;
  158. set $pvp4nA,0;
  159. set $pvp4nB,0;
  160. set $pvp4nC,0;
  161. set $pvp4nD,0;
  162. set $pvp4nAchar1,0;
  163. set $pvp4nAchar2,0;
  164. set $pvp4nAchar3,0;
  165. set $pvp4nAchar4,0;
  166. set $pvp4nBchar1,0;
  167. set $pvp4nBchar2,0;
  168. set $pvp4nBchar3,0;
  169. set $pvp4nBchar4,0;
  170. set $pvp4nCchar1,0;
  171. set $pvp4nCchar2,0;
  172. set $pvp4nCchar3,0;
  173. set $pvp4nCchar4,0;
  174. set $pvp4nDchar1,0;
  175. set $pvp4nDchar2,0;
  176. set $pvp4nDchar3,0;
  177. set $pvp4nDchar4,0;
  178. end;
  179. }
  180. - script pvp4vs4#1 -1,{
  181. OnPCDieEvent:
  182. getmapxy (.@map$, .@x, .@y, 0);
  183. if(.@map$ == "guild_vs1") { warp "SavePoint",0,0;}
  184. end;
  185. OnPCKillEvent:
  186. getmapxy (.@map$, .@x, .@y, 0);
  187. if( .@map$ == "guild_vs1") {
  188. set .@tempn1$,strcharinfo(0);
  189. set .@tempn2$,rid2name(killedrid);
  190. mapannounce "guild_vs1",""+.@tempn1$+" has killed "+.@tempn2$+".",1,0xD6A4E6;}
  191. end;
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement