Jump to content
  • 0

R> Help with MVP Warper


Question

Posted (edited)

Heya Guys... ive got an problem with my MVP Room ...

Is there an way that i can set an number of mvps i will summon ...

like i chose atroce, and after that i need to type in the amount of spawned mvps. ?

see below the file:

//===== rAthena Script =======================================
//= Private MVP & Branch Room
//===== By: ==================================================
//= AnnieRuru
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena Project
//===== Description: =========================================
//= Allows players to rent an MVP room for personal use,
//= or for a party or guild.
//===== Additional Comments: =================================
//= 1.0 First version, edited. [Euphy]
//============================================================

prontera,148,174,5    script    Private MVP Room    100,{
    mes "[Private MVP Room]";
    mes "Please select a private MVP room.";
    if ( getvariableofnpc( .rentcost, "MVP Summoner" ) )
        mes "The cost to rent a room for "+ getvariableofnpc( .timeout, "MVP Summoner" ) +" minutes is "+ callfunc("F_InsertComma", getvariableofnpc( .rentcost, "MVP Summoner" ) ) +" zeny.";
    else
        mes "You can only use the room for only "+ getvariableofnpc( .timeout, "MVP Summoner" ) +" minutes.";
    mes " ";
    for ( .@i = 1; .@i <= 8; .@i++ )
        if ( getvariableofnpc( .renttime[.@i], "MVP Summoner" ) )
            mes "Room #"+ .@i +" = "+ .color$[ .type[.@i] ] + .whoinuse$[.@i] +"^000000";
    next;
    .@room = select(
        "MVP Room 1 ["+ getmapusers("06guild_01") +"]",
        "MVP Room 2 ["+ getmapusers("06guild_02") +"]",
        "MVP Room 3 ["+ getmapusers("06guild_03") +"]",
        "MVP Room 4 ["+ getmapusers("06guild_04") +"]",
        "MVP Room 5 ["+ getmapusers("06guild_05") +"]",
        "MVP Room 6 ["+ getmapusers("06guild_06") +"]",
        "MVP Room 7 ["+ getmapusers("06guild_07") +"]",
        "MVP Room 8 ["+ getmapusers("06guild_08") +"]");
    if ( getvariableofnpc( .renttime[.@room], "MVP Summoner" ) ) {
        if ( .inuseid[.@room] == getcharid( .type[.@room] ) ) {
            warp "06guild_0"+ .@room, 0,0;
            close;
        } else {
            mes "[Private MVP Room]";
            mes "This room is reserved for ";
            mes .color$[ .type[.@room] ] + .whoinuse$[.@room] +"^000000.";
            mes "Please select another.";
            close;
        }
    }
    mes "[Private MVP Room]";
    mes "Reserve this room for...";
    next;
    set .@type, select( "For my party members", "For my guild members", "For personal account use" );
    if ( !getcharid(.@type) ) {
        mes "[Private MVP Room]";
        mes "You do not own a "+( ( .@type == 1 )? "Party" : "Guild" )+".";
        close;
    }
    else if ( Zeny < getvariableofnpc( .rentcost, "MVP Summoner" ) ) {
        mes "You don't have enough zeny to rent a room.";
        close;
    }
    else if ( getvariableofnpc( .renttime[.@room], "MVP Summoner" ) ) {
        mes "[Private MVP Room]";
        mes "I'm sorry, somebody else has already registered this room faster than you.";
        close;
    }
    for ( .@i = 1; .@i <= 8; .@i++ ) {
        if ( ( getvariableofnpc( .renttime[.@i], "MVP Summoner" ) ) && .@type == .type[.@i] && getcharid(.@type) == .inuseid[.@i] ) {
            mes "[Private MVP Room]";
            mes "You already rented Room#"+ .@i +". Use that room instead.";
            close;
        }
    }
    set .type[.@room], .@type;
    set .inuseid[.@room], getcharid(.@type);
    set .whoinuse$[.@room], strcharinfo( ( .@type == 3 )? 0 : .@type );
    Zeny -= getvariableofnpc( .rentcost, "MVP Summoner" );
    warp "06guild_0"+ .@room, 0,0;
    killmonsterall "06guild_0"+ .@room;
    donpcevent "MVP Summoner#"+ .@room +"::OnEnterMap";
    close;
OnInit:
    .color$[1] =  "^EE8800"; // party color
    .color$[2] =  "^70CC11"; // guild color
    .color$[3] =  "^0000FF"; // account color
    end;
}

-    script    MVP Summoner    -1,{
    mes "[MVP Summoner]";
    mes "Time left: " + callfunc( "Time2Str", .renttime[ atoi( strnpcinfo(2) ) ] + .timeout * 60 );
    mes "Hi, what can I do for you?";
    next;
    switch ( select(.menu$) ) {
    case 1:
        mes "[MVP Summoner]";
        if ( mobcount( "this", strnpcinfo(3)+"::OnMobDead" ) ) {
            mes "I cannot offer heal service when there are monsters around.";
            close;
        }
        sc_end SC_STONE;
        sc_end SC_SLOWDOWN;
        sc_end SC_FREEZE;
        sc_end SC_SLEEP;
        sc_end SC_CURSE;
        sc_end SC_SILENCE;
        sc_end SC_CONFUSION;
        sc_end SC_BLIND;
        sc_end SC_BLEEDING;
        sc_end SC_DECREASEAGI;
        sc_end SC_POISON;
        sc_end SC_HALLUCINATION;
        sc_end SC_STRIPWEAPON;
        sc_end SC_STRIPARMOR;
        sc_end SC_STRIPHELM;
        sc_end SC_STRIPSHIELD;
        sc_end SC_CHANGEUNDEAD;
        sc_end SC_ORCISH;
        sc_end SC_BERSERK;
        sc_end SC_SKE;
        sc_end SC_SWOO;
        sc_end SC_SKA;
        percentheal 100,100;
        specialeffect2 EF_HEAL;
        mes "You are completely healed.";
        close;
    case 2:
        if ( mobcount( "this", strnpcinfo(3)+"::OnMobDead" ) ) {
            mes "[MVP Summoner]";
            mes "I cannot summon another MVP when there are monsters around.";
            close;
        } else if ( .mvpcost ) {
            mes "[MVP Summoner]";
            mes "The cost to summon an MVP is "+ callfunc( "F_InsertComma", .mvpcost ) +" zeny.";
            next;
            set .@menu, select(.mvpid_menu$) -1;
            mes "[MVP Summoner]";
            if ( Zeny < .mvpcost ) {
                mes "You don't have enough zeny to summon an MVP.";
                close;
            }
        } else {
            set .@menu, select(.mvpid_menu$) -1;
            mes "[MVP Summoner]";
        }
        mes "Please get ready.";
        close2;
        if ( Zeny < .mvpcost ) end;
        Zeny -= .mvpcost;
        monster "this", 0, 0, "--ja--", .mvpid[.@menu], 1, strnpcinfo(3)+"::OnMobDead";
        end;
    case 3:
        if ( mobcount( "this", strnpcinfo(3)+"::OnMobDead" ) ) {
            mes "[MVP Summoner]";
            mes "I cannot summon another mini-boss when there are monsters around.";
            close;
        } else if ( .bosscost ) {
            mes "[MVP Summoner]";
            mes "The cost to summon a mini-boss is "+ callfunc( "F_InsertComma", .bosscost ) +" zeny.";
            next;
            set .@menu, select(.bossid_menu$) -1;
            mes "[MVP Summoner]";
            if ( Zeny < .bosscost ) {
                mes "You doesn't have enough zeny to summon a mini-boss.";
                close;
            }
        } else {
            set .@menu, select(.bossid_menu$) -1;
            mes "[MVP Summoner]";
        }
        mes "Please get ready.";
        close2;
        if ( Zeny < .bosscost ) end;
        Zeny -= .bosscost;
        monster "this", 0, 0, "--ja--", .bossid[.@menu], 1, strnpcinfo(3)+"::OnMobDead";
        end;
    case 4:
        if ( mobcount( "this", strnpcinfo(3)+"::OnMobDead" ) > 0 ) {
            mes "[MVP Summoner]";
            mes "I cannot offer this service when there are monsters around.";
            close;
        }
        close2;
        callshop "MVP room#branch", 1;
        end;
    case 5:
        mes "[MVP Summoner]";
        mes "Are you sure you want to leave this room?";
        next;
        if ( select( "Yes:No") == 1 )
            warp .respawnmap$, .respawnx, .respawny;
        close;
    case 6:
        mes "[MVP Summoner]";
        if ( getmapusers( strcharinfo(3) ) > 1 ) {
            mes "There are still some players in this room. Make sure you are the last member in this room to use this option.";
            close;
        }
        mes "Are you sure you want to give up this room?";
        if ( .rentcost )
            mes "You will need to pay again to enter this room.";
        next;
        if ( select( "Yes", "No" ) == 2 ) close;
        awake strnpcinfo(0);
        end;
    }
    close;

OnMobDead:
    end;

OnEnterMap:
    .@id = atoi( strnpcinfo(2) );
    .renttime[.@id] = gettimetick(2);
    sleep .timeout * 60000;
    mapwarp strnpcinfo(4), .respawnmap$, .respawnx, .respawny;
    .renttime[.@id] = 0;
    killmonsterall strnpcinfo(4);
    end;

OnInit:
    if ( !getstrlen( strnpcinfo(2) ) ) {

//    Config ---------------------------------------------------------------------------------------

    // Room rental time, in minutes.
    // When time runs out, all players inside the room will be kicked out.
    // Do NOT set this to zero!
    set .timeout, 60;

    set .rentcost, 100000;    // Zeny cost for renting a room (0 = free)
    set .mvpcost, 100000;    // Zeny cost to summon an MVP (0 = free)
    set .bosscost, 50000;    // Zeny cost to summon a boss monster (0 = free)

    //    Options setting inside MVP room
    set .@menu[1], 1;    // Turn Heal option On/Off
    set .@menu[2], 1;    // Turn MVP Summoning On/Off
    set .@menu[3], 1;    // Turn Mini boss Summoning On/Off
    set .@menu[4], 0;    // Sell items (branches) On/Off (see shop below, before the mapflags)

    // Respawn point when players leave the room
    set .respawnmap$, "prontera";
    set .respawnx, 150;
    set .respawny, 174;

    setarray .mvpid[0],
        1511,//    Amon Ra
        1647,// Assassin Cross Eremes
        1785,//    Atroce
        1630,//    Bacsojin
        1039,//    Baphomet
        1874,//    Beelzebub
        1272,//    Dark Lord
        1719,//    Datale
        1046,//    Doppelgangger
        1389,//    Dracula
        1112,//    Drake
        1115,//    Eddga
        1418,//    Evil Snake Lord
        1871,//    Fallen Bishop
        1252,//    Garm
        1768,//    Gloom Under Night
        1086,//    Golden Thief Bug
        1885,//    Gopinich
        1649,// High Priest Magaleta
        1651,// High Wizard Katrinn
        1832,//    Ifrit
        1492,//    Incantation Samurai
        1734,//    Kiel D-01
        1251,//    Knight of Windstorm
        1779,//    Ktullanux
        1688,//    Lady Tanee
        1646,// Lord Knight Seyren
        1373,//    Lord of Death
        1147,//    Maya
        1059,//    Mistress
        1150,//    Moonlight Flower
        1087,//    Orc Hero
        1190,//    Orc Lord
        1038,//    Osiris
        1157,//    Pharaoh
        1159,//    Phreeoni
        1623,//    RSX 0806
        1650,// Sniper Shecil
        1583,//    Tao Gunka
        1708,//    Thanatos
        1312,//    Turtle General
        1751,//    Valkyrie Randgris
        1685,// Vesper
        1648,// Whitesmith Harword
        1917,// Wounded Morocc
        1658;//    Ygnizem

    setarray .bossid[0],
        1096,// Angeling
        1388,// Archangeling
        1795,// Bloody Knight
        1830,// Bow Guardian
        1839,// Byorgue
        1309,// Cat O' Nine Tail
        1283,// Chimera
        1302,// Dark Illusion
        1198,// Dark Priest
        1582,// Deviling
        1091,// Dragon Fly
        1093,// Eclipse
        1205,// Executioner
        1783,// Galion
        1592,// Gangster
        1120,// Ghostring
        1259,// Gryphon
        1720,// Hydro
        1090,// Mastering
        1289,// Maya Purple
        1262,// Mutant Dragon
        1203,// Mysteltainn
        1870,// Necromancer
        1295,// Owl Baron
        1829,// Sword Guardian
        1204,// Tirfing
        1089,// Toad
        1092,// Vagabond Wolf
        1765;// Valkyrie

//    Config Ends ------------------------------------------------------------------------

        if ( !.timeout ) set .timeout, 60;
        .menu$ = ( .@menu[1] ? "Heal" : "" ) +":" ;
        .menu$ = .menu$ + ( .@menu[2] ? "Summon MVP" : "" ) +":";
        .menu$ = .menu$ + ( .@menu[3] ? "Summon Mini-boss" : "" ) +":";
        .menu$ = .menu$ + ( .@menu[4] ? "Buy branches" : "" ) +":";
        .menu$ = .menu$ + "Leave this room:Give up this room";
        if ( .@menu[2] ) {
            .@size = getarraysize( .mvpid );
            for ( .@i = 0; .@i < .@size; .@i++ )
                .mvpid_menu$ = .mvpid_menu$ + getmonsterinfo( .mvpid[.@i], MOB_NAME ) +":";
        }
        if ( .@menu[3] ) {
            .@size = getarraysize( .bossid );
            for ( .@i = 0; .@i < .@size; .@i++ )
                .bossid_menu$ = .bossid_menu$ + getmonsterinfo( .bossid[.@i], MOB_NAME ) +":";
        }
    }
    else {
        mapannounce strnpcinfo(4), "An administrator has refreshed the server. Please re-register this room.", bc_map;
        mapwarp strnpcinfo(4), .respawnmap$, .respawnx, .respawny;
    }
    end;
}

