PDA

View Full Version : Trouble with some code


jimbox114
08-15-2004, 08:25 AM
I have looked at this over and over again. I have tried many different ways, and compared it to other similar quests and just can't seem to find whats wrong with it. What this basically does is spawns 4 mobs that each drop a item. You then turn those 4 items into the quest npc and get a item in return. Here is the code as of now:


sub EVENT_SAY
{
if ($text=~ /Hail/i){quest::say("What business do you have in my realm? I did not request your presence? Has [somebody] sent you to me?");}
if ($text=~ /somebody/i){quest::say("Who told you to speak with me? Speak there name!");}
if ($text=~ /phexor/i){quest::say("Oh you you are here on the matter of Father Time. Well before I waste my time helping you, I expect you to pass a [test]. If you are indeed a worthy soldier, you will have no problem passing this test.");}
if ($text=~ /test/i){quest::say("Yes, I will summon forth some of my most honorable soldiers. Fight them and return to me each of there gems. Let me know when you are [ready] to start.");}
if ($text=~ /ready/i){quest::say("Very Well, Hand me 500 pieces of platinum to start.");}

sub EVENT_ITEM {
if ($itemcount{69117} == 4){
quest::say("Very well $name, I see you have the will of a noble soldier. Take this Symbol as proof of our meeting. Now you must venture to Paludal Caverns where you will meet The Duke of Below.");
quest::summonitem(69113);
}
if ($platinum == 500) {quest:say("Below me is four soldiers. Fight them and bring me there symbol's as proof of your actions.");
quest::spawn(281234,0,0,-170,2438,463);
quest::spawn(281234,0,0,-170,2311,466);
quest::spawn(281234,0,0,180,2283,463);
quest::spawn(281234,0,0,180,2431,463);}
}


Oh he does nothing when hailed. He basically is only doing the default quest for the server, so it is not reading any of the quest from his file.

Cisyouc
08-15-2004, 09:06 AM
Try this.
sub EVENT_SAY
{
if($text=~/hail/i)
{
quest::say("What business do you have in my realm? I did not request your presence! Has [somebody] sent you to me?");
}
if($text=~/somebody/i)
{
quest::say("Who told you to speak with me? Speak their name!");
}
if($text=~/phexor/i)
{
quest::say("Oh you you are here on the matter of Father Time. Well before I waste my time helping you, I expect you to pass a [test]. If you are indeed a worthy soldier, you will have no problem passing this test.");
}
if($text=~/test/i)
{
quest::say("Yes, I will summon forth some of my most honorable soldiers. Fight them and return to me each of there gems. Let me know when you are [ready] to start.");
}
if($text=~/ready/i)
{
quest::say("Very Well, Hand me 500 pieces of platinum to start.");
}
}
sub EVENT_ITEM
{
if($platinum == "500")
{
quest::say("Below me is four soldiers. Fight them and bring me there symbol's as proof of your actions.");
quest::spawn(281234,0,0,-170,2438,463);
quest::spawn(281234,0,0,-170,2311,466);
quest::spawn(281234,0,0,180,2283,463);
quest::spawn(281234,0,0,180,2431,463);
}
if($itemcount{69117} == "4")
{
quest::say("Very well $name, I see you have the will of a noble soldier. Take this Symbol as proof of our meeting. Now you must venture to Paludal Caverns where you will meet The Duke of Below.");
quest::summonitem(69113);
}
}

After looking at my formatted code compared to yours, I noticed a very simple problem. You didn't close EVENT_SAY. Remember to READ the output of zone.exe and it will usually tell you exactly what is wrong.

~Cisyouc

jimbox114
08-15-2004, 09:30 AM
That is most certainly a big improvement. I think the biggest problem was my lack of "500" for the platinum. At one point I did have the } for the event_say, it must have gotten removed when i was playing with it.

Only problem now is it only spawns 1 of the 4 things. It basically spawns the first spawn, and skips the rest. I went back and double checked the locations and they check out. It might have something to do with the same reason my spell scriber don't work. I have tried 3 different codes word for word that other servers use, and mine still don't work.

Cripp
08-15-2004, 09:46 AM
you gotta space out all the { from ) like.. if ($text=~/poop/i) {
gotta space that out not cram it together :)

Charmy
08-15-2004, 09:57 AM
That won't effect the compile cripp, but it makes it alot more readable.

Best tip i learned while doing perl quests was from sandy i think... i don't remember really, someone did! anyway if you have perl installed on your computer, just open a command prompt and type perl $EQEMUQUESTDIR$/quest.pl

and it will tell you all the errors you have, if any, another option is to do perl -c $QUESTDIR$/quest.pl which only checks syntax instead of running the quest, but since there is no main sub to run in these quests you don't really need the -c, just running the quest will check syntax for you.