Advertisement
Capuche

party_3vs3

May 8th, 2013
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. //===== rAthena Script =======================================
  2. //= Party 3vs3
  3. //===== By: ==================================================
  4. //= Capuche
  5. //===== Current Version: =====================================
  6. //= 1.0
  7. //===== Compatible With: =====================================
  8. //= rAthena SVN
  9. //===== Description: =========================================
  10. //= Base on this request :
  11. //= http://rathena.org/board/topic/81997-my-ideal-pvp-mode/
  12. //----------------------------------------------------
  13. //= A game 3vs3. Players of a team must kill all players of
  14. //= other team. Killed player revive after some secondes
  15. //= defined by the setting.
  16. //= Reward at the end for all team member winner.
  17. //============================================================
  18.  
  19. prontera,150,145,5 script register 56,{
  20. function isreq;
  21.  
  22. callsub L_check;
  23. if( select( "Register ?", "Informations" ) == 2 ) {
  24. mes "info blablabla fill it as your content";
  25. close;
  26. }
  27.  
  28. if( !getcharid(1) ) {
  29. mes "you're not in a party";
  30. close;
  31. }
  32. else if( .party1 == getcharid(1) || .party2 == getcharid(1) ) {
  33. mes "you're already on my list";
  34. close;
  35. }
  36. getpartymember getcharid(1);
  37. if( $@partymembercount != .count_req || !instance_check_party( getcharid(1),.count_req ) ) {
  38. mes "you need "+ .count_req +" players online in your party";
  39. close;
  40. }
  41. callsub L_check;
  42. if( !.party2 )
  43. .party2 = getcharid(1);
  44. else
  45. .party1 = getcharid(1);
  46. dispbottom "your party is now on my list";
  47. if( !.party1 || !.party2 ) end;
  48.  
  49. .start = 1;
  50. warpparty .map_event$, 0,0, .party1;
  51. warpparty .map_event$, 0,0, .party2;
  52. initnpctimer;
  53. end;
  54.  
  55. OnPCKillEvent:
  56. .@self = getcharid(3);
  57. .@killed = killedrid;
  58. .@is_reg = isreq();
  59. attachrid( .@killed );
  60. if( !isreq() ) end;
  61. getpartymember getcharid(1),1;
  62. getpartymember getcharid(1),2;
  63. for( .@i = 0; .@i < $@partymembercount; .@i++ ) {
  64. if( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
  65. attachrid( $@partymemberaid[.@i] );
  66. sleep2 1;
  67. if( strcharinfo(3) == .map_event$ ) {
  68. .@is_online += 1;
  69. if( Hp < 1 )
  70. .@count += 1;
  71. }
  72. }
  73. }
  74. if( .@is_online != .@count ) {
  75. attachrid( .@killed );
  76. sleep2( .wait * 1000 );
  77. atcommand "@alive";
  78. end;
  79. }
  80. else if( !.@is_reg ) end;
  81.  
  82. attachrid( .@self );
  83. sleep2 2;
  84. announce "team "+ getpartyname( getcharid(1) ) +" win the event !", 0;
  85. getpartymember getcharid(1);
  86. getpartymember getcharid(1),1;
  87. getpartymember getcharid(1),2;
  88. for( .@i = 0; .@i < $@partymembercount; .@i++ )
  89. if( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
  90. getmapxy .@map$, .@x, .@y, 0, $@partymembername$[.@i];
  91. if( .@map$ == .map_event$ ) {
  92. for( .@j = 0; .@j < .size_reward; .@j++ )
  93. getitem .item_id[.@j], .item_count[.@j], $@partymemberaid[.@i];
  94. }
  95. }
  96. stopnpctimer;
  97. sleep 3000;
  98.  
  99. OnTimer300000: // 5 min then end of event
  100. .start = .party1 = .party2 = 0;
  101. mapwarp .map_event$,"prontera",0,0;
  102. end;
  103.  
  104. L_check:
  105. if( .start ) end;
  106. else if( getpartyname( .party1 ) == "null" )
  107. .party1 = 0;
  108. else if( getpartyname( .party2 ) == "null" )
  109. .party2 = 0;
  110. else if( getpartyname( .party1 ) != "null" ) {
  111. getpartymember .party1;
  112. if( $@partymembercount != .count_req || !instance_check_party( .party1,.count_req ) )
  113. .party1 = 0;
  114. }
  115. else if( getpartyname( .party2 ) != "null" ) {
  116. getpartymember .party2;
  117. if( $@partymembercount != .count_req || !instance_check_party( .party2,.count_req ) )
  118. .party2 = 0;
  119. }
  120. return;
  121.  
  122. function isreq {
  123. if( strcharinfo(3) == .map_event$ && .start && ( getcharid(1) == .party1 || getcharid(1) == .party2 ) ) return 1;
  124. return 0;
  125. }
  126. OnInit:
  127. .map_event$ = "geffen"; // your event map
  128. .count_req = 1; // count required in the party to start the event
  129. .wait = 20; // time in secs to be rezu
  130. setarray .item_id, 501; // item id array gained
  131. setarray .item_count, 1; // item count array gained - must be same size of .item_id array
  132.  
  133. // Don't touch this part
  134. // ---------------------
  135. .size_reward = getarraysize( .item_id );
  136. setmapflag .map_event$,mf_noteleport;
  137. setmapflag .map_event$,mf_nowarp;
  138. setmapflag .map_event$,mf_nowarpto;
  139. setmapflag .map_event$,mf_nomemo;
  140. setmapflagnosave .map_event$,"prontera",0,0;
  141. setmapflag .map_event$,mf_partylock;
  142. setmapflag .map_event$,mf_pvp;
  143. end;
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement