Jump to content
  • 0

Drop on MvP Ladder


Notorius

Question


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.02
  • Content Count:  106
  • Reputation:   1
  • Joined:  09/24/19
  • Last Seen:  

hello rathena how to add this drop through this script to an mvp custom in mvp ladder?

-    script    ifrit    -1,{
OnNPCKillEvent:
if ( killedrid != 31000 ) end;
if ( getcharid(1) ) {
    getpartymember getcharid(1), 1;
    getpartymember getcharid(1), 2;
    for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
        if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { // what happens if someone in the party member is offline =/
            .@partymemberaid[.@c] = $@partymemberaid[.@i];
            .@c++;
        }
    }
    //Party has 10% chance to get the item 45018
    if (rand(100) < 50)
        getitem F_Rand(45006,45007,45008,45009,45010,45011), 1, .@partymemberaid[ rand( .@c ) ];
    announce "Party ["+ strcharinfo(1) +"] ha matado "+ getmonsterinfo( killedrid, MOB_NAME ) +" en "+ strcharinfo(3), 0;
}
else {
    //Players without party has 15% chance to get the item 45018
    if (rand(100) < 50)
        getitem F_Rand(45006,45007,45008,45009,45010,45011), 1;
    announce "El jugador ["+ strcharinfo(0) +"] ha matado "+ getmonsterinfo( killedrid, MOB_NAME ) +" en "+ strcharinfo(3), 0;
}
end;
} 

 

mvp ladder

prontera,164,170,3	script	MvP Ladder Warper	56,{
	mes "[MvP Ladder Warper]";
	mes "¿quieres entrar a MvP Ladder?";
	next;
	switch(select("¡Sí, vamos!:Información.:Muéstrame el mejor record.:No.")) {
	case 1:
		break;
	case 2:
		mes "[MvP Ladder Warper]";
		mes "En este juego, tu grupo tiene que matar a todos los MvP en orden ascendente, del más débil al más fuerte..";
		if ( .finish_item_amount )
			mes "Si su grupo puede terminar MVP Ladder, cada miembro ganará "+ 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 "Pierdes el juego si no puedes terminar en "+ .timeout +" minutes, o si todo tu grupo es asesinado.";
		mes "Suerte!";
		close;
	case 3:
		mes "[MvP Ladder Warper]";
		if ( !$mvpladdderparty_time ) {
			mes "Nadie ha terminado este juego todavía..";
			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.", "Realmente quiero restablecerlo." ) == 1 ) close;
		$mvpladdderparty_time = 0;
		$mvpladdderparty_name$ = "";
		deletearray $mvpladderparty_member$[.@i];
		mes "[MvP Ladder Warper]";
		mes "Record reset successfully.";
		close;
	case 4:
		mes "[MvP Ladder Warper]";
		mes "Regresa cuando seas mas fuerte..";
		close;
	}
	if ( !getcharid(1) ) {
		mes "[MvP Ladder Warper]";
		mes "Tienes que formar una party para jugar..";
		close;
	}
	if ( is_party_leader() == false ) {
		mes "[MvP Ladder Warper]";
		mes "Solo el líder de la party puede registrarse..";
		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 "Tienes que formar una party con exactamente "+ .register_min +" miembros para jugar.";
		close;
	}
	else if ( .@online != .register_min )  {
		mes "[MvP Ladder Warper]";
		mes "Tu party debe tener "+ .register_min +" miembros en línea en el mapa '"+ strnpcinfo(4) +"'.";
		close;
	}
	else if ( .register_cost && Zeny < .register_cost ) {
		mes "[MvP Ladder Warper]";
		mes "No tienes suficiente zeny. Por favor, vuelve cuando lo tengas.";
		close;
	}
	else if ( .party_id ) {
		mes "[MvP Ladder Warper]";
		mes "Lo siento, pero un grupo está jugando actualmente. Por favor espera hasta que terminen.";
		mes "Gracias.";
		close;
	}
        else if( #mvp_ladder_delay >= gettimetick(2) ){
               mes "regresa en 1 hora.";
               mes "Time left: "+( #mvp_ladder_delay - gettimetick(2) )+" second.";
               close;
        }
        #mvp_ladder_delay = gettimetick(2) + 3600;
	Zeny -= .register_cost;
	announce "The party ["+ strcharinfo(1) +"] a entrado a MvP ladder.", 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 "Tienes "+ .timeout +" minutos para completar "+ .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$, "Felicidades ... Pudiste derrotar a todos los 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$, "Se le recompensa con un artículo de bonificación por completar la escalera dentro de "+ .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 ) +"] ha terminado el MvP ladder!", bc_all;
	}
	else
		announce "The party ["+ getpartyname( .party_id ) +"] ha fallado el MvP ladder.", bc_all;
	mapwarp .eventmap$, .map$, .x, .y;
	killmonsterall .eventmap$;
	.party_id = .round = 0;
	end;

OnMvpDead:
        if (mobcount(.eventMap$,strnpcinfo(0)+"::OnMvpDead") > 0) { end; }
	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;
	}
	else if ( .round == .totalround )
		mapannounce .eventmap$, "La ronda final comenzará en "+ .delay +" seconds...", bc_map;
	else
		mapannounce .eventmap$, "Ronda inicial "+ .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], 5, 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, 20000000;

	// exact amount of party members needed to start the game
	set .register_min, 2;

	// id of each mvp. you can add more
	setarray .mvpid[1],
		1086,//	Golden Thief Bug	64
		1115,//	Eddga				65
		1150,//	Moonlight Flower	67
		1159,//	Phreeoni			69
		1112,//	Drake				70
		1583,//	Tao Gunka			70
		1492,//	Incantation Samurai	71
		1046,//	Doppelgangger		72
		1252,//	Garm				73
		1418,//	Evil Snake Lord		73
		1059,//	Mistress			74
		1190,//	Orc Lord			74
		1087,//	Orc Hero			77
		1251,//	Knight of Windstorm	77
		1038,//	Osiris				78
		1658,//	Ygnizem				79
		1272,//	Dark Lord			80
		1871,//	Fallen Bishop		80
		1039,//	Baphomet			81
		1147,//	Maya				81
		1785,//	Atroce				82
		1389,//	Dracula				85
		1630,//	Bacsojin			85
		1885,//	Gorynych			85
		1623,//	RSX 0806			86
		1511,//	Amon Ra				88
		1688,//	Lady Tanee			89
		1768,//	Gloom Under Night	89
		1719,//	Datale				90
		1734,//	Kiel D-01			90
		1157,//	Pharaoh				93
		1373,//	Lord of Death		94
		1312,//	Turtle General		97
		1779,//	Ktullanux			98
		1874,//	Beelzebub			98
		1646,// Bio3 placeholder    99
		1708,//	Thanatos			99
		1751,//	Valkyrie Randgris	99
		rand(2235,2241);//	Ifrit				99

	// number of rounds (default: 39)
	set .totalround, getarraysize(.mvpid) -1;

	// item reward for completing each round
	set .round_item_id, 675;
	set .round_item_amount, 5;

	// item reward for completing the entire ladder
	set .finish_item_id, 12130;
	set .finish_item_amount, 1;

	// bonus reward if ladder completed within a certain time (in minutes)
	set .bonus_time, 25; // if completed within 45 minutes, this reward is given
	set .bonus_item_id, 12130;
	set .bonus_item_amount, 1;

	// time delay between rounds, in seconds (default: 3)
	set .delay, 5;

	// minimum GM level to reset the best record
	set .gmlvlreset, 99;

	// event map
	set .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;
}

 

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...