Advertisement
Guest User

Untitled

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