|  |  | 
 
  |  |  |  |  
  |  |  |  |  
  |  |  |  |  
  |  |  |  |  
  |  | 
	
		
   
   
      | Quests::Q&A This is the quest support section |  
	
	
		
	
	
 
  |  |  |  |  
	| 
			
			 
			
				02-01-2009, 08:23 PM
			
			
			
		 |  
	| 
		
			
			| Dragon |  | 
					Join Date: Dec 2007 
						Posts: 658
					      |  |  
	| 
				 Turn in 3 items for a class-specific weapon 
 Can anyone tell me what is wrong with this? It all works up until the turn in where he will eat the items and give no reward. 
	Code: #Gives an archtype specific item after killing Grummus, Gyrme, Aramin
sub EVENT_SAY { 
if($text=~/Hail/i){
quest::say("There is nothing to be joyous about when speaking in a [land] such as this.");
}
if($text=~/land/i){
quest::emote("sighs deeply");
quest::say("This land, Plane of Disease, is a most sickening place. I wish nothing more than to have it annihilated. It's very existence makes me disgusted. Perhaps, you and some other adventurers will be able to [purify] this land forever.");
}
if($text=~/purify/i){
quest::say("There are three foul [beings] that reside here. I am certain that with them dead, no more filth will be able to survive here.");
}
if($text=~/beings/i){
quest::say("For the sake of Norrath, destroy Gryme the Crypt Guardian, Aramin the Spider Guardian, and finally kill Grummus. Bring to me an item that will prove they are dead.");
}
}
sub EVENT_ITEM {
  if  (plugin::check_handin(\%itemcount, 51624 => 1, 1563 => 1, 1568 => 1)){
  quest::say("My mind can be at ease knowing those fiends are no more.");
  quest::emote("pulls a gleaming weapon out of s bag.");
  quest::say("Take this weapon. I am sure you will be able to make use of it.");
  if($class eq 'Warrior'){quest::summonitem(1569);}
    elsif($class eq 'Cleric'){quest::summonitem(1582);}
    elsif($class eq 'Paladin'){quest::summonitem(1577);}
    elsif($class eq 'Ranger'){quest::summonitem(1569);}
    elsif($class eq 'Shadowknight'){quest::summonitem(1577);}
    elsif($class eq 'Druid'){quest::summonitem(1582);}
    elsif($class eq 'Monk'){quest::summonitem(1579);}
    elsif($class eq 'Bard'){quest::summonitem(1569);}
    elsif($class eq 'Rogue'){quest::summonitem(1581);}
    elsif($class eq 'Shaman'){quest::summonitem(1582);}
    elsif($class eq 'Necromancer'){quest::summonitem(1581);}
    elsif($class eq 'Wizard'){quest::summonitem(1581);}
    elsif($class eq 'Magician'){quest::summonitem(1581);}
    elsif($class eq 'Enchanter'){quest::summonitem(1581);}
    elsif($class eq 'Beastlord'){quest::summonitem(1579);}
    elsif($class eq 'Berserker'){quest::summonitem(1577);}
}
}
			
			
			
			
				  |  
 
  |  |  |  |  
	
		
	
	
	| 
			
			 
			
				02-01-2009, 11:16 PM
			
			
			
		 |  
	| 
		
			|  | Developer |  | 
					Join Date: Mar 2003 
						Posts: 1,500
					      |  |  
	| 
 Not sure if it really makes a difference since it is a string...
 Have you tried "Warrior" instead of 'Warrior' (etc, etc)
 |  
	
		
	
	
	| 
			
			 
			
				02-02-2009, 12:09 AM
			
			
			
		 |  
	| 
		
			
			| Dragon |  | 
					Join Date: Dec 2007 
						Posts: 658
					      |  |  
	| 
 Yeah I did quotes instead, but it made no difference |  
	
		
	
	
 
  |  |  |  |  
	| 
			
			 
			
				02-02-2009, 03:01 AM
			
			
			
		 |  
	| 
		
			
			| Developer |  | 
					Join Date: Mar 2007 Location: Ohio 
						Posts: 648
					      |  |  
	| 
				  
 I think you may be missing a few semicolons at the end: 
	Code: sub EVENT_ITEM {
  if (plugin::check_handin(\%itemcount, 51624 => 1, 1563 => 1, 1568 => 1)) {
    quest::say("My mind can be at ease knowing those fiends are no more.");
    quest::emote("pulls a gleaming weapon out of s bag.");
    quest::say("Take this weapon. I am sure you will be able to make use of it.");
    if($class eq 'Warrior') {quest::summonitem(1569);}
      elsif($class eq 'Cleric') {quest::summonitem(1582);}
      elsif($class eq 'Paladin') {quest::summonitem(1577);}
      elsif($class eq 'Ranger') {quest::summonitem(1569);}
      elsif($class eq 'Shadowknight') {quest::summonitem(1577);}
      elsif($class eq 'Druid') {quest::summonitem(1582);}
      elsif($class eq 'Monk') {quest::summonitem(1579);}
      elsif($class eq 'Bard') {quest::summonitem(1569);}
      elsif($class eq 'Rogue') {quest::summonitem(1581);}
      elsif($class eq 'Shaman') {quest::summonitem(1582);}
      elsif($class eq 'Necromancer') {quest::summonitem(1581);}
      elsif($class eq 'Wizard') {quest::summonitem(1581);}
      elsif($class eq 'Magician') {quest::summonitem(1581);}
      elsif($class eq 'Enchanter') {quest::summonitem(1581);}
      elsif($class eq 'Beastlord') {quest::summonitem(1579);}
      elsif($class eq 'Berserker') {quest::summonitem(1577);};
  };
} On a side note, I would recommend using a switch/case (or possibly an array) instead of a string of if/elsif statements:
 
	Code: sub EVENT_ITEM {
  if (plugin::check_handin(\%itemcount, 51624 => 1, 1563 => 1, 1568 => 1)) {
    quest::say("My mind can be at ease knowing those fiends are no more.");
    quest::emote("pulls a gleaming weapon out of s bag.");
    quest::say("Take this weapon. I am sure you will be able to make use of it.");
    my $reward = 1001; #Cloth Cap is the booby prize if you're none of these classes
    switch ($class) {
      case "Warrior" {$reward = 1569;}
      case "Cleric" {$reward = 1582;}
      case "Paladin" {$reward = 1577;}
      case "Ranger" {$reward = 1569;}
      case "Shadowknight" {$reward = 1577;}
      case "Druid" {$reward = 1582;}
      case "Monk" {$reward = 1579;}
      case "Bard" {$reward = 1569;}
      case "Rogue" {$reward = 1581;}
      case "Shaman" {$reward = 1582;}
      case "Necromancer" {$reward = 1581;}
      case "Wizard" {$reward = 1581;}
      case "Magician" {$reward = 1581;}
      case "Enchanter" {$reward = 1581;}
      case "Beastlord" {$reward = 1579;}
      case "Berserker" {$reward = 1577;}
    };
  quest::summonitem($reward);
  };
} |  
 
  |  |  |  |  
	
		
	
	
 
  |  |  |  |  
	| 
			
			 
			
				02-02-2009, 08:02 AM
			
			
			
		 |  
	| 
		
			
			| Dragon |  | 
					Join Date: Dec 2007 
						Posts: 658
					      |  |  
	| 
				  
 I added the semicolons after those, but the quest still didn't work. Then I changed it to the format you suggested, but it still did the same thing. He just will not hand out a reward. This is how it looks now. 
	Code: #Gives an archtype specific item after killing Grummus, Gyrme, Aramin
