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;
}