Advertisement
hendra814

MVP Ladder 3.4

Jun 26th, 2012
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 23.78 KB | None | 0 0
  1. //===== eAthena Script ======================================
  2. //= MvP Ladder Game Script
  3. //===== By: ===============================================
  4. //= by aftermath (1.0)
  5. //= by ~AnnieRuru~ (2.0)
  6. //= by Hendra814
  7. //===== Current Version: ======================================
  8. //= 3.4
  9. //===== Compatible With: =====================================
  10. //= eAthena 12766 Trunk
  11. //===== Description: =========================================
  12. //= This script warps you to an arena where you have to kill all MvP bosses in
  13. //= accending or more like from weakest to strongest.
  14. //===== Additional Comments: ==================================
  15. //= 1.0 by aftermath
  16. //= 1.1 Fixed exploit where 2 or more users can get it by pressing "Yes, lets get it on."
  17. //=   at the same time.
  18. //= 2.0 ~by AnnieRuru~
  19. //= rewrite everything with new MVPs
  20. //= 3.0 party mode
  21. //= 3.1 added feature & fix various bugs
  22. //= 3.2 fix 2 party register at same time will make 2 MVPs in the map
  23. //= 3.3 big updates -> copy everything from 2.4a
  24. //- 3.4 FIx NPC klik warning and error chat room
  25. //========================================================
  26. function    script  int__   {
  27.     set .@num, atoi(getarg(0)+"");
  28.     if ( .@num == 0 || .@num >= 2147483647 ) return getarg(0);
  29.     set .@l, getstrlen(.@num+"");
  30.     for ( set .@i,0; .@i < .@l; set .@i, .@i + 1 ) {
  31.         set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$;
  32.         if ( (.@i+1) % 3 == 0 && .@i+1 != .@l ) set .@num$, ","+ .@num$;
  33.     }
  34. }
  35. // Configure Mapflags ------------------------
  36. //guild_vs2-2   mapflag nobranch
  37. guild_vs2-2 mapflag nomemo
  38. //guild_vs2-2   mapflag nopenalty   // disable exp loss
  39. //guild_vs2-2   mapflag noreturn
  40. guild_vs2-2 mapflag nosave  SavePoint
  41. guild_vs2-2 mapflag noteleport
  42. guild_vs2-2 mapflag nowarp
  43. guild_vs2-2 mapflag nowarpto
  44. //guild_vs2-2   mapflag nomobloot   // disable monster drop loots,
  45. //guild_vs2-2   mapflag nomvploot   // 2 of these
  46. guild_vs2-2 mapflag loadevent
  47. guild_vs2-2 mapflag partylock
  48.  
  49. guild_vs2-2,0,0,0   script  Party ev_Mvp    -1,{
  50. OnInit:
  51. //  Configurations -----------------------------------------------------
  52.  
  53. //  distance check. Default is ON ... however ... some people complain it bug ...
  54.     set .distancecheck, 1;
  55.  
  56. //  set entrance fee. Note: Only choose zeny OR item. If item amount if specify, the script will use item
  57.     set .entryitemid, 674; // 674 - mithril coin
  58.     set .entryitemamount, 0; // by default is using zeny
  59.     set .entryzeny, 100000;
  60.  
  61. //  id of each mvp. you can add more
  62.     setarray .mvpid[1],
  63.         1086,// Golden Thief Bug    64
  64.         1115,// Eddga               65
  65.         1150,// Moonlight Flower    67
  66.         1159,// Phreeoni            69
  67.         1112,// Drake               70
  68.         1583,// Tao Gunka           70
  69.         1492,// Incantation Samurai 71
  70.         1046,// Doppelgangger       72
  71.         1252,// Garm                73
  72.         1418,// Evil Snake Lord     73
  73.         1059,// Mistress            74
  74.         1190,// Orc Lord            74
  75.         1087,// Orc Hero            77
  76.         1251,// Knight of Windstorm 77
  77.         1038,// Osiris              78
  78.         1658,// Ygnizem             79
  79.         1272,// Dark Lord           80
  80.         1871,// Fallen Bishop       80
  81.         1039,// Baphomet            81
  82.         1147,// Maya                81
  83.         1785,// Atroce              82
  84.         1389,// Dracula             85
  85.         1630,// Bacsojin            85
  86.         1885,// Gorynych            85
  87.         1623,// RSX 0806            86
  88.         1511,// Amon Ra             88
  89.         1688,// Lady Tanee          89
  90.         1768,// Gloom Under Night   89
  91.         1719,// Datale              90
  92.         1734,// Kiel D-01           90
  93.         1157,// Pharaoh             93
  94.         1373,// Lord of Death       94
  95.         1312,// Turtle General      97
  96.         1779,// Ktullanux           98
  97.         1874,// Beelzebub           98
  98.         rand(1646,1651),//  Lord Knight Seyren 99 || Assassin Cross Eremes 99 || Whitesmith Harword 99 || High Priest Magaleta 99 || Sniper Shecil 99 || High Wizard Katrinn 99
  99.         1708,// Thanatos            99
  100.         1751,// Valkyrie Randgris   99
  101.         1832;// Ifrit               99
  102.  
  103. //  total rounds - Default has 39 rounds
  104.     set .totalround, getarraysize(.mvpid) -1;
  105.  
  106. //  set the zeny reward. Will distribute evenly among all party member who still survive in the map
  107.     set .reward[1], 10000;
  108.     set .reward[2], 20000;
  109.     set .reward[3], 30000;
  110.     set .reward[4], 40000;
  111.     set .reward[5], 50000;
  112.     set .reward[6], 60000;
  113.     set .reward[7], 70000;
  114.     set .reward[8], 80000;
  115.     set .reward[9], 90000;
  116.     set .reward[10], 100000;
  117.     set .reward[11], 110000;
  118.     set .reward[12], 120000;
  119.     set .reward[13], 130000;
  120.     set .reward[14], 140000;
  121.     set .reward[15], 150000;
  122.     set .reward[16], 160000;
  123.     set .reward[17], 170000;
  124.     set .reward[18], 180000;
  125.     set .reward[19], 190000;
  126.     set .reward[20], 200000;
  127.     set .reward[21], 210000;
  128.     set .reward[22], 220000;
  129.     set .reward[23], 230000;
  130.     set .reward[24], 240000;
  131.     set .reward[25], 250000;
  132.     set .reward[26], 260000;
  133.     set .reward[27], 270000;
  134.     set .reward[28], 280000;
  135.     set .reward[29], 290000;
  136.     set .reward[30], 300000;
  137.     set .reward[31], 310000;
  138.     set .reward[32], 320000;
  139.     set .reward[33], 330000;
  140.     set .reward[34], 340000;
  141.     set .reward[35], 350000;
  142.     set .reward[36], 360000;
  143.     set .reward[37], 370000;
  144.     set .reward[38], 380000;
  145.     set .reward[39], 390000;
  146.  
  147. //  Time attack. The party has to beat all MVPs within # minutes. When the time is up, all party members still inside the map will warp to respawn point. Do Not set this as 0
  148.     set .timeout, 60;
  149.  
  150. //  set item reward on completing each round. Every party member still alive inside the room will get this. STACK with zeny reward
  151.     set .itemid, 608; // 608 - Yggdrasil Seed
  152.     set .itemamount, 0;
  153.  
  154. //  item reward on completion whole ladder. Every party members inside the map ( survive or not ) will get this.
  155.     set .lastitemid, 607; // 607 - Yggdrasil Berry
  156.     set .lastitemamount, 10;
  157.  
  158. //  item reward when beaten the best record. It will only give to the player who register the game, if doesn't online will give to the member who land the last hit on last MVP
  159.     set .topitemid, 607;
  160.     set .topitemamount, 10;
  161.  
  162. //  time delay for next round, in seconds. Default is 3
  163.     set .delay, 5;
  164.  
  165. //  minimum amount of party members to participate this game
  166.     set .amount, 3;
  167.  
  168. //  set respawn point after finished the mvp ladder game
  169.     set .respawnmap$, "SavePoint";
  170.     set .respawnx, 0;
  171.     set .respawny, 0;
  172.  
  173. //  set this to disallow all party members use the room for # MINUTES after registering, prevent same player go in again and again
  174.     set .usagedeny_player, 0; // deny that character each time register
  175.     set .usagedeny_account, 0; // deny whole account each time register
  176.  
  177. //  make announcement when a party join MVP ladder
  178.     set .joinann, 2; // 0 - disable announcement, 1- announce to server, 2- announce to town where mvp ladder warper located
  179. //  make announcement when a party finished MVP ladder
  180.     set .quitann, 2; // 0 - disable announcement, 1- announce to server, 2- announce to town where mvp ladder warper located
  181.  
  182. //  minimum GM level in your server consider as Support GM, to allow these GMs get into this map
  183. //  in the case player complain this script bug again ...
  184. //  please tell them to use @jumpto or @warp
  185.     set .mingmlvl, 20;
  186.  
  187. //  minimum gm level can reset the deny usage, to allow that player can play this game for 1 more time without waiting
  188. //  this setting also allow the GM himself can play this ladder without the deny usage
  189.     set .gmcandeny, 70;
  190.  
  191. //  minimum gm level can reset the best record.
  192.     set .gmlvlreset, 99;
  193.  
  194. //  Config Ends --------------------------------------------------------------
  195.  
  196.     getmapxy .eventmap$, .@x, .@y, 1;
  197.     if ( .joinann < 0 || .joinann > 2 ) set .joinann, 0;
  198.     set .usagedeny_player, .usagedeny_player * 60;
  199.     set .usagedeny_account, .usagedeny_account * 60;
  200.     end;
  201.  
  202. OnEvent:
  203.     set .originaid, getcharid(3);
  204.     set .origincid, getcharid(0);
  205.     set .inuseid, getcharid(1);
  206.     set .round, 0;
  207.     killmonsterall .eventmap$;
  208.     announce "You have "+ .timeout +" minutes to complete total "+ .totalround +" Rounds.", 1;
  209.     getpartymember .inuseid, 1;
  210.     getpartymember .inuseid, 2;
  211.     deletearray .members$, 128;
  212.     set .memberstotal, 0;
  213.     for ( set .@i, 0; .@i < $@partymembercount; set .@i, .@i +1 ) {
  214.         if ( !isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) continue;
  215.         attachrid $@partymemberaid[.@i];
  216.         set .members$[ .memberstotal ], strcharinfo(0);
  217.         set .memberstotal, .memberstotal +1 ;
  218.     }
  219.     attachrid .originaid;
  220. OnMvpDead:
  221.     if ( getcharid(1) != .inuseid ) {
  222.         mapannounce .eventmap$, "An Intruder !! "+ strcharinfo(0) +" attempt to interrupt your MVP ladder game !", 0;
  223.     }
  224.     set .round, .round + 1;
  225.     set .@origin, getcharid(3);
  226.     if ( .round >= 2 ) {
  227.         getpartymember .inuseid, 1;
  228.         getpartymember .inuseid, 2;
  229.         for ( set .@i, 0; .@i < $@partymembercount; set .@i, .@i +1 ) {
  230.             if ( !isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) continue;
  231.             attachrid $@partymemberaid[.@i];
  232.             getmapxy .@map$, .@x, .@y, 0;
  233.             if ( .@map$ != .eventmap$ || hp == 0 ) continue;
  234.             set .@onlineaid[ getarraysize(.@onlineaid) ], getcharid(3);
  235.         }
  236.         set .@online, getarraysize(.@onlineaid);
  237.         if ( .reward[.round-1] )
  238.             set .@reward, .reward[.round-1] / .@online;
  239.         for ( set .@i, 0; .@i < .@online; set .@i, .@i +1 ) {
  240.             attachrid .@onlineaid[.@i];
  241.             if ( .reward[.round-1] ) {
  242.                 message strcharinfo(0), "You have rewarded "+ callfunc("int__", .@reward) +" zeny";
  243.                 set zeny, zeny + .@reward;
  244.             }
  245.             if ( .itemamount && .round != .totalround +1 )
  246.                 getitem .itemid, .itemamount;
  247.         }
  248.         attachrid .@origin;
  249.     }
  250.     if ( .round == .totalround +1 ) {
  251.         announce "Amazing ... Your Party able to beat all the MVPs !",1;
  252.         getpartymember .inuseid, 1;
  253.         getpartymember .inuseid, 2;
  254.         for ( set .@i, 0; .@i < $@partymembercount; set .@i, .@i +1 ) {
  255.             if ( !isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) continue;
  256.             attachrid $@partymemberaid[.@i];
  257.             getmapxy .@map$, .@x, .@y, 0;
  258.             if ( .@map$ != .eventmap$ ) continue;
  259.             getitem .lastitemid, .lastitemamount;
  260.         }
  261.         attachrid .@origin;
  262.         set .@timeused, .timeout * 60 - ( .hour * 60*60 + .min * 60 + .sec );
  263.         if ( $mvpladp_time == 0 || .@timeused < $mvpladp_time ) {
  264.             announce "And your party beat the RECORD !!! [ "+( .@timeused / 60 )+" min "+( .@timeused % 60 )+" sec ]", 1;
  265.             if ( isloggedin( .originaid, .origincid ) ) {
  266.                 attachrid .originaid;
  267.                 getmapxy .@map$, .@x, .@y, 0;
  268.                 if ( .@map$ == .eventmap$ ) {
  269.                     announce "The Special Reward goes to "+ strcharinfo(0) +" because "+( (sex)?"he":"she" )+" register this game.", 1;
  270.                     getitem .topitemid, .topitemamount;
  271.                     set .@already, 1;
  272.                 }
  273.                 attachrid .@origin;
  274.             }
  275.             if ( .@already == 0 ) {
  276.                 announce "The Special Reward goes to "+ strcharinfo(0) +" because "+( (sex)?"he":"she" )+" kills the last MVP.", 1;
  277.                 getitem .topitemid, .topitemamount;
  278.             }
  279.             deletearray $mvpladp_name$, 128;
  280.             set $mvpladp_name$, strcharinfo(1);
  281.             copyarray $mvpladp_name$[1], .members$[0], .memberstotal;
  282.             set $mvpladp_time, .@timeused;
  283.         }
  284.         else
  285.             announce "Time used [ "+( .@timeused / 60 )+" min "+( .@timeused % 60 )+" sec ]", 1;
  286.         set .@inuseid, .inuseid;
  287.         sleep 10000;
  288.         getpartymember .@inuseid, 1;
  289.         getpartymember .@inuseid, 2;
  290.         for ( set .@i, 0; .@i < $@partymembercount; set .@i, .@i +1 ) {
  291.             if ( !isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) continue;
  292.             attachrid $@partymemberaid[.@i];
  293.             getmapxy .@map$, .@x, .@y, 0;
  294.             if ( .@map$ != .eventmap$ ) continue;
  295.             warp .respawnmap$, .respawnx, .respawny;
  296.         }
  297.         if ( .quitann == 1 )
  298.             announce getpartyname(.@inuseid) +" party has finished the Party MvP ladder !", 0;
  299.         else if ( .quitann == 2 )
  300.             mapannounce .npcmap$, getpartyname(.@inuseid) +" has finished the Party MvP ladder !", 0;
  301.         end;
  302.     }
  303.     else if ( .round == .totalround )
  304.         announce "Final Round will begin in "+ .delay +" sec.", 1;
  305.     else
  306.         announce "Round "+ .round +" will begin in "+ .delay +" sec.", 1;
  307.     sleep .delay * 1000;
  308.     if ( .mvpid[.round] >= 1646 && .mvpid[.round] <= 1651 )
  309.         monster .eventmap$,0,0,"--ja--",rand(1646,1651),1,"Party ev_Mvp::OnMvpDead";
  310.     else
  311.         monster .eventmap$,0,0,"--ja--",.mvpid[.round],1,"Party ev_Mvp::OnMvpDead";
  312.     end;
  313.  
  314. OnPCLoadMapEvent:
  315.     sleep2 1;
  316.     getmapxy .@map$, .@x, .@y, 0;
  317.     if ( .@map$ != .eventmap$ ) end;
  318.     if ( getcharid(1) == .inuseid || getgmlevel() >= .mingmlvl ) end;
  319.     warp .respawnmap$, .respawnx, .respawny;
  320.     announce "You are forbidden to enter Party MVP ladder game without registration.", 3, 0xFF0000;
  321.     end;
  322. }
  323.  
  324. prontera,162,187,3  script  Party MvP Room  56,{
  325.     mes "[^FF0000MvP Ladder Warper^000000]";
  326.     mes "Welcome to MvP ladder game.";
  327.     mes "In this game, your party have to kill every single MvP monster in accending order, starting from weakest to the strongest.";
  328.     mes "Everytime your party beaten a MVP, you will reward with zeny.";
  329.     if ( getvariableofnpc(.lastitemamount,"Party ev_Mvp") )
  330.         mes "If you can finish the MVP ladder, everyone of you will earn "+ getvariableofnpc(.lastitemamount,"Party ev_Mvp") +" "+ getitemname(getvariableofnpc(.lastitemid,"Party ev_Mvp")) +".";
  331.     if ( getvariableofnpc(.entryitemamount,"Party ev_Mvp") )
  332.         mes "But the person who ask me to start the game must pay me "+ getvariableofnpc(.entryitemamount,"Party ev_Mvp") +" "+ getitemname(getvariableofnpc(.entryitemid,"Party ev_Mvp")) +".";
  333.     else if ( getvariableofnpc(.entryzeny,"Party ev_Mvp") )
  334.         mes "But the person who ask me to start the game must pay me "+ callfunc("int__", getvariableofnpc(.entryzeny,"Party ev_Mvp") ) +" zeny";
  335.     next;
  336.     mes "[^FF0000MvP Ladder Warper^000000]";
  337.     mes "So... do you want to play the game?";
  338.     next;
  339.     if ( select("Yes, lets get it on.","Show me the best record.","No.",( getgmlevel() >= getvariableofnpc(.gmcandeny,"Party ev_Mvp") && ( getvariableofnpc(.usagedeny_player,"Party ev_Mvp") || getvariableofnpc(.usagedeny_account,"Party ev_Mvp") ) )?"Reset a party deny usage":"") == 3 ) {
  340.         mes "[^FF0000MvP Ladder Warper^000000]";
  341.         mes "When your party are strong enough to complete the game, please come back.";
  342.         close;
  343.     }
  344.     else if ( @menu == 2 ) {
  345.         mes "[^FF0000MvP Ladder Warper^000000]";
  346.         if ( $mvpladp_time == 0 ) {
  347.             mes "Nobody finish this game before.";
  348.             close;
  349.         }
  350.         else {
  351.             mes "The best record is";
  352.             mes "[ "+( $mvpladp_time / 60 )+" min "+( $mvpladp_time % 60 )+" sec ]";
  353.             mes "By the party ^EE8800"+ $mvpladp_name$ +"^000000.";
  354.             for ( set .@i, 1; .@i < getarraysize($mvpladp_name$); set .@i, .@i +1 )
  355.                 mes .@i +". ^0000FF"+ $mvpladp_name$[.@i] +"^000000";
  356.             if ( getgmlevel() < getvariableofnpc(.gmlvlreset,"Party ev_Mvp") ) close;
  357.             next;
  358.             if ( select("Close.", "Reset it.") == 1 ) close;
  359.             if ( select("Nevermind.", "I really want to reset it.") == 1 ) close;
  360.             mes "[^FF0000MvP Ladder Warper^000000]";
  361.             mes "Record reset successfully.";
  362.             deletearray $mvpladp_name$, 128;
  363.             set $mvpladp_time, 0;
  364.             close;
  365.         }
  366.     }
  367.     else if ( @menu == 4 ) {
  368.         if ( getgmlevel() < getvariableofnpc(.gmcandeny,"Party ev_Mvp") ) end;
  369.         mes "[^FF0000MvP Ladder Warper^000000]";
  370.         mes "Enter any player name of that party, every online party member will be reset.";
  371.         next;
  372.         input .@name$;
  373.         set .@aid, getcharid(3, .@name$);
  374.         set .@pid, getcharid(1, .@name$);
  375.         mes "[^FF0000MvP Ladder Warper^000000]";
  376.         if ( .@aid == 0 ) {
  377.             mes "That player is not online or not exist.";
  378.             close;
  379.         }
  380.         else if ( .@pid == 0 ) {
  381.             mes rid2name(.@aid) +" doesn't has a party.";
  382.             close;
  383.         }
  384.         set .@origin, getcharid(3);
  385.         getpartymember .@pid, 1;
  386.         getpartymember .@pid, 2;
  387.         for ( set .@i, 0; .@i < $@partymembercount; set .@i, .@i +1 ) {
  388.             if ( !isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) continue;
  389.             attachrid $@partymemberaid[.@i];
  390.             set mvpladp_deny, 0;
  391.             set #mvpladp_deny, 0;
  392.         }
  393.         attachrid .@origin;
  394.         mes rid2name(.@aid) +"'s party can play this game now.";
  395.         close;
  396.     }
  397.     else if ( getcharid(1) == 0 ) {
  398.         mes "[^FF0000MvP Ladder Warper^000000]";
  399.         mes "You don't have a party";
  400.         close;
  401.     }
  402.     getpartymember getcharid(1), 1;
  403.     getpartymember getcharid(1), 2;
  404.     if ( $@partymembercount < getvariableofnpc(.amount,"Party ev_Mvp") ) {
  405.         mes "[^FF0000MvP Ladder Warper^000000]";
  406.         mes "Your party has too few members.";
  407.         mes "You must form a party at least "+ getvariableofnpc(.amount,"Party ev_Mvp") +" members and at least has "+ getvariableofnpc(.amount,"Party ev_Mvp") +" party members online to start MVP ladder game.";
  408.         close;
  409.     }
  410.     set .@origin, getcharid(3);
  411.     for ( set .@i, 0; .@i < $@partymembercount; set .@i, .@i +1 ) {
  412.         if ( !isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) continue;
  413.         attachrid $@partymemberaid[.@i];
  414.         if ( gettimetick(2) < mvpladp_deny + getvariableofnpc(.usagedeny_player,"Party ev_Mvp") )
  415.             set .@denytime[ .@deny ], mvpladp_deny + getvariableofnpc(.usagedeny_player,"Party ev_Mvp") - gettimetick(2);
  416.         if ( gettimetick(2) < #mvpladp_deny + getvariableofnpc(.usagedeny_account,"Party ev_Mvp") ) {
  417.             set .@denytime2[ .@deny ], #mvpladp_deny + getvariableofnpc(.usagedeny_account,"Party ev_Mvp") - gettimetick(2);
  418.             if ( .@denytime2[ .@deny ] > .@denytime[ .@deny ] )
  419.                 set .@denytime[ .@deny ], .@denytime2[ .@deny ];
  420.         }
  421.         if ( .@denytime[ .@deny ] ) {
  422.             set .@denyname$[ .@deny ], strcharinfo(0);
  423.             set .@deny, .@deny +1 ;
  424.         }
  425.         if ( getvariableofnpc(.distancecheck,"Party ev_Mvp") ) {
  426.             getmapxy .@map$, .@x, .@y, 0;
  427.             if ( distance ( .@x, .@y, .x, .y ) > 15 || .@map$ != getvariableofnpc(.npcmap$,"Party ev_Mvp") ) {
  428.                 set .@awayname$[ .@away ], strcharinfo(0);
  429.                 set .@away, .@away +1 ;
  430.             }
  431.         }
  432.         set .@online, .@online +1;
  433.     }
  434.     attachrid .@origin;
  435.     if ( .@deny ) {
  436.         mes "[^FF0000MvP Ladder Warper^000000]";
  437.         mes "I'm sorry, but the following party members are not allow to participate in this game.";
  438.         mes " ";
  439.         for ( set .@i, 0; .@i < .@deny; set .@i, .@i +1 ) {
  440.             mes "^0000FF"+ .@denyname$[.@i] +"^000000";
  441.             set .@day,  .@denytime[.@i] / (24*60*60);
  442.             set .@hour, .@denytime[.@i] % (24*60*60) / (60*60);
  443.             set .@min,  .@denytime[.@i] % (24*60*60) % (60*60) / (60);
  444.             set .@sec,  .@denytime[.@i] % (24*60*60) % (60*60) % (60);
  445.             mes ( (.@day)?(.@day +" day "):"" )+( (.@hour||.@day)?(.@hour +" hour "):"" )+( (.@min||.@hour||.@day)?(.@min +" min "):"")+ .@sec +" sec";
  446.             mes " ";
  447.         }
  448.         mes "You have to either form a new party, or kick these members out.";
  449.         close;
  450.     }
  451.     else if ( .@online < getvariableofnpc(.amount,"Party ev_Mvp") ) {
  452.         mes "[^FF0000MvP Ladder Warper^000000]";
  453.         mes "Your party has too few members online.";
  454.         mes "At least "+ getvariableofnpc(.amount,"Party ev_Mvp") +" party members must online to start MVP ladder game.";
  455.         close;
  456.     }
  457.     else if ( .@away ) {
  458.         mes "[^FF0000MvP Ladder Warper^000000]";
  459.         mes "The following players is away from me.";
  460.         for ( set .@i, 0; .@i < .@away; set .@i, .@i +1 )
  461.             mes "^0000FF"+ .@awayname$[.@i] +"^000000";
  462.         mes "All party members must gather around me in order for me to warp your party members to MVP ladder game.";
  463.         close;
  464.     }
  465.     if ( countitem( getvariableofnpc(.entryitemid,"Party ev_Mvp") ) < getvariableofnpc(.entryitemamount,"Party ev_Mvp") ) {
  466.         mes "[^FF0000MvP Ladder Warper^000000]";
  467.         mes "You don't have enough "+ getitemname(getvariableofnpc(.entryitemid,"Party ev_Mvp")) +", please come back when you do.";
  468.         close;
  469.     }
  470.     else if ( getvariableofnpc(.entryitemamount,"Party ev_Mvp") == 0 && zeny < getvariableofnpc(.entryzeny,"Party ev_Mvp") ) {
  471.         mes "[^FF0000MvP Ladder Warper^000000]";
  472.         mes "You don't have enough zeny, please come back when you do.";
  473.         close;
  474.     }
  475.     else if ( .inuse || getmapusers( getvariableofnpc(.eventmap$,"Party ev_Mvp") ) >= 1 ) {
  476.         mes "[^FF0000MvP Ladder Warper^000000]";
  477.         mes "I'm sorry but a party is currently playing the game. Please standby until the party finishes the game or gets killed.";
  478.         mes "Thank You.";
  479.         close;
  480.     }
  481.     if ( getvariableofnpc(.joinann,"Party ev_Mvp") )
  482.         announce strcharinfo(1) +" party has started the MvP ladder game.",(getvariableofnpc(.joinann,"Party ev_Mvp") -1);
  483.     for ( set .@i, 0; .@i < $@partymembercount; set .@i, .@i +1 ) {
  484.         if ( !isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) continue;
  485.         attachrid $@partymemberaid[.@i];
  486.         if ( getgmlevel() < getvariableofnpc(.gmcandeny,"Party ev_Mvp") ) {
  487.             if ( getvariableofnpc(.usagedeny_player,"Party ev_Mvp") ) set mvpladp_deny, gettimetick(2);
  488.             if ( getvariableofnpc(.usagedeny_account,"Party ev_Mvp") ) set #mvpladp_deny, gettimetick(2);
  489.         }
  490.         percentheal 100,100;
  491.         warp getvariableofnpc( .eventmap$, "Party ev_Mvp" ), 0, 0;
  492.     }
  493.     attachrid .@origin;
  494.     set .inuse, 1;
  495.     set .inuseid, getcharid(1);
  496.     set .inusename$, strcharinfo(1);
  497.     if ( getvariableofnpc(.entryitemamount,"Party ev_Mvp") )
  498.         delitem getvariableofnpc(.entryitemid,"Party ev_Mvp"), getvariableofnpc(.entryitemamount,"Party ev_Mvp");
  499.     else
  500.         set zeny, zeny - getvariableofnpc(.entryzeny,"Party ev_Mvp");
  501.     initnpctimer;
  502.     doevent "Party ev_Mvp::OnEvent";
  503.     end;
  504.  
  505. OnTimer20:
  506.     set getvariableofnpc(.min,"Party ev_Mvp"), getvariableofnpc(.timeout,"Party ev_Mvp");
  507.     while ( getvariableofnpc(.min,"Party ev_Mvp") >= 60 ) {
  508.         set getvariableofnpc(.hour,"Party ev_Mvp"), getvariableofnpc(.hour,"Party ev_Mvp") +1 ;
  509.         set getvariableofnpc(.min,"Party ev_Mvp"), getvariableofnpc(.min,"Party ev_Mvp") - 60 ;
  510.     }
  511.     while ( getvariableofnpc(.hour,"Party ev_Mvp") || getvariableofnpc(.min,"Party ev_Mvp") || getvariableofnpc(.sec,"Party ev_Mvp") ) {
  512.         set getvariableofnpc(.sec,"Party ev_Mvp"), getvariableofnpc(.sec,"Party ev_Mvp") -1 ;
  513.         if ( getvariableofnpc(.sec,"Party ev_Mvp") < 0 && ( getvariableofnpc(.min,"Party ev_Mvp") > 0 || getvariableofnpc(.hour,"Party ev_Mvp") > 0 ) ) {
  514.             set getvariableofnpc(.sec,"Party ev_Mvp"), getvariableofnpc(.sec,"Party ev_Mvp") + 60;
  515.             set getvariableofnpc(.min,"Party ev_Mvp"), getvariableofnpc(.min,"Party ev_Mvp") - 1 ;
  516.         }
  517.         if ( getvariableofnpc(.min,"Party ev_Mvp") < 0 && getvariableofnpc(.hour,"Party ev_Mvp") > 0 ) {
  518.             set getvariableofnpc(.min,"Party ev_Mvp"), getvariableofnpc(.min,"Party ev_Mvp") + 60;
  519.             set getvariableofnpc(.hour,"Party ev_Mvp"), getvariableofnpc(.hour,"Party ev_Mvp") - 1;
  520.         }
  521.         delwaitingroom strnpcinfo(0);
  522.         waitingroom "Time Left = "+( ( getvariableofnpc(.hour,"Party ev_Mvp") )?( getvariableofnpc(.hour,"Party ev_Mvp") +":"):"" )+( ( getvariableofnpc(.min,"Party ev_Mvp") < 10 )?"0"+ getvariableofnpc(.min,"Party ev_Mvp"): getvariableofnpc(.min,"Party ev_Mvp") )+":"+( ( getvariableofnpc(.sec,"Party ev_Mvp") < 10 )?"0"+ getvariableofnpc(.sec,"Party ev_Mvp"): getvariableofnpc(.sec,"Party ev_Mvp") ), 0;
  523.         if ( getmapusers( getvariableofnpc(.eventmap$,"Party ev_Mvp") ) == 0 && .inuse == 0 ) break;
  524.         else if ( getvariableofnpc(.sec,"Party ev_Mvp") == 0 ) {
  525.             switch ( getvariableofnpc(.min,"Party ev_Mvp") ) {
  526.                 case 30:
  527.                 case 20:
  528.                 case 10:
  529.                 case 5:
  530.                 case 3:
  531.                 case 2:
  532.                 case 1:
  533.                     mapannounce getvariableofnpc(.eventmap$,"Party ev_Mvp"), "You have "+ getvariableofnpc(.min,"Party ev_Mvp") +" min left to complete Party MVP ladder game.", 0;
  534.                 default:
  535.             }
  536.         }
  537.         sleep 999;
  538.     }
  539.     if ( getvariableofnpc(.round,"Party ev_Mvp") != getvariableofnpc(.totalround,"Party ev_Mvp") +1 ) {
  540.         killmonsterall getvariableofnpc(.eventmap$,"Party ev_Mvp");
  541.         mapannounce getvariableofnpc(.eventmap$,"Party ev_Mvp"), "You failed to kill all MVPs in time.", 0;
  542.         if ( getvariableofnpc(.quitann,"Party ev_Mvp") == 1 )
  543.             announce .inusename$ +" party failed to finish the Party MvP ladder !", 0;
  544.         else if ( getvariableofnpc(.quitann,"Party ev_Mvp") == 2 )
  545.             mapannounce getvariableofnpc(.npcmap$,"Party ev_Mvp"), .inusename$ +" party failed to finish the Party MvP ladder !", 0;
  546.         getpartymember .inuseid, 1;
  547.         getpartymember .inuseid, 2;
  548.         for ( set .@i, 0; .@i < $@partymembercount; set .@i, .@i +1 ) {
  549.             if ( !isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) continue;
  550.             attachrid $@partymemberaid[.@i];
  551.             getmapxy .@map$, .@x, .@y, 0;
  552.             if ( .@map$ == getvariableofnpc(.eventmap$,"Party ev_Mvp") )
  553.                 warp getvariableofnpc(.respawnmap$,"Party ev_Mvp"), getvariableofnpc(.respawnx,"Party ev_Mvp"), getvariableofnpc(.respawny,"Party ev_Mvp");
  554.         }
  555.     }
  556.     set getvariableofnpc(.hour,"Party ev_Mvp"), 0;
  557.     set getvariableofnpc(.min,"Party ev_Mvp"), 0;
  558.     set getvariableofnpc(.sec,"Party ev_Mvp"), 0;
  559.     delwaitingroom strnpcinfo(0);
  560.     end;
  561.  
  562. OnTimer20000:
  563.     set .inuse, 0;
  564.     end;
  565.  
  566. OnInit:
  567.     sleep 1;
  568.     getmapxy .@map$, .x, .y, 1;
  569.     set getvariableofnpc(.npcmap$,"Party ev_Mvp"), .@map$;
  570.     end;
  571. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement