EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Archive::Quests (https://www.eqemulator.org/forums/forumdisplay.php?f=624)
-   -   Trouble with some code (https://www.eqemulator.org/forums/showthread.php?t=15352)

jimbox114 08-15-2004 08:25 AM

Trouble with some code
 
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:

Code:

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.
Code:

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.


All times are GMT -4. The time now is 12:01 AM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.