sub EVENT_SAY { 
if($text=~/Hail/i){
quest::say("There is nothing to be joyous about when speaking in a [land] such as this.");
}
if($text=~/land/i){
quest::emote("sighs deeply");
quest::say("This land, Plane of Disease, is a most sickening place. I wish nothing more than to have it annihilated. It's very existence makes me disgusted. Perhaps, you and some other adventurers will be able to [purify] this land forever.");
}
if($text=~/purify/i){
quest::say("There are three foul [beings] that reside here. I am certain that with them dead, no more filth will be able to survive here.");
}
if($text=~/beings/i){
quest::say("For the sake of Norrath, destroy Gryme the Crypt Guardian, Aramin the Spider Guardian, and finally kill Grummus. Bring to me an item that will prove they are dead.");
}
}
sub EVENT_ITEM {
  if  (plugin::check_handin(\%itemcount, 51624 => 1, 1563 => 1, 1568 => 1)){
  quest::say("My mind can be at ease knowing those fiends are no more.");
  quest::emote("pulls a gleaming weapon out of a bag.");
  quest::say("Take this weapon. I am sure you will be able to make use of it.");
   my $reward = 1001; #Cloth Cap Is the booby prize if you're none of these classes
    switch ($class) {
      case "Warrior" {$reward = 1569;}
      case "Cleric" {$reward = 1582;}
      case "Paladin" {$reward = 1577;}
      case "Ranger" {$reward = 1569;}
      case "Shadowknight" {$reward = 1577;}
      case "Druid" {$reward = 1582;}
      case "Monk" {$reward = 1579;}
      case "Bard" {$reward = 1569;}
      case "Rogue" {$reward = 1581;}
      case "Shaman" {$reward = 1582;}
      case "Necromancer" {$reward = 1581;}
      case "Wizard" {$reward = 1581;}
      case "Magician" {$reward = 1581;}
      case "Enchanter" {$reward = 1581;}
      case "Beastlord" {$reward = 1579;}
      case "Berserker" {$reward = 1577;}
    };
  quest::summonitem($reward);
  };
}
			
			
			
			
				  |  
 
  |  |  |  |  
	
		
	
	
	| 
			
			 
			
				02-02-2009, 08:56 AM
			
			
			
		 |  
	| 
		
			|  | Developer |  | 
					Join Date: Mar 2003 
						Posts: 1,500
					      |  |  
	| 
 Yeah, I've never had to use those semicolons before either.
 Question: Does he give you the text and just no item or does he not even give you the text/emotes?
 
 EDIT: Looks like the last 2 items are not in the lucy database. Are they in your custom database?
 |  
	
		
	
	
	| 
			
			 
			
				02-02-2009, 04:56 PM
			
			
			
		 |  
	| 
		
			|  | Developer |  | 
					Join Date: Aug 2006 Location: USA 
						Posts: 5,946
					      |  |  
	| 
 I have a couple simple class armor set quests posted in the custom section that should work for what you want to do.  Here is one:http://www.eqemulator.net/forums/showthread.php?t=24921 
