Permalink
Cannot retrieve contributors at this time
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
401 lines (384 sloc)
12 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //===== 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 |