Advertisement
icabit

Ghost PVP system

Jan 13th, 2013
816
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 71.62 KB | None | 0 0
  1. //========================================================================================
  2. //Title: Ghost's PvP System (Multi-announcer + Ladder)
  3. //Version: 1.4
  4. //Author: Ghost
  5. //Created: 12/27/2011
  6. //Released: 01/31/
  7. //Compatibility: rAthena | eAthena
  8. //Support: TXT & SQL
  9. //rAthena Topic: http://rathena.org/board/topic/58222-ghosts-scripts/
  10. //Required File:
  11. // SQL Table: http://pastebin.com/dEqrkczy
  12. // Wav Files: http://www.mediafire.com/?i3uutvdp00jw4r8
  13. //References:
  14. // http://www.wowwiki.com/Defense_of_the_Ancients:_Allstars
  15. // http://honwiki.net/wiki/Kill_Streak
  16. // http://honwiki.net/wiki/Multi_Kill
  17. // http://honwiki.net/wiki/Patch_2.0.0#Nemesis_and_Payback
  18. // http://igamepros.com/viewtopic.php?f=62&t=4342
  19. //Additional Note:
  20. // Multiple kill timer is set to Heroes of Newerth's 18 seconds.
  21. // KDR Algorithm is originally written by me, Ghost.
  22. // If you like this PvP System, say thanks at my rAthena topic.
  23. //Glossary:
  24. // KDR: Kill Death Ratio
  25. // SK: Streak Kill
  26. // MK: Multi Kill
  27. //Credits:
  28. // Thank you to the Athena community.
  29. //Changelog:
  30. // v1.4 = Modified by [Icabit]
  31. // = Added Gm Menu 80% done [Icabit]
  32. // = Added pimp and seductive pack [Icabit]
  33. // v1.3 = Fixed $icaPvPMap$[0] settings [Ghost]
  34. // = Added $icaGMLevel at configuration [Ghost]
  35. // = Change SK Hex Color to ^00FF00 for visibility [Ghost]
  36. // = Fixed Streak Kill ended broadcast [Ghost]
  37. // = Typographical error (Ms. Pudding to Flamboyant) on Announcer Setting corrected [Ghost]
  38. // = Changed Top 10 Players ranking from KDR to Kills [Ghost]
  39. // v1.2 = Fixed obfuscation at PvP Statistics [Ghost]
  40. // v1.1 = KDR Algorithm update for undefined calculation check [Lighta]
  41. // = Fixed obfuscation at Nemesis Kill [Lighta]
  42. // v1.0 = Initial release
  43. //©2011-2012 Ghost
  44. //========================================================================================
  45. - script Versus -1,{
  46. OnInit:
  47. //Broadcast Color | See HexTable: http://johncfish.com/bggallery/otherchart/hextable.gif
  48. set .KColor$, "0xFFFF00"; //Kill Broadcast Color | e.g. Jguy pwned Mercurial
  49. set .KSColor$, "0xFFFF00"; //Killing Streak Broadcast Color | e.g. jTynne is on a Killing Spree
  50. set .MKColor$, "0x33FF00"; //Multiple Kill Broadcast Color | e.g. Mercurial just got a Double Kill
  51. set .ESColor$, "0xFF0000"; //End Streak Broadcast Color | e.g. BrianL just ended Jguy's Killing Spree
  52. set .NMColor$, "0x0099FF"; //Nemesis Broadcast Color | e.g. Xazax is owning Cookies
  53. set .PBColor$, "0xFF0000"; //Payback Broadcast Color | e.g. Makizushi just have a payback againts lilcooldude69
  54. set .FDColor$, "0xFF00CC"; //Feeder Broadcast Color | e.g. Cookies is feeding Z3R0
  55.  
  56. //--Warning: Critical Setting | Killing Streaks and Multiple Kills Announcer
  57. setarray .KSDotA$[0], "First Blood","none","is on a Killing Spree", "is Dominating", "has a Mega-Kill", "is Unstoppable", "is Wicked Sick", "has a M-m-m-m....Monster Kill", "is Godlike", "is Beyond Godlike";
  58. setarray .KSHoN$[0], "Blood Lust","none","is a Serial Killer", "is an Ultimate Warrior", "is Legendary", "is on an Onslaught!", "is Savage Sick", "is Dominating", "has a Bloodbath", "is Immortal"; //Took out #9. Champion of Newearth
  59. setarray .MKDotA$[0], "just got a Double Kill", "just got a Triple Kill", "just got an Ultra Kill", "is on a Rampage", "is Owning his enemies", "is a Killing Machine!";
  60. setarray .MKHoN$[0], "just got a Double Tap", "just got a Hat Trick", "just got an Quad Kill", "annihilated his enemies", "just got a Genocide", "is a Murderer";
  61. setarray .ESDotA$[0], "Killing Spree", "Dominating", "Mega-Kill", "Unstoppable", "Wicked Sick", "Monster Kill", "Godlike", "Beyond Godlike";
  62. setarray .ESHoN$[0], "Serial Killer", "Ultimate Warrior", "Legendary", "Onslaught", "Savage Sick", "Dominating", "Bloodbath", "Immortal"; //Took out #9. Champion of Newearth
  63. setarray .EMDotA$[0], "Double Kill", "Triple Kill", "Ultra Kill", "Rampage", "Ownage";
  64. setarray .EMHoN$[0], "Double Tap", "Hat Trick", "Quad Kill", "Annihilation", "Genocide";
  65. if ($icaSave==1){end;}
  66. //--Configuration
  67. set $icaSystem, 1; //Toggle PvP System (0:Disable|1:Enable)
  68. set $icaServerType, 1; //Are you using TXT or SQL? (0:TXT|1:SQL)
  69. set $icaGMLevel, 90; //GM levels above or equal this level will be ignored by the system
  70. setarray $icaPvPMap$[0], "All"; //List all pvp maps here (Index 0:"All" to enable all maps)
  71.  
  72. //PvP Ladder
  73. set $icaTop, 10; //What is the length of the list?
  74. set $icaReset, 2; //Allow players to reset their PvP statistics? (0:Disable|1:Zeny|2:Cashpoint|3:Skull|4:Item)
  75. set $icaZenyFee, 1000; //How much zeny you want to charge to reset their pvp stat?
  76. set $icaCashFee, 1000; //How much cashpoint you want to charge to reset their pvp stat?
  77. set $icaSkullFee, 1000; //How much skull you want to charge to reset their pvp stat?
  78. set $icaResetItemFee, 7227; //What item you want to charge to reset their pvp stat? (7227=TCG change this to the one you want)
  79. set $icaResetItemAmountFee, 1000; //What item you want to charge to reset their pvp stat?
  80. set $icaAnnouncerFeeOption, 0; //Option for payment? (0:Zeny|2:Cashpoint|3:Items)
  81. set $icaAnnouncerZenyFee, 1000; //How much zeny you want to charge to buy an announcer?
  82. set $icaAnnouncerCashFee, 1000; //How much cashpoint you want to charge to buy an announcer?
  83. set $icaAnnouncerSkullFee, 1000; //How much skull you want to charge to buy an announcer?
  84. set $icaAnnouncerItemFee, 7227; //What item you want to charge to buy an announcer? (7227=TCG change this to the one you want)
  85. set $icaAnnouncerItemAmountFee, 1000; //What item you want to charge to buy an announcer?
  86.  
  87. //Reward Setting (Every Kill)
  88. set $icaMaxZeny, 1000000000; //What is the max zeny of the server?
  89. set $icaZeny, 0; //Earn zeny each kill? (0:Disable)
  90. set $icaCash, 0; //How much #CASHPOINT every kill? (0:Disable)
  91. set $icaSkull, 0; //Collect player's skull each kill? (0:Disable|1:Enable)
  92. setarray $icaItemID[0], 0; //Get items each kill? (0:Disable)
  93. setarray $icaAmount[0], 0; //How many items per kill?
  94.  
  95. //Penalty Setting
  96. set $icaFeed, 10; //How many kills before feeding is called? (10:Recommended)
  97. set $icaPenalty, 0; //What is the penalty for the feedee? (0:Disable|1:Kill Rollback|2:Server Kick|3:Server Block)
  98. set $icaKick, 1; //Who to kick? (0:Feedee|1:Feeder|2:Both)
  99. set $icaRollback, 10; //How many times should the kill count rollback when feeding is called? (10:Recommended)
  100.  
  101. //Announcer Setting
  102. set $icaBroadcast, 0; //Where do you want to broadcast? (0:bc_map|1:bc_all)
  103. set $icaStreak, 1; //Show number of killing streak in broadcast? e.g. Ghost is Beyond Godlike(8)
  104. set $icaMultiple, 1; //Show number of multiple kill in broadcast? e.g. Makizushi just got an Ownage(5)
  105. set $icaNemesis, 1; //Show number of nemesis in broadcast? e.g. Epoque is owning Jguy(9)
  106. set $icapaybackperiod, 5; //limit of nemesis before you can have you revenge e.g after keikun owned you 5 times or more you can have now your revenge
  107. set $icaFeeder, 1; //Show number of feed in broadcast? e.g. Cookies is feeding `KeiKun(10)
  108. set $icaRandomKillWord, 1; //Randomize the kill words? e.g. Arcenciel "Kill Word" jTynne (0:Disable|Default:"pwned")
  109. setarray $icaKillWord$[0], "pwned", "killed", "disintegrated", "neutralized"; //Enable above setting for this to work
  110.  
  111.  
  112.  
  113. //--Warning: Fail Safe | Do Not Touch
  114. if($icaSystem > 1){ set $icaSystem, 1; }
  115. if($icaSystem < 0){ set $icaSystem, 0; }
  116. if($icaServerType > 1){ set $icaServerType, 1; }
  117. if($icaServerType < 0){ set $icaServerType, 0; }
  118. if($icaGMLevel > 99){ set $icaGMLevel, 99; }
  119. if($icaGMLevel < 0){ set $icaGMLevel, 0; }
  120. if(($icaPvPMap$[0] == "ALL")||($icaPvPMap$[0] == "ALl")||($icaPvPMap$[0] == "AlL")||($icaPvPMap$[0] == "aLL")||($icaPvPMap$[0] == "aLl") || ($icaPvPMap$[0] == "alL")){ setarray $icaPvPMap$[0], "All"; }
  121. if(.Ladder > 1){ set .Ladder, 1; }
  122. if(.Ladder < 0){ set .Ladder, 0; }
  123. if($icaTop < 0){ set $icaTop, 0; }
  124. if($icaReset > 3){ set $icaReset, 0; }
  125. if($icaReset < 0){ set $icaReset, 0; }
  126. if(($icaReset == 1)&&($icaZenyFee <= 0)){ set $icaReset, 0; }
  127. if(($icaReset == 1)&&($icaZenyFee >= $icaMaxZeny)){ set $icaReset, 0; }
  128. if(($icaReset == 2)&&($icaCashFee <= 0)){ set $icaReset, 0; }
  129. if(($icaReset == 3)&&($icaSkullFee <= 0)){ set $icaReset, 0; }
  130. if($icaZeny > $icaMaxZeny){ set $icaZeny, 0; }
  131. if($icaZeny < 0){ set $icaZeny, 0; }
  132. if($icaCash < 0){ set $icaCash, 0; }
  133. if($icaBroadcast > 1){ set $icaBroadcast, 1; }
  134. if($icaBroadcast < 0){ set $icaBroadcast, 0; }
  135. if($icaFeed < 1){ set $icaFeed, 0; }
  136. if($icaPenalty > 3){ set $icaPenalty, 3; }
  137. if($icaPenalty < 1){ set $icaPenalty, 0; }
  138. if($icaRollback < 1){ set $icaRollback, 0; }
  139. if($icaStreak > 1){ set $icaStreak, 1; }
  140. if($icaStreak < 1){ set $icaStreak, 0; }
  141. if($icaMultiple > 1){ set $icaMultiple, 1; }
  142. if($icaMultiple < 1){ set $icaMultiple, 0; }
  143. if($icaNemesis > 1){ set $icaNemesis, 1; }
  144. if($icaNemesis < 0){ set $icaNemesis, 0; }
  145. if($icaFeeder > 1){ set $icaFeeder, 1; }
  146. if($icaFeeder < 1){ set $icaFeeder, 0; }
  147. if($icaRandomKillWord > 1){ set $icaRandomKillWord, 1; }
  148. if($icaRandomKillWord < 0){ set $icaRandomKillWord, 0; }
  149. end;
  150.  
  151. OnPCKillEvent:
  152. if($icaSystem)
  153. {
  154. freeloop(1);
  155. if(getgmlevel() >= $icaGMLevel){ end; }
  156. if($icaPvPMap$[0] != "All"){
  157. for(set .@i, 0; .@i < (getarraysize($icaPvPMap$) - 1); set .@i, .@i + 1){
  158. if(strcharinfo(3) != $icaPvPMap$[.@i]){ end; }
  159. }
  160. }
  161. set #killed$,rid2name(killedrid);
  162. for(set .@i, 0; .@i <= 127; set .@i, .@i + 1)
  163. {
  164. if (@killed$[.@i]=="none")
  165. {
  166. set @killed$[.@i],#killed$;
  167. set @mcountss[.@i],1;
  168. dispbottom "You have killed: "+@killed$[.@i]+" for "+@mcountss[.@i]+" time/times already";
  169. break;
  170. }
  171. else if (@killed$[.@i]==#killed$)
  172. {
  173. set @mcountss[.@i],@mcountss[.@i]+1;
  174. dispbottom "You have killed: "+@killers$[.@i]+" for "+@mcountss[.@i]+" time/times already";
  175. if (@mcountss[.@i]>=$icapaybackperiod) {dispbottom "Give that BITCH! some more!";}
  176. break;
  177. }
  178. else if (.@i== 127){break;}
  179. }
  180. for(set .@i, 0; .@i <= 127; set .@i, .@i + 1)
  181. {
  182. if ((rid2name(killedrid)==@killed$[.@i])&&(@mcountss[.@i]>=$icaFeed) && ($icaPenalty))
  183. {
  184. switch($icaPenalty)
  185. {
  186. case 0: break;
  187. case 1: callsub OnRollback; break;
  188. case 2: callsub OnRollback;
  189. if($icaKick == 0){ atcommand "@kick "+strcharinfo(0); }
  190. if($icaKick == 1){ atcommand "@kick "+rid2name(killedrid); }
  191. if($icaKick == 2){ atcommand "@kick "+strcharinfo(0); atcommand "@kick "+rid2name(killedrid); }
  192. break;
  193. case 3: callsub OnRollback;
  194. if($icaKick == 0){ atcommand "@block "+strcharinfo(0); }
  195. if($icaKick == 1){ atcommand "@block "+rid2name(killedrid); }
  196. if($icaKick == 2){ atcommand "@block "+strcharinfo(0); atcommand "@block "+rid2name(killedrid); }
  197. break;
  198. default: break;
  199. }
  200. }
  201. else if (.@i== 127){break;}
  202. }
  203.  
  204.  
  205. for(set .@i, 0; .@i <= 127; set .@i, .@i + 1)
  206. {
  207. if ((rid2name(killedrid)==@killed$[.@i])&&(@mcountss[.@i]<=$icaFeed))
  208. {
  209. if($icaZeny && ((Zeny + $icaZeny) < $icaMaxZeny)){ set Zeny, Zeny + $icaZeny; }
  210. if($icaCash){ dispbottom "[Point System] +1 Kill Point"; set #CASHPOINT, #CASHPOINT + $icaCash; }
  211. if($icaSkull){ getnameditem 7420, rid2name(killedrid); }
  212. for(set .@i, 0; .@i < getarraysize($icaItemID); set .@i, .@i + 1){ if($icaItemID){ getitem $icaItemID[.@i], $icaAmount[.@i]; }else{break;}}
  213. break;
  214. }
  215. else if (.@i== 127){break;}
  216. }
  217. if (@killers$[0]=="none"){
  218. }
  219. else
  220. {
  221. for(set .@i, 0; .@i <= 127; set .@i, .@i + 1){
  222.  
  223. if ((rid2name(killedrid)==@killers$[.@i])&&(@mcounts[.@i]>=$icapaybackperiod))
  224. {
  225. announce strcharinfo(0)+" just have a payback againts "+@killers$[.@i]+" ",bc_blue|bc_all;
  226. set @mcounts[.@i],1;
  227. set @killers$[.@i],"none";
  228. soundeffect ""+#Announcer+"_Payback.wav",0;
  229. sleep2 500;
  230. break;
  231. }
  232. else if ((rid2name(killedrid)==@killers$[.@i])&&(@mcounts[.@i]<=$icapaybackperiod)){
  233. break;
  234. }
  235. else if (.@i== 127){break;}
  236. }
  237. }
  238.  
  239.  
  240. if(getcharid(0)!=killedrid)
  241. {
  242. set @contains,0;
  243. for(set @x,0; @x<getarraysize(@killedID); set @x,@x+1)
  244. {
  245. if(getcharid(0)==@killedID[@x])
  246. {
  247. set @contains,1;
  248. break;
  249. }
  250. }
  251.  
  252. if(!@contains)
  253. { getmapxy .map$,.@x,.@y,0;
  254. set @pvppoint,rand(1,3);
  255. set Kill,Kill+1;
  256. set @killedID[killCTR],killedrid;
  257. set killCTR,killCTR+1;
  258. if(killCTR>=$pvpMaxKillCache) set killCTR,0;
  259. callsub OnRecordStreak;
  260. set #multikillCTR,#multikillCTR+1;
  261. if(!#multikill)
  262. {
  263. deltimer "Versus::OnPvPMultiKillTrigger";
  264. addtimer 30000,"Versus::OnMultiKillTrigger";
  265. set #multikill,1;
  266. }
  267. else
  268. {
  269. switch(#multikillCTR)
  270. {
  271. case 1:
  272. break;
  273. case 2:
  274. soundeffectall ""+#Announcer+"_MK2.wav",0;
  275. if(#Announcer == 0){ announce strcharinfo(0)+" "+.MKDotA$[#multikillCTR - 2]+" "+(($icaMultiple)?"("+#multikillCTR+")":"")+"", (($icaBroadcast)?bc_all:bc_map), .MKColor$; }
  276. if(#Announcer > 1){ announce strcharinfo(0)+" "+.MKHoN$[#multikillCTR - 2]+" "+(($icaMultiple)?"("+#multikillCTR+")":"")+"", (($icaBroadcast)?bc_all:bc_map), .MKColor$; }
  277. break;
  278. case 3:
  279. soundeffectall ""+#Announcer+"_MK3.wav",0;
  280. if(#Announcer == 0){ announce strcharinfo(0)+" "+.MKDotA$[#multikillCTR - 2]+" "+(($icaMultiple)?"("+#multikillCTR+")":"")+"", (($icaBroadcast)?bc_all:bc_map), .MKColor$; }
  281. if(#Announcer > 1){ announce strcharinfo(0)+" "+.MKHoN$[#multikillCTR - 2]+" "+(($icaMultiple)?"("+#multikillCTR+")":"")+"", (($icaBroadcast)?bc_all:bc_map), .MKColor$; }
  282. break;
  283. case 4:
  284. soundeffectall ""+#Announcer+"_MK4.wav",0;
  285. if(#Announcer == 0){ announce strcharinfo(0)+" "+.MKDotA$[#multikillCTR - 2]+" "+(($icaMultiple)?"("+#multikillCTR+")":"")+"", (($icaBroadcast)?bc_all:bc_map), .MKColor$; }
  286. if(#Announcer > 1){ announce strcharinfo(0)+" "+.MKHoN$[#multikillCTR - 2]+" "+(($icaMultiple)?"("+#multikillCTR+")":"")+"", (($icaBroadcast)?bc_all:bc_map), .MKColor$; }
  287. break;
  288. case 5:
  289. soundeffectall ""+#Announcer+"_MK5.wav",0;
  290. if(#Announcer == 0){ announce strcharinfo(0)+" "+.MKDotA$[#multikillCTR - 2]+" "+(($icaMultiple)?"("+#multikillCTR+")":"")+"", (($icaBroadcast)?bc_all:bc_map), .MKColor$; }
  291. if(#Announcer > 1){ announce strcharinfo(0)+" "+.MKHoN$[#multikillCTR - 2]+" "+(($icaMultiple)?"("+#multikillCTR+")":"")+"", (($icaBroadcast)?bc_all:bc_map), .MKColor$; }
  292. break;
  293. default:
  294. soundeffectall ""+#Announcer+"_MK6.wav",0;
  295. if(#Announcer == 0){ announce strcharinfo(0)+" "+.MKDotA$[5]+" "+(($icaMultiple)?"("+#multikillCTR+")":"")+"", (($icaBroadcast)?bc_all:bc_map), .MKColor$; }
  296. if(#Announcer > 1){ announce strcharinfo(0)+" "+.MKHoN$[5]+" "+(($icaMultiple)?"("+#multikillCTR+")":"")+"", (($icaBroadcast)?bc_all:bc_map), .MKColor$; }
  297. break;
  298. }
  299.  
  300. }
  301. sleep2 500;
  302. switch(#streak)
  303. {
  304.  
  305. case 1:
  306. if(#Announcer == 0){ announce strcharinfo(0)+" "+.KSDotA$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  307. if(#Announcer > 1){ announce strcharinfo(0)+" "+.KSHoN$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  308. soundeffect ""+#Announcer+"_KS1.wav",0;
  309. set #streak$,"First Blood";
  310. break;
  311. case 2:
  312. break;
  313. case 3:
  314. if(#Announcer == 0){ announce strcharinfo(0)+" "+.KSDotA$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  315. if(#Announcer > 1){ announce strcharinfo(0)+" "+.KSHoN$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  316. soundeffect ""+#Announcer+"_KS3.wav",0;
  317. set #streak$,"Serial Killer";
  318. break;
  319. case 4:
  320. if(#Announcer == 0){ announce strcharinfo(0)+" "+.KSDotA$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  321. if(#Announcer > 1){ announce strcharinfo(0)+" "+.KSHoN$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  322. soundeffect ""+#Announcer+"_KS4.wav",0;
  323. set #streak$,"Ultimate Warrior";
  324. break;
  325. case 5:
  326. if(#Announcer == 0){ announce strcharinfo(0)+" "+.KSDotA$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  327. if(#Announcer > 1){ announce strcharinfo(0)+" "+.KSHoN$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  328. soundeffect ""+#Announcer+"_KS5.wav",0;
  329. set #streak$,"Legendary";
  330. break;
  331. case 6:
  332. if(#Announcer == 0){ announce strcharinfo(0)+" "+.KSDotA$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  333. if(#Announcer > 1){ announce strcharinfo(0)+" "+.KSHoN$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  334. soundeffect ""+#Announcer+"_KS6.wav",0;
  335. set #streak$,"Onslaught";
  336. break;
  337. case 7:
  338. if(#Announcer == 0){ announce strcharinfo(0)+" "+.KSDotA$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  339. if(#Announcer > 1){ announce strcharinfo(0)+" "+.KSHoN$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  340. soundeffect ""+#Announcer+"_KS7.wav",0;
  341. set #streak$,"Savage Sick";
  342. break;
  343. case 8:
  344. if(#Announcer == 0){ announce strcharinfo(0)+" "+.KSDotA$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  345. if(#Announcer > 1){ announce strcharinfo(0)+" "+.KSHoN$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  346. soundeffect ""+#Announcer+"_KS8.wav",0;
  347. set #streak$,"Domination";
  348. break;
  349. case 9:
  350. if(#Announcer == 0){ announce strcharinfo(0)+" "+.KSDotA$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  351. if(#Announcer > 1){ announce strcharinfo(0)+" "+.KSHoN$[#streak - 1]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  352. soundeffect ""+#Announcer+"_KS9.wav",0;
  353. set #streak$,"Champion";
  354. break;
  355. default:
  356. if(#Announcer == 0){ announce strcharinfo(0)+" "+.KSDotA$[9]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  357. if(#Announcer > 1){ announce strcharinfo(0)+" "+.KSHoN$[9]+" "+(($icaStreak)?"("+(#streak)+")":"")+" in "+strcharinfo(3)+" after killing "+rid2name(killedrid), (($icaBroadcast)?bc_all:bc_map), .KSColor$; }
  358. soundeffect ""+#Announcer+"_KS10.wav",0;
  359. set #streak$,"Immortal";
  360. break;
  361. }
  362. set #streak,#streak+1;
  363. dispbottom "Your Current Streak: "+#streak$+"("+(#streak-1)+")";
  364. for(set .@i, 0; .@i <= 127; set .@i, .@i + 1)
  365. {
  366. if((@mcountss[.@i] > 3) && (@mcountss[.@i] < $icaFeed))
  367. {
  368. sleep2 500;
  369. announce strcharinfo(0)+" is owning "+@killed$[.@i]+" "+(($icaNemesis)?"("+@mcountss[.@i]+")":"")+"", (($icaBroadcast)?bc_all:bc_map), .NMColor$;
  370. if(#Announcer > 0){ soundeffect #Announcer+"_Nemesis.wav",0; } else { soundeffect "1_Nemesis.wav", 0;}
  371. }
  372. if(@mcountss[.@i] >= $icaFeed)
  373. {
  374. sleep2 500;
  375. announce @killed$[.@i]+" is feeding "+strcharinfo(0)+" "+(($icaFeeder)?"("+@mcountss[.@i]+")":"")+"", (($icaBroadcast)?bc_all:bc_map), .FDColor$;
  376. soundeffect "Feeder.wav",0;
  377. }
  378. else if (.@i==127) { break;}
  379. }
  380. }
  381. }
  382. }
  383. end;
  384.  
  385. OnPCDieEvent:
  386. if(getgmlevel() >= $icaGMLevel){ end; }
  387. if( killerrid > 3000000) { dispbottom "You have been killed by "+rid2name(killerrid); end;}
  388. if (#streak > 2)
  389. {
  390. announce rid2name(killerrid)+" has ended "+ strcharinfo(0) +"'s "+ #streak$ +"! streak at "+ .map$,0;
  391. soundeffect ""+#Announcer+"_smackdown.wav",0;
  392. }
  393. set Death,Death+1;
  394. set #streak$,"None";
  395. set #multikill,0;
  396. set #multikillCTR,0;
  397. set NemesisKilled, 0;
  398. set #nm, 0;
  399. set #streak,1;
  400. set #killer$,rid2name(killerrid);
  401. for(set .@i, 0; .@i <= 127; set .@i, .@i + 1){
  402. if (@killers$[.@i]=="none")
  403. {
  404. set @killers$[.@i],#killer$;
  405. set @mcounts[.@i],1;
  406. dispbottom "you have been killed by: "+@killers$[.@i]+" for "+@mcounts[.@i]+" time/times already";
  407. break;
  408. }
  409. else if (@killers$[.@i]==#killer$)
  410. {
  411. set @mcounts[.@i],@mcounts[.@i]+1;
  412. dispbottom "you have been killed by: "+@killers$[.@i]+" for "+@mcounts[.@i]+" time/times already";
  413. if (@mcounts[.@i]>=$icapaybackperiod) {dispbottom "Come ON! give him a payback!";}
  414. break;
  415. }
  416. else if (.@i==127){break;}
  417.  
  418. }
  419. for(set .@i, 0; .@i <= 127; set .@i, .@i + 1){
  420. if (@killed$[.@i]==#killer$)
  421. {
  422. set @mcountss[.@i],1;
  423. dispbottom " Your nemesis count against him is now back to "+@mcountss[.@i]+"";
  424. set @killed$[.@i],"none";
  425. break;
  426. }
  427. else if (.@i==127){break;}
  428.  
  429. }
  430.  
  431. //Show the list of killers and their streak against you
  432. //for(set .@i, 0; .@i <= 127; set .@i, .@i + 1){
  433. //
  434. //if (@killers$[.@i]=="none"){
  435. // break;
  436. //}
  437. // dispbottom "you have been killed by: "+@killers$[.@i]+" for "+@mcounts[.@i]+" time/times already";
  438. // if (@mcounts[.@i]>=$icapaybackperiod) {dispbottom "Come ON! give him a payback!";}
  439. //}
  440. end;
  441.  
  442. OnPCLoginEvent:
  443. if(getgmlevel() >= $icaGMLevel){ end; }
  444. setarray @killers$[0],"none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none";
  445. setarray @mcounts[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1;
  446. setarray @killed$[0],"none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none";
  447. setarray @mcountss[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1;
  448. set #streak,1;
  449. set #streak$,"None";
  450. set #multikill,0;
  451. set #multikillCTR,0;
  452. set NemesisKilled,0;
  453. set #nm,0;
  454. set #mcount,0;
  455. set #killer$,"NONE";
  456. set #killed$,"NONE";
  457. end;
  458. OnPCLogoutEvent:
  459. if($icaSystem){
  460. if(getgmlevel() >= $icaGMLevel){ end; }
  461. for(set .@i, 0; .@i <= 127; set .@i, .@i + 1)
  462. {
  463. if((@mcountss[.@i] > 3) && (@mcountss[.@i] < $icaFeed)){ set NemesisKill, NemesisKill + 1; }
  464. if(@mcountss[.@i] >= $icaFeed){set FeedCount, FeedCount + 1;}
  465. if (.@i==127) {break;}
  466. }
  467. if($icaServerType){ query_sql("REPLACE INTO `pvp_rank` (`char_id`, `account_id`, `char`, `kill`, `death`, `kdr`, `killingstreak`, `multikill`, `nemesiskill`, `feedcount`,`killingspree`, `dominating`, `megakill`, `unstoppable`, `wickedsick`, `monsterkill`, `godlike`, `beyondgodlike`, `doublekill`, `triplekill`, `ultrakill`, `rampage`, `ownage`) VALUES ("+getcharid(0)+","+getcharid(3)+", '"+rid2name(getcharid(3))+"', "+Kill+", "+Death+", '"+callfunc("KDR_Calculator", Kill, Death)+"', "+KillingStreak+", "+MultiKill+", "+NemesisKill+", "+FeedCount+", "+KillingSpree+", "+Dominating+", "+MegaKill+", "+Unstoppable+", "+WickedSick+", "+MonsterKill+", "+Godlike+", "+BeyondGodlike+", "+DoubleKill+", "+TripleKill+", "+UltraKill+", "+Rampage+", "+Ownage+")"); }
  468. if($icaPvPMap$[0] != "All"){
  469. for(set .@i, 0; .@i < (getarraysize($icaPvPMap$) - 1); set .@i, .@i + 1){
  470. if(strcharinfo(3) != $icaPvPMap$[.@i]){ end; }
  471. }
  472. }
  473.  
  474. }
  475. set #streak,1;
  476. set #streak$,"None";
  477. set #multikill,0;
  478. set #multikillCTR,0;
  479. set NemesisKilled,0;
  480. set #nm,0;
  481. set #mcount,0;
  482. set #killer$,"NONE";
  483. set #killed$,"NONE";
  484. setarray @killers$[0],"none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none";
  485. setarray @mcounts[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1;
  486. setarray @killed$[0],"none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none";
  487. setarray @mcountss[0],1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1;
  488. end;
  489. OnMultiKillTrigger:
  490. set #multikill,0;
  491. set #multikillCTR,0;
  492. end;
  493.  
  494.  
  495. OnRecordStreak:
  496. if(#streak > 2){
  497. set KillingStreak, KillingStreak + 1;
  498. switch(#streak-1){
  499. case 0: case 1: case 2: break;
  500. case 3: set KillingSpree, KillingSpree + 1; break;
  501. case 4: set Dominating, Dominating + 1; break;
  502. case 5: set MegaKill, MegaKill + 1; break;
  503. case 6: set Unstoppable, Unstoppable + 1; break;
  504. case 7: set WickedSick, WickedSick + 1; break;
  505. case 8: set MonsterKill, MonsterKill + 1; break;
  506. case 9: set Godlike, Godlike + 1; break;
  507. case 10: set BeyondGodlike, BeyondGodlike + 1; break;
  508. default: break;
  509. }
  510. }
  511. if(#multikillCTR > 1){
  512. set MultiKill, MultiKill + 1;
  513. switch(#multikillCTR)
  514. {
  515. case 0: case 1: break;
  516. case 2: set DoubleKill, DoubleKill + 1; break;
  517. case 3: set TripleKill, TripleKill + 1; break;
  518. case 4: set UltraKill, UltraKill + 1; break;
  519. case 5: set Rampage, Rampage + 1; break;
  520. case 6: set Ownage, Ownage + 1; break;
  521. default: break;
  522. }
  523. }
  524.  
  525. return;
  526. OnRollback:
  527. if($icaZeny){ set Zeny, Zeny - ($icaZeny * $icaRollback); }
  528. if($icaCash){ dispbottom "[Point System] -"+($icaCash * $icaRollback)+" Kill Point"; set #CASHPOINT, #CASHPOINT - ($icaCash * $icaRollback); }
  529. if($icaSkull){ delitem 7420, $icaRollback; }
  530. for(set .@i, 0; .@i < getarraysize($icaItemID); set .@i, .@i + 1){ if($icaItemID){ delitem $icaItemID[.@i], $icaAmount[.@i] * $icaRollback; }}
  531. if((Kill - $icaRollback) > 0){ set Kill, Kill - $icaRollback; } else { set Kill, 0; }
  532. if((KillingSpree - 1) > 0){ set KillingSpree, KillingSpree - 1; } else { set KillingSpree, 0; }
  533. if((Dominating - 1) > 0){ set Dominating, Dominating - 1; } else { set Dominating, 0; }
  534. if((MegaKill - 1) > 0){ set MegaKill, MegaKill - 1; } else { set MegaKill, 0; }
  535. if((Unstoppable - 1) > 0){ set Unstoppable, Unstoppable - 1; } else { set Unstoppable, 0; }
  536. if((WickedSick - 1) > 0){ set WickedSick, WickedSick - 1; } else { set WickedSick, 0; }
  537. if((MonsterKill - 1) > 0){ set MonsterKill, MonsterKill - 1; } else { set MonsterKill, 0; }
  538. if((Godlike - 1) > 0){ set Godlike, Godlike - 1; } else { set Godlike, 0; }
  539. if((BeyondGodlike - 1) > 0){ set BeyondGodlike, BeyondGodlike - 1; } else { set BeyondGodlike, 0; }
  540. if((DoubleKill - 1) > 0){ set DoubleKill, DoubleKill - 1; } else { set DoubleKill, 0; }
  541. if((TripleKill - 1) > 0){ set TripleKill, TripleKill - 1; } else { set TripleKill, 0; }
  542. if((UltraKill - 1) > 0){ set UltraKill, UltraKill - 1; } else { set UltraKill, 0; }
  543. if((Rampage - 1) > 0){ set Rampage, Rampage - 1; } else { set Rampage, 0; }
  544. if((Ownage - 1) > 0){ set Ownage, Ownage - 1; } else { set Ownage, 0; }
  545. if((NemesisKill - ($icaRollback - 3)) > 0){ set NemesisKill, NemesisKill - ($icaRollback - 3); } else { set NemesisKill, 0; }
  546. announce "[Anti-Feed] Your kill count has been rollbacked "+$icaRollback+" times.",bc_self,0xFF0000;
  547. return;
  548. freeloop(0);
  549. }
  550.  
  551. prontera,158,192,3 script PvP Ladder[Loki] 467,{
  552. if(getgmlevel() >= $icaGMLevel)
  553. {
  554. mes "[Loki]"; mes "Here are The Current Settings of your PvP System";
  555. mes "System Settings";
  556. mes $icaSystem+" =Toggle PvP System (0:Disable|1:Enable)";
  557. mes $icaServerType+" =Are you using TXT or SQL? (0:TXT|1:SQL)";
  558. mes $icaGMLevel+" =GM levels above or equal this level will be ignored by the system";
  559. next;
  560. mes "PvP Ladder";
  561. mes $icaTop+" =What is the length of the list?";
  562. mes $icaReset+" =Allow players to remes their PvP statistics? (0:Disable|1:Zeny|2:Cashpoint|3:Skull)";
  563. mes $icaZenyFee+" =How much zeny you want to charge to remes their pvp stat?";
  564. mes $icaCashFee+" =How much cashpoint you want to charge to remes their pvp stat?";
  565. mes $icaSkullFee+" =How much skull you want to charge to remes their pvp stat?";
  566. mes $icaAnnouncerFee+" =How much cashpoint per announcer? (DotA announcer is mes as default)";
  567. next;
  568. mes "Reward Setting (Every Kill)";
  569. mes $icaMaxZeny+" =What is the max zeny of the server?";
  570. mes $icaZeny+" =Earn zeny each kill? (0:Disable)";
  571. mes $icaCash+" =How much #CASHPOINT every kill? (0:Disable)";
  572. mes $icaSkull+" =Collect player's skull each kill? (0:Disable|1:Enable)";
  573. next;
  574. mes "Penalty Setting";
  575. mes $icaFeed+" =How many kills before feeding is called? (10:Recommended)";
  576. mes $icaPenalty+" =What is the penalty for the feedee? (0:Disable|1:Kill Rollback|2:Server Kick|3:Server Block)";
  577. mes $icaKick+" =Who to kick? (0:Feedee|1:Feeder|2:Both)";
  578. mes $icaRollback+" =How many times should the kill count rollback when feeding is called? (10:Recommended)";
  579. next;
  580. mes "Announcer Setting";
  581. mes $icaBroadcast+" =Where do you want to broadcast? (0:bc_map|1:bc_all)";
  582. mes $icaStreak+" =Show number of killing streak in broadcast? e.g. Ghost is Beyond Godlike(8)";
  583. mes $icaMultiple+" =Show number of multiple kill in broadcast? e.g. Makizushi just got an Ownage(5)";
  584. mes $icaNemesis+" =Show number of nemesis in broadcast? e.g. Epoque is owning Jguy(9)";
  585. mes $icapaybackperiod+" =limit of nemesis before you can have you revenge e.g after keikun owned you 5 times or more you can have now your revenge";
  586. mes $icaFeeder+" =Show number of feed in broadcast? e.g. Cookies is feeding `KeiKun(10)";
  587. mes $icaRandomKillWord+" =Randomize the kill words? e.g. Arcenciel Kill Word jTynne (0:Disable|Default:pwned)";
  588. next;
  589. mes "[Loki]"; mes "What can I do for you today?";
  590. L_mainmenu:
  591. switch(select("System Settings:PvP Ladder Settings:Reward Settings (Every Kill):Penalty Settings:Announcer Settings:Player Menu:Reset All Settings:Save Current Settings:Reset Ladder:Nothing")){
  592. case 1:
  593. L_option1:
  594. switch(select("Toggle PvP System:TXT or SQL:Min Gm lvl Involved:Back")){
  595. case 1:
  596. L_again:
  597. mes "Toggle PvP System (0:Disable|1:Enable)";
  598. set @option,0;
  599. input @option;
  600. if ((@option<0)||(@option>1)){ mes "invalid input or out of range"; goto L_again;}
  601. set $icaSystem, @option; //Toggle PvP System (0:Disable|1:Enable)
  602. mes "Successfully changed Settings";
  603. mes "is now set to: "+$icaSystem;
  604. next;
  605. goto L_option1;
  606. end;
  607. break;
  608. case 2:
  609. L_again1:
  610. mes "Are you using TXT or SQL? (0:TXT|1:SQL)";
  611. set @option,0;
  612. input @option;
  613. if ((@option<0)||(@option>1)){ mes "invalid input or out of range"; goto L_again1;}
  614. set $icaServerType, @option; //Are you using TXT or SQL? (0:TXT|1:SQL)
  615. mes "is now set to: "+$icaServerType;
  616. mes "Successfully changed Settings";
  617. next;
  618. goto L_option1;
  619. end;
  620. break;
  621. case 3:
  622. L_again2:
  623. mes "GM levels above or equal this level will be ignored by the system input from 0 to 99 only";
  624. set @option,0;
  625. input @option;
  626. if ((@option > 99)||(@option < 0)){ mes "invalid input or out of range"; goto L_again2;}
  627. set $icaGMLevel, @option; //GM levels above or equal this level will be ignored by the system
  628. mes "is now set to: "+$icaGMLevel;
  629. mes "Successfully changed Settings";
  630. next;
  631. goto L_option1;
  632. end;
  633. break;
  634. case 4:
  635. goto L_mainmenu;
  636. end;
  637. break;
  638. } // end of System Settings
  639.  
  640. case 2:
  641. L_option2:
  642. switch(select("Max List:Stat Reset Option:Stat Reset Zeny Fee:Stat Reset Cash Fee:Stat Reset Skull Fee:Stat Reset Item Fee:Stat Reset Item Fee Amount:Announcer Fee Option:Announcer Zeny Fee:Announcer Cash Fee:Announcer Skull Fee:Announcer Item Fee:Announcer Item Fee Amount:Back")){
  643. //PvP Ladder
  644. case 1:
  645. L_2again:
  646. mes "What is the length of the list (minimum of 10)";
  647. set @option,0;
  648. input @option;
  649. if (@option < 9){ mes "invalid input or out of range"; goto L_2again;}
  650. set $icaTop, @option; //What is the length of the list?
  651. mes "is now set to: "+$icaTop;
  652. mes "Successfully changed Settings";
  653. next;
  654. goto L_option2;
  655. end;
  656. break;
  657.  
  658. case 2:
  659. L_2again1:
  660. mes "Allow players to reset their PvP statistics? (0:Disable|1:Zeny|2:Cashpoint|3:Skull|4:Item)";
  661. set @option,0;
  662. input @option;
  663. if ((@option < 0)||(@option > 4)){ mes "invalid input or out of range"; goto L_2again1;}
  664. set $icaReset, @option; //Allow players to reset their PvP statistics? (0:Disable|1:Zeny|2:Cashpoint|3:Skull|4:Item)
  665. mes "is now set to: "+$icaReset;
  666. mes "Successfully changed Settings";
  667. next;
  668. goto L_option2;
  669. end;
  670. break;
  671.  
  672. case 3:
  673. L_2again2:
  674. mes "How much zeny you want to charge to reset their pvp stat? (minimum of 1000)";
  675. set @option,0;
  676. input @option;
  677. if (@option < 999){ mes "invalid input or out of range"; goto L_2again2;}
  678. set $icaZenyFee, @option; //how much zeny you want to charge to reset their pvp stat?
  679. mes "Successfully changed Settings";
  680. mes "is now set to: "+$icaZenyFee;
  681. next;
  682. goto L_option2;
  683. end;
  684. break;
  685.  
  686. case 4:
  687. L_2again3:
  688. mes "How much cash you want to charge to reset their pvp stat? (minimum of 1000)";
  689. set @option,0;
  690. input @option;
  691. if (@option < 999){ mes "invalid input or out of range"; goto L_2again3;}
  692. set $icaCashFee, @option; //how much zeny you want to charge to reset their pvp stat?
  693. mes "Successfully changed Settings";
  694. mes "is now set to: "+$icaCashFee;
  695. next;
  696. goto L_option2;
  697. end;
  698. break;
  699.  
  700. case 5:
  701. L_2again4:
  702. mes "How much skull you want to charge to reset their pvp stat? (minimum of 1000)";
  703. set @option,0;
  704. input @option;
  705. if (@option < 999){ mes "invalid input or out of range"; goto L_2again5;}
  706. set $icaSkullFee, @option; //how much skull you want to charge to reset their pvp stat?
  707. mes "Successfully changed Settings";
  708. mes "is now set to: "+$icaSkullFee;
  709. next;
  710. goto L_option2;
  711. end;
  712. break;
  713.  
  714. case 6:
  715. L_2again5:
  716. mes "What item you want to charge to reset their pvp stat? (7227 is the default=TCG change this to the one you want)";
  717. set @option,0;
  718. input @option;
  719. if (@option < 500){ mes "invalid input or out of range"; goto L_2again5;}
  720. set $icaResetItemFee, @option; //What item you want to charge to reset their pvp stat? (7227 is the default=TCG change this to the one you want)
  721. mes "Successfully changed Settings";
  722. mes "is now set to: "+getitemname($icaResetItemFee);
  723. next;
  724. goto L_option2;
  725. end;
  726. break;
  727.  
  728. case 7:
  729. L_2again6:
  730. mes "how much "+getitemname($icaResetItemFee)+" to charge to reset their pvp stat?";
  731. set @option,0;
  732. input @option;
  733. if (@option < 0){ mes "invalid input or out of range"; goto L_2again6;}
  734. set $icaResetItemAmountFee, @option; //how much "+getitemname($icaResetItemFee)+" to charge to reset their pvp stat?
  735. mes "Successfully changed Settings";
  736. mes "is now set to: "+$icaResetItemAmountFee;
  737. next;
  738. goto L_option2;
  739. end;
  740. break;
  741.  
  742. case 8:
  743.  
  744. L_2again7:
  745. mes "Allow players to Buy Announcers? (0:Disable|1:Zeny|2:Cashpoint|3:Skull|4:Item)";
  746. set @option,0;
  747. input @option;
  748. if ((@option < 0)||(@option > 4)){ mes "invalid input or out of range"; goto L_2again7;}
  749. set $icaAnnouncerFeeOption, @option; //How much cashpoint per announcer? (DotA announcer is set as default)
  750. mes "Successfully changed Settings";
  751. mes "is now set to: "+$icaAnnouncerFeeOption;
  752. next;
  753. goto L_option2;
  754. end;
  755. break;
  756.  
  757. case 9:
  758. L_2again8:
  759. mes "How much zeny you want to charge to buy an announcer? (minimum of 1000)";
  760. set @option,0;
  761. input @option;
  762. if (@option < 999){ mes "invalid input or out of range"; goto L_2again8;}
  763. set $icaAnnouncerZenyFee, @option; //how much zeny you want to charge to buy an announcer
  764. mes "Successfully changed Settings";
  765. mes "is now set to: "+$icaAnnouncerZenyFee;
  766. next;
  767. goto L_option2;
  768. end;
  769. break;
  770.  
  771. case 10:
  772. L_2again9:
  773. mes "How much cash you want to charge to buy an announcer? (minimum of 1000)";
  774. set @option,0;
  775. input @option;
  776. if (@option < 999){ mes "invalid input or out of range"; goto L_2again9;}
  777. set $icaAnnouncerCashFee, @option; //how much zeny you want to charge to buy an announcer?
  778. mes "Successfully changed Settings";
  779. mes "is now set to: "+$icaAnnouncerCashFee;
  780. next;
  781. goto L_option2;
  782. end;
  783. break;
  784. case 11:
  785. L_2again10:
  786. mes "How much skull you want to charge to buy an announcer? (minimum of 1000)";
  787. set @option,0;
  788. input @option;
  789. if (@option < 999){ mes "invalid input or out of range"; goto L_2again10;}
  790. set $icaAnnouncerSkullFee, @option; //how much skull you want to charge to reset their pvp stat?
  791. mes "Successfully changed Settings";
  792. mes "is now set to: "+$icaAnnouncerSkullFee;
  793. next;
  794. goto L_option2;
  795. end;
  796. break;
  797. case 12:
  798. L_2again11:
  799. mes "What item you want to charge to buy an announcer? (7227 is the default=TCG change this to the one you want)";
  800. set @option,0;
  801. input @option;
  802. if (@option < 500){ mes "invalid input or out of range"; goto L_2again11;}
  803. set $icaAnnouncerItemFee, @option; //What item you want to charge to buy an announcer? (7227 is the default=TCG change this to the one you want)
  804. mes "Successfully changed Settings";
  805. mes "is now set to: "+getitemname($icaAnnouncerItemFee);
  806. next;
  807. goto L_option2;
  808. end;
  809. break;
  810. case 13:
  811. L_2again12:
  812. mes "how much "+getitemname($icaAnnouncerItemFee)+" to charge to but an announcer?";
  813. set @option,0;
  814. input @option;
  815. if (@option < 0){ mes "invalid input or out of range"; goto L_2again12;}
  816. set $icaAnnouncerItemAmountFee, @option; //how much "+getitemname($icaResetItemFee)+" to charge to reset their pvp stat?
  817. mes "Successfully changed Settings";
  818. mes "is now set to: "+$icaAnnouncerItemAmountFee;
  819. next;
  820. goto L_option2;
  821. end;
  822. break;
  823. case 14:
  824. goto L_mainmenu;
  825. end;
  826. break;
  827. } // end of PvP Ladder Settings
  828. case 3:
  829. L_option3:
  830. switch(select("What is the max zeny of the server?:Earn zeny each kill?:How much #CASHPOINT every kill?:Collect player's skull each kill?:Back")){
  831. //Reward Setting (Every Kill)
  832. case 1:
  833. L_3again:
  834. mes "What is the max zeny of the server? (minimum of 1000000000, nax of 2000000000)";
  835. set @option,0;
  836. input @option;
  837. if ((@option < 999999999)||(@option > 2000000000)){ mes "invalid input or out of range"; goto L_3again;}
  838. set $icaMaxZeny, @option; //What is the max zeny of the server?
  839. mes "Successfully changed Settings";
  840. mes "is now set to: "+$icaMaxZeny;
  841. next;
  842. goto L_option3;
  843. end;
  844. break;
  845.  
  846. case 2:
  847. L_3again1:
  848. mes "Earn zeny each kill? (0:Disable)";
  849. set @option,0;
  850. input @option;
  851. if (@option < 0){ mes "invalid input or out of range"; goto L_3again1;}
  852. set $icaZeny, @option; //Earn zeny each kill? (0:Disable)
  853. mes "Successfully changed Settings";
  854. mes "is now set to: "+$icaZeny;
  855. next;
  856. goto L_option3;
  857. end;
  858. break;
  859.  
  860. case 3:
  861. L_3again2:
  862. mes "Earn zeny each kill? (0:Disable)";
  863. set @option,0;
  864. input @option;
  865. if (@option < 0){ mes "invalid input or out of range"; goto L_3again2;}
  866. set $icaCash, @option; //How much #CASHPOINT every kill? (0:Disable)
  867. mes "Successfully changed Settings";
  868. mes "is now set to: "+$icaCash;
  869. next;
  870. goto L_option3;
  871. end;
  872. break;
  873.  
  874. case 4:
  875. L_3again3:
  876. mes "Collect player's skull each kill? (0:Disable|1:Enable)";
  877. set @option,0;
  878. input @option;
  879. if (@option < 0){ mes "invalid input or out of range"; goto L_3again3;}
  880. set $icaSkull, @option; //Collect player's skull each kill? (0:Disable|1:Enable)
  881. mes "Successfully changed Settings";
  882. mes "is now set to: "+$icaSkull;
  883. next;
  884. goto L_option3;
  885. end;
  886. break;
  887.  
  888. case 5:
  889. goto L_mainmenu;
  890. end;
  891. break;
  892.  
  893. } // end of reward settings
  894.  
  895.  
  896. case 4:
  897. L_option4:
  898. switch(select("How many kills before feeding is called? (10 is Recommended):What is the penalty for the feedee?:Who to kick?:How many times should the kill count rollback when feeding is called?:Back")){
  899. //penalty settings
  900. case 1:
  901. L_4again:
  902. mes "How many kills before feeding is called? (10:Recommended and minimum is 5)";
  903. set @option,0;
  904. input @option;
  905. if (@option < 4){ mes "invalid input or out of range"; goto L_4again;}
  906. set $icaFeed, @option; //How many kills before feeding is called? (10:Recommended)
  907. mes "Successfully changed Settings";
  908. mes "is now set to: "+$icaFeed;
  909. next;
  910. goto L_option4;
  911. end;
  912. break;
  913.  
  914. case 2:
  915. L_4again1:
  916. mes "What is the penalty for the feedee? (0:Disable|1:Kill Rollback|2:Server Kick|3:Server Block)";
  917. set @option,0;
  918. input @option;
  919. if ((@option < 0)||(@option > 3)){ mes "invalid input or out of range"; goto L_4again1;}
  920. set $icaPenalty, @option; //What is the penalty for the feedee? (0:Disable|1:Kill Rollback|2:Server Kick|3:Server Block)
  921. mes "Successfully changed Settings";
  922. mes "is now set to: "+$icaPenalty;
  923. next;
  924. goto L_option4;
  925. end;
  926. break;
  927.  
  928. case 3:
  929. L_4again2:
  930. mes "Who to kick? (0:Feedee|1:Feeder|2:Both)";
  931. set @option,0;
  932. input @option;
  933. if ((@option < 0)||(@option > 2)){ mes "invalid input or out of range"; goto L_4again2;}
  934. set $icaKick, @option; //Who to kick? (0:Feedee|1:Feeder|2:Both)
  935. mes "Successfully changed Settings";
  936. mes "is now set to: "+$icaKick;
  937. next;
  938. goto L_option4;
  939. end;
  940. break;
  941.  
  942. case 4:
  943. L_4again3:
  944. mes "How many times should the kill count rollback when feeding is called? recommended("+$icaFeed+") same as the feed limit";
  945. set @option,0;
  946. input @option;
  947. if (@option < 4){ mes "invalid input or out of range"; goto L_4again3;}
  948. set $icaRollback, @option; //How many times should the kill count rollback when feeding is called? (10:Recommended)
  949. mes "Successfully changed Settings";
  950. mes "is now set to: "+$icaRollback;
  951. next;
  952. goto L_option4;
  953. end;
  954. break;
  955.  
  956. case 5:
  957. goto L_mainmenu;
  958. end;
  959. break;
  960. }
  961. case 5:
  962. L_option5:
  963. switch(select("Where do you want to broadcast?:Show number of killing streak in broadcast?:Show number of multiple kill in broadcast?:Show number of nemesis in broadcast?:Show number of feed in broadcast?:Randomize the kill words?:Payback Period limit?:Back")){
  964. //Announcer Setting
  965. case 1:
  966. L_5again:
  967. mes "Where do you want to broadcast? (0:bc_map|1:bc_all)";
  968. set @option,0;
  969. input @option;
  970. if ((@option > 1)||(@option < 0)){ mes "invalid input or out of range"; goto L_5again;}
  971. set $icaBroadcast, @option; //Where do you want to broadcast? (0:bc_all|1:bc_map)
  972. mes "Successfully changed Settings";
  973. mes "is now set to: "+$icaBroadcast;
  974. next;
  975. goto L_option5;
  976. end;
  977. break;
  978.  
  979. case 2:
  980. L_5again1:
  981. mes "Show number of killing streak in broadcast?(0:Disable|1:Enable) e.g. Ghost is Beyond Godlike(8)";
  982. set @option,0;
  983. input @option;
  984. if ((@option > 1)||(@option < 0)){ mes "invalid input or out of range"; goto L_5again1;}
  985. set $icaStreak, @option; //Show number of killing streak in broadcast? e.g. Ghost is Beyond Godlike(8)
  986. mes "Successfully changed Settings";
  987. mes "is now set to: "+$icaStreak;
  988. next;
  989. goto L_option5;
  990. end;
  991. break;
  992.  
  993. case 3:
  994. L_5again2:
  995. mes "Show number of multiple kill in broadcast?(0:Disable|1:Enable) e.g. Makizushi just got an Ownage(5)";
  996. set @option,0;
  997. input @option;
  998. if ((@option > 1)||(@option < 0)){ mes "invalid input or out of range"; goto L_5again2;}
  999. set $icaMultiple, @option; //Show number of multiple kill in broadcast?(0:Disable|1:Enable) e.g. Makizushi just got an Ownage(5)
  1000. mes "Successfully changed Settings";
  1001. mes "is now set to: "+$icaMultiple;
  1002. next;
  1003. goto L_option5;
  1004. end;
  1005. break;
  1006.  
  1007.  
  1008. case 4:
  1009. L_5again3:
  1010. mes "Show number of nemesis in broadcast?(0:Disable|1:Enable) e.g. Epoque is owning Jguy(9)";
  1011. set @option,0;
  1012. input @option;
  1013. if ((@option > 1)||(@option < 0)){ mes "invalid input or out of range"; goto L_5again3;}
  1014. set $icaNemesis, @option; //Show number of nemesis in broadcast?(0:Disable|1:Enable) e.g. Epoque is owning Jguy(9)
  1015. mes "Successfully changed Settings";
  1016. mes "is now set to: "+$icaNemesis;
  1017. next;
  1018. goto L_option5;
  1019. end;
  1020. break;
  1021.  
  1022. case 5:
  1023. L_5again4:
  1024. mes "Show number of feed in broadcast?(0:Disable|1:Enable) e.g. Cookies is feeding `KeiKun(10)";
  1025. set @option,0;
  1026. input @option;
  1027. if ((@option > 1)||(@option < 0)){ mes "invalid input or out of range"; goto L_5again5;}
  1028. set $icaFeeder, @option; //Show number of feed in broadcast?(0:Disable|1:Enable) e.g. Cookies is feeding `KeiKun(10)
  1029. mes "Successfully changed Settings";
  1030. mes "is now set to: "+$icaFeeder;
  1031. next;
  1032. goto L_option5;
  1033. end;
  1034. break;
  1035.  
  1036. case 6:
  1037. L_5again5:
  1038. mes "Randomize the kill words?(0:Disable|1:Enable) e.g. Arcenciel Kill Word jTynne (0:Disable|Default:pwned)";
  1039. set @option,0;
  1040. input @option;
  1041. if ((@option > 1)||(@option < 0)){ mes "invalid input or out of range"; goto L_5again5;}
  1042. set $icaRandomKillWord, @option; //Randomize the kill words?(0:Disable|1:Enable) e.g. Arcenciel "Kill Word" jTynne (0:Disable|Default:"pwned")
  1043. mes "Successfully changed Settings";
  1044. mes "is now set to: "+$icaRandomKillWord;
  1045. next;
  1046. goto L_option5;
  1047. end;
  1048. break;
  1049.  
  1050. case 7:
  1051. L_5again6:
  1052. mes "Pay Back Period after some owns you (minimum of 5)? e.g. Player a killed you 5 times then you gave him a payback";
  1053. set @option,0;
  1054. input @option;
  1055. if (@option < 4){ mes "invalid input or out of range"; goto L_5again6;}
  1056. set $icapaybackperiod, @option; //Pay Back Period after some owns you (minimum of 5)? e.g. Player a killed you 5 times then you gave him a payback
  1057. mes "Successfully changed Settings";
  1058. mes "is now set to: "+$icapaybackperiod;
  1059. next;
  1060. goto L_option5;
  1061. end;
  1062. break;
  1063.  
  1064. case 8:
  1065. goto L_mainmenu;
  1066. end;
  1067. break;
  1068. }
  1069. case 6:
  1070. goto L_player;
  1071. next;
  1072. break;
  1073. case 7:
  1074. //set to default settings
  1075. set $icaSystem, 1; //Toggle PvP System (0:Disable|1:Enable)
  1076. set $icaServerType, 1; //Are you using TXT or SQL? (0:TXT|1:SQL)
  1077. set $icaGMLevel, 90; //GM levels above or equal this level will be ignored by the system
  1078. setarray $icaPvPMap$[0], "All"; //List all pvp maps here (Index 0:"All" to enable all maps)
  1079.  
  1080. //PvP Ladder
  1081. set $icaTop, 10; //What is the length of the list?
  1082. set $icaReset, 2; //Allow players to reset their PvP statistics? (0:Disable|1:Zeny|2:Cashpoint|3:Skull|4:Item)
  1083. set $icaZenyFee, 1000; //How much zeny you want to charge to reset their pvp stat?
  1084. set $icaCashFee, 1000; //How much cashpoint you want to charge to reset their pvp stat?
  1085. set $icaSkullFee, 1000; //How much skull you want to charge to reset their pvp stat?
  1086. set $icaResetItemFee, 7227; //What item you want to charge to reset their pvp stat? (7227=TCG change this to the one you want)
  1087. set $icaResetItemAmountFee, 1000; //What item you want to charge to reset their pvp stat?
  1088. set $icaAnnouncerFeeOption, 1000; //Option for payment? (0:Zeny|2:Cashpoint|3:Items)
  1089. set $icaAnnouncerZenyFee, 0; //How much zeny you want to charge to buy an announcer?
  1090. set $icaAnnouncerCashFee, 1000; //How much cashpoint you want to charge to buy an announcer?
  1091. set $icaAnnouncerSkullFee, 1000; //How much skull you want to charge to buy an announcer?
  1092. set $icaAnnouncerItemFee, 7227; //What item you want to charge to buy an announcer? (7227=TCG change this to the one you want)
  1093. set $icaAnnouncerItemAmountFee, 1000; //What item you want to charge to buy an announcer?
  1094.  
  1095. //Reward Setting (Every Kill)
  1096. set $icaMaxZeny, 1000000000; //What is the max zeny of the server?
  1097. set $icaZeny, 0; //Earn zeny each kill? (0:Disable)
  1098. set $icaCash, 0; //How much #CASHPOINT every kill? (0:Disable)
  1099. set $icaSkull, 0; //Collect player's skull each kill? (0:Disable|1:Enable)
  1100. setarray $icaItemID[0], 0; //Get items each kill? (0:Disable)
  1101. setarray $icaAmount[0], 0; //How many items per kill?
  1102.  
  1103. //Penalty Setting
  1104. set $icaFeed, 10; //How many kills before feeding is called? (10:Recommended)
  1105. set $icaPenalty, 0; //What is the penalty for the feedee? (0:Disable|1:Kill Rollback|2:Server Kick|3:Server Block)
  1106. set $icaKick, 0; //Who to kick? (0:Feedee|1:Feeder|2:Both)
  1107. set $icaRollback, 10; //How many times should the kill count rollback when feeding is called? (10:Recommended)
  1108.  
  1109. //Announcer Setting
  1110. set $icaBroadcast, 0; //Where do you want to broadcast? (0:bc_all|1:bc_map)
  1111. set $icaStreak, 1; //Show number of killing streak in broadcast? e.g. Ghost is Beyond Godlike(8)
  1112. set $icaMultiple, 1; //Show number of multiple kill in broadcast? e.g. Makizushi just got an Ownage(5)
  1113. set $icaNemesis, 1; //Show number of nemesis in broadcast? e.g. Epoque is owning Jguy(9)
  1114. set $icapaybackperiod, 5; //limit of nemesis before you can have you revenge e.g after keikun owned you 5 times or more you can have now your revenge
  1115. set $icaFeeder, 1; //Show number of feed in broadcast? e.g. Cookies is feeding `KeiKun(10)
  1116. set $icaRandomKillWord, 1; //Randomize the kill words? e.g. Arcenciel "Kill Word" jTynne (0:Disable|Default:"pwned")
  1117. setarray $icaKillWord$[0], "pwned", "killed", "disintegrated", "neutralized"; //Enable above setting for this to work
  1118. break;
  1119. case 8:
  1120. L_saveset:
  1121. mes "Save? (0:No|1:Yes)";
  1122. set @option,0;
  1123. input @option;
  1124. if ((@option<0)||(@option>1)){ mes "invalid input or out of range"; goto L_saveset;}
  1125. set $icaSave, @option; //Toggle PvP System (0:Disable|1:Enable)
  1126. mes "Successfully changed Settings";
  1127. mes "is now set to: "+$icaSave;
  1128. next;
  1129. goto L_mainmenu;
  1130. end;
  1131. break;
  1132.  
  1133. case 9:
  1134. query_sql "TRUNCATE TABLE `pvp_rank`";
  1135. query_sql "UPDATE `global_reg_value` set `value`='0' WHERE `str`='Kill' OR `str`='Death' OR `str`='KillingStreak' OR `str`='MultiKill' OR `str`='NemesisKill' OR `str`='FeedCount' OR `str`='KillingSpree' OR `str`='Dominating' OR `str`='MegaKill' OR `str`='Unstoppable' OR `str`='WickedSick' OR `str`='MonsterKill' OR `str`='Godlike' OR `str`='BeyondGodlike' OR `str`='DoubleKill' OR `str`='TripleKill' OR `str`='UltraKill' OR `str`='Rampage' OR `str`='Ownage'";
  1136. mes "Ladder Has been Reset";
  1137. close;
  1138. break;
  1139. case 10:
  1140. next;
  1141. mes "Bye~~~";
  1142. close;
  1143. break;
  1144. }
  1145. end;
  1146. close;
  1147. }
  1148. else
  1149. {
  1150. L_player:
  1151. mes "[Loki]"; mes "Hi! "+ strcharinfo(0) +" What can I do for you today?";
  1152. switch(select("Player Ranking:PvP Statistic:Announcer Setting")){
  1153. case 1: //Player Ranking
  1154. next;
  1155. if($icaServerType==1){
  1156. mes "[Top "+$icaTop+" PvP Players]";
  1157. mes "^0000FFKill^000000 | ^FF0000Death^000000 | ^FF22FFKDR^000000 | ^00FF00SK^000000 | ^666666MK^000000";
  1158. query_sql "SELECT `char`, `kill`, `death`, `kdr`, `killingstreak`, `multikill` FROM `pvp_rank` ORDER BY `pvp_rank`.`kill` DESC LIMIT "+$icaTop+"", .@char$, .@kill, .@death, .@kdr$, .@sk, .@multikillCTR;
  1159. for(set .@i, 0; .@i < getarraysize(.@char$); set .@i, .@i + 1){
  1160. mes .@i+1+". "+.@char$[.@i]+" ^0000FF"+.@kill[.@i]+"^000000 ^FF0000"+.@death[.@i]+"^000000 ^FF22FF"+.@kdr$[.@i]+"^000000 ^00FF00"+.@sk[.@i]+"^000000 ^666666"+.@multikillCTR[.@i]+"^000000 ";
  1161. }
  1162. close;
  1163. } else {
  1164. mes "Top "+$icaTop+" ranking is not yet implemented for this server type.";
  1165. }
  1166. break;
  1167. case 2: //PvP Statistic
  1168. next;
  1169. mes strcharinfo(0)+"'s PvP Statistic"; mes "^666666Kill:^000000 "+Kill+" ^666666Death:^000000 "+Death+" ^666666KDR:^000000 "+callfunc("KDR_Calculator", Kill, Death)+"^000000";
  1170. mes "^666666Kills:^000000 "+Kill+" ^666666Deaths:^000000 "+Death+" ^666666KDR:^000000 "+callfunc("KDR_Calculator", Kill, Death)+"";
  1171. mes "^666666Killing Streak:^000000 "+KillingStreak+" ^666666Multi-Kills:^000000 "+MultiKill+"";
  1172. switch(select("Killing Streak:Multi-Kill Streak:Nemesis Streak:Reset")){
  1173. case 1: //Killing Streak
  1174. next;
  1175. setarray .LSDotA$[0], ""+KillingSpree+"", ""+Dominating+"", ""+MegaKill+"", ""+Unstoppable+"", ""+WickedSick+"", ""+MonsterKill+"", ""+Godlike+"", ""+BeyondGodlike+"";
  1176. mes "Killing Streak Stats";
  1177. switch(#Announcer){
  1178. case 0:
  1179. for(set .@i, 0; .@i < getarraysize(.LSDotA$); set .@i, .@i + 1){
  1180. mes "^666666"+getvariableofnpc(.ESDotA$[.@i], "Versus")+"^000000: "+ .LSDotA$[.@i];
  1181. }
  1182. close;
  1183. default:
  1184. for(set .@i, 0; .@i < getarraysize(.LSDotA$); set .@i, .@i + 1){
  1185. mes "^666666"+getvariableofnpc(.ESHoN$[.@i], "Versus")+"^000000: "+ .LSDotA$[.@i];
  1186. }
  1187. close;
  1188. }
  1189. close;
  1190. break;
  1191. case 2: //Multi-Kill
  1192. next;
  1193. setarray .LMDotA$[0], ""+DoubleKill+"", ""+TripleKill+"", ""+UltraKill+"", ""+Rampage+"";
  1194. mes "Multi-Kill Stats";
  1195. switch(#Announcer){
  1196. case 0:
  1197. for(set .@i, 0; .@i < getarraysize(.LMDotA$); set .@i, .@i + 1){
  1198. mes "^666666"+getvariableofnpc(.EMDotA$[.@i], "Versus")+"^000000: "+ .LMDotA$[.@i];
  1199. }
  1200. close;
  1201. default:
  1202. for(set .@i, 0; .@i < getarraysize(.LMDotA$); set .@i, .@i + 1){
  1203. mes "^666666"+getvariableofnpc(.EMHoN$[.@i], "Versus")+"^000000: "+ .LMDotA$[.@i];
  1204. }
  1205. close;
  1206. }
  1207. break;
  1208. case 3: //Nemesis
  1209. next;
  1210. mes "Nemesis Stat";
  1211. mes "^666666Nemesis Kill^000000: "+NemesisKill;
  1212. mes "^666666Feed Count^000000: "+FeedCount;
  1213. close;
  1214. break;
  1215. case 4: //Reset Stat
  1216. next;
  1217. mes "[Loki]"; mes "Are you sure you want to reset your PvP Statistics?";
  1218. if($icaReset == 0){ mes "^FF0000Reset Option has been disabled^000000"; }
  1219. if($icaReset == 1){ mes "^FF0000Reset Fee:^000000 "+$icaZenyFee+" Zeny"; }
  1220. if($icaReset == 2){ mes "^FF0000Reset Fee:^000000 "+$icaCashFee+" Kill Point"; }
  1221. if($icaReset == 3){ mes "^FF0000Reset Fee:^000000 "+$icaSkullFee+" Skull"; }
  1222. if($icaReset == 4){ mes "^FF0000Reset Fee:^000000 "+$icaResetItemAmountFee+"pieces of "+getitemname($icaResetItemFee)+""; }
  1223. switch(select("No:Yes")){
  1224. case 1: close;
  1225. case 2:
  1226. switch($icaReset){
  1227. case 0: break;
  1228. case 1:
  1229. if(Zeny < $icaZenyFee){ next; mes "[Loki]"; mes "You don't have enough Zeny."; close; }
  1230. set Zeny, Zeny - $icaZenyFee; break;
  1231. case 2:
  1232. if(#CASHPOINTS < $icaCashFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }
  1233. set #CASHPOINTS, #CASHPOINTS - $icaCashFee; break;
  1234. case 3:
  1235. if(countitem(7420) < $icaSkullFee){ next; mes "[Loki]"; mes "You don't have enough Skull."; close; }
  1236. delitem 7420, $icaSkullFee; break;
  1237. case 4: if(countitem($icaAnnouncerItemFee) < $icaAnnouncerItemAmountFee){ next; mes "[Loki]"; mes "You don't have enough "+getitemname($icaResetItemFee)+"."; close; }
  1238. delitem $icaAnnouncerItemFee, $icaAnnouncerItemAmountFee; break;
  1239. default: break;
  1240. }
  1241. if($icaServerType==1){ query_sql "DELETE FROM `pvp_rank` WHERE `pvp_rank`.`char_id` = "+getcharid(0)+""; }
  1242. callsub OnPvPReset; announce "[Loki] Your PvP Statistic has been reset.",bc_self,0xFF0000; close;
  1243. }
  1244. close;
  1245. }
  1246. break;
  1247. close;
  1248. case 3: //Announcer Setting
  1249. next;
  1250. mes "[Loki]"; mes "What kind of announcer you want to use?"+$icaAnnouncerFeeOption;
  1251. if($icaAnnouncerFeeOption == 0){ mes "^FF0000Buy Announcer Option has been disabled^000000"; next; close; }
  1252. if($icaAnnouncerFeeOption == 1){ mes "^FF0000Buy Announcer Fee:^000000 "+$icaAnnouncerZenyFee+" Zeny"; }
  1253. if($icaAnnouncerFeeOption == 2){ mes "^FF0000Buy Announcer Fee:^000000 "+$icaAnnouncerCashFee+" Kill Point"; }
  1254. if($icaAnnouncerFeeOption == 3){ mes "^FF0000Buy Announcer Fee:^000000 "+$icaAnnouncerSkullFee+" Skull"; }
  1255. if($icaAnnouncerFeeOption == 4){ mes "^FF0000Buy Announcer Fee:^000000 "+$icaAnnouncerItemAmountFee+" pieces of "+getitemname($icaAnnouncerItemFee)+"."; }
  1256. L_Announce:
  1257. switch(select(""+((#Announcer == 0)?"^FF0000DotA^000000":"DotA")+":"+((#Announcer == 1)?"^FF0000HoN^000000":"HoN")+":"+((#Announcer == 2)?"^FF0000Ms. Pudding^000000":"Ms. Pudding")+":"+((#Announcer == 3)?"^FF0000Flamboyant^000000":"Flamboyant")+":"+((#Announcer == 4)?"^FF0000English^000000":"English")+":"+((#Announcer == 5)?"^FF0000Balls of Steel^000000":"Balls of Steel")+":"+((#Announcer == 6)?"^FF0000BreakyCPK^000000":"BreakyCPK")+":"+((#Announcer == 7)?"^FF0000Pimp^000000":"Pimp")+":"+((#Announcer == 8)?"^FF0000Seductive^000000":"Seductive")+"")){
  1258. case 1: //DotA
  1259. if(#Announcer == 0){ goto L_Announce; }
  1260. soundeffect "0_Startgame.wav", 0;
  1261. set #Announcer, 0;
  1262. announce "[Loki] DotA announcer has been configured to your account.",bc_self,0xFF0000;
  1263. close;
  1264. break;
  1265. case 2: //HoN
  1266. if(#Announcer == 1){ goto L_Announce; }
  1267. if(!#Hon){
  1268. next;
  1269. mes "^FF0000Do You Want to Purchase?^000000";
  1270. switch(select("No:Yes")){
  1271. case 1: close;
  1272. case 2:
  1273. switch($icaAnnouncerFeeOption){
  1274. case 0: break;
  1275. case 1:
  1276. if(Zeny < $icaAnnouncerZenyFee){ next; mes "[Loki]"; mes "You don't have enough Zeny."; close; }
  1277. set Zeny, Zeny - $icaZenyFee;
  1278. set #Hon, 1;
  1279. break;
  1280. case 2:
  1281. if(#CASHPOINTS < $icaAnnouncerCashFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }
  1282. set #CASHPOINTS, #CASHPOINTS - $icaCashFee;
  1283. set #Hon, 1;
  1284. break;
  1285. case 3:
  1286. if(countitem(7420) < $icaAnnouncerSkullFee){ next; mes "[Loki]"; mes "You don't have enough Skull."; close; }
  1287. delitem 7420, $icaSkullFee;
  1288. set #Hon, 1;
  1289. break;
  1290. case 4: if(countitem($icaAnnouncerItemFee) < $icaAnnouncerItemAmountFee){ next; mes "[Loki]"; mes "You don't have enough "+getitemname($icaAnnouncerItemFee)+"."; close; }
  1291. delitem $icaAnnouncerItemFee, $icaAnnouncerItemAmountFee;
  1292. set #Hon, 1;
  1293. break;
  1294. default: break;
  1295. }
  1296. }
  1297. }
  1298. soundeffect "1_Startgame.wav", 0;
  1299. set #Announcer, 1;
  1300. announce "[Loki] HoN announcer has been configured to your account.",bc_self,0xFF0000;
  1301. close;
  1302. break;
  1303. case 3: //Ms. Pudding
  1304. if(#Announcer == 2){ goto L_Announce; }
  1305. if(!#MsPudding){
  1306. next;
  1307. mes "^FF0000Do You Want to Purchase?^000000";
  1308. switch(select("No:Yes")){
  1309. case 1: close;
  1310. case 2:
  1311. switch($icaAnnouncerFeeOption){
  1312. case 0: break;
  1313. case 1:
  1314. if(Zeny < $icaAnnouncerZenyFee){ next; mes "[Loki]"; mes "You don't have enough Zeny."; close; }
  1315. set Zeny, Zeny - $icaZenyFee;
  1316. set #MsPudding, 1;
  1317. break;
  1318. case 2:
  1319. if(#CASHPOINTS < $icaAnnouncerCashFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }
  1320. set #CASHPOINTS, #CASHPOINTS - $icaCashFee;
  1321. set #MsPudding, 1;
  1322. break;
  1323. case 3:
  1324. if(countitem(7420) < $icaAnnouncerSkullFee){ next; mes "[Loki]"; mes "You don't have enough Skull."; close; }
  1325. delitem 7420, $icaSkullFee;
  1326. set #MsPudding, 1;
  1327. break;
  1328. case 4: if(countitem($icaAnnouncerItemFee) < $icaAnnouncerItemAmountFee){ next; mes "[Loki]"; mes "You don't have enough "+getitemname($icaAnnouncerItemFee)+"."; close; }
  1329. delitem $icaAnnouncerItemFee, $icaAnnouncerItemAmountFee;
  1330. set #MsPudding, 1;
  1331. break;
  1332. default: break;
  1333. }
  1334. }
  1335. }
  1336. soundeffect "2_Startgame.wav", 0;
  1337. set #Announcer, 2;
  1338. announce "[Loki] Ms. Pudding announcer has been configured to your account.",bc_self,0xFF0000;
  1339. close;
  1340. break;
  1341. case 4: //Flamboyant
  1342. if(#Announcer == 3){ goto L_Announce; }
  1343. if(!#Flamboyant){
  1344. next;
  1345. mes "^FF0000Do You Want to Purchase?^000000";
  1346. switch(select("No:Yes")){
  1347. case 1: close;
  1348. case 2:
  1349. switch($icaAnnouncerFeeOption){
  1350. case 0: break;
  1351. case 1:
  1352. if(Zeny < $icaAnnouncerZenyFee){ next; mes "[Loki]"; mes "You don't have enough Zeny."; close; }
  1353. set Zeny, Zeny - $icaZenyFee;
  1354. set #Flamboyant, 1;
  1355. break;
  1356. case 2:
  1357. if(#CASHPOINTS < $icaAnnouncerCashFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }
  1358. set #CASHPOINTS, #CASHPOINTS - $icaCashFee;
  1359. set #Flamboyant, 1;
  1360. break;
  1361. case 3:
  1362. if(countitem(7420) < $icaAnnouncerSkullFee){ next; mes "[Loki]"; mes "You don't have enough Skull."; close; }
  1363. delitem 7420, $icaSkullFee;
  1364. set #Flamboyant, 1;
  1365. break;
  1366. case 4: if(countitem($icaAnnouncerItemFee) < $icaAnnouncerItemAmountFee){ next; mes "[Loki]"; mes "You don't have enough "+getitemname($icaAnnouncerItemFee)+"."; close; }
  1367. delitem $icaAnnouncerItemFee, $icaAnnouncerItemAmountFee;
  1368. set #Flamboyant, 1;
  1369. break;
  1370. default: break;
  1371. }
  1372. }
  1373. }
  1374. soundeffect "3_Victory.wav", 0;
  1375. set #Announcer, 3;
  1376. announce "[Loki] Flamboyant announcer has been configured to your account.",bc_self,0xFF0000;
  1377. close;
  1378. break;
  1379. case 5: //English
  1380. if(#Announcer == 4){ goto L_Announce; }
  1381. if(!#English){
  1382. next;
  1383. mes "^FF0000Do You Want to Purchase?^000000";
  1384. switch(select("No:Yes")){
  1385. case 1: close;
  1386. case 2:
  1387. switch($icaAnnouncerFeeOption){
  1388. case 0: break;
  1389. case 1:
  1390. if(Zeny < $icaAnnouncerZenyFee){ next; mes "[Loki]"; mes "You don't have enough Zeny."; close; }
  1391. set Zeny, Zeny - $icaZenyFee;
  1392. set #English, 1;
  1393. break;
  1394. case 2:
  1395. if(#CASHPOINTS < $icaAnnouncerCashFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }
  1396. set #CASHPOINTS, #CASHPOINTS - $icaCashFee;
  1397. set #English, 1;
  1398. break;
  1399. case 3:
  1400. if(countitem(7420) < $icaAnnouncerSkullFee){ next; mes "[Loki]"; mes "You don't have enough Skull."; close; }
  1401. delitem 7420, $icaSkullFee;
  1402. set #English, 1;
  1403. break;
  1404. case 4: if(countitem($icaAnnouncerItemFee) < $icaAnnouncerItemAmountFee){ next; mes "[Loki]"; mes "You don't have enough "+getitemname($icaAnnouncerItemFee)+"."; close; }
  1405. delitem $icaAnnouncerItemFee, $icaAnnouncerItemAmountFee;
  1406. set #English, 1;
  1407. break;
  1408. default: break;
  1409. }
  1410. }
  1411. }
  1412. soundeffect "4_Startgame.wav", 0;
  1413. set #Announcer, 4;
  1414. announce "[Loki] English announcer has been configured to your account.",bc_self,0xFF0000;
  1415. close;
  1416. break;
  1417. case 6: //Balls of Steel
  1418. if(#Announcer == 5){ goto L_Announce; }
  1419. if(!#BallsofSteel){
  1420. next;
  1421. mes "^FF0000Do You Want to Purchase?^000000";
  1422. switch(select("No:Yes")){
  1423. case 1: close;
  1424. case 2:
  1425. switch($icaAnnouncerFeeOption){
  1426. case 0: break;
  1427. case 1:
  1428. if(Zeny < $icaAnnouncerZenyFee){ next; mes "[Loki]"; mes "You don't have enough Zeny."; close; }
  1429. set Zeny, Zeny - $icaZenyFee;
  1430. set #BallsofSteel, 1;
  1431. break;
  1432. case 2:
  1433. if(#CASHPOINTS < $icaAnnouncerCashFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }
  1434. set #CASHPOINTS, #CASHPOINTS - $icaCashFee;
  1435. set #BallsofSteel, 1;
  1436. break;
  1437. case 3:
  1438. if(countitem(7420) < $icaAnnouncerSkullFee){ next; mes "[Loki]"; mes "You don't have enough Skull."; close; }
  1439. delitem 7420, $icaSkullFee;
  1440. set #BallsofSteel, 1;
  1441. break;
  1442. case 4: if(countitem($icaAnnouncerItemFee) < $icaAnnouncerItemAmountFee){ next; mes "[Loki]"; mes "You don't have enough "+getitemname($icaAnnouncerItemFee)+"."; close; }
  1443. delitem $icaAnnouncerItemFee, $icaAnnouncerItemAmountFee;
  1444. set #BallsofSteel, 1;
  1445. break;
  1446. default: break;
  1447. }
  1448. }
  1449. }
  1450. soundeffect "5_Startgame.wav", 0;
  1451. set #Announcer, 5;
  1452. announce "[Loki] Balls of Steel announcer has been configured to your account.",bc_self,0xFF0000;
  1453. close;
  1454. break;
  1455. case 7: //BreakyCPK
  1456. if(#Announcer == 6){ goto L_Announce; }
  1457. if(!#BreakyCPK){
  1458. next;
  1459. mes "^FF0000Do You Want to Purchase?^000000";
  1460. switch(select("No:Yes")){
  1461. case 1: close;
  1462. case 2:
  1463. switch($icaAnnouncerFeeOption){
  1464. case 0: break;
  1465. case 1:
  1466. if(Zeny < $icaAnnouncerZenyFee){ next; mes "[Loki]"; mes "You don't have enough Zeny."; close; }
  1467. set Zeny, Zeny - $icaZenyFee;
  1468. set #BreakyCPK, 1;
  1469. break;
  1470. case 2:
  1471. if(#CASHPOINTS < $icaAnnouncerCashFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }
  1472. set #CASHPOINTS, #CASHPOINTS - $icaCashFee;
  1473. set #BreakyCPK, 1;
  1474. break;
  1475. case 3:
  1476. if(countitem(7420) < $icaAnnouncerSkullFee){ next; mes "[Loki]"; mes "You don't have enough Skull."; close; }
  1477. delitem 7420, $icaSkullFee;
  1478. set #BreakyCPK, 1;
  1479. break;
  1480. case 4: if(countitem($icaAnnouncerItemFee) < $icaAnnouncerItemAmountFee){ next; mes "[Loki]"; mes "You don't have enough "+getitemname($icaAnnouncerItemFee)+"."; close; }
  1481. delitem $icaAnnouncerItemFee, $icaAnnouncerItemAmountFee;
  1482. set #BreakyCPK, 1;
  1483. break;
  1484. default: break;
  1485. }
  1486. }
  1487. }
  1488. soundeffect "6_Startgame.wav", 0;
  1489. set #Announcer, 6;
  1490. announce "[Loki] BreakyCPK announcer has been configured to your account.",bc_self,0xFF0000;
  1491. close;
  1492. break;
  1493. case 8: //pimp
  1494. if(#Announcer == 7){ goto L_Announce; }
  1495. if(!#PIMP){
  1496. next;
  1497. mes "^FF0000Do You Want to Purchase?^000000";
  1498. switch(select("No:Yes")){
  1499. case 1: close;
  1500. case 2:
  1501. switch($icaAnnouncerFeeOption){
  1502. case 0: break;
  1503. case 1:
  1504. if(Zeny < $icaAnnouncerZenyFee){ next; mes "[Loki]"; mes "You don't have enough Zeny."; close; }
  1505. set Zeny, Zeny - $icaZenyFee;
  1506. set #PIMP, 1;
  1507. break;
  1508. case 2:
  1509. if(#CASHPOINTS < $icaAnnouncerCashFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }
  1510. set #CASHPOINTS, #CASHPOINTS - $icaCashFee;
  1511. set #PIMP, 1;
  1512. break;
  1513. case 3:
  1514. if(countitem(7420) < $icaAnnouncerSkullFee){ next; mes "[Loki]"; mes "You don't have enough Skull."; close; }
  1515. delitem 7420, $icaSkullFee;
  1516. set #PIMP, 1;
  1517. break;
  1518. case 4: if(countitem($icaAnnouncerItemFee) < $icaAnnouncerItemAmountFee){ next; mes "[Loki]"; mes "You don't have enough "+getitemname($icaAnnouncerItemFee)+"."; close; }
  1519. delitem $icaAnnouncerItemFee, $icaAnnouncerItemAmountFee;
  1520. set #PIMP, 1;
  1521. break;
  1522. default: break;
  1523. }
  1524. }
  1525. }
  1526. soundeffect "7_Startgame.wav", 0;
  1527. set #Announcer, 7;
  1528. announce "[Loki] Pimp announcer has been configured to your account.",bc_self,0xFF0000;
  1529. close;
  1530. break;
  1531. case 9: //seductive
  1532. if(#Announcer == 8){ goto L_Announce; }
  1533. if(!#SEDUCTIVE){
  1534. next;
  1535. mes "^FF0000Do You Want to Purchase?^000000";
  1536. switch(select("No:Yes")){
  1537. case 1: close;
  1538. case 2:
  1539. switch($icaAnnouncerFeeOption){
  1540. case 0: break;
  1541. case 1:
  1542. if(Zeny < $icaAnnouncerZenyFee){ next; mes "[Loki]"; mes "You don't have enough Zeny."; close; }
  1543. set Zeny, Zeny - $icaZenyFee;
  1544. set #SEDUCTIVE, 1;
  1545. break;
  1546. case 2:
  1547. if(#CASHPOINTS < $icaAnnouncerCashFee){ next; mes "[Loki]"; mes "You don't have enough Kill Point."; close; }
  1548. set #CASHPOINTS, #CASHPOINTS - $icaCashFee;
  1549. set #SEDUCTIVE, 1;
  1550. break;
  1551. case 3:
  1552. if(countitem(7420) < $icaAnnouncerSkullFee){ next; mes "[Loki]"; mes "You don't have enough Skull."; close; }
  1553. delitem 7420, $icaSkullFee;
  1554. set #SEDUCTIVE, 1;
  1555. break;
  1556. case 4: if(countitem($icaAnnouncerItemFee) < $icaAnnouncerItemAmountFee){ next; mes "[Loki]"; mes "You don't have enough "+getitemname($icaAnnouncerItemFee)+"."; close; }
  1557. delitem $icaAnnouncerItemFee, $icaAnnouncerItemAmountFee;
  1558. set #SEDUCTIVE, 1;
  1559. break;
  1560. default: break;
  1561. }
  1562. }
  1563. }
  1564. soundeffect "8_Startgame.wav", 0;
  1565. set #Announcer, 8;
  1566. announce "[Loki] Seductive announcer has been configured to your account.",bc_self,0xFF0000;
  1567. close;
  1568. break;
  1569. default: close;break;
  1570. }
  1571. end;
  1572. }
  1573. close;
  1574.  
  1575. OnPvPReset:
  1576. set Kill, 0;
  1577. set Death, 0;
  1578. set KillingStreak, 0;
  1579. set MultiKill, 0;
  1580. set KillingSpree, 0;
  1581. set Dominating, 0;
  1582. set MegaKill, 0;
  1583. set Unstoppable, 0;
  1584. set WickedSick, 0;
  1585. set MonsterKill, 0;
  1586. set Godlike, 0;
  1587. set BeyondGodlike, 0;
  1588. set DoubleKill, 0;
  1589. set TripleKill, 0;
  1590. set UltraKill, 0;
  1591. set Rampage, 0;
  1592. set Ownage, 0;
  1593. set NemesisKill, 0;
  1594. set FeedCount, 0;
  1595. return;
  1596. }
  1597. }
  1598.  
  1599. //Ghost's KDR Algorithm
  1600. function script KDR_Calculator {
  1601. if(!getarg(1)) { debugmes "Error in KDR function, getarg(1) invalid value"; return 0; } // [Lighta]
  1602. if(getarg(0) >= getarg(1)){
  1603. if(getarg(1)){
  1604. set .@i, getarg(0)/getarg(1);
  1605. if((getarg(0)%getarg(1)) == 0){ return .@i+".00"; }
  1606. set .@j, (getarg(0)%getarg(1))*100/getarg(1);
  1607. return .@i+"."+.@j;
  1608. } else {
  1609. return getarg(0)+".00";
  1610. }
  1611. }
  1612. if(getarg(0) < getarg(1)){
  1613. if(getarg(0)){
  1614. set .@i, (getarg(0)*10)/getarg(1);
  1615. set .@j, ((getarg(0)*10)%getarg(1))*10/getarg(1);
  1616. return "0."+.@i +.@j;
  1617. } else {
  1618. return "0.00";
  1619. }
  1620. }
  1621. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement