Advertisement
Guest User

Untitled

a guest
Jun 4th, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.42 KB | None | 0 0
  1. //===== EinherjarRo Scripts ==================================
  2. //= PvP Ladder
  3. //===== Author ===============================================
  4. //= Stolao
  5. //===== Current Version: =====================================
  6. //= 3.21
  7. //===== Compatible With: =====================================
  8. //= rAthena SVN
  9. //===== Description: =========================================
  10. // Configurable Pvp Ladder
  11. //===== Comments: ============================================
  12. //= [Stolao]
  13. //===== Additional Comments: =================================
  14. //= 3.00 Overhaul
  15. //= 3.01 Fixed missing "No" for "No Ygg"
  16. //= 3.02 Added Show Map Name Option
  17. //= 3.03 Added Max Players Option
  18. //= 3.04 Optimized and fixed SQL queries [Secret]
  19. //= 3.05 Replaced some queries with addrid(0)
  20. //= 3.06 Updated Rewards to RODEX compatable
  21. //= 3.07 Fixed all rom referancing room [0] player limit
  22. //= 3.08 Made Made .MaxPlayers = 0, mean unlimited
  23. //= 3.09 Removed use of getd
  24. //= 3.0A Cleaned up some code
  25. //= 3.0B Moved Menu Generation to fix Map Count not showing
  26. //= 3.0C Actually Added RoDex Support now
  27. //= 3.0D Fixed Map Menu Generation
  28. //= 3.0E Fixed sql query
  29. //= 3.0F Cleaned Code a bit
  30. //= 3.10 Did more Cleaned Code a bit
  31. //= 3.11 Fixed a logic bug in GM reset
  32. //= 3.12 Added Waiting Room
  33. //= 3.13 Added Dynamic Waiting Room
  34. //= 3.14 Moved and added more At_Commands
  35. //= 3.15 Dynamic Waiting Room (&4096) require Waiting Room (&2048) to work
  36. //= 3.16 Increased Waiting Room Rotation Time
  37. //= 3.17 Fixed Typos in Reset PVP Stats
  38. //= 3.18 Removed unnessisary next, creating hang screens
  39. //= 3.19 Made compatable with new mail command
  40. //= 3.1A Reformatted Rewards in conf to support 5 items
  41. //= 3.1B Fixeda Hang when entering Nightmare PVP (thanks klesler)
  42. //= 3.1C Cied incorrrect use of close
  43. //= 3.1D Fixed Missing Party Check (thanks Haikenz)
  44. //= 3.1E Fixed Not opening PVP ladder, only GVG ladder (thanks Haikenz)
  45. //= 3.1F Fixed a warning when generating waitingroom
  46. //= 3.20 Fixed Missing Guild Check (thanks Haikenz)
  47. //= 3.21 Changed Default maps to pvp maps
  48. //===== Todo: ================================================
  49. //= Condence repeat queries
  50. //===== Contact Ifo: =========================================
  51. //= [Stolao]
  52. //============================================================
  53. prontera,163,188,9 script PvP SwitchRO 801,{
  54. //==================================
  55. OnPvpLadder: //-- Menus
  56. //==================================
  57.  
  58. .@Menu = select(((getarraysize(.MapName$))?"Arenas PvP:":":")+
  59. ((.Options&1)?"PvP Líder:":":")+
  60. ((.Options&2)?"GvG Líder:":":")+
  61. ((.Options&8)?"Top Guild:":":")+
  62. ((.Options&16)?"Loja PvP:":":")+
  63. ((.Options&1 || .Options&2 || .Options&8 || .Options&16)?"Meu Ranking:":":")+
  64. ((getgmlevel() >= 99)?"Resetar PVP Status":""));
  65. switch(.@Menu){
  66. case 2:
  67. case 3:
  68. if(.@Menu == 2){
  69. if(.Options&384)
  70. .@key$ = "m_kda";
  71. else if(.Options&256)
  72. .@key$ = "kda";
  73. else if(.Options&128)
  74. .@key$ = "m_pkcount";
  75. else .@key$ = "pl_pkcount";
  76. } else {
  77. if(.Options&384)
  78. .@key$ = "gvg_kda";
  79. else if(.Options&256)
  80. .@key$ = "m_gvg_kda";
  81. else if(.Options&128)
  82. .@key$ = "m_gvg_kcount";
  83. else .@key$ = "gvg_kcount";
  84. }
  85. query_sql("SELECT `char_reg_num`.`value`,`char`.`name`,`char`.`char_id` FROM `char` INNER JOIN `char_reg_num` ON `char_reg_num`.`char_id`=`char`.`char_id` WHERE `char_reg_num`.`key`='" + .@key$ + "' ORDER BY `char_reg_num`.`value` DESC LIMIT 10",.@value,.@name$,.@cid);
  86. if(!(.Options&256)){
  87. for(.@i = 0; .@i < getarraysize(.@cid); .@i++) {
  88. if(.@i == 2){
  89. if(.Options&128)
  90. .@key$ = "m_dthcount";
  91. else .@key$ = "pl_dthcount";
  92. } else if(.Options&128)
  93. .@key$ = "m_gvg_dcount";
  94. else .@key$ = "gvg_dcount";
  95. query_sql("SELECT CAST(`value` AS SIGNED) FROM `char_reg_num` WHERE char_id = "+.@cid[.@i]+" AND `key` = '';",.@j);
  96. .@Death[.@i] = .@j;
  97. }
  98. }
  99. mes "~ ^990000"+((.Options&128)?"Mensal ":"") + ((.@Menu == 2)?"PvP":"GvG") +" Líder^000000 ~";
  100. if (!getarraysize(.@cid)){
  101. mes "O ranking foi resetado.";
  102. } else {
  103. for(.@i = 0; .@i<getarraysize(.@cid); .@i++){
  104. if((.@i+1) % 10 != 0){
  105. if(.Options&256)
  106. mes "#"+(.@i+1)+" ^0000FF"+.@name$[.@i]+"^000000 "+.@value[.@i];
  107. else mes "#"+(.@i+1)+" ^0000FF"+.@name$[.@i]+"^000000 [^00EE00"+callfunc("F_InsertPlural",.@value[.@i],"~ kill")+"] [^EE0000"+callfunc("F_InsertPlural",.@Death[.@i],"~ death")+"]";
  108. } else next;
  109. }
  110. }
  111. close;
  112. case 4:
  113. if(.Options&256)
  114. .@key$ = "Guild_Kda";
  115. else .@key$ = "Guild_Kills";
  116. if(.Options&128)
  117. .@key$ = "$M_" + .@key$;
  118. else .@key$ = "$" + .@key$;
  119. query_sql("SELECT `index`, CAST(`value` AS SIGNED) FROM `global_acc_reg_num` WHERE `key` = '" + .@key$ + "' ORDER BY CAST(`value` AS SIGNED) DESC LIMIT 10",.@gid,.@value);
  120. if (!getarraysize(.@gid)){
  121. mes "O ranking foi resetado.";
  122. } else {
  123. for(.@i = 0; .@i < getarraysize(.@gid); .@i++){
  124. //query_sql("SELECT `value` FROM `global_acc_reg_num` WHERE `index` = "+.@gid[.@i]+";",.@j$); // ??? [Secret]
  125. mes "#"+(.@i+1)+" ^0000EE["+getguildname(.@gid[.@i])+"]^000000 with [^00EE00"+callfunc("F_InsertPlural",$Guild_Kills[.@gid[.@i]],"~ kill")+"] and [^EE0000"+callfunc("F_InsertPlural",$Guild_Deaths[.@gid[.@i]],"~ death")+"]";
  126. }
  127. }
  128. close;
  129. case 5:
  130. callshop "PvP_Cash_Shop",1;
  131. end;
  132. case 6:
  133. if(.Options&1){
  134. mes "[PvP]";
  135. mes "Total:","^00EE00"+ callfunc("F_InsertPlural",pl_pkcount,"kill") +"^000000 - ^EE0000"+ callfunc("F_InsertPlural",pl_dthcount,"death") + ((.Options&256)?" - ^0000EE"+ kda +" Total":"") +"^000000";
  136. if(.Options&128) mes "Mensal:","^00EE00"+ callfunc("F_InsertPlural",m_pkcount,"kill") +"^000000 - ^EE0000"+ callfunc("F_InsertPlural",m_dthcount,"death") + ((.Options&256)?" - ^0000EE"+ m_kda +" Total":"") +"^000000";
  137. }
  138. if(.Options&16) mes "Você possui "+ #PvpPoints +" Pontos para utilizar.";
  139. if(.Options&2){
  140. if(.Options&1) next;
  141. mes "[GvG]";
  142. mes "Total:","^00EE00"+ callfunc("F_InsertPlural",gvg_kcount,"kill") +"^000000 - ^EE0000"+ callfunc("F_InsertPlural",gvg_dcount,"death")+((.Options&256)?" - ^0000EE"+ gvg_kda +" Total":"")+"^000000";
  143. if(.Options&128) mes "Mensal:","^00EE00"+ callfunc("F_InsertPlural",m_gvg_kcount,"kill") +"^000000 - ^EE0000"+ callfunc("F_InsertPlural",m_gvg_dcount,"death") + ((.Options&256)?" - ^0000EE"+ m_gvg_kda +" Total":"") +"^000000";
  144. }
  145. if(.Options&8 && getcharid(2)){
  146. if(.Options&2 || .Options&3) next;
  147. mes "[Guild Stats]";
  148. mes "Total:","^00EE00"+ callfunc("F_InsertPlural",$Guild_Kills[getcharid(2)],"kill") +"^000000 - ^EE0000"+ callfunc("F_InsertPlural",$Guild_Deaths[getcharid(2)],"death") + ((.Options&256)?" - ^0000EE"+ $Guild_Kda[getcharid(2)] +" Total":"")+ "^000000";
  149. if(.Options&128) mes "MensalMensal:","^00EE00"+ callfunc("F_InsertPlural",$M_Guild_Kills[getcharid(2)],"kill") +"^000000 - ^EE0000"+ callfunc("F_InsertPlural",$M_Guild_Deaths[getcharid(2)],"death") + ((.Options&256)?" - ^0000EE"+ $M_Guild_Kda[getcharid(2)] +" Total":"") +"^000000";
  150. }
  151. close;
  152.  
  153. case 7:
  154. .@i = select("Monthly:Lifetime") - 1;
  155. .@L$[0] = (.Options&1)?"Pvp Ladder":"";
  156. .@L$[1] = (.Options&2)?"GvG Ladder":"";
  157. .@L$[2] = (.Options&8)?"Top Guild":"";
  158. .@j = select(implode(.@L$,":")) - 1;
  159. mes "Tem certeza de que deseja resetar esse ranking "+((.@i)?"Lifetime":"Monthly")+" "+.@L$[.@j]+"?";
  160. if(select("Não:Sim")!=2)
  161. close;
  162. close2;
  163. switch(.@i * 3 + .@j){
  164. case 0:
  165. query_sql("DELETE FROM `char_reg_num` WHERE `key` = 'm_pkcount' OR `key` = 'm_kda' OR `key` = 'pl_dthcount'");
  166. addrid(0);
  167. m_pkcount = m_kda = m_dthcount = 0;
  168. break;
  169. case 1:
  170. query_sql("DELETE FROM `char_reg_num` WHERE `key` = 'pl_pkcount' OR `key` = 'kda' OR `key` = 'pl_dthcount'");
  171. addrid(0);
  172. pl_pkcount = kda = pl_dthcount = 0;
  173. break;
  174. case 2:
  175. query_sql("DELETE FROM `char_reg_num` WHERE `key` = 'm_gvg_kcount' OR `key` = 'm_gvg_kda' OR `key` = 'm_gvg_dcount'");
  176. addrid(0);
  177. m_gvg_kcount = m_gvg_kda = m_gvg_dcount = 0;
  178. break;
  179. case 3:
  180. query_sql("DELETE FROM `char_reg_num` WHERE `key` = 'gvg_kcount' OR `key` = 'gvg_kda' OR `key` = 'gvg_dcount'");
  181. addrid(0);
  182. gvg_kcount = gvg_kda = gvg_dcount = 0;
  183. break;
  184. case 4:
  185. cleararray $M_Guild_Kills[0],0,getarraysize($M_Guild_Kills);
  186. cleararray $M_Guild_Kda[0],0,getarraysize($M_Guild_Kda);
  187. cleararray $M_Guild_Deaths[0],0,getarraysize($M_Guild_Deaths);
  188. break;
  189. case 5:
  190. cleararray $Guild_Kills[0],0,getarraysize($Guild_Kills);
  191. cleararray $Guild_Kda[0],0,getarraysize($Guild_Kda);
  192. cleararray $Guild_Deaths[0],0,getarraysize($Guild_Deaths);
  193. break;
  194. }
  195. end;
  196.  
  197. case 1: //===== Dont Touch - Menu Generation ======================
  198. for(.@i = 0; .@i < getarraysize(.MapName$); .@i++){
  199. .@MapList$[.@i] = "["+ ((.MapMode[.@i]&2)?"^EE3333Nightmare ":"") +
  200. ((.MapMode[.@i]&4)?"Party ":"") +
  201. ((.MapMode[.@i]&1)?"GvG":"PvP") +"^000000] "+
  202. ((.MapMode[.@i] >= 8)?"":"") +
  203. ((.MapMode[.@i]&8)?"Sem Poção ":"") +
  204. ((.MapMode[.@i]&16)?"3rds ":"") +
  205. ((.MapMode[.@i]&32)?"Trans ":"") +
  206. ((.MapMode[.@i]&64)?"Arena 1v1":"") +
  207. ((.MaxPlayers[.@i])?"["+getmapusers(.MapName$[.@i])+"/"+.MaxPlayers[.@i]+"]":"");
  208. }
  209. //==========================================================
  210. .@m = select(implode(.@MapList$,":")) - 1;
  211. if(.MapMode[.@m]&2){
  212. mes "Você está prestes a entrar no NIGHTMARE PvP, ao morrer, perderá algum equipamento aleatoriamente.";
  213. if(select("Melhor não haha.:Vamos, não tenho medo.") == 1)
  214. close;
  215. } else if(.MapMode[.@m]&8 && (countitem(547) || countitem(505))){
  216. mes "O item "+getitemname(547)+" ou "+getitemname(505)+" não é permitido nessa arena.";
  217. close;
  218. } else if(.MapMode[.@m]&16){
  219. mes "No 3rd Classes Allowed.";
  220. close;
  221. } else if(.MapMode[.@m]&32){
  222. mes "No Trans Classes Allowed.";
  223. close;
  224. } else if(.MaxPlayers[.@m] && getmapusers(.MapName$[.@m]) >= .MaxPlayers[.@m]){
  225. mes "A arena está cheiaa.";
  226. close;
  227. } else if(.MapMode[.@m]&4 && getcharid(1) <= 0 ){
  228. mes "Você deve estar em alguma party para entrar.";
  229. close;
  230. } else if(.MapMode[.@m]&1 && getcharid(2) <= 0 ){
  231. mes "Você precisa estar em alguma Guilld para entrar.";
  232. close;
  233. }
  234. announce "Jogador(a) "+strcharinfo(0)+" acabou de entrar na arena "+((.MapMode[.@m]&1)?"GvG":"PvP")+".",0,((.MapMode[.@m]&1)?0x00CC99:0xEE0000);
  235. warp .MapName$[.@m],0,0;
  236. }
  237. end;
  238.  
  239. //==================================
  240. OnPCKillEvent: //-- Adding Stats
  241. //==================================
  242.  
  243. if(!getgmlevel() || .Options&512){
  244. if(LastPK == killedrid) RepeatKill++;
  245. else {
  246. LastPK = killedrid;
  247. RepeatKill = 0;
  248. }
  249. if(.Options&4)
  250. announce "[PVP]: "+strcharinfo(0)+" assassinou "+ rid2name(LastPK) + ((RepeatKill)?" pela "+callfunc("F_GetNumSuffix",RepeatKill)+" vez em seguida.":"") +".",bc_all;
  251. if((RepeatKill < .RepeatCount && .Options&32) || !.Options&32){
  252. if(.Options&1) pl_pkcount++;
  253. if(.Options&129) m_pkcount++;
  254. if(.Options&257) kda++;
  255. if(.Options&385) m_kda++;
  256. if(.Options&16) #PvpPoints++;
  257. if((getmapflag(strcharinfo(3),MF_GVG) || getmapflag(strcharinfo(3),MF_GVG_NOPARTY)) && (agitcheck() || agitcheck2()) && getcharid(2) && .Options&2){
  258. gvg_kcount++;
  259. if(.Options&128) m_gvg_kcount++;
  260. if(.Options&256) gvg_kda++;
  261. if(.Options&384) m_gvg_kda++;
  262. if(.Options&8) $Guild_Kills[getcharid(2)]++;
  263. if(.Options&136) $M_Guild_Kills[getcharid(2)]++;
  264. if(.Options&256) $Guild_Kda[getcharid(2)]++;
  265. if(.Options&264) $M_Guild_Kda[getcharid(2)]++;
  266. }
  267. attachrid(LastPK);
  268. if(.Options&1) pl_dthcount++;
  269. if(.Options&129) m_dthcount++;
  270. if(.Options&257) kda -= 1;
  271. if(.Options&385) m_kda -= 1;
  272. if((getmapflag(strcharinfo(3),MF_GVG) || getmapflag(strcharinfo(3),MF_GVG_NOPARTY)) && (agitcheck() || agitcheck2()) && getcharid(2) && .Options&2){
  273. gvg_dcount++;
  274. if(.Options&128) m_gvg_dcount++;
  275. if(.Options&258) gvg_kda -= 1;
  276. if(.Options&384) m_gvg_kda -= 1;
  277. if(.Options&8) $Guild_Deaths[getcharid(2)]++;
  278. if(.Options&136) $M_Guild_Deaths[getcharid(2)]++;
  279. if(.Options&256) $Guild_Kda[getcharid(2)] -= 1;
  280. if(.Options&264) $M_Guild_Kda[getcharid(2)] -= 1;
  281. }
  282. } //else if(.Options&1024) atcommand "@request [PvP Ladder]: "+strcharinfo(0)+" is showing signs of abusing the PvP Ladder Please Investigate";
  283. if(.Options&64) warp "Save",0,0;
  284. }
  285. end;
  286.  
  287. //==================================
  288. OnHour00: //-- Monthly Rewards
  289. //==================================
  290.  
  291. if(gettime(5) == 1 && .Options&128 && .MailType){
  292. if(.RewardType&1 && .Options&1){
  293. query_sql("SELECT char_id,`char`.name,CAST(`value` AS SIGNED) FROM `char_reg_num` INNER JOIN `char` ON `char`.char_id = `char_reg_num`.char_id WHERE `key` = '"+((.Options&256)?"m_kda":"m_pkcount")+"' ORDER BY CAST(`value` AS SIGNED) DESC LIMIT "+getarraysize(.PVP_Items$)+"",.@cid,.@name$,.@value);
  294. for(.@i = 0; .@i< getarraysize(.@cid); .@i++)
  295. mail .@cid[.@i], "no-reply", "PvP Ranking", "Congratulations!% You have placed #"+(.@i+1)+" in the PvP Raning this Month % % %[ Your reward is attached. ]", .PVP_Zeny[.@i], getd(".Pitem"+.@i), getd(".Pqnt"+.@i);
  296. announce "[PVP Ranking]: Rewards have been mailed to the top "+getarraysize(.PVP_Items$)+" in PvP~!",bc_blue|bc_all;
  297. query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'");
  298. }
  299. sleep 10000;
  300. if(.RewardType&2 && .Options&2){
  301. query_sql("SELECT char_id,`char`.name,CAST(`value` AS SIGNED) FROM `char_reg_num` INNER JOIN `char` ON `char`.char_id = `char_reg_num`.char_id WHERE `key` = '"+((.Options&256)?"m_gvg_kda":"m_gvg_kcount")+"' ORDER BY CAST(`value` AS SIGNED) DESC LIMIT "+getarraysize(.GVG_Items$)+"",.@cid,.@name$,.@value);
  302. for(.@i = 0; .@i<getarraysize(.@cid); .@i++)
  303. mail .@cid[.@i], "no-reply", "PvP Ranking", "Congratulations!% You have placed #"+(.@i+1)+" in the PvP Raning this Month % % %[ Your reward is attached. ]", .GVG_Zeny[.@i], getd(".Gitem"+.@i), getd(".Gqnt"+.@i);
  304. announce "[GVG Ranking]: Rewards have been mailed to the top "+getarraysize(.GVG_Items$)+" in GvG~!",bc_blue|bc_all;
  305. query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'");
  306. }
  307. cleararray $M_Guild_Kills[0],0,getarraysize($M_Guild_Kills);
  308. cleararray $M_Guild_Kda[0],0,getarraysize($M_Guild_Kda);
  309. cleararray $M_Guild_Deaths[0],0,getarraysize($M_Guild_Deaths);
  310. query_sql("DELETE FROM `char_reg_num` WHERE `key` = 'm_pkcount' OR `key` = 'm_kda' OR `key` = 'm_dthcount' OR `key` = 'm_gvg_kcount' OR `key` = 'm_gvg_kda' OR `key` = 'm_gvg_dcount'");
  311. addrid(0);
  312. m_pkcount = 0;
  313. m_kda = 0;
  314. m_dthcount = 0;
  315. m_gvg_kcount = 0;
  316. m_gvg_kda = 0;
  317. m_gvg_dcount = 0;
  318. end;
  319. }
  320.  
  321. //==================================
  322. OnInit: //-- Config
  323. //==================================
  324.  
  325. // Gets NPC Name
  326. // Lets you change NPC name without breaking anything
  327. .NPC$ = strnpcinfo(0);
  328.  
  329. // At_Commands
  330. bindatcmd("PvpLadder" ,.NPC$+"::OnPvpLadder",0,99);
  331. bindatcmd("Pvpladder" ,.NPC$+"::OnPvpLadder",0,99);
  332. bindatcmd("pvpLadder" ,.NPC$+"::OnPvpLadder",0,99);
  333. bindatcmd("pvpladder" ,.NPC$+"::OnPvpLadder",0,99);
  334.  
  335. // Bitwise Variable
  336. // 1: Record PvP
  337. // 2: Record GvG (agit on and gvg map)
  338. // 4: Announce When Someone gets a kill
  339. // 8: Record Total Guild Stats
  340. // 16: Gain PvP Points on Kills (#PvpPoints)
  341. // 32: Repeat Kill Protection
  342. // 64: Warp to Save on abuse
  343. // 128: Monthly Stats
  344. // 256: Order by KDA instead of most kills
  345. // 512: Allow GMs to Join PvP
  346. // 1024: Request a GM on Abuse
  347. // 2048: Enable Waiting Room
  348. // 4096: Dynamic Waiting Room
  349. .Options = 1|2|4|8|16|32|128|256|1024|2048|4096;
  350.  
  351. // Monthly Reward Types
  352. // 1: Pvp
  353. // 2: Gvg
  354. .RewardType = 1|2;
  355.  
  356. // PVP Rewards
  357. // Rewards are Mailed to winners
  358. // Zeny Rewards
  359. setarray .PVP_Zeny,
  360. 1000000,500000,250000,125000,62500,// 1st - 5th
  361. 31250, 15620, 7810, 3905, 1952;// 6th - 10th
  362.  
  363. // Ro Dex Supports 5 Items
  364. // Old Mail DOES NOT support multiple items
  365. // "Item 1, Qnt 1, Item 2, Qnt 2, Item 3, Qnt 3, Item 4, Qnt 4, Item 5, Qnt 5"
  366. setarray .PVP_Items$,
  367. "501,10,0,0,0,0,0,0,0,0",// 1st
  368. "501,9,0,0,0,0,0,0,0,0",
  369. "501,8,0,0,0,0,0,0,0,0",
  370. "501,7,0,0,0,0,0,0,0,0",
  371. "501,6,0,0,0,0,0,0,0,0",
  372. "501,5,0,0,0,0,0,0,0,0",
  373. "501,4,0,0,0,0,0,0,0,0",
  374. "501,3,0,0,0,0,0,0,0,0",
  375. "501,2,0,0,0,0,0,0,0,0",
  376. "501,1,0,0,0,0,0,0,0,0";// 10th
  377.  
  378. // GVG Rewards
  379. // Rewards are Mailed to winners
  380. // Zeny Rewards
  381. setarray .GVG_Zeny,
  382. 1000000,500000,250000,125000,62500,// 1st - 5th
  383. 31250, 15620, 7810, 3905, 1952;// 6th - 10th
  384.  
  385. // Ro Dex Supports 5 Items
  386. // Old Mail DOES NOT support multiple items
  387. // "Item 1, Qnt 1, Item 2, Qnt 2, Item 3, Qnt 3, Item 4, Qnt 4, Item 5, Qnt 5"
  388. setarray .GVG_Items$,
  389. "501,10,0,0,0,0,0,0,0,0",// 1st
  390. "501,9,0,0,0,0,0,0,0,0",
  391. "501,8,0,0,0,0,0,0,0,0",
  392. "501,7,0,0,0,0,0,0,0,0",
  393. "501,6,0,0,0,0,0,0,0,0",
  394. "501,5,0,0,0,0,0,0,0,0",
  395. "501,4,0,0,0,0,0,0,0,0",
  396. "501,3,0,0,0,0,0,0,0,0",
  397. "501,2,0,0,0,0,0,0,0,0",
  398. "501,1,0,0,0,0,0,0,0,0";// 10th
  399.  
  400. // Number of kills on same person before it detects abuse
  401. .RepeatCount = 5;
  402.  
  403. // Players Shown in PvP Ladder
  404. .MaxRank = 10;
  405.  
  406. // Map Names
  407. setarray .MapName$,"guild_vs3","pvp_y_2-2","guild_vs2","pvp_n_1-5","pvp_n_1-3";
  408.  
  409. // Pvp Mode
  410. // Modes are Addative
  411. // 0 = Normal Pvp
  412. // 1 = Gvg
  413. // 2 = Nightmare
  414. // 4 = Party
  415. // 8 = No Ygg
  416. // 16 = No 3rds
  417. // 32 = No Trans
  418. // 64 = Show Map Name
  419. setarray .MapMode,0,8,1,2,64;
  420.  
  421. // Max Players Per Map
  422. // 0 = No Limit
  423. setarray .MaxPlayers,0,30,10,12,2;
  424.  
  425. // Mapflags for all PvP maps
  426. // regardless of Mode
  427. setarray .mapflag,
  428. mf_nowarp, mf_nowarpto, mf_nosave,
  429. mf_nomemo, mf_noteleport, mf_nopenalty,
  430. mf_noreturn, mf_nobranch, mf_nomobloot,
  431. mf_nomvploot, MF_NOZENYPENALTY, MF_NOTRADE,
  432. MF_NOCOMMAND, mf_nodrop;
  433.  
  434. //===== Dont Touch - Mapflag & Waiting Room Generation =====
  435. if(getwaitingroomstate(1) == -1)
  436. delwaitingroom;
  437. if(.Options&2048 && !.Options&4096)
  438. waitingroom "PvP Ladder",0;
  439. for(.@i = 0; .@i < getarraysize(.MapName$); .@i++){
  440. for ( .@f = 0; .@f < .@size; .@f++ )
  441. setmapflag .MapName$[.@i], .mapflag[.@f];
  442. if(.MapMode[.@i]&4) setmapflag .MapName$[.@i], mf_partylock;
  443. if(.MapMode[.@i]&2) setmapflag .MapName$[.@i], MF_NIGHTMAREDROP;
  444. if(.MapMode[.@i]&1){
  445. setmapflag .MapName$[.@i], MF_GUILDLOCK;
  446. setmapflag .MapName$[.@i], MF_GVG;
  447. } else{
  448. setmapflag .MapName$[.@i], MF_PVP_NOGUILD;
  449. setmapflag .MapName$[.@i], MF_PVP;
  450. }
  451. if(!.MapMode[.@i]&4){
  452. if(.MapMode[.@i]&1) setmapflag .MapName$[.@i], MF_GVG_NOPARTY;
  453. else setmapflag .MapName$[.@i], MF_NOPARTY;
  454. }
  455. }
  456. freeloop(1);
  457. for(.@i = 0; .@i < getarraysize(.PVP_Items$); .@i++){
  458. explode(.@convert$,.PVP_Items$[.@i],",");
  459. for(.@c = 0; .@c < getarraysize(.@convert$) && .@c < 10; .@c++)
  460. .@convert[.@c] = atoi(.@convert$[.@c]);
  461. for(.@k = 0; .@k < getarraysize(.@convert); .@k += 2){
  462. setd ".Pitem"+.@i+"["+getarraysize(getd(".Pitem"+.@i))+"]",.@convert[.@k];
  463. setd ".Pqnt"+.@i+"["+getarraysize(getd(".Pqnt"+.@i))+"]",.@convert[.@k+1];
  464. }
  465. }
  466. for(.@i = 0; .@i < getarraysize(.GVG_Items$); .@i++){
  467. explode(.@convert$,.GVG_Items$[.@i],",");
  468. for(.@c = 0; .@c < getarraysize(.@convert$) && .@c < 10; .@c++)
  469. .@convert[.@c] = atoi(.@convert$[.@c]);
  470. for(.@k = 0; .@k < getarraysize(.@convert); .@k += 2){
  471. setd ".Gitem"+.@i+"["+getarraysize(getd(".Gitem"+.@i))+"]",.@convert[.@k];
  472. setd ".Gqnt"+.@i+"["+getarraysize(getd(".Gqnt"+.@i))+"]",.@convert[.@k+1];
  473. }
  474. }
  475. while(.Options&6144) {
  476. for(.@i = 0; .@i < getarraysize(.MapName$); .@i++){
  477. .@MapList$[.@i] = "["+ ((.MapMode[.@i]&2)?"Nightmare ":"") +
  478. ((.MapMode[.@i]&4)?"Party ":"") +
  479. ((.MapMode[.@i]&1)?"GvG":"PvP") +"] "+
  480. ((.MapMode[.@i] >= 8)?"":"") +
  481. ((.MapMode[.@i]&8)?"Sem Poção ":"") +
  482. ((.MapMode[.@i]&16)?"3rds ":"") +
  483. ((.MapMode[.@i]&32)?"Trans ":"") +
  484. ((.MapMode[.@i]&64)?"Arena 1v1":"") +
  485. ((.MaxPlayers[.@i])?"["+getmapusers(.MapName$[.@i])+"/"+.MaxPlayers[.@i]+"]":"");
  486. delwaitingroom;
  487. waitingroom .@MapList$[.@i],0;
  488. sleep 3000;
  489. }
  490. }
  491. //==========================================================
  492. }
  493.  
  494. //==================================
  495. //-- Call Shop
  496. //==================================
  497.  
  498. - pointshop PvP_Cash_Shop -1,#PvpPoints,501:1,502:2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement