123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401 |
- //===== 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 Morroc
- 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
|