Helena
Members-
Content Count
238 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Staff Applications
Calendar
Everything posted by Helena
-
Thanks gonna try this. *edit* successfully patched, compiled and i meet the requirements listed but it doesn't log the mac address... it remains blank.
- 41 replies
-
Also looking for this. The current message says "Weapons upgraded: %s" Although that is a entry from the msgstringtable file and it isn't possible to put a script in it. So the src mod we need is the same as the refine NPC, first temp. take the weapon and then return it. Anyone willing to help us?
-
Hello everyone! I've been wanting to add the aura or auraset command but all the patches i could find (and paid for) left me with with many source errors. I'm looking for someone who could properly add it for me in exchange of money; I'd send you my src folder and you'll implent it. Now, what i specifically want is the following: - The aura/auraset command its self (attachable to an item. I.e: atcommand "@auraset 1" - Supports a special aura automatically set for the top 3 PvPers (I have a ladder script). Since there are free patches on the forums, I'd prob go as far as paying ~$20. I'll pay you a part before and a part after. Refund is not optional if you can't get it done. Please PM me if you are willing to do business. Someone is currently working on it. Thanks!
-
Hey Hercules. I was curious if someone has a NPC like this: http://www.eathena.ws/board/index.php?s=&showtopic=211510&view=findpost&p=1159005 Unfortunately the link posted in that thread is down. It's an option NPC that allows you to set your commands preference. Say, if you want @autoloot, showexp, etc to always be enabled, you can set it like that. Does someone have or can someone make a script like that? Thanks!
-
Sorry to double post. >.< Annie do you know how i can make it so when they want to pick a room, it shows up as "[unavailable]" Something like this, but doesn't work xD "Rentable Room 1 ["+ getmapusers("06guild_01") +"] if(getmapusers("06guild_02") > 0){ [Not available!] ",
-
Thanks so much annie. :3
-
Hello. I am using annie's MVP room rental script. What i want is for players to just rent the room for 30 minutes and not offer a MVP/Miniboss spawn option. So players can spawn/use their own dead and bloody branches. Here's my script, thank you so much! // ....... if your server has { Overwriting user function [int__] } don't blame me ..........function script int__ { set .@num, atoi(getarg(0)+""); if ( .@num == 0 || .@num >= 2147483647 ) return getarg(0); set .@l, getstrlen(.@num+""); for ( set .@i,0; .@i < .@l; set .@i, .@i + 1 ) { set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$; if ( (.@i+1) % 3 == 0 && .@i+1 != .@l ) set .@num$, ","+ .@num$; } return .@num$;} //===== 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 .@map$, .@x, .@y, 1; if ( .@map$ == "" ) { // 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, 30; // 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 .rentcost, 2500000; // 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 .@menu[0], 1; // Turn Heal option On/Off set .@menu[1], 1; // Turn Group 1 summons On/Off -> MVP set .@menu[2], 1; // Turn Group 2 summons On/Off -> mini boss set .@menu[3], 0; // Turn Group 3 summons On/Off set .@menu[4], 0; // Turn Group 4 summons On/Off set .@menu[5], 0; // Turn Group 5 summons On/Off set .@menu[6], 0; // Turn Group 6 summons On/Off set .@menu[7], 0; // Turn Group 7 summons On/Off set .@menu[8], 0; // Turn Group 8 summons On/Off set .@menu[9], 0; // Turn Group 9 summons On/Off set .@menu[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$, "prontera2"; // 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 .group1cost, 500000; // 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 2068,// Boitata // 2238,// Champion Chen // 2240,// Clown Alphoccio // 2236,// Creator Flamel 1272,// Dark Lord 1931,// Dark Valkyrie 1719,// Datale 1046,// Doppelgangger 1389,// Dracula 1112,// Drake 1115,// Eddga 1418,// Evil Snake Lord 1871,// Fallen Bishop 1252,// Garm 1768,// Gloom Under Night // 2165,// Gold Queen Scaraba 1086,// Golden Thief Bug 1885,// Gopinich // 2241,// Gypsy Trentini 1649,// High Priest Magaleta 1651,// High Wizard Katrinn 1832,// Ifrit 1492,// Incantation Samurai 1734,// Kiel D-01 1251,// Knight of Windstorm // 2202,// Kraken 1779,// Ktullanux // 1980,// Kubkin ( I think this mvp is still new ) 1688,// Lady Tanee // 2156,// Leak 1646,// Lord Knight Seyren 1373,// Lord of Death // 2131,// Lost Dragon 1147,// Maya 1059,// Mistress 1150,// Moonlight Flower 2022,// Nidhoggr's Shadow 1087,// Orc Hero 1190,// Orc Lord 1038,// Osiris // 2235,// Paladin Randel 1157,// Pharaoh 1159,// Phreeoni 1689,// Pink Lady 1502,// Pori Pori // 2237,// Professor Celia // 2087,// Queen Scaraba 1623,// RSX 0806 1650,// Sniper Shecil // 2239,// Stalker Gertie 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 .group2cost, 250000; // 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 1582,// Deviling 1091,// Dragon Fly 1093,// Eclipse 1205,// Executioner 1783,// Galion 1592,// Gangster 1120,// Ghostring 1929,// Great Demon Baphomet 1259,// Gryphon 1990,// Hardrock Mammoth 1720,// Hydro 1090,// Mastering 1289,// Maya Purple 1262,// Mutant Dragon 1203,// Mysteltainn 1870,// Necromancer 1295,// Owl Baron 1829,// Sword Guardian 1991,// Tendrillion 1705,// Thanatos Despero 1707,// Thanatos Dolor 1706,// Thanatos Maero 1704,// Thanatos Odium 1204,// Tirfing 1089,// Toad 1618,// Ungoliant 1092,// Vagabond Wolf 1765,// Valkyrie 1200;// Zherlthsh // --------- // 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 .@i, 1; while ( .@i <= 9 ) { if ( .@menu[.@i] && getd(".group"+ .@i +"itemid") && getd(".group"+ .@i +"itemamount") ) { if ( getitemname( getd(".group"+ .@i +"itemid") ) == "null" ) { debugmes "Private MVP Room: Group no. "+ .@i +" is using invalid item id."; } } set .@i, .@i +1 ; } set .menu$, ( (.@menu[0])?"Heal":"" )+":"+( (.@menu[1])?"Summon "+ .group1name$:"" )+":"+( (.@menu[2])?"Summon "+ .group2name$:"" )+":"+( (.@menu[3])?"Summon "+ .group3name$:"" )+":"+( (.@menu[4])?"Summon "+ .group4name$:"" )+":"+( (.@menu[5])?"Summon "+ .group5name$:"" )+":"+( (.@menu[6])?"Summon "+ .group6name$:"" )+":"+( (.@menu[7])?"Summon "+ .group7name$:"" )+":"+( (.@menu[8])?"Summon "+ .group8name$:"" )+":"+( (.@menu[9])?"Summon "+ .group9name$:"" )+":"+( (.@menu[10])?"Buy branches":"" )+":Leave this room:Give up this room"; set .@i, 1; while ( .@i <= 9 ) { setd ".group"+ .@i +"idsize", getarraysize( getd(".group"+ .@i +"id") ); if ( .@menu[.@i] && getd(".group"+ .@i +"limit") <= 0 ) { set .@j, 0; while ( .@j < getd(".group"+ .@i +"idsize") ) { setd ".group"+ .@i +"menu$", getd(".group"+ .@i +"menu$") + getmonsterinfo( getd(".group"+ .@i +"id["+ .@j +"]"), 0) +":"; set .@j, .@j +1 ; } } set .@i, .@i +1 ; } } else { sleep 1; mapannounce .@map$, "Admin has refresh the server, please register the room again.", 1; mapwarp .@map$, .respawnmap$, .respawnx, .respawny; } end; L_Start: // I hate gotos ... but ... set .@dif, strnpcinfo(2); if ( .remind[.@dif] == 0 ) { set .remind[.@dif], 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 .@group, @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"+ .@group +"itemid") && getd(".group"+ .@group +"itemamount") ) { mes "[MVP Summoner]"; mes "The cost to summon a "+ getd(".group"+ .@group +"name$") +" is "+ getd(".group"+ .@group +"itemamount") +" "+ getitemname( getd(".group"+ .@group +"itemid") ) +"."; if ( getd(".group"+ .@group +"limit") < 0 ) mes "("+( ( ~getd(".group"+ .@group +"limit")+1 - getd(".group"+ .@group +"limit"+ .@dif) <= 0 )?0:( ~getd(".group"+ .@group +"limit")+1 - getd(".group"+ .@group +"limit"+ .@dif) ) )+") more summons for this group."; next; } else if ( getd(".group"+ .@group +"cost") ) { mes "[MVP Summoner]"; mes "The cost to summon a "+ getd(".group"+ .@group +"name$") +" is "+ callfunc("int__", getd(".group"+ .@group +"cost") ) +" zeny."; if ( getd(".group"+ .@group +"limit") < 0 ) mes "("+( ( ~getd(".group"+ .@group +"limit")+1 - getd(".group"+ .@group +"limit"+ .@dif) <= 0 )?0:( ~getd(".group"+ .@group +"limit")+1 - getd(".group"+ .@group +"limit"+ .@dif) ) )+") more summons for this group."; next; } else if ( getd(".group"+ .@group +"limit") < 0 ) { mes "[MVP Summoner]"; mes "("+( ( ~getd(".group"+ .@group +"limit")+1 - getd(".group"+ .@group +"limit"+ .@dif) <= 0 )?0:( ~getd(".group"+ .@group +"limit")+1 - getd(".group"+ .@group +"limit"+ .@dif) ) )+") more summons for this group."; next; } if ( getd(".group"+ .@group +"limit") < 0 && getd(".group"+ .@group +"limit"+ .@dif) >= ~getd(".group"+ .@group +"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"+ .@group +"limit") > 0 ) { for ( set .@i, 0; .@i < getd(".group"+ .@group +"idsize"); set .@i, .@i +1 ) set .@menu$, .@menu$ +( ( getd(".group"+ .@group +"limit"+ .@dif +"["+ .@i +"]") >= getd(".group"+ .@group +"limit") )?"^999999":"^000000" )+ getmonsterinfo( getd(".group"+ .@group +"id["+ .@i +"]"), 0) +" ("+ ( ( getd(".group"+ .@group +"limit") - getd(".group"+ .@group +"limit"+ .@dif +"["+ .@i +"]") <= 0 )?0:( getd(".group"+ .@group +"limit") - getd(".group"+ .@group +"limit"+ .@dif +"["+ .@i +"]") ) ) +")"+":"; set .@menu, select(.@menu$) -1; } else set .@menu, select( getd(".group"+ .@group +"menu$") ) -1; mes "[MVP Summoner]"; if ( .floodcontrol == 0 && .inputlimit > 1 ) { mes "Input an amount of monsters to summon."; next; input .@amount; if ( .@amount == 0 ) close; else if ( .@amount > .inputlimit ) set .@amount, .inputlimit; mes "[MVP Summoner]"; } else set .@amount, 1; if ( getd(".group"+ .@group +"itemid") && getd(".group"+ .@group +"itemamount") ) { if ( countitem( getd(".group"+ .@group +"itemid") ) < getd(".group"+ .@group +"itemamount") * .@amount ) { mes "You don't have enough "+ getitemname( getd(".group"+ .@group +"itemid") ) +" to summon a "+ getd(".group"+ .@group +"name$") +"."; close; } } else if ( getd(".group"+ .@group +"cost") ) { if ( zeny < getd(".group"+ .@group +"cost") * .@amount ) { mes "You don't have enough zeny to summon a "+ getd(".group"+ .@group +"name$") +"."; close; } } if ( .floodcontrol && mobcount("this","") > 0 ) { mes "I cannot summon another monster when there are monsters around."; close; } else if ( getd(".group"+ .@group +"limit") > 0 ) { if ( getd(".group"+ .@group +"limit"+ .@dif +"["+ .@menu +"]") >= getd(".group"+ .@group +"limit") ) { mes "I'm sorry, but you already summoned that monster too much. Try summon another."; close; } else if ( getd(".group"+ .@group +"limit"+ .@dif +"["+ .@menu +"]") + .@amount > getd(".group"+ .@group +"limit") ) { mes "The amount you input is more than the limit you can summon. Try reduce the amount."; close; } } else if ( getd(".group"+ .@group +"limit") < 0 ) { if ( getd(".group"+ .@group +"limit"+ .@dif) >= ~getd(".group"+ .@group +"limit")+1 ) { mes "I'm sorry, but you can't summon any more monster for this group."; close; } else if ( getd(".group"+ .@group +"limit"+ .@dif) + .@amount > ~getd(".group"+ .@group +"limit")+1 ) { mes "The amount you input is more than the limit you can summon. Try reduce the amount."; close; } } mes "Summoning "+ .@amount +" "+ getmonsterinfo( getd(".group"+ .@group +"id["+ .@menu +"]"), 0) +"."; mes "Ok, get ready ?"; close2; if ( .floodcontrol && mobcount("this","") > 0 ) end; if ( getd(".group"+ .@group +"itemid") && getd(".group"+ .@group +"itemamount") ) { if ( countitem( getd(".group"+ .@group +"itemid") ) < getd(".group"+ .@group +"itemamount") * .@amount ) end; delitem getd(".group"+ .@group +"itemid"), getd(".group"+ .@group +"itemamount") * .@amount; } else if ( getd(".group"+ .@group +"cost") ) { if ( zeny < getd(".group"+ .@group +"cost") * .@amount ) end; set zeny, zeny - getd(".group"+ .@group +"cost") * .@amount; } if ( getd(".group"+ .@group +"limit") > 0 ) { if ( getd(".group"+ .@group +"limit"+ .@dif +"["+ .@menu +"]") + .@amount > getd(".group"+ .@group +"limit") ) end; setd ".group"+ .@group +"limit"+ .@dif +"["+ .@menu +"]", getd(".group"+ .@group +"limit"+ .@dif +"["+ .@menu +"]") + .@amount; } else if ( getd(".group"+ .@group +"limit") < 0 ) { if ( getd(".group"+ .@group +"limit"+ .@dif) + .@amount > ~getd(".group"+ .@group +"limit")+1 ) end; setd ".group"+ .@group +"limit"+ .@dif, getd(".group"+ .@group +"limit"+ .@dif) + .@amount; } monster "this", 0, 0, "--ja--", getd(".group"+ .@group +"id["+ .@menu +"]"), .@amount; 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 .@map$, .@x, .@y, 0; if ( getmapusers(.@map$) > 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[.@dif], -1; end; } close; OnEnterMap: set .@dif, strnpcinfo(2); set .remind[.@dif], 0; for ( set .@i, 1; .@i <= 9; set .@i, .@i +1 ) deletearray getd(".group"+ .@i +"limit"+ .@dif), getd(".group"+ .@i +"idsize"); set .nobodycounter[.@dif], 0; getmapxy .@map$, .@x, .@y ,1; set .starttime[.@dif], gettimetick(2); do { set .remaintime[.@dif], .timeout * 60 + .starttime[.@dif] - gettimetick(2); set .@hour[.@dif], .remainTime[.@dif] / 3600 ; set .@min[.@dif], .remainTime[.@dif] % 3600 / 60 ; set .@sec[.@dif], .remainTime[.@dif] % 3600 % 60 ; delwaitingroom strnpcinfo(0); waitingroom "Time Left = "+( ( .@hour[.@dif] )?( .@hour[.@dif] +":"):"" )+( ( .@min[.@dif] < 10 )?"0"+ .@min[.@dif]: .@min[.@dif] )+":"+( ( .@sec[.@dif] < 10 )?"0"+ .@sec[.@dif]: .@sec[.@dif] ), 0; if ( getmapusers(.@map$) ) set .nobodycounter[.@dif], 0; else { set .nobodycounter[.@dif], .nobodycounter[.@dif] +1 ; if ( .nobodycounter[.@dif] > .nobodygiveup * 60 ) break; } sleep 995; } while ( .remaintime[.@dif] > 1 ); set .remaintime[.@dif], 0; delwaitingroom "MVP Summoner#"+ .@dif; mapwarp .@map$, .respawnmap$, .respawnx, .respawny; end; OnTimer100: stopnpctimer; npctalk "Welcome into the MVP arena. The bubble above my head is the countdown for using this room."; sleep 2000; npctalk "Once the timer hits zero, you'll be warped back to town."; sleep 3000; npctalk "Have fun!"; end;} //prontera2,165,159,3 script MVP Room Rental 403,{ mes "[Private MVP Room]"; mes "Are you interested in renting a MVP Room? It is great if you want to gather Boss Cards!"; next; mes "[Private MVP Room]"; mes "The price I charge is 2,500,000 Zeny to rent a room, but keep in mind the following though..."; next; mes "[Private MVP Room]"; mes "Once you are inside the room, the Summoner NPC will charge 500.000 for each MVP and 250.000 for each Mini Boss."; next; mes "[Private MVP Room]"; mes "If this sounds appealing to you, please select a MVP Room:"; if ( getvariableofnpc(.rentitemid, "MVP Summoner") && getvariableofnpc(.rentitemamount, "MVP Summoner") ) mes "Remember, the cost to rent a room for "+ getvariableofnpc(.timeout, "MVP Summoner") +" minutes is a "+ getvariableofnpc(.rentitemamount, "MVP Summoner") +" "+ getitemname( getvariableofnpc(.rentitemid, "MVP Summoner") ) +"."; else if ( getvariableofnpc(.rentcost, "MVP Summoner") ) mes "Remember, the cost to rent a room for "+ getvariableofnpc(.timeout, "MVP Summoner") +" minutes is "+ callfunc("int__", getvariableofnpc(.rentcost, "MVP Summoner") ) +" zeny."; else mes "Remember, you can only use the room for only "+ getvariableofnpc(.timeout, "MVP Summoner") +" minutes."; mes " "; for ( set .@i, 1; .@i <= 8; set .@i, .@i +1 ) { if ( getvariableofnpc(.remaintime[.@i],"MVP Summoner") ) { switch ( .type[.@i] ) { case 1: set .@color$, "^EE8800"; break; case 2: set .@color$, "^70CC11"; break; case 3: set .@color$, "^0000FF"; break; default: set .@color$, "^000000"; } mes "Room #"+ .@i +" = "+ .@color$ + .whoinuse$[.@i] +"^000000"; } } next; set .@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(.remaintime[.@room],"MVP Summoner") ) { if ( .inuseid[.@room] == getcharid(.type[.@room]) ) { if ( getvariableofnpc(.killmonster,"MVP Summoner") && getmapusers("06guild_0"+ .@room) == 0 ) killmonsterall "06guild_0"+ .@room; warp "06guild_0"+ .@room, 0,0; end; } else { mes "[Private MVP Room]"; switch ( .type[.@room] ) { case 1: set .@color$, "^EE8800Party "; break; case 2: set .@color$, "^70CC11Guild "; break; case 3: set .@color$, "^0000FFPlayer "; } mes "This room is reserved for "; mes .@color$ + .whoinuse$[.@room] +"^000000 ."; if ( getgmlevel() < getvariableofnpc(.gmlvlkick,"MVP Summoner") ) { mes "Please select another."; close; } mes " "; mes "Currently there are "+ getmapusers("06guild_0"+ .@room) +" players"; mes "in that room."; set .@remaintime, getvariableofnpc(.remaintime[.@room],"MVP Summoner"); mes "It still has "+( .@remaintime /60 )+"mn "+( .@remaintime %60 )+"s left."; set .@nobodycounter, getvariableofnpc(.nobodycounter[.@room],"MVP Summoner"); if ( .@nobodycounter ) mes "And have left empty for "+( .@nobodycounter /60 )+"mn "+( .@nobodycounter %60 )+"s."; mes "Kick them ?"; next; if ( select ( "No:Yes" ) == 1 ) close; set getvariableofnpc(.remaintime[.@room],"MVP Summoner"), -1; mes "[Private MVP Room]"; mes "Room#"+ .@room +" 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 .@type, select("For my party members", "For my guild members", "For personal account use" ); if ( getcharid(.@type) == 0 ) { mes "[Private MVP Room]"; mes "You do not own a "+( (.@type == 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[.@room],"MVP Summoner") ) { mes "[Private MVP Room]"; mes "I'm sorry, somebody else has already register this room faster than you."; close; } for ( set .@i, 1; .@i <= 8; set .@i, .@i +1 ) { if ( getvariableofnpc(.remaintime[.@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 ); if ( getvariableofnpc(.rentitemid, "MVP Summoner") && getvariableofnpc(.rentitemamount, "MVP Summoner") ) { if ( countitem(getvariableofnpc(.rentitemid, "MVP Summoner")) < getvariableofnpc(.rentitemamount, "MVP Summoner") ) end; } else if ( getvariableofnpc(.rentcost, "MVP Summoner") ) { if ( zeny < getvariableofnpc(.rentcost, "MVP Summoner") ) end; set zeny, zeny - getvariableofnpc(.rentcost, "MVP Summoner"); } warp "06guild_0"+ .@room, 0,0; killmonsterall "06guild_0"+ .@room; donpcevent "MVP Summoner#"+ .@room +"::OnEnterMap"; delitem 20000,1; end;} 06guild_01,49,49,4 duplicate(MVP Summoner) MVP Summoner#1 11606guild_02,49,49,4 duplicate(MVP Summoner) MVP Summoner#2 11606guild_03,49,49,4 duplicate(MVP Summoner) MVP Summoner#3 11606guild_04,49,49,4 duplicate(MVP Summoner) MVP Summoner#4 11606guild_05,49,49,4 duplicate(MVP Summoner) MVP Summoner#5 11606guild_06,49,49,4 duplicate(MVP Summoner) MVP Summoner#6 11606guild_07,49,49,4 duplicate(MVP Summoner) MVP Summoner#7 11606guild_08,49,49,4 duplicate(MVP Summoner) MVP Summoner#8 116 06guild_01 mapflag nowarpto06guild_02 mapflag nowarpto06guild_03 mapflag nowarpto06guild_04 mapflag nowarpto06guild_05 mapflag nowarpto06guild_06 mapflag nowarpto06guild_07 mapflag nowarpto06guild_08 mapflag nowarpto06guild_01 mapflag nomemo06guild_02 mapflag nomemo06guild_03 mapflag nomemo06guild_04 mapflag nomemo06guild_05 mapflag nomemo06guild_06 mapflag nomemo06guild_07 mapflag nomemo06guild_08 mapflag nomemo06guild_01 mapflag noteleport06guild_02 mapflag noteleport06guild_03 mapflag noteleport06guild_04 mapflag noteleport06guild_05 mapflag noteleport06guild_06 mapflag noteleport06guild_07 mapflag noteleport06guild_08 mapflag noteleport06guild_01 mapflag nosave SavePoint06guild_02 mapflag nosave SavePoint06guild_03 mapflag nosave SavePoint06guild_04 mapflag nosave SavePoint06guild_05 mapflag nosave SavePoint06guild_06 mapflag nosave SavePoint06guild_07 mapflag nosave SavePoint06guild_08 mapflag nosave SavePoint06guild_01 mapflag nopenalty06guild_02 mapflag nopenalty06guild_03 mapflag nopenalty06guild_04 mapflag nopenalty06guild_05 mapflag nopenalty06guild_06 mapflag nopenalty06guild_07 mapflag nopenalty06guild_08 mapflag nopenalty
-
Hello Hercules, could anyone be so kind to share a headgear preview NPC? It let's you put an ID and then temporarily (5 seconds) sets your headgear to that look. I've tried this script: http://eathena.ws/forum/topic/1779-stolaos-all-in-one-headgear-function/ but it did not work for me. It changed my job and hairstyle... xD But that is about the kind of script I'm looking for.
-
Annie's mission board, drop missions on reborn?
Helena replied to Helena's question in Script Support
Thank you so much annie, I'll try that!! -
Annie's mission board, drop missions on reborn?
Helena replied to Helena's question in Script Support
Aw, why write from scratch? This is a great script and works with all emulators. ...hmm.. is it possible to attach the reset to the jobmaster? For example: "Do you want to reborn?" - Yes - No (If yes) mes "Congratulations, you are reborn. All previously accepted missions have been dropped."; "#1 "+( ( @ms_b_m_1[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]"):"^000000", "#2 "+( ( @ms_b_m_2[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]")"^000000", "#3 "+( ( @ms_b_m_3[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]")"^000000", "#4 "+( ( @ms_b_m_4[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]")"^000000"); close; obviously not the right code. idk the code for it... >.< -
Annie's mission board, drop missions on reborn?
Helena replied to Helena's question in Script Support
Wow thanks annie! Although, I like that they can submit their mission at any level. The only thing that I don't like is that a novice high can submit a previously accepted (high level) mission, hence why the reset on reborn request. >.< Is that possible? (On a different note, because you fixed the infinite loop, does the goto count still need to be increased? Just curious~) Anyway thanks annie, you're the best scripter! -
Hello annie and other scripters~ This is the problem with the script. I have missions with level brackets, but my players have discovered to accept a mission a level 99, hunt the items/monsters, and hand in the mission after they have reborn, which gives them so much EXP to instantly become level 60+ My request is if someone can help me make all their missions reset when they reborn? Here is the drop mission part, I believe something like this needs to be played with? Thank you so much. note that this isnt functioning at all yet, except for the first 3 lines. >.<
-
Sorry double post, Annie it gives me this error when I patch it in, any idea how to solve?
-
awesome thanks
-
Hi Hercules, I found this on the rAthena forum and was wondering if someone could convert it to Hercules? (Considering most (if not all) rAthena source doesn't work on hercules). It's a ally chat system. Index: atcommand.c===================================================================--- atcommand.c (revision 17026)+++ atcommand.c (working copy)@@ -8699,7 +8699,33 @@ return 0; #undef MC_CART_MDFY }+ACMD_FUNC( toalli ) {+ char *name = sd->status.name;+ char mes[100] = "[Alliance] : ";+ + if( !message )+ return 0; + if( sd->sc.data[SC_BERSERK] || sd->sc.data[SC__BLOODYLUST] || ( sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOCHAT ) )+ return 0;++ if( battle_config.min_chat_delay ) {+ if ( DIFF_TICK( sd->cantalk_tick, gettick() ) > 0 )+ return 0;+ sd->cantalk_tick = gettick() + battle_config.min_chat_delay;+ }+ strcat( mes, name );+ strcat( mes, " : " );+ if( ( strlen( mes ) + strlen( message ) ) >= 99 ) {+ clif_displaymessage(fd, "Too long message.");+ return 0;+ }+ strcat( mes, message );++ alliance_send_message( sd, mes, strlen( mes ) );+ return 0;+}+ /** * Fills the reference of available commands in atcommand DBMap **/@@ -8955,7 +8981,8 @@ ACMD_DEF2("rmvperm", addperm), ACMD_DEF(unloadnpcfile), ACMD_DEF(cart),- ACMD_DEF(mount2)+ ACMD_DEF(mount2),+ ACMD_DEF(toalli) }; AtCommandInfo* atcommand; int i;Index: guild.c===================================================================--- guild.c (revision 17026)+++ guild.c (working copy)@@ -1332,6 +1332,29 @@ return c; } +/*====================================================+ * alliance_send_message por: Zephyr (brAthena)+ *---------------------------------------------------*/+int alliance_send_message( struct map_session_data *sd, const char *mes, int len ) {+ int i;+ unsigned char *buf = (unsigned char*)aMalloc((16 + len)*sizeof(unsigned char));+ struct guild* g;+ nullpo_ret(sd);+ if( !sd->status.guild_id )+ return 0;+ g = guild_search( sd->status.guild_id );+ if( g ) {+ //clif_guild_message(g, sd->status.account_id, mes, len);+ guild_recv_message( g->guild_id, sd->status.account_id, mes, len );+ for( i = 0; i < guild_get_alliance_count( g, 0 ); i ++ ) {+ //intif_guild_message( g->alliance[i].guild_id, sd->status.account_id, mes, len );+ guild_recv_message( g->alliance[i].guild_id, sd->status.account_id, mes, len );+ }+ log_chat( LOG_CHAT_GUILD, sd->status.guild_id, sd->status.char_id, sd->status.account_id, mapindex_id2name( sd->mapindex ), sd->bl.x, sd->bl.y, NULL, mes );+ }+ return 0;+}+ // Blocks all guild skills which have a common delay time. void guild_block_skill(struct map_session_data *sd, int time) {Index: guild.h===================================================================--- guild.h (revision 17026)+++ guild.h (working copy)@@ -82,6 +82,7 @@ int guild_change_emblem(struct map_session_data *sd,int len,const char *data); int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data); int guild_send_message(struct map_session_data *sd,const char *mes,int len);+int alliance_send_message(struct map_session_data *sd,const char *mes,int len); // alliance_send_message por: Zephyr (brAthena) int guild_recv_message(int guild_id,int account_id,const char *mes,int len); int guild_send_dot_remove(struct map_session_data *sd); int guild_skillupack(int guild_id,int skill_num,int account_id);
-
Hi Annie, thanks for your reply. I did change the goto count though, to 2048000, but the problem still persists. >.< So for now, there is no way for this to be fixed?
-
Hello, I am using annie's mission board script, but i keep getting a "run_script: infinity loop!" error. I've added a sleep2 option and changing the goto count, I've also tried adding a freeloop label but regardless this mssage keeps occuring. (It occurs right before the window of "Accept a mission, drop a mission and submit a mission". I don't know how freeloop works and if this would even resolve the problem. Maybe I've put it at the wrong place? Please help. http://upaste.me/3f7e10914bb4d6281
-
Hello Hercules, First of I want to thank you for providing me support for my previous posts. I have a question about the nagivation; I got the minimap icons to display correctly, but when I click navigate it shows gibberish text. A common problem, and I know a translated msgstringtable would solve this. Now the issue being, I've made a enormous amount of edits in the msgstringtable and I don't want all them to be lost. Can someone tell me how I could possibly add them in manually? I've already added these lines (see code) into my msgstringtable, but the gibberish text remains to appear. Does anyone know at which lines should this be on? Thank you very much!
-
It's already set to group, but it doesn't seem to read it... it only reads it when I put high numbers. Nevermind got it to work thanks!
-
Thats what I did, but the addon is set to old eathena features (hence why the level and not group) My game stucks if I log in game after I put a group ID of 50 for a account, but lets me get into the addon.. x.x
-
Hello Hercules, I am having a strange problem. I've downloaded a fluxcp addon but I've noticed that it goes per level and not per group. With other words, when I set the group ID of a player to 60, he can log in the addon of the website fine because hes regocnized as a GM, but he can not in the game (window with wrong group ID pops up, and the character in the game won't move.) But when I set the group ID to for example 4, he can log in the game fine, but not into the websites addon. =/ Admin is no problem because it's both level and group 99. Is there a possible way to turn the group back to the old "level" system? I only need a change in numbers... like a zero behind it. Thanks!
-
Thank you so much annie! I didn't know it didn't require a src mod. ^^;
-
Hello hercules. Can someone help me? I've made a potion that temp increases the HP/SP by 10% and I'm trying to make the effect "SC_INCMHPRATE" and "SC_INCMSPRATE" stay on dying, but I can't get it to. I've already located in status.c and made the following change: if(type == 0){ if( iStatus->get_sc_type(i)&SC_NO_REM_DEATH ){ switch (i) { case SC_ARMOR_PROPERTY://Only when its Holy or Dark that it doesn't dispell on death if( sc->data->val2 != ELE_HOLY && sc->data->val2 != ELE_DARK ) break; switch (i){ case SC_INCMHPRATE: case SC_INCMSPRATE: default: continue; } } } } _________________________________________________ But no difference. My SP still goes back to default after dying. Anyone please? Thank you.
-
It's a rAthena script facebook share system, I tried to turn the return 0; into return true; but without luck. Thank you so much for who can do it! http://rathena.org/board/topic/92423-facebook-share-system-new/#entry243846 This is the error i get in my console in case someone wonders... :x
-
The rAthena link has the same issue as post http://herc.ws/board/topic/4501-mission-board-repeatable-problem/?p=29167 so I went with your eAthena script. For some odd reason, with emistry script, it only checks the first mission in the list repeatable limit, so mission #2, #3, #4, etc, it doesn't get checked and will always let me do it unlimited times. And when it does check (first mission), it goes per IP (even if there isnt a query for it). I first tried it with a GM character and completed a mission, then I tried to do the mission with a 'normal' character, and it said I've already done the mission. For the eAthena script the only bug I noticed (so far) is that the "Only Once" setting lets characters do a mission twice instead of once.