It is actually written a bit crudely as it was one of my very early quest scripts, but it does work.  I am sure I could write it much cleaner and more compact now, but I just haven't had the time to do it and no need to fix what isn't broken :P  The best way would be using arrays.  I have some scripts posted in the custom section that use arrays as well, so they might be useful for reference (which is why I posted them in the first place). |  
	
		
	
	
	| 
			
			 
			
				02-03-2009, 01:55 PM
			
			
			
		 |  
	| 
		
			
			| Demi-God |  | 
					Join Date: May 2007 
						Posts: 1,032
					      |  |  
	| 
 I hardly see anything "crude" there Trev =P 
Its a simple and well writen out quest code =)
 
For the purpose of this thread this is the only part truly needed:
 
	Code: 
sub EVENT_ITEM {
  if (plugin::check_handin(\%itemcount, 1319 => 1)) {
    my %rewards = (
"Warrior" => 4917, "Rogue" => 4907, "Monk" => 1206, "Berserker" => 55607, "Shadowknight" => 9829, "Paladin" => 9829, "Ranger" => 9829, "Bard" => 9829, "Beastlord" => 9829, "Cleric" => 9829, "Druid" => 9829, "Shaman" => 9829, "Wizard" => 9829, "Mage" => 9829, "Enchanter" => 9829, "Necromancer" => 9829
    );
    if(defined($rewards{$class})) {
      quest::summonitem($rewards{$class});
      quest::emote("Works to make a piece of armor from the instructions you provided to him." );
      quest::say ("Here you go $name.");
    }
} |  
	
		
	
	
	| 
			
			 
			
				02-03-2009, 02:14 PM
			
			
			
		 |  
	| 
		
			
			| Dragon |  | 
					Join Date: Feb 2007 
						Posts: 659
					      |  |  
	| 
 Just for completions sake I'll ask the easy question, you do have the plugins, yes?
 And for any hand in quest you should also use the return_items plugin for returning wrong items.
 |  
	
		
	
	
	| 
			
			 
			
				02-03-2009, 03:11 PM
			
			
			
		 |  
	| 
		
			
			| Dragon |  | 
					Join Date: Dec 2007 
						Posts: 658
					      |  |  
	| 
 This is now what my item part looks like. It still isn't working. The items needed are all the correct items, and I checked my plugins folder and it has the check_handin, guildmasters, check_hasitem, and soulbinders. 
	Code: sub EVENT_ITEM {
  if (plugin::check_handin(\%itemcount, 51624 => 1, 1563=> 1, 1568=> 1)) {
    my %rewards = (
"Warrior" => 1569, "Rogue" => 1581, "Monk" => 1579, "Berserker" => 1577, "Shadowknight" => 1577, "Paladin" => 1577, "Ranger" => 1569, "Bard" => 1569, "Beastlord" => 1579, "Cleric" => 1582, "Druid" => 1582, "Shaman" => 1582, "Wizard" => 1581, "Mage" => 1581, "Enchanter" => 1581, "Necromancer" => 1581
    );
    if(defined($rewards{$class})) {
      quest::say("My mind can be at ease knowing those fiends are no more.");
      quest::emote("pulls a gleaming weapon out of a bag.");
      quest::summonitem($rewards{$class});
      quest::say("Take this weapon. I am sure you will be able to make use of it.");
    }
  }
} |  
	
		
	
	
	| 
			
			 
			
				02-03-2009, 03:26 PM
			
			
			
		 |  
	| 
		
			
			| Demi-God |  | 
					Join Date: May 2007 
						Posts: 1,032
					      |  |  
	| 
 does any other quest with items hand in works? |  
	
		
	
	
	| 
			
			 
			
				02-03-2009, 03:28 PM
			
			
			
		 |  
	| 
		
			
			| Dragon |  | 
					Join Date: Dec 2007 
						Posts: 658
					      |  |  
	| 
 Yeah all my other quests work. This is the only one I have done with multiple items and rewards though, but I don't think that really makes a difference. |  
	
		
	
	
	| 
			
			 
			
				02-03-2009, 03:59 PM
			
			
			
		 |  
	| 
		
			
			| Dragon |  | 
					Join Date: Dec 2007 
						Posts: 658
					      |  |  
	| 
 The items names that I am turning in have an asterisk in them. Do you think that could be throwing the whole thing off? |  
	
		
	
	
	| 
			
			 
			
				02-03-2009, 04:02 PM
			
			
			
		 |  
	| 
		
			
			| Dragon |  | 
					Join Date: Feb 2007 
						Posts: 659
					      |  |  
	| 
 
	Quote: 
	
		| 
					Originally Posted by Randymarsh9  The items names that I am turning in have an asterisk in them. Do you think that could be throwing the whole thing off? |  No it doesn't look at the name.  The plugin is pretty simple.  Which plugins folder are you using?  There are a couple.  But since you said other handin quests were working I assume you have them in the right spot.  Try running the quest from the command line, ie perl <questname>  and see if that gives you anything.  You can also look in the logs to see if you get any errors. |  
	
		
	
	
	| 
			
			 
			
				02-03-2009, 04:48 PM
			
			
			
		 |  
	| 
		
			
			| Dragon |  | 
					Join Date: Dec 2007 
						Posts: 658
					      |  |  
	| 
 where do I run it from? will I need to Cd into another directory |  
	
		
	
	
	
	
	| 
	|  Posting Rules |  
	| 
		
		You may not post new threads You may not post replies You may not post attachments You may not edit your posts 
 HTML code is Off 
 |  |  |  All times are GMT -4. The time now is 05:47 PM.
 
 |  |  
    |  |  |  |  
    |  |  |  |  
     |  |  |  |  
 |  |