|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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,497
|
|
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,497
|
|
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 04:50 AM.
|
|
|
|
|
|
|
|
|
|
|
|
|