Is it different from this one? Cause i tried AnnieRuru's private mvp room 1.4a but the map server keeps on crashing.
// ....... if your server has { Overwriting user function [int__] } don't blame me ..........
function script int__ {
set
[email protected], atoi(getarg(0)+"");
if (
[email protected] == 0 ||
[email protected] >= 2147483647 ) return getarg(0);
set
[email protected], getstrlen(
[email protected]+"");
for ( set
[email protected],0;
[email protected] <
[email protected]; set
[email protected],
[email protected] + 1 ) {
set
[email protected]$,
[email protected] % pow(10,
[email protected]+1) / pow(10,
[email protected]) +
[email protected]$;
if ( (
[email protected]+1) % 3 == 0 &&
[email protected]+1 !=
[email protected] ) set
[email protected]$, ","+
[email protected]$;
}
return
[email protected]$;
}
//===== eAthena Script ======================================
//= Private MVP/Branch Room
//===== By: ===============================================
//= by ~AnnieRuru~
//===== Current Version: ======================================
//= 1.4a
//===== Compatible With: =====================================
//= rathena 16819
//===== Description: =========================================
//= Player can rent MVP room for the player him/herself, for party or for guilds
//===== Topic =================================================
//= http://www.eathena.ws/board/index.php?showtopic=187654
//===== Additional Comments: ==================================
//= 1.0
//= ---- break the tradition which a script only for a player, or only for a party.
//= now 1 room can be use for party and another room can use for guilds.
//= ---- timeout feature to prevent player owns the room indefinitely,
//= by create a new account and sit/@at'ing inside overnight.
//= ---- can disable mvp/boss summon via configuration and becomes a branch room script.
//= ---- a double check to prevent players rent all the rooms for himself.
//= 1.0a
//= ---- fix a critial bug that the time count too fast -_-"
//= 1.1
//= ---- added item cost to rent or to summon
//= ---- added a config to limit summoning per session
//= ---- added flood control option
//= 1.2
//= ---- rewrite the waitingroom counter
//= ---- optimize the script in a way can add custom summon group
//= ---- add config to kill the monsters if the room just being left empty
//= ---- add GM can kick room in use
//= ---- add able to spawn in numbers
//= ---- add limitspawn can configure to negative to limit spawn in that group instead of individual one
//= 1.3
//= ---- fix chatroom countdown issue due to rev13269
//= ---- fix a bug if 2 people rent a room at same time, the later 1 will get the room
//= ---- add a feature so the GM can know how long the room has rented or abandoned
//= 1.4
//= ---- update with new mvp and mini bosses
//= ---- fix an exploit if server allow to use @mail, player can send item/zeny away to prevent item/zeny deletion when registering the room
//= ---- players die inside mvp room shouldn't lose exp
//= 1.4a
//= ---- fix this to use in rathena
//========================================================
// This is the shop for this Branch room IF you already enable it. Can sell whatever things you want.
- shop MVP room#branch -1,604:100000,12103:1000000
- script MVP Summoner -1,{
goto L_Start;
OnInit:
getmapxy
[email protected]$,
[email protected],
[email protected], 1;
if (
[email protected]$ == "" ) {
// Config ---------------------------------------------------------------------------------------
// Time for rent a room IN MINUTES. When time out, players inside the room will kick out. Do Not set this as 0
set .timeout, 60;
// if the room left empty for # minutes, will be treated as give up the room. Do Not set this as 0
set .nobodygiveup, 5;
// NOTE : The script only search item OR zeny. if you specify item amount, then it will ask for the item. If item amount is 0, then it will ask for zeny.
// the cost to rent a room
set .rentitemid, 674; // item id use for rent a room - 674 - mithil coin
set .rentitemamount, 0; // amount of items to rent a room
set .rentcost, 1000000; // otherwise, zeny cost to rent a room
// limit each room can only summon 1 monster at a time. (only the Summoning option)
// Turn it off (0) means the player can summon a lot of monsters as long as the player has enough zeny/item. High rate server players love the room with a lot MVPs
// Turn it on (1) means the player have to kill existing monster before can summon a new one. Low rate server player prefer to take out MVP 1 by 1
set .floodcontrol, 0;
// if .floodcontrol is turn off, your players might experience lag if they summoned too many MVPs
// so what is the maximum input to limit your players summon too many ?
set .inputlimit, 30;
// If the room has left over monsters while nobody in the room and the room not give up yet, shall we kill monsters in empty room ?
set .killmonster, 1; // Default is yes
// Options menu setting for MVP Summoner NPC.
set
[email protected][0], 1; // Turn Heal option On/Off
set
[email protected][1], 1; // Turn Group 1 summons On/Off -> MVP
set
[email protected][2], 1; // Turn Group 2 summons On/Off -> mini boss
set
[email protected][3], 0; // Turn Group 3 summons On/Off
set
[email protected][4], 0; // Turn Group 4 summons On/Off
set
[email protected][5], 0; // Turn Group 5 summons On/Off
set
[email protected][6], 0; // Turn Group 6 summons On/Off
set
[email protected][7], 0; // Turn Group 7 summons On/Off
set
[email protected][8], 0; // Turn Group 8 summons On/Off
set
[email protected][9], 0; // Turn Group 9 summons On/Off
set
[email protected][10], 0; // Sell shop items options On/Off ( shop npc above )
// set respawn point when they leave the room. Obviously warp to the Private MVP Room Warper npc
set .respawnmap$, "prontera"; // Note : "SavePoint" does NOT work
set .respawnx, 150;
set .respawny, 174;
// The minimum GM level can kick a room in use
set .gmlvlkick, 80;
// .limitspawn in previous revision changed to .grouplimit .
// it is for limit each monster spawn per session, prevent them only killing same monster again and again
// Now you can configure one group has limited summon, and another group has unlimited summon
// Tips: if you server has an insane custom MVP, you can put your custom mob to Group 3~9 with insane item cost, and limit only 1 summon per session
// .grouplimit use amount, means if group1limit set to 10, then each session can only summon up to 10 amount of that kind of monster. 0 is unlimited
// ---------
// Group 1 -> MVP
// ---------
set .group1name$, "MVP"; // Group 1 name
set .group1itemid, 674; // item id use for summon any Group 1 monster - 674 - mithil coin
set .group1itemamount, 0; // amount of items to summon a Group 1 monster
set .group1cost, 100000; // if no item is specify, zeny cost to summon a Group 1 monster
set .group1limit, 0; // limit of summon of Group 1 monster per session, prevent them only killing same monster again and again
setarray .group1id,
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
// 1980,// Kubkin ( I think this mvp is still new )
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
// ---------
// Group 2 -> mini boss
// ---------
set .group2name$, "mini boss"; // Group 2 name
set .group2itemid, 674; // item id use for summon any Group 2 monster - 674 - mithil coin
set .group2itemamount, 0; // amount of items to summon a Group 2 monster
set .group2cost, 10000; // if no item is specify, zeny cost to summon a Group 2 monster
set .group2limit, 0; // limit of summon of Group 2 monster per session, prevent them only killing same monster again and again
setarray .group2id,
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
// ---------
// Group 3
// ---------
set .group3name$, "Poring-Family"; // Group 3 name
set .group3itemid, 12109; // item id use for summon any Group 3 monster - 12109 - Poring box
set .group3itemamount, 1; // amount of items to summon a Group 3 monster
set .group3cost, 0; // if no item is specify, zeny cost to summon a Group 3 monster
set .group3limit, -5; // limit of summon of Group 3 monster per session, prevent them only killing same monster again and again
setarray .group3id,
1002,// Poring
1113,// Drops
1031,// Poporing
1242,// Marin
1062,// Santa Poring
1613,// Metaling
1784,// Stapo
1090,// Mastering
1096,// Angeling
1120,// Ghostring
1582,// Deviling
1388,// Arc Angeling
1502;// Pori Pori
// ---------
// Group 4
// ---------
set .group4name$, ""; // Group 4 name
set .group4itemid, 0; // item id use for summon any Group 4 monster
set .group4itemamount, 0; // amount of items to summon a Group 4 monster
set .group4cost, 0; // if no item is specify, zeny cost to summon a Group 4 monster
set .group4limit, 0; // limit of summon of Group 4 monster per session, prevent them only killing same monster again and again
setarray .group4id,
1001,
1002;
// ---------
// Group 5
// ---------
set .group5name$, ""; // Group 5 name
set .group5itemid, 0; // item id use for summon any Group 5 monster
set .group5itemamount, 0; // amount of items to summon a Group 5 monster
set .group5cost, 0; // if no item is specify, zeny cost to summon a Group 5 monster
set .group5limit, 0; // limit of summon of Group 5 monster per session, prevent them only killing same monster again and again
setarray .group5id,
1001,
1002;
// ---------
// Group 6
// ---------
set .group6name$, ""; // Group 6 name
set .group6itemid, 0; // item id use for summon any Group 6 monster
set .group6itemamount, 0; // amount of items to summon a Group 6 monster
set .group6cost, 0; // if no item is specify, zeny cost to summon a Group 6 monster
set .group6limit, 0; // limit of summon of Group 6 monster per session, prevent them only killing same monster again and again
setarray .group6id,
1001,
1002;
// ---------
// Group 7
// ---------
set .group7name$, ""; // Group 7 name
set .group7itemid, 0; // item id use for summon any Group 7 monster
set .group7itemamount, 0; // amount of items to summon a Group 7 monster
set .group7cost, 0; // if no item is specify, zeny cost to summon a Group 7 monster
set .group7limit, 0; // limit of summon of Group 7 monster per session, prevent them only killing same monster again and again
setarray .group7id,
1001,
1002;
// ---------
// Group 8
// ---------
set .group8name$, ""; // Group 8 name
set .group8itemid, 0; // item id use for summon any Group 8 monster
set .group8itemamount, 0; // amount of items to summon a Group 8 monster
set .group8cost, 0; // if no item is specify, zeny cost to summon a Group 8 monster
set .group8limit, 0; // limit of summon of Group 8 monster per session, prevent them only killing same monster again and again
setarray .group8id,
1001,
1002;
// ---------
// Group 9
// ---------
set .group9name$, ""; // Group 9 name
set .group9itemid, 0; // item id use for summon any Group 9 monster
set .group9itemamount, 0; // amount of items to summon a Group 9 monster
set .group9cost, 0; // if no item is specify, zeny cost to summon a Group 9 monster
set .group9limit, 0; // limit of summon of Group 9 monster per session, prevent them only killing same monster again and again
setarray .group9id,
1001,
1002;
// Config Ends ------------------------------------------------------------------------
if ( .timeout == 0 ) set .timeout, 60;
if ( .nobodygiveup == 0 ) set .nobodygiveup, 5;
if ( .inputlimit < 1 ) set .inputlimit, 1;
if ( .rentitemid && .rentitemamount ) {
if ( getitemname(.rentitemid) == "null" ) {
debugmes "Private MVP Room: Rent a room is using invalid item id.";
}
}
set
[email protected], 1;
while (
[email protected] <= 9 ) {
if (
[email protected][
[email protected]] && getd(".group"+
[email protected] +"itemid") && getd(".group"+
[email protected] +"itemamount") ) {
if ( getitemname( getd(".group"+
[email protected] +"itemid") ) == "null" ) {
debugmes "Private MVP Room: Group no. "+
[email protected] +" is using invalid item id.";
}
}
set
[email protected],
[email protected] +1 ;
}
set .menu$, ( (
[email protected][0])?"Heal":"" )+":"+( (
[email protected][1])?"Summon "+ .group1name$:"" )+":"+( (
[email protected][2])?"Summon "+ .group2name$:"" )+":"+( (
[email protected][3])?"Summon "+ .group3name$:"" )+":"+( (
[email protected][4])?"Summon "+ .group4name$:"" )+":"+( (
[email protected][5])?"Summon "+ .group5name$:"" )+":"+( (
[email protected][6])?"Summon "+ .group6name$:"" )+":"+( (
[email protected][7])?"Summon "+ .group7name$:"" )+":"+( (
[email protected][8])?"Summon "+ .group8name$:"" )+":"+( (
[email protected][9])?"Summon "+ .group9name$:"" )+":"+( (
[email protected][10])?"Buy branches":"" )+":Leave this room:Give up this room";
set
[email protected], 1;
while (
[email protected] <= 9 ) {
setd ".group"+
[email protected] +"idsize", getarraysize( getd(".group"+
[email protected] +"id") );
if (
[email protected][
[email protected]] && getd(".group"+
[email protected] +"limit") <= 0 ) {
set
[email protected], 0;
while (
[email protected] < getd(".group"+
[email protected] +"idsize") ) {
setd ".group"+
[email protected] +"menu$", getd(".group"+
[email protected] +"menu$") + getmonsterinfo( getd(".group"+
[email protected] +"id["+
[email protected] +"]"), 0) +":";
set
[email protected],
[email protected] +1 ;
}
}
set
[email protected],
[email protected] +1 ;
}
}
else {
sleep 1;
mapannounce
[email protected]$, "Admin has refresh the server, please register the room again.", 1;
mapwarp
[email protected]$, .respawnmap$, .respawnx, .respawny;
}
end;
L_Start: // I hate gotos ... but ...
set
[email protected], strnpcinfo(2);
if ( .remind[
[email protected]] == 0 ) {
set .remind[
[email protected]], 1;
initnpctimer;
}
mes "[MVP Summoner]";
mes "Hi, what can I do for you ?";
next;
switch ( select(.menu$) ) {
case 1:
mes "[MVP Summoner]";
if ( mobcount("this","") > 0 ) {
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 7;
mes "You have completely healed.";
close;
default:
set
[email protected], @menu -1;
if ( .floodcontrol && mobcount("this","") > 0 ) {
mes "[MVP Summoner]";
mes "I cannot summon another monster when there are monsters around.";
close;
}
else if ( getd(".group"+
[email protected] +"itemid") && getd(".group"+
[email protected] +"itemamount") ) {
mes "[MVP Summoner]";
mes "The cost to summon a "+ getd(".group"+
[email protected] +"name$") +" is "+ getd(".group"+
[email protected] +"itemamount") +" "+ getitemname( getd(".group"+
[email protected] +"itemid") ) +".";
if ( getd(".group"+
[email protected] +"limit") < 0 )
mes "("+( ( ~getd(".group"+
[email protected] +"limit")+1 - getd(".group"+
[email protected] +"limit"+
[email protected]) <= 0 )?0:( ~getd(".group"+
[email protected] +"limit")+1 - getd(".group"+
[email protected] +"limit"+
[email protected]) ) )+") more summons for this group.";
next;
}
else if ( getd(".group"+
[email protected] +"cost") ) {
mes "[MVP Summoner]";
mes "The cost to summon a "+ getd(".group"+
[email protected] +"name$") +" is "+ callfunc("int__", getd(".group"+
[email protected] +"cost") ) +" zeny.";
if ( getd(".group"+
[email protected] +"limit") < 0 )
mes "("+( ( ~getd(".group"+
[email protected] +"limit")+1 - getd(".group"+
[email protected] +"limit"+
[email protected]) <= 0 )?0:( ~getd(".group"+
[email protected] +"limit")+1 - getd(".group"+
[email protected] +"limit"+
[email protected]) ) )+") more summons for this group.";
next;
}
else if ( getd(".group"+
[email protected] +"limit") < 0 ) {
mes "[MVP Summoner]";
mes "("+( ( ~getd(".group"+
[email protected] +"limit")+1 - getd(".group"+
[email protected] +"limit"+
[email protected]) <= 0 )?0:( ~getd(".group"+
[email protected] +"limit")+1 - getd(".group"+
[email protected] +"limit"+
[email protected]) ) )+") more summons for this group.";
next;
}
if ( getd(".group"+
[email protected] +"limit") < 0 && getd(".group"+
[email protected] +"limit"+
[email protected]) >= ~getd(".group"+
[email protected] +"limit")+1 ) {
mes "[MVP Summoner]";
mes "I'm sorry, but you can't summon any more monster for this group.";
close;
}
else if ( getd(".group"+
[email protected] +"limit") > 0 ) {
for ( set
[email protected], 0;
[email protected] < getd(".group"+
[email protected] +"idsize"); set
[email protected],
[email protected] +1 )
set
[email protected]$,
[email protected]$ +( ( getd(".group"+
[email protected] +"limit"+
[email protected] +"["+
[email protected] +"]") >= getd(".group"+
[email protected] +"limit") )?"^999999":"^000000" )+ getmonsterinfo( getd(".group"+
[email protected] +"id["+
[email protected] +"]"), 0) +" ("+ ( ( getd(".group"+
[email protected] +"limit") - getd(".group"+
[email protected] +"limit"+
[email protected] +"["+
[email protected] +"]") <= 0 )?0:( getd(".group"+
[email protected] +"limit") - getd(".group"+
[email protected] +"limit"+
[email protected] +"["+
[email protected] +"]") ) ) +")"+":";
set
[email protected], select(
[email protected]$) -1;
}
else
set
[email protected], select( getd(".group"+
[email protected] +"menu$") ) -1;
mes "[MVP Summoner]";
if ( .floodcontrol == 0 && .inputlimit > 1 ) {
mes "Input an amount of monsters to summon.";
next;
input
[email protected];
if (
[email protected] == 0 ) close;
else if (
[email protected] > .inputlimit )
set
[email protected], .inputlimit;
mes "[MVP Summoner]";
}
else
set
[email protected], 1;
if ( getd(".group"+
[email protected] +"itemid") && getd(".group"+
[email protected] +"itemamount") ) {
if ( countitem( getd(".group"+
[email protected] +"itemid") ) < getd(".group"+
[email protected] +"itemamount") *
[email protected] ) {
mes "You don't have enough "+ getitemname( getd(".group"+
[email protected] +"itemid") ) +" to summon a "+ getd(".group"+
[email protected] +"name$") +".";
close;
}
}
else if ( getd(".group"+
[email protected] +"cost") ) {
if ( zeny < getd(".group"+
[email protected] +"cost") *
[email protected] ) {
mes "You don't have enough zeny to summon a "+ getd(".group"+
[email protected] +"name$") +".";
close;
}
}
if ( .floodcontrol && mobcount("this","") > 0 ) {
mes "I cannot summon another monster when there are monsters around.";
close;
}
else if ( getd(".group"+
[email protected] +"limit") > 0 ) {
if ( getd(".group"+
[email protected] +"limit"+
[email protected] +"["+
[email protected] +"]") >= getd(".group"+
[email protected] +"limit") ) {
mes "I'm sorry, but you already summoned that monster too much. Try summon another.";
close;
}
else if ( getd(".group"+
[email protected] +"limit"+
[email protected] +"["+
[email protected] +"]") +
[email protected] > getd(".group"+
[email protected] +"limit") ) {
mes "The amount you input is more than the limit you can summon. Try reduce the amount.";
close;
}
}
else if ( getd(".group"+
[email protected] +"limit") < 0 ) {
if ( getd(".group"+
[email protected] +"limit"+
[email protected]) >= ~getd(".group"+
[email protected] +"limit")+1 ) {
mes "I'm sorry, but you can't summon any more monster for this group.";
close;
}
else if ( getd(".group"+
[email protected] +"limit"+
[email protected]) +
[email protected] > ~getd(".group"+
[email protected] +"limit")+1 ) {
mes "The amount you input is more than the limit you can summon. Try reduce the amount.";
close;
}
}
mes "Summoning "+
[email protected] +" "+ getmonsterinfo( getd(".group"+
[email protected] +"id["+
[email protected] +"]"), 0) +".";
mes "Ok, get ready ?";
close2;
if ( .floodcontrol && mobcount("this","") > 0 ) end;
if ( getd(".group"+
[email protected] +"itemid") && getd(".group"+
[email protected] +"itemamount") ) {
if ( countitem( getd(".group"+
[email protected] +"itemid") ) < getd(".group"+
[email protected] +"itemamount") *
[email protected] ) end;
delitem getd(".group"+
[email protected] +"itemid"), getd(".group"+
[email protected] +"itemamount") *
[email protected];
}
else if ( getd(".group"+
[email protected] +"cost") ) {
if ( zeny < getd(".group"+
[email protected] +"cost") *
[email protected] ) end;
set zeny, zeny - getd(".group"+
[email protected] +"cost") *
[email protected];
}
if ( getd(".group"+
[email protected] +"limit") > 0 ) {
if ( getd(".group"+
[email protected] +"limit"+
[email protected] +"["+
[email protected] +"]") +
[email protected] > getd(".group"+
[email protected] +"limit") ) end;
setd ".group"+
[email protected] +"limit"+
[email protected] +"["+
[email protected] +"]", getd(".group"+
[email protected] +"limit"+
[email protected] +"["+
[email protected] +"]") +
[email protected];
}
else if ( getd(".group"+
[email protected] +"limit") < 0 ) {
if ( getd(".group"+
[email protected] +"limit"+
[email protected]) +
[email protected] > ~getd(".group"+
[email protected] +"limit")+1 ) end;
setd ".group"+
[email protected] +"limit"+
[email protected], getd(".group"+
[email protected] +"limit"+
[email protected]) +
[email protected];
}
monster "this", 0, 0, "--ja--", getd(".group"+
[email protected] +"id["+
[email protected] +"]"),
[email protected];
end;
case 11:
if ( mobcount("this","") > 0 ) {
mes "[MVP Summoner]";
mes "I cannot offer this service when there are monsters around.";
close;
}
close2;
callshop "MVP room#branch", 0;
end;
case 12:
mes "[MVP Summoner]";
mes "Are you sure you want to leave this room ?";
mes "If this room left empty for more than "+ .nobodygiveup +" minutes, you lost ownership for this room.";
if ( select( "Yes:No") == 2 ) close;
warp .respawnmap$, .respawnx, .respawny;
end;
case 13:
mes "[MVP Summoner]";
getmapxy
[email protected]$,
[email protected],
[email protected], 0;
if ( getmapusers(
[email protected]$) > 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;
warp .respawnmap$, .respawnx, .respawny;
set .remaintime[
[email protected]], -1;
end;
}
close;
OnEnterMap:
set
[email protected], strnpcinfo(2);
set .remind[
[email protected]], 0;
for ( set
[email protected], 1;
[email protected] <= 9; set
[email protected],
[email protected] +1 )
deletearray getd(".group"+
[email protected] +"limit"+
[email protected]), getd(".group"+
[email protected] +"idsize");
set .nobodycounter[
[email protected]], 0;
getmapxy
[email protected]$,
[email protected],
[email protected] ,1;
set .starttime[
[email protected]], gettimetick(2);
do {
set .remaintime[
[email protected]], .timeout * 60 + .starttime[
[email protected]] - gettimetick(2);
set
[email protected][
[email protected]], .remainTime[
[email protected]] / 3600 ;
set
[email protected][
[email protected]], .remainTime[
[email protected]] % 3600 / 60 ;
set
[email protected][
[email protected]], .remainTime[
[email protected]] % 3600 % 60 ;
delwaitingroom strnpcinfo(0);
waitingroom "Time Left = "+( (
[email protected][
[email protected]] )?(
[email protected][
[email protected]] +":"):"" )+( (
[email protected][
[email protected]] < 10 )?"0"+
[email protected][
[email protected]]:
[email protected][
[email protected]] )+":"+( (
[email protected][
[email protected]] < 10 )?"0"+
[email protected][
[email protected]]:
[email protected][
[email protected]] ), 0;
if ( getmapusers(
[email protected]$) )
set .nobodycounter[
[email protected]], 0;
else {
set .nobodycounter[
[email protected]], .nobodycounter[
[email protected]] +1 ;
if ( .nobodycounter[
[email protected]] > .nobodygiveup * 60 ) break;
}
sleep 995;
} while ( .remaintime[
[email protected]] > 1 );
set .remaintime[
[email protected]], 0;
delwaitingroom "MVP Summoner#"+
[email protected];
mapwarp
[email protected]$, .respawnmap$, .respawnx, .respawny;
end;
OnTimer100:
stopnpctimer;
npctalk "Hi ~ the bubble above my head is the countdown for using this room.";
sleep 2000;
npctalk "Sometimes, I can skip for about 1 second in the countdown.";
sleep 3000;
npctalk "That is because the server is experiencing minor lag problem.";
sleep 3000;
npctalk "So, don't complain about me cheated for the countdown ~ ^.^";
sleep 3000;
npctalk "Have a nice day ~";
end;
}
prontera,148,174,5 script Private MVP Room 100,{
mes "[Private MVP Room]";
mes "Please select a private MVP room.";
if ( getvariableofnpc(.rentitemid, "MVP Summoner") && getvariableofnpc(.rentitemamount, "MVP Summoner") )
mes "The cost to rent a room for "+ getvariableofnpc(.timeout, "MVP Summoner") +" minutes is "+ getvariableofnpc(.rentitemamount, "MVP Summoner") +" "+ getitemname( getvariableofnpc(.rentitemid, "MVP Summoner") ) +".";
else if ( getvariableofnpc(.rentcost, "MVP Summoner") )
mes "The cost to rent a room for "+ getvariableofnpc(.timeout, "MVP Summoner") +" minutes is "+ callfunc("int__", getvariableofnpc(.rentcost, "MVP Summoner") ) +" zeny.";
else
mes "You can only use the room for only "+ getvariableofnpc(.timeout, "MVP Summoner") +" minutes.";
mes " ";
for ( set
[email protected], 1;
[email protected] <= 8; set
[email protected],
[email protected] +1 ) {
if ( getvariableofnpc(.remaintime[
[email protected]],"MVP Summoner") ) {
switch ( .type[
[email protected]] ) {
case 1: set
[email protected]$, "^EE8800"; break;
case 2: set
[email protected]$, "^70CC11"; break;
case 3: set
[email protected]$, "^0000FF"; break;
default: set
[email protected]$, "^000000";
}
mes "Room #"+
[email protected] +" = "+
[email protected]$ + .whoinuse$[
[email protected]] +"^000000";
}
}
next;
set
[email protected], 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(.remaintime[
[email protected]],"MVP Summoner") ) {
if ( .inuseid[
[email protected]] == getcharid(.type[
[email protected]]) ) {
if ( getvariableofnpc(.killmonster,"MVP Summoner") && getmapusers("06guild_0"+
[email protected]) == 0 )
killmonsterall "06guild_0"+
[email protected];
warp "06guild_0"+
[email protected], 0,0;
end;
} else {
mes "[Private MVP Room]";
switch ( .type[
[email protected]] ) {
case 1: set
[email protected]$, "^EE8800Party "; break;
case 2: set
[email protected]$, "^70CC11Guild "; break;
case 3: set
[email protected]$, "^0000FFPlayer ";
}
mes "This room is reserved for ";
mes
[email protected]$ + .whoinuse$[
[email protected]] +"^000000 .";
if ( getgmlevel() < getvariableofnpc(.gmlvlkick,"MVP Summoner") ) {
mes "Please select another.";
close;
}
mes " ";
mes "Currently there are "+ getmapusers("06guild_0"+
[email protected]) +" players";
mes "in that room.";
set
[email protected], getvariableofnpc(.remaintime[
[email protected]],"MVP Summoner");
mes "It still has "+(
[email protected] /60 )+"mn "+(
[email protected] %60 )+"s left.";
set
[email protected], getvariableofnpc(.nobodycounter[
[email protected]],"MVP Summoner");
if (
[email protected] )
mes "And have left empty for "+(
[email protected] /60 )+"mn "+(
[email protected] %60 )+"s.";
mes "Kick them ?";
next;
if ( select ( "No:Yes" ) == 1 ) close;
set getvariableofnpc(.remaintime[
[email protected]],"MVP Summoner"), -1;
mes "[Private MVP Room]";
mes "Room#"+
[email protected] +" is empty now.";
close;
}
}
mes "[Private MVP Room]";
if ( getvariableofnpc(.rentitemid, "MVP Summoner") && getvariableofnpc(.rentitemamount, "MVP Summoner") ) {
if ( countitem(getvariableofnpc(.rentitemid, "MVP Summoner")) < getvariableofnpc(.rentitemamount, "MVP Summoner") ) {
mes "You don't have enough "+ getitemname( getvariableofnpc(.rentitemid, "MVP Summoner") ) +" to rent a room.";
close;
}
}
else if ( getvariableofnpc(.rentcost, "MVP Summoner") ) {
if ( zeny < getvariableofnpc(.rentcost, "MVP Summoner") ) {
mes "You don't have enough zeny to rent a room.";
close;
}
}
mes "You reserve this room for ...";
next;
set
[email protected], select("For my party members", "For my guild members", "For personal account use" );
if ( getcharid(
[email protected]) == 0 ) {
mes "[Private MVP Room]";
mes "You do not own a "+( (
[email protected] == 1)?"Party":"Guild" )+".";
close;
}
else if ( getvariableofnpc(.rentitemid, "MVP Summoner") && getvariableofnpc(.rentitemamount, "MVP Summoner") ) {
if ( countitem(getvariableofnpc(.rentitemid, "MVP Summoner")) < getvariableofnpc(.rentitemamount, "MVP Summoner") ) {
mes "You don't have enough "+ getitemname( getvariableofnpc(.rentitemid, "MVP Summoner") ) +" to rent a room.";
close;
}
}
else if ( getvariableofnpc(.remaintime[
[email protected]],"MVP Summoner") ) {
mes "[Private MVP Room]";
mes "I'm sorry, somebody else has already register this room faster than you.";
close;
}
for ( set
[email protected], 1;
[email protected] <= 8; set
[email protected],
[email protected] +1 ) {
if ( getvariableofnpc(.remaintime[
[email protected]],"MVP Summoner") &&
[email protected] == .type[
[email protected]] && getcharid(
[email protected]) == .inuseid[
[email protected]] ) {
mes "[Private MVP Room]";
mes "You already rented Room#"+
[email protected] +". Use that room instead.";
close;
}
}
set .type[
[email protected]],
[email protected];
set .inuseid[
[email protected]], getcharid(
[email protected]);
set .whoinuse$[
[email protected]], strcharinfo( (
[email protected] == 3)?0:
[email protected] );
if ( getvariableofnpc(.rentitemid, "MVP Summoner") && getvariableofnpc(.rentitemamount, "MVP Summoner") ) {
if ( countitem(getvariableofnpc(.rentitemid, "MVP Summoner")) < getvariableofnpc(.rentitemamount, "MVP Summoner") ) end;
delitem getvariableofnpc(.rentitemid, "MVP Summoner"), getvariableofnpc(.rentitemamount, "MVP Summoner");
}
else if ( getvariableofnpc(.rentcost, "MVP Summoner") ) {
if ( zeny < getvariableofnpc(.rentcost, "MVP Summoner") ) end;
set zeny, zeny - getvariableofnpc(.rentcost, "MVP Summoner");
}
warp "06guild_0"+
[email protected], 0,0;
killmonsterall "06guild_0"+
[email protected];
donpcevent "MVP Summoner#"+
[email protected] +"::OnEnterMap";
end;
}
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