Jump to content
  • 0
Lambo

MVP Ladder game help

Question

//===== 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]//============================================================aretnorp,189,220,5    script    MvP Ladder Warper    56,{    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.")) {    case 1:        break;    case 2:        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;    case 3:        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;    case 4:        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 ( getpartyleader( getcharid(1), 2 ) != getcharid(0) ) {        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;    }    else if ( .@online != .register_min )  {        mes "[MvP Ladder Warper]";        mes "Your party must have "+ .register_min +" members online on map '"+ strnpcinfo(4) +"'.";        close;    }    else if ( .register_cost && Zeny < .register_cost ) {        mes "[MvP Ladder Warper]";        mes "You don't have enough zeny. Please come back when you do.";        close;    }    else if ( .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:    .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$, "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, 10000000;    // exact amount of party members needed to start the game    set .register_min, 7;    // 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        1832;//    Ifrit                99    // number of rounds (default: 39)    set .totalround, getarraysize(.mvpid) -1;    // item reward for completing each round    set .round_item_id, 6125;    set .round_item_amount, 1;    // item reward for completing the entire ladder    set .finish_item_id, 30001;    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 given    set .bonus_item_id, 6125;    set .bonus_item_amount, 38;    // time delay between rounds, in seconds (default: 3)    set .delay, 7;    // 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, 1;    mapwarp .eventmap$, .map$, .x, .y;    killmonsterall .eventmap$;    .@size = getarraysize( .@mapflag );    for ( .@i = 0; .@i < .@size; .@i++ )        setmapflag .eventmap$, .@mapflag[.@i];    end;}

 

Can someone make this available for Hercules? when i apply it on hercules when 1 player dies the npc says party wiped and kicks all player :(

Edited by ivantuting

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

its says unkown function  whenever i click information.

 

F_InsertComma and unkown   /    function F_InsertPlural 

and when the game starts when one players dies it will be the end of the ladder. it should only be when they are all dead. but they can resurect their team mates

Share this post


Link to post
Share on other sites
  • 0
function	script	F_GetPlural	{	set .@str$, getarg(0);	if (countstr(.@str$," ")) {  // multiple words		explode(.@tmp$,.@str$," ");		set .@size, getarraysize(.@tmp$);		// if format is "... of|in|on ...", pluralize preceding word; else pluralize last word		if (compare(.@str$," of ") || compare(.@str$," in ") || compare(.@str$," on ")) {			for (set .@i,1; .@i<.@size; set .@i,.@i+1) {				if (getstrlen(.@tmp$[.@i]) == 2 && compare("of|in|on",.@tmp$[.@i]))					break;				set .@index, .@index + 1;			}		} else			set .@index, .@size - 1;		set .@str$, .@tmp$[.@index];		set .@tmp$[.@index],"%s";		set .@format$, implode(.@tmp$," ");	} else		set .@format$, "%s";	set .@strlen, getstrlen(.@str$);	if (.@strlen < 3)  // prevent errors		return ((getarg(1,0)) ? strtoupper(sprintf(.@format$,.@str$)) : sprintf(.@format$,.@str$));	setarray .@suffix$[0], charat(.@str$,.@strlen - 1), substr(.@str$,.@strlen - 2,.@strlen - 1);	if (!compare("abcdefghijklmnopqrstuvwxyz",.@suffix$[0])) {  // last character is not a letter		set .@result$, .@str$;	}	// common exceptions --> singular form == plural form	else if (compare("fish|glasses|sunglasses|clothes|boots|shoes|greaves|sandals|wings|ears",.@str$)) {		set .@result$, .@str$;	}	// ends in -s, -x, -z, -ch, -sh --> add -es	else if (.@suffix$[0] == "s" || .@suffix$[0] == "x" || .@suffix$[0] == "z" ||	    .@suffix$[1] == "ch" || .@suffix$[1] == "sh") {		set .@result$, .@str$ + "es";	}	// ends in -f, -fe --> remove -f, -fe --> add -ves	else if ((.@suffix$[0] == "f" || .@suffix$[1] == "fe") && .@suffix$[1] != "ff") {		if (compare("belief|cliff|chief|dwarf|grief|gulf|proof|roof",.@str$))			set .@result$, .@str$ + "s";  // exceptions --> add -s		else			set .@result$, substr(.@str$,0,.@strlen - 2 - (.@suffix$[1] == "fe")) + "ves";	}	// ends in consonant + -y --> remove -y --> add -ies	else if (.@suffix$[0] == "y" && !compare("aeiou",charat(.@suffix$[1],0))) {		set .@result$, delchar(.@str$,.@strlen - 1) + "ies";	}	// ends in -o --> exceptions --> add -es	else if (.@suffix$[0] == "o" &&	         compare("buffalo|domino|echo|grotto|halo|hero|mango|mosquito|potato|tomato|tornado|torpedo|veto|volcano",.@str$)) {		set .@result$, .@str$ + "es";	}	// default --> add -s	else {		set .@result$, .@str$ + "s";	}	return ((getarg(1,0)) ? strtoupper(sprintf(.@format$,.@result$)) : sprintf(.@format$,.@result$));}function	script	F_InsertPlural	{	return sprintf(getarg(3,"%d %s"), getarg(0), ((getarg(0) == 1) ? getarg(1) : callfunc("F_GetPlural",getarg(1),getarg(2,0))));}function	script	F_InsertComma	{	set .@str$, getarg(0);	for (set .@i,getstrlen(.@str$)-3; .@i>0; set .@i,.@i-3)		set .@str$, insertchar(.@str$,",",.@i);	return .@str$;}

Add these functions(so there will be no unknown function error...).. Courtesy of rA...

 

for Second Error, change hp to Hp, and it will be fixed.

Edited by Dastgir Pojee

Share this post


Link to post
Share on other sites
  • 0

Now its running without errors but the problem now is whenever a player die inside the game the npc shouts party wiped and warps back the party to main town :(

 

it should be when all party members inside dies thats the only time where the npc will shout party wiped and warp back the party to main town .

 

*btw i got this script from latest rA svn :(

Share this post


Link to post
Share on other sites
  • 0

Now its running without errors but the problem now is whenever a player die inside the game the npc shouts party wiped and warps back the party to main town :(

 

it should be when all party members inside dies thats the only time where the npc will shout party wiped and warp back the party to main town .

 

*btw i got this script from latest rA svn :(

have you really changed all hp to Hp , (case-sensitive, h should be capital (H) and p should be small (p).)

I don't see any error on script except that..

You can check script at http://haru.ws/scriptchecker/  for any error/warnings.

Edited by Dastgir Pojee

Share this post


Link to post
Share on other sites

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.   Restore formatting

  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.

Loading...

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.