-
Posts
1282 -
Joined
-
Last visited
-
Days Won
41
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Skorm
-
Cool idea for a vending map imo...
-
Mine does that already :/ You're going to have to tell me if you get any errors the script is tested and works perfectly on my server. Try applying the event and variable to a usable item like red potion. I feel you're using it incorrectly and there is nothing I can do about this. Unless you provide information regarding your problem... Edit-- Tested my script is working on eAthena I'm not sure what you're doing wrong. Seriously state your emulator first in any request to save us all from a big headache and a waste of our time. Literally every version I posted works to some extent on it's own respective emulator...
-
Lol I would've done party warp but I wanted to give party members the option if they wanted to be warped or not xD
-
This is a newer version I just made it should work for eA... //By Skorm eA Version2 - script Party-Summoner -1,{ OnEvent: set(.@pid,getcharid(1)); if(!.@pid){ dispbottom "You're not in a party!"; end; } mes ((@arg)?"Would you like to warp you and your party members to a map?":"Would you like to summon your party members?"); next; if(select("Yes:No")-1) close; getpartymember getcharid(1),2; copyarray(getd(".paid"+.@pid+"[0]"),$@partymemberaid[0],128); set(.@len,$@partymembercount); if(@arg) { mes "Where would you like to warp you and your party members?"; mes "(All lower-case please!)"; input(.@map$); warp .@map$,0,0; } for(setd(".i"+.@pid,0); getd(".i"+.@pid)<.@len; setd(".i"+.@pid,getd(".i"+.@pid)+1)) { set(.pid,.@pid); donpcevent "PartyWarp#"+getd(".i"+.@pid)+"::OnStart"; } set(@arg,0); close; } - script PartyWarp#0 -1,{ OnStart: set(.@pid,getvariableofnpc(.pid,"Party-Summoner")); set(.@i,getvariableofnpc(getd(".i"+.@pid ),"Party-Summoner")); set(.@aid,getvariableofnpc(getd(".paid"+.@pid+"["+.@i+"]"),"Party-Summoner")); set(.@pl$,rid2name(getpartyleader(.@pid,1))); getmapxy(.@map$,.@x,.@y,0,.@pl$); attachrid(.@aid); if(!playerattached()) end; if(.@pl$==strcharinfo(0)) end; attachnpctimer; startnpctimer; specialeffect2(35); mes "The party leader has summoned you would you like to join him/her?"; mes "This link can only be maintained for 60 seconds!"; if( prompt("Yes:No")==1&&!.@a&&playerattached() ) { stopnpctimer; specialeffect2(36); warp .@map$,.@x,.@y; } stopnpctimer; specialeffect2(73); close; OnTimer60000: stopnpctimer; mes "-Time-Out-"; mes "...Link Disengage!..."; specialeffect2(73); set(.@a,1); close; } - duplicate(PartyWarp#0) PartyWarp#1 -1 - duplicate(PartyWarp#0) PartyWarp#2 -1 - duplicate(PartyWarp#0) PartyWarp#3 -1 - duplicate(PartyWarp#0) PartyWarp#4 -1 - duplicate(PartyWarp#0) PartyWarp#5 -1 - duplicate(PartyWarp#0) PartyWarp#6 -1 - duplicate(PartyWarp#0) PartyWarp#7 -1 // Add more party member slots like.. // - duplicate(PartyWarp#0) PartyWarp#8 -1 In the script part of your usable item do... doevent("Party-Summoner::OnEvent"); Alternatively you can warp your entire party to any map of your choice by calling the same script like. set(@arg,1); doevent("Party-Summoner::OnEvent");
-
If he's using eA addrid won't work. This is a script I made back in eA it has just been sitting in my scripts folder I'm not sure if I ever finished it... You can test... I'll test it further when I get some time... //By Skorm //guild_vs2,50,50,5 script Party-Summoner 100,{ - script Party-Summoner -1,{ OnWhisperGlobal: //if(countitem(7929)<10){ mes "I'm sorry you need 10 "+getitemname(7929)+" to use this npc.";} mes "Would you like me to summon your party memebers?"; if(select("Yes:No")-1) close; set $s,0; set $ss,0; set $@sss,0; deletearray $@partymemberaid[0],128; getpartymember getcharid(1),2; //set $@maps$,strcharinfo(3); getmapxy($@map$,$@x,$@y,0); attachnpctimer; startnpctimer; close2; L_Recall: if($s<=$@partymembercount) callfunc "PartyWarper",$@map$,$@partymemberaid[$s],$@x,$@y; end; OnTimer1000: OnTimer2000: OnTimer3000: OnTimer4000: OnTimer5000: OnTimer6000: OnTimer7000: OnTimer8000: OnTimer9000: set $@sss,1; //setnpctimer 0; attachnpctimer; startnpctimer; if($ss==2){ set $s,$s+1; } if($s>=$@partymembercount){ stopnpctimer; end; } goto L_Recall; end; OnTimer10000: set $@sss,2; dispbottom $s; setnpctimer 0; attachnpctimer; startnpctimer; if($ss==2){ set $s,$s+1; } if($s>=$@partymembercount){ stopnpctimer; end; } goto L_Recall; end; OnInit: set $s,0; set $ss,0; } function script PartyWarper { detachrid; attachrid(getarg(1)); if((playerattached())>=1){ if($@sss==0){ set $ss,0; mes "The party leader has summoned you would you like to join him/her?"; mes "Make your selection within 10 sec and wait..."; } if($@sss==2) { mes "-Time Out-"; mes "...Disconnecting..."; } if(select("Yes:No")-1){ if($@sss==2) { sleep2 2000; getmapxy(.@map$,.@x,.@y,0); warp(.@map$,.@x,.@y); detachrid; set $@sss,0; set $ss,2; } } else if(@menu==1){ set $ss,2; } if((playerattached())>=1) warp getarg(0),getarg(2),getarg(3); } }
-
I'm still sticking with this isn't a good idea... SQL updates in-game are very slow and often require a re-log. The fakename mod would be a much better choice and wouldn't write and rewrite entries to the database.
-
@Skorm, this script will kick dual client only? Not same ip address (Cyber Cafe). I have used Universal V4 and it'll kick same ip address. The version you selected identifies with the mac address but you need Harmony in order to run it.
-
I think it would be like this. if (checkquest(25000+Job_Baby_Knight-4030) == 1) {
-
I'd also like to add prompt works really well with items scripts for example... if( prompt( "Continue","Close" ) > 200 ){ dispbottom "It's Closed now."; end; } else { dispbottom "Wew..it CONTINUED."; end; } Would allow you to recall this script much faster than if you were to press the cancel button on a normal select menu.
-
- script Royal Invasion -1,{ OnClock0603: OnClock1757: setarray .@Towns$[0],"ars_fild12"; // Random town list set .map$, .@Towns$[rand(getarraysize(.@Towns$))]; set .@mob, 3613; // Mob ID set .count, 500; // Mob count set .boss, 1; monster .map$,0,0,strmobinfo(1,.@mob),.@mob,.count,strnpcinfo(0)+"::OnMobDead"; end; OnMobDead: set .count, .count-1; if (!.count) { set .@mob, 3622; // Boss ID monster .map$,0,0,strmobinfo(1,.@mob),.@mob,1,strnpcinfo(0)+"::OnMobDead2"; } end; OnMobDead2: set .boss, 0; announce strcharinfo(0)+" Emperor's Army has been annihilated! The Rune Midgard is Safe",0; sleep2 20000; announce "All Mighty Warrior who fought the emperor will be return to their lands. The Portal is closed.", bc_all; atcommand "@doommap"; end; OnClock0803: if(!.boss) end; announce "The boss has won and the Portal is closed!!!", bc_all; killmonster .map$,strnpcinfo(0)+"::OnMobDead2"; killmonster .map$,strnpcinfo(0)+"::OnMobDead"; set .boss, 0; end; }
-
There is a mod drifting around that allows @fakename to show guild and party it would be much better to use that method instead of this one. Then you could just do @fakename to remove the title... I'll do I little looking for it and post back if I find it. Edit-- http://rathena.org/board/topic/60188-fakename-show-guildparty/
-
Like this? function script patienceTest { setarray .@pt_4096[0], 606,100, 914,50; // Job_Baby_Rune setarray .@pt_4097[0], 606,100, 914,50; // Job_Baby_Warlock setarray .@pt_4098[0], 606,100, 914,50; // Job_Baby_Ranger setarray .@pt_4099[0], 606,100, 914,50; // Job_Baby_Bishop setarray .@pt_4100[0], 606,100, 914,50; // Job_Baby_Mechanic setarray .@pt_4101[0], 606,100, 914,50; // Job_Baby_Cross setarray .@pt_4102[0], 606,100, 914,50; // Job_Baby_Guard setarray .@pt_4103[0], 606,100, 914,50; // Job_Baby_Sorcerer setarray .@pt_4104[0], 606,100, 914,50; // Job_Baby_Minstrel setarray .@pt_4105[0], 606,100, 914,50; // Job_Baby_Wanderer setarray .@pt_4106[0], 606,100, 914,50; // Job_Baby_Sura setarray .@pt_4107[0], 606,100, 914,50; // Job_Baby_Genetic setarray .@pt_4108[0], 606,100, 914,50; // Job_Baby_Chaser set .@jobID, getarg(0); set .@npc$, getarg(1); set .@qID, (25000+.@jobID-4030); if(Class != .@jobID || checkquest(.@qID) == 2) return; mes .@npc$; set .@j3, roclass(eaclass()|EAJL_THIRD); if (checkquest(.@qID) == 1) { mes "Have you brought the items yet?"; next; if(select("Yes:No")-1) { mes "Alright comeback when you have!"; close; } set .@invalid, 0; for(set .@i,0; .@i < getarraysize(getd(".@pt_"+ .@j3)); set .@i,.@i+2) { if(countitem(getd(".@pt_"+ .@j3 +"["+ .@i +"]")) < getd(".@pt_"+ .@j3 +"["+ (.@i+1) +"]")) { mes "- "+ getd(".@pt_"+ .@j3 +"["+ (.@i+1) +"]") +" "+ getitemname(getd(".@pt_"+ .@j3 +"["+ .@i +"]")); set .@invalid, 1; } } if(.@invalid) { mes .@npc$; mes "You are missing some items. Please come again when you have all the items I asked you to bring."; close; } mes .@npc$; mes "Congratulations~! You have completed the ^0042FFPatience Test^000000!"; mes "Now we can get started."; for(set .@i,0; .@i < getarraysize(getd(".@pt_"+ .@j3)); set .@i,.@i+2) delitem getd(".@pt_"+ .@j3 +"["+ .@i +"]"), getd(".@pt_"+ .@j3 +"["+ (.@i+1) +"]"); completequest .@qID; next; } else if (checkquest(.@qID) < 1) { mes "Good. We will start with the ^0042FFPatience Test^000000."; mes "You are still very young, which is why you must complete this task in order to prove me that you got what it takes to become one of us."; next; mes .@npc$; mes "Shall we begin then?"; next; if(select("Hold on:Yes!") == 1) { mes .@npc$; mes "You must complete the ^0042FFPatience Test^000000 in order to change your job."; mes "Let me know when you are ready."; close; } mes "Your ^0042FFPatience Test^000000 is to bring me the following items:"; for(set .@i,0; .@i < getarraysize(getd(".@pt_"+ .@j3)); set .@i,.@i+2) mes "- "+ getd(".@pt_"+ .@j3 +"["+ (.@i+1) +"]") +" "+ getitemname(getd(".@pt_"+ .@j3 +"["+ .@i +"]")); setquest .@qID; close; } return; }
-
prontera,184,177,5 script Refine Master 851,{ mes .npc$; mes "Hello there!"; mes "I can refine your items,"; mes "without fail if you have"; mes "the correct refinement deed,"; mes "and "+.price+" "+.cost$+"."; emotion e_no1,0; next; if(select("Yes:No")&2) { mes .npc$; mes "Alright, thanks anyways!"; close; } if(getd(.cost$)<.price) { mes .npc$; mes "You don't have enough "+.cost$+". You need "+(.price-getd(.cost$))+" more."; close; } mes .npc$; mes "Which equipment would you like to refine?"; next; while(set(.@a,.@a+1)<=.e_len) { if(getequipid(.@a)>-1) set .@menu$, .@menu$+.eqp$[.@a-1]+"- [^0000FF"+getitemname(getequipid(.@a))+"^000000]:"; else set .@menu$, .@menu$+"^adb4be"+.eqp$[.@a-1]+"- [Empty]^000000:"; } select(.@menu$); set .@eq_loc, @menu; set .@eq_itm, getequipid(.@eq_loc); if(.@eq_itm<0) { mes .npc$; mes "Hmm, I don't think you have anything equipped there."; close; } if(!getequipisenableref(.@eq_loc)) { mes .npc$; mes "I'm sorry but it seem that item cannot be refined..."; close; } set .@menu$, ""; set .@a, -1; while(set(.@a,.@a+1)<getarraysize(.en_deed)) if(getiteminfo(.en_deed[.@a],2)>-1) if(set(.@c,countitem(.en_deed[.@a]))) { set .@menu$, .@menu$+getitemname(.en_deed[.@a])+" - x"+.@c+":"; set .@b,.@b+1; set .@item[.@b], .en_deed[.@a]; } if(.@menu$=="") { mes .npc$; mes "Hmm, you don't seem to have any refinement deeds(tickets)."; close; } mes .npc$; mes "Please, choose the ^314a34Weapon or Armor refine deed^000000 you want to use."; next; select(.@menu$); set .@itm, .@item[@menu]; set .@itm_n$, getitemname(.@itm); set .@a, 4; if(.@eq_loc!=4&&getiteminfo(getequipid(.@eq_loc),2)!=4) { if(compare(.@itm_n$,"Weapon")) { mes .npc$; mes "You may only use Weapon deeds on weapons.."; emotion e_ag,0; close; } } else { if(compare(.@itm_n$,"Armor")) { mes .npc$; mes "You may only use Armor deeds on armor equipment.."; emotion e_ag,0; close; } } set .@eqrf, getequiprefinerycnt(.@eq_loc); while(set(.@a,.@a+1)) if(compare(.@itm_n$,""+.@a)) break; if(.@a<=.@eqrf) { mes .npc$; mes "I'm sure you don't want to waste a"; mes "deed by refining that to a lesser"; mes "or equal value."; emotion e_swt,0; close; } mes .npc$; mes "Great."; mes "as you wish!"; mes "i have my own special way to"; mes "refine..."; sleep2 1000; misceffect 901; misceffect 101; mes "......Kaboom!"; next; delitem .@itm,1; setd(.cost$,getd(.cost$)-.price); set .@crd0, getequipcardid(.@eq_loc,0); set .@crd1, getequipcardid(.@eq_loc,1); set .@crd2, getequipcardid(.@eq_loc,2); set .@crd3, getequipcardid(.@eq_loc,3); delitem2 .@eq_itm, 1, 1, .@eqrf, 0, .@crd0, .@crd1, .@crd2, .@crd3; getitem2 .@eq_itm, 1, 1, .@a, 0, .@crd0, .@crd1, .@crd2, .@crd3; emotion e_no1,0; mes .npc$; mes "All done!"; equip .@eq_itm; close; //NPC Constants OnInit: //=-=-=-=-=-=-=Configuration=-=-=-=-=-=-= set .npc$ , "[^0000FFRefine Master^000000]"; // NPC Name set .cost$ , "#CASHPOINTS"; set .price , 10000; setarray .en_deed, 6228, 6229, 6230, 6231, 6232, 6233, 6234, 6235, 6238, 6239, 6456; // Range of IDs selected for enchanting. setarray .eqp$ , "Upper Headgear", "Armor", "Left Hand", "Right Hand", "Garment", "Shoes", "Accessory1", "Accessory2", "Mid Headgear", "Low Headgear"; set .e_len , getarraysize(.eqp$); //=-=-=-=-=-=-=-=-Skorm-=-=-=-=-=-=-=-=-= }
-
Try this...7099,Old_Magic_Circle,Worn-out Magic Scroll,0,773,,10,,,,,,,,,,,,,{ input(.@name$); callfunc("warpto_func",.@name$); },{},{} function script warpto_func { if(!isloggedin(getcharid(3,getarg(0,"")))) { dispbottom "Player is either offline or doesn't exist."; getitem 7099,1; //If you want to get the item back on input fail. } else atcommand "@goto "+getarg(0,""); end; } If this is giving you the same error what revision are you using?
-
Looks great.
-
Excellent release.
-
If you're just trying to check if the player has all those items that would work. You could also do something like this. prontera,150,150,0 script Sample 100,{ setarray .@items, 501, 502, 503, 504; set .@len, getarraysize(.@items); while(.@i++-1<.@len) if(!countitem(.@items[.@i-1])) break; if (.@i==.@len) npctalk "You have all the items!"; end; }
-
There are a few different ways of doing a dynamic menu. set .@req$, "|1599|1201|"; //Items required. setarray .@eq$, "Upper Headear", "Armor" , "Left hand" , "Right hand" , "Garment", "Footgear", "Accessory 1", "Accessory 2", "Middle Headgear", "Lower Headgear"; set .@len, getarraysize(.@eq$); //Array size. set .@menu$, implode(.@eq$,":"); //Menu npctalk "Where is the item equipped?"; select(.@menu$); //Setting the choice @menu. set .@eq_itm, getequipid(@menu); //Equipped slot to ID. if(!compare(.@req$,"|"+.@eq_itm+"|")) //Comparing Equipped item to required items! npctalk "No that's not the item!"; else npctalk "Awesome you got it!"; end; This is an example where the menu isn't so dynamic but your options are limited to one of multiple required items without loops etc. setarray .@con, 501, 502 ,503, 504, 505; //Required List. set .@len, getarraysize(.@con); //Length of list. while(.@i++-1<.@len) set .@menu$, getitemname(.@con[.@i-1])+":"; //Creating the menu. set .@sel, select(.@menu$)-1; //Select from the menu and reduce the selection by one so it will match our array. if(!countitem(.@con[.@sel])) //Get the ID from our array with the players selection, and use it to see if the item exists. npctalk "You don't have "+getitemname(.@con[.@sel])+"."; else getitem(.@con[.@sel],1); end; In this example you match the array with the selected menu... If the menu and the array are the same we can grab and use items from the array as our players selection. If you mean using case conditions they really aren't very flexible, but they do work well for database type situations where the information can be individually set for each item. function script Monster_DB { switch(getarg(0)){ case 1002: switch(getarg(1)){ // Keep in mind these are precents overall so 20% is actually lower while 140% is actually 40% higher. // Where 200% is double... It's like saying 2*400=800. case 0: // Heal Item Rate (Healing Items) return 20; // 20% for healing items. case 2: case 7: case 11: case 18: // Uasable Item Rate (Anything Usable that doesn't heal) return 100; // 100% for healing items. case 3: // Common Item Rate (ETC) return 200; //200% more for Common Items. case 4: case 5: case 8: case 10: // Equip Item Rate (Ammo, Pet Equip, Weapon, Armor) return 140; // 140% more for equip items. case 6: // Card Item Rate (Card) return 200; // 110% more for cards. } case 1003: case 1004: case 1005: //...to add new monsters simply do as I've done. } } Where 1002(getarg(0)) is the mob ID and number 0-6(getarg(1)) are dropped item types. You can view the full script here. http://code.google.com/p/ea-addicts/downloads/detail?name=dropemulator.txt&can=2&q= I hope this helps.
-
I get script_rid2sd: fatal error ! player not attached!
Skorm replied to anjoliwanag's question in Scripting Support
A message popping up every 30 minutes on my screen would be rather annoying on any server... I recommend you use... announce "This will be shown to everyone at all in green.",bc_all,0x00FF00; And broadcast what ever you have to say to the players. -
The original Pokemon Anime series never followed the games outline Ash and Red are two completely different people. Now they're making and Anime that follows the games. I'm hoping this also follows the manga which was originally intended for an older audience.
-
*Blows the dust off Gameboy Color pops in Pokemon blue cartridge.*
-
Please tell me I'm not the only one HYPE for this! https://www.youtube.com/watch?v=_Lyi2RSVxqg Where is Euphy he's gotta see this...
-
- shop custom_seller2 -1,501:20 prontera.gat,95,99,5 script Poring Coin Shop 100,{ mes "I will sell you items for " + getitemname(.CoinID) + "."; callshop "custom_seller2",1; npcshopattach "custom_seller2"; end; OnBuyItem: for(set .@i,0; .@i<getarraysize(.customs); set .@i,.@i+1) { for(set .@d,0; .@d<getarraysize(@bought_nameid); set .@d,.@d+1) { if(@bought_nameid[.@d]==.customs[.@i]) { if(checkweight(@bought_nameid[.@d],@bought_quantity[.@d])) { if(countitem(.CoinID) >= .Price[.@i]*@bought_quantity[.@d]) { delitem .CoinID,.Price[.@i]*@bought_quantity[.@d]; getitem @bought_nameid[.@d],@bought_quantity[.@d]; } else dispbottom "You don't have enough "+getitemname(.CoinID)+" to purchase that item."; } else dispbottom "Purchasing these items will put you over the weight limit!"; } } } deletearray @bought_quantity, getarraysize(@bought_quantity); deletearray @bought_nameid, getarraysize(@bought_nameid); close; OnInit: setarray .customs[0],12103,607,678;// Enter the ID of customs here set .CoinID,7539; // Enter the ID of the coin here. setarray .Price[0],20,40,300; // Price for each custom is set to 20 coins npcshopitem "custom_seller2",0,0; // Don't touch any coding beyond here for(set .i,0; .customs[.i]; set .i,.i+1) npcshopadditem "custom_seller2",.customs[.i],.Price[.i]; end; } Fill out the arrays .customs, and .price... Edit-- Didn't see Emistry's post... Haha this is an old script back from the eAthena days anyways . It's a very good one though I come back to this as a base for all of my shops.
-
Yeah 3 is the length of parameters for one item. every item just add 3 and you'll be fine.
-
Alright I forgot one thing in the function so the rate should be fixed now. To add items exclusive to the party leader use the first callfunc. prontera,150,150,5 script Tier 1 Award 100,{ if(getcharid(0)!=getpartyleader(getcharid(1),2)) end; callfunc("package_func",3,7899,1,50); getpartymember(getcharid(1),2); set .mem, $@partymembercount; copyarray .mem_aid[0], $@partymemberaid[0], 128; while(.@i<.mem) { set(.@i,.@i+1); if(isloggedin(.mem_aid[.@i-1])){ attachrid(.mem_aid[.@i-1]); callfunc("package_func",3,12246,1,10); } } set @id,getcharid(1); warpparty "prontera",165,24,@id; disablenpc "Tier 1 Award"; end; OnInit: disablenpc "Tier 1 Award"; } /// callfunc("package_func",<length>,<itemid>,<amount>,<chance>{,<itemid>,<amount>,<chance>{,<itemid>,<amount>,<chance>{,...}}}) function script package_func { set .@len, getarg(0)+1; set(.@i,1); while(.@i<.@len) { set(.@i,.@i+3); if(rand(101)<=getarg(.@i-1)) { set(.@a,.@a+1); set(@package_item[.@a-1],getarg(.@i-3)); set(@package_amount[.@a-1],getarg(.@i-2)); getitem(@package_item[.@a-1],@package_amount[.@a-1]); } } return .@a; } prontera,151,151,5 script Tier 1 106,{ if (getcharid(1) < 1) { mes "You're not in a party."; } else if (getpartyleader(getcharid(1),2) != getcharid(0)) { mes "You are not the party leader."; } else { getpartymember(getcharid(1)); set .mem, $@partymembercount; if (.mem < 2) { mes "You need at least 2 party members."; } else { mes "[Summon Man]"; mes "Hi There,"; mes "Welcome to Riot's Tier 1"; next; mes "[Summon Man]"; mes "This is a custom party quest of XXXX RO that you need party members to get through on this quest..."; next; mes "[Summon Man]"; mes "This is not a simple MVP Room remember all MVP here is"; mes "a Edited Stats by your Admin which 1 or 2 people"; mes "cannot defeat the MVP's Hope you enjoy and good-luck..."; next; mes "[Summon Man]"; mes "Would you like to summon the first Boss?"; menu "Yes",-,"No",L_ayaw; next; mes "[Tier 1]"; mes "before you summon the boss please bring me the following"; next; mes "[Summon Man]"; mes "10x Platinum Bullion"; menu "Yes",-,"No",L_ayaw; next; mes "[Tier 1]"; mes "I'll be waiting for you chosen one!"; if(countitem(7230) < 10) goto koolang; if(countitem(7230) >= 10) goto k1; close; L_ayaw: mes "[Tier 1]"; mes "Just speak to me if you have the Requirements"; close; koolang: next; mes "[Tier 1]"; mes "As I said one missing material and all the others go to waste"; close; k1: next; mes "[Tier 1]"; mes "Very well done my friend you have finished the Tier 1 Quest"; mes "Get ready"; delitem 7230,10; next; monster "prontera",0,0,"Tier 1",1399,1,"Tier 1::OnDarkDead"; mes "[Tier 1]"; mes "Now go and kill the Great Baphomet"; close; OnDarkDead: announce "Party "+getpartyname(getcharid(1))+" has Finish the Tier 1",bc_all,0xFFFF00; enablenpc "Tier 1 Award"; end; L_Dead: announce "Summon Man: ",3; set $OnDarkDead,0; end; } } close; }