-    shop    MVP room#branch    -1,604:100000,12103:1000000

06guild_01,49,49,4    duplicate(MVP Summoner)    MVP Summoner#1    116
06guild_02,49,49,4    duplicate(MVP Summoner)    MVP Summoner#2    116
06guild_03,49,49,4    duplicate(MVP Summoner)    MVP Summoner#3    116
06guild_04,49,49,4    duplicate(MVP Summoner)    MVP Summoner#4    116
06guild_05,49,49,4    duplicate(MVP Summoner)    MVP Summoner#5    116
06guild_06,49,49,4    duplicate(MVP Summoner)    MVP Summoner#6    116
06guild_07,49,49,4    duplicate(MVP Summoner)    MVP Summoner#7    116
06guild_08,49,49,4    duplicate(MVP Summoner)    MVP Summoner#8    116

06guild_01    mapflag    nowarpto
06guild_02    mapflag    nowarpto
06guild_03    mapflag    nowarpto
06guild_04    mapflag    nowarpto
06guild_05    mapflag    nowarpto
06guild_06    mapflag    nowarpto
06guild_07    mapflag    nowarpto
06guild_08    mapflag    nowarpto
06guild_01    mapflag    nomemo
06guild_02    mapflag    nomemo
06guild_03    mapflag    nomemo
06guild_04    mapflag    nomemo
06guild_05    mapflag    nomemo
06guild_06    mapflag    nomemo
06guild_07    mapflag    nomemo
06guild_08    mapflag    nomemo
06guild_01    mapflag    noteleport
06guild_02    mapflag    noteleport
06guild_03    mapflag    noteleport
06guild_04    mapflag    noteleport
06guild_05    mapflag    noteleport
06guild_06    mapflag    noteleport
06guild_07    mapflag    noteleport
06guild_08    mapflag    noteleport
06guild_01    mapflag    nosave    SavePoint
06guild_02    mapflag    nosave    SavePoint
06guild_03    mapflag    nosave    SavePoint
06guild_04    mapflag    nosave    SavePoint
06guild_05    mapflag    nosave    SavePoint
06guild_06    mapflag    nosave    SavePoint
06guild_07    mapflag    nosave    SavePoint
06guild_08    mapflag    nosave    SavePoint
06guild_01    mapflag    nopenalty
06guild_02    mapflag    nopenalty
06guild_03    mapflag    nopenalty
06guild_04    mapflag    nopenalty
06guild_05    mapflag    nopenalty
06guild_06    mapflag    nopenalty
06guild_07    mapflag    nopenalty
06guild_08    mapflag    nopenalty

 

Edited by Patskie
codebox

1 answer to this question

Recommended Posts

  • 0
Posted

Create a input set .GMLevel


set .GMLevel,80;
input .@MVPAMOUNT;

Then Add this.


 

        mes "Please get ready.";
        close2;
        if ( Zeny < .mvpcost ) end;
        Zeny -= .mvpcost;
        monster "this", 0, 0, "--ja--", .mvpid[.@menu],.@MVPAMOUNT, strnpcinfo(3)+"::OnMobDead";
        end;

If GM talk to this npc do this
 

If (getgmlevel() <= .GMLevel ) goto simple;


SIMPLE:
switch(select("Set Amount of Monster","Exit")){
 case 1:
        mes "NPC Name";
        mes "Please put mvp amount to summon";            
        input .@MVPAMOUNT;
        close;
case 2: 
		close;
}



 

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...