//===== rAthena Script =======================================//= MVP Ladder Game//===== By: ==================================================//= aftermath, AnnieRuru (rewrite)//===== Current Version: =====================================//= 1.0//===== Compatible With: =====================================//= rAthena Project//===== Description: =========================================//= Gather a party and kill every MVP in ascending order.//===== Additional Comments: =================================//= 1.0 First version, edited. [Euphy]//============================================================
prontera,164,170,3 script MvPLadderWarper56,{
mes "[MvP Ladder Warper]";
mes "Say... do you want to play the MvP Ladder game?";
next;switch(select("Yes, let's get it on!:Information.:Show me the best record.:No.")){case1:break;case2:
mes "[MvP Ladder Warper]";
mes "In this game, your party has to kill every single MvP monster in ascending order, from the weakest to strongest.";if(.finish_item_amount )
mes "If your party can finish the MVP ladder game, each member will earn "+ callfunc("F_InsertPlural",.finish_item_amount, getitemname(.finish_item_id ))+".";if(.register_cost )
mes "But the entrance fee is "+ callfunc("F_InsertComma",.register_cost )+" zeny.";
next;
mes "[MvP Ladder Warper]";
mes "You lose the game if you can't finish in "+.timeout +" minutes, or if your entire party is killed.";
mes "Good luck!";
close;case3:
mes "[MvP Ladder Warper]";if(!$mvpladdderparty_time ){
mes "Nobody has finished this game yet.";
close;}
mes "The best record is";
mes "[ "+( $mvpladdderparty_time /60)+" min "+( $mvpladdderparty_time %60)+" sec ]";
mes "By the party ^FF0000"+ $mvpladdderparty_name$ +"^000000.";.@size= getarraysize( $mvpladderparty_member$ );for(.@i=0;.@i<.@size;.@i++)
mes "^000000"+(.@i+1)+". ^0000FF"+ $mvpladderparty_member$[.@i];if( getgmlevel()<.gmlvlreset ) close;
next;if( select("Close.","Reset the record.")==1) close;if( select("Never mind.","I really want to reset it.")==1) close;
$mvpladdderparty_time =0;
$mvpladdderparty_name$ ="";
deletearray $mvpladderparty_member$[.@i];
mes "[MvP Ladder Warper]";
mes "Record reset successfully.";
close;case4:
mes "[MvP Ladder Warper]";
mes "When you are strong enough to complete the game, please come back.";
close;}if(!getcharid(1)){
mes "[MvP Ladder Warper]";
mes "You have to form a party to play.";
close;}if( is_party_leader()==false){
mes "[MvP Ladder Warper]";
mes "Only the party leader can register.";
close;}.@origin= getcharid(3);
getpartymember getcharid(1),1;
getpartymember getcharid(1),2;for(.@i=0;.@i< $@partymembercount;.@i++){if( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i])){
attachrid $@partymemberaid[.@i];if( strcharinfo(3)== strnpcinfo(4)).@online++;}}
attachrid .@origin;if( $@partymembercount !=.register_min ){
mes "[MvP Ladder Warper]";
mes "You have to form a party with exactly "+.register_min +" members to play.";
close;}elseif(.@online!=.register_min ){
mes "[MvP Ladder Warper]";
mes "Your party must have "+.register_min +" members online on map '"+ strnpcinfo(4)+"'.";
close;}elseif(.register_cost &&Zeny<.register_cost ){
mes "[MvP Ladder Warper]";
mes "You don't have enough zeny. Please come back when you do.";
close;}elseif(.party_id ){
mes "[MvP Ladder Warper]";
mes "I'm sorry, but a party is currently playing the game. Please standby until the party is finished.";
mes "Thank you.";
close;}Zeny-=.register_cost;
announce "The party ["+ strcharinfo(1)+"] has started the MvP ladder game.", bc_all;set.party_id, getcharid(1);set.@time_enter, gettimetick(2);for(.@i=0;.@i< $@partymembercount;.@i++){if( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i])){
attachrid $@partymemberaid[.@i];if( strcharinfo(3)== strnpcinfo(4)){
announce "You have "+.timeout +" minutes to complete "+.totalround +" rounds.", bc_self;.@name$[.@c]= strcharinfo(0);.@c++;}}}
cleanmap .eventmap$;
warpparty .eventmap$,0,0,.party_id, strnpcinfo(4);
donpcevent strnpcinfo(0)+"::OnMvpDead";
sleep .timeout *60000;if(.round ==.totalround +1){
getpartymember .party_id,1;
getpartymember .party_id,2;
mapannounce .eventmap$,"Congratulations... You were able to defeat all the MVPs!", bc_map;for(.@i=0;.@i< $@partymembercount;.@i++){if( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i])){
attachrid $@partymemberaid[.@i];if( strcharinfo(3)==.eventmap$ )
getitem .finish_item_id,.finish_item_amount;}}set.@timeused, gettimetick(2)-.@time_enter;if(.bonus_item_amount &&.@timeused<.bonus_time *60){
mapannounce .eventmap$,"You are rewarded a bonus item for completing the ladder within "+.bonus_time +" minutes.", bc_map;for(.@i=0;.@i< $@partymembercount;.@i++){if( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i])){
attachrid $@partymemberaid[.@i];if( strcharinfo(3)==.eventmap$ )
getitem .bonus_item_id,.bonus_item_amount;}}}if(!$mvpladdderparty_time ||.@timeused< $mvpladdderparty_time ){
mapannounce .eventmap$,"And you broke the record! [ "+(.@timeused/60)+" min "+(.@timeused%60)+" sec ]", bc_map;set $mvpladdderparty_time,.@timeused;set $mvpladdderparty_name$, getpartyname(.party_id );
copyarray $mvpladderparty_member$,.@name$,.register_min;}else
mapannounce .eventmap$,"Time used [ "+(.@timeused/60)+" min "+(.@timeused%60)+" sec ]", bc_map;
sleep 10000;
announce "The party ["+ getpartyname(.party_id )+"] has finished the MvP ladder game!", bc_all;}else
announce "The party ["+ getpartyname(.party_id )+"] has failed to finish the MvP ladder game.", bc_all;
mapwarp .eventmap$,.map$,.x,.y;
killmonsterall .eventmap$;.party_id =.round =0;
end;OnMvpDead:
getpartymember .party_id,1;
getpartymember .party_id,2;.round++;if(.round >=2&&.round !=.totalround +1&&.round_item_amount ){for(.@i=0;.@i< $@partymembercount;.@i++){if( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i])){
attachrid $@partymemberaid[.@i];if( strcharinfo(3)==.eventmap$ )
getitem .round_item_id,.round_item_amount;}}}if(.round ==.totalround +1){
awake strnpcinfo(0);
end;}elseif(.round ==.totalround )
mapannounce .eventmap$,"The final Round will begin in "+.delay +" seconds...", bc_map;else
mapannounce .eventmap$,"Starting round "+.round +" in "+.delay +" seconds...", bc_map;
sleep .delay *1000;if(.mvpid[.round]==1646)// pick random Bio3 MVP.mvpid[.round]= rand(1646,1651);
monster .eventmap$,0,0,"--ja--",.mvpid[.round],1, strnpcinfo(0)+"::OnMvpDead";
mapannounce .eventmap$, getmonsterinfo(.mvpid[.round], MOB_NAME )+" has spawned!", bc_map|bc_blue;
end;OnPCLogoutEvent:if( hp >0).@less_one=1;else
end;OnPCDieEvent:if( strcharinfo(3)!=.eventmap$ ||!getcharid(1)) end;if( getcharid(1)!=.party_id ) end;
getpartymember .party_id,1;
getpartymember .party_id,2;for(.@i=0;.@i< $@partymembercount;.@i++){if( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i])){
attachrid $@partymemberaid[.@i];if( strcharinfo(3)==.eventmap$ && hp >0).@alive++;}}if(.@less_one).@alive--;if(!.@alive){
mapannounce .eventmap$,"Party wiped!", bc_map;
sleep 10000;
awake strnpcinfo(0);}
end;OnInit:// Configurations -----------------------------------------------------// Time limit (in minutes)// When time runs out, all players inside the room will be kicked out.// Do NOT set this to zero!set.timeout,60;// entrance fee (in Zeny)set.register_cost,100000;// exact amount of party members needed to start the gameset.register_min,2;// id of each mvp. you can add more
setarray .mvpid[1],1086,// Golden Thief Bug 641115,// Eddga 651150,// Moonlight Flower 671159,// Phreeoni 691112,// Drake 701583,// Tao Gunka 701492,// Incantation Samurai 711046,// Doppelgangger 721252,// Garm 731418,// Evil Snake Lord 731059,// Mistress 741190,// Orc Lord 741087,// Orc Hero 771251,// Knight of Windstorm 771038,// Osiris 781658,// Ygnizem 791272,// Dark Lord 801871,// Fallen Bishop 801039,// Baphomet 811147,// Maya 811785,// Atroce 821389,// Dracula 851630,// Bacsojin 851885,// Gorynych 851623,// RSX 0806 861511,// Amon Ra 881688,// Lady Tanee 891768,// Gloom Under Night 891719,// Datale 901734,// Kiel D-01 901157,// Pharaoh 931373,// Lord of Death 941312,// Turtle General 971779,// Ktullanux 981874,// Beelzebub 981646,// Bio3 placeholder 991708,// Thanatos 991751,// Valkyrie Randgris 991832;// Ifrit 99// number of rounds (default: 39)set.totalround, getarraysize(.mvpid)-1;// item reward for completing each roundset.round_item_id,675;set.round_item_amount,5;// item reward for completing the entire ladderset.finish_item_id,675;set.finish_item_amount,10;// bonus reward if ladder completed within a certain time (in minutes)set.bonus_time,45;// if completed within 45 minutes, this reward is givenset.bonus_item_id,675;set.bonus_item_amount,10;// time delay between rounds, in seconds (default: 3)set.delay,5;// minimum GM level to reset the best recordset.gmlvlreset,99;// event mapset.eventmap$,"guild_vs2-2";// mapflag configuration
setarray .@mapflag,
mf_nowarp,
mf_nowarpto,
mf_nosave,
mf_nomemo,
mf_noteleport,// mf_nopenalty, // disable exp loss
mf_noreturn,// mf_nobranch,// mf_nomobloot, // disable monster drop loots,// mf_nomvploot, // 2 of these
mf_partylock;// Config Ends --------------------------------------------------------------
mapannounce .eventmap$,"An administrator has refreshed the server. Please re-register. We apologize for the inconvenience.", bc_map;
getmapxy .map$,.x,.y, BL_NPC;
mapwarp .eventmap$,.map$,.x,.y;
killmonsterall .eventmap$;.@size= getarraysize(.@mapflag);for(.@i=0;.@i<.@size;.@i++)
setmapflag .eventmap$,.@mapflag[.@i];
end;}
Question
Notorius
how to increase the amount of mvp per round?
Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.