PDA

View Full Version : Help with Quests?!?


MarCrush
05-20-2005, 07:58 AM
I viewed the whole forum (Quests::Q&A) and I searched the forums, no answer. I tested my server to see if it worked but, still a problem. YES I GOT THE PERL VERSION.

I recently added some quests today and they won't work when I hail the quest NPC, I have them in my quests directory under the server files are. Here is one quest I got off the forums:

Exterminator_Qalantir.pl


############################################
# ZONE: West Freeport (freportw)
# DATABASE: PEQ-Velios
# LAST EDIT DATE: April 5,2005
# VERSION: 2.0
# DEVELOPER: MWMDRAGON
#
# *** NPC INFORMATION ***
#
# NAME: Exterminator_Qalantir
# ID: 9128
# TYPE: Warrior
# RACE: Human
# LEVEL: 30
#
# *** ITEMS GIVEN OR TAKEN ***
#
# Rat Whiskers ID-13071
#
# *** QUESTS INVOLVED IN ***
#
#1 - Exterminate the Vermin (West Freeport)
#
# *** QUESTS AVAILABLE TO ***
#
#1 - All
#
############################################

sub EVENT_SAY
{
if ($text=~/hail/i)
{

quest::say("Pleased to meet you $name, if you are a newcomer to Freeport then you can clearly see we are having quite the rat problem. If you are interested the militia has granted me some coin to reward those that bring me four rat whiskers.")

}

}
sub EVENT_ITEM
{
# Rat Whiskers ID-13071
if ($itemcount{13071} == 4)
{
quest::say("This is good work! I know this isnt much but it is all I can offer you. Thanks for your help!");
quest::ding();
quest::exp(25);
quest::givecash ("1","1","1","0");
}
}

#END of FILE Zone:freportw ID:9128 -- Exterminator_Qalantir




Guard_Alayle.pl


############################################
# ZONE: West Freeport (freportw)
# DATABASE: PEQ-Velious
# LAST EDIT DATE: April 5,2005
# VERSION: 2.0
# DEVELOPER: MWMDRAGON
#
# *** NPC INFORMATION ***
#
# NAME: Guard_Alayle
# ID: 9135
# TYPE: Warrior
# RACE: Freeport guard
# LEVEL: 10
#
# *** ITEMS GIVEN OR TAKEN ***
#
# Sealed Letter ID-18817
# A Tattered Flier ID-18818
#
# *** QUESTS INVOLVED IN ***
#
#1 - Zimel's Blades (Quest for Soulfire)
#
# *** QUESTS AVAILABLE TO ***
#
#1 - Paladin
#
############################################

sub EVENT_SAY
{

if($text=~/Hail/i)
{
quest::say("Greetings. citizen! You should not be in the Militia House. These are restricted grounds. Please leave at once unless you have business here.");
}

if($text=~/truth is good/i && $class == 'Paladin')
{
quest::say("Ssshhh!! Pipe down. The others might hear you. You must have something for me. Kalatrina must have given you something if you serve the Hall of Truth. If you have nothing please leave. You will blow my cover.");
}

}

sub EVENT_ITEM
{
if($class != 'Paladin')
{
quest::say("You have no business handing me this junk.");
quest::summonitem($item1) if($item1);
quest::summonitem($item2) if($item2);
quest::summonitem($item3) if($item3);
quest::summonitem($item4) if($item4);
return;
}
else
{

# Sealed Letter ID-18817
if($itemcount{18817} == 1)
{
quest::say("This is not good news. I must leave immediately. Here. Take this to Kala.. I mean my father. I found it on the floor of Sir Lucan DLeres quarters. Thanks again, messenger. I got this just in time.");
quest::ding();
# A Tattered Flier ID-18818
quest::summonitem("18818");
# Freeport Militia Faction
quest::faction("105","-1");
# Steel Warriors Faction
quest::faction("311","1");
# Knights of Truth Faction
quest::faction("184","1");
}
}
}
# After this Krazen_Loosh is supposed to spawn but he does not exsist in the DB.


#END of FILE Zone:freportw ID:9135 -- Guard_Alayle




Is it something wrong with the location, the quest file, or anything else? Plz help me out here.

steelrat
05-20-2005, 10:44 AM
Hi,
I'm not that great with PERL myself yet, but have you put the npc_name.pl file into your quests dir under the correct zoneshortname dir?

for instance, a quest that has it's npc in qeynos2 (zone shortname) called myname_isthis.pl would go into quests/qeynos2/myname_isthis.pl

Hope this helps.. :)

SR

PS.. after placing the quest, target the npc and do a #reloadpl command.. (this clears and reloads the cached pl files), (I think.. LOL), it IS definetly necessary when working on a quest, in order for it to reload properly.

SR

_Kerosh_
05-20-2005, 12:58 PM
woah, first
if($text=~/truth is good/i && $class == 'Paladin')
that should be an elsif
Also, you might want to re-format
elsif(($text=~/truth is good/i) && ($class eq "Paladin"))

Ya, you want to use eq when it is letters. " " works around Paladin, and ' ' works too. I always use " "

after all functions, always use a ; to end it, such as:
quest::say("Pleased to meet you.");
Notice the ; at the end. Without that you will get a crap load of syntax errors. Do not use it after if statements, elsif statements, or else statements.
This what you had:
quest::say("Pleased to meet you $name, if you are a newcomer to Freeport then you can clearly see we are having quite the rat problem. If you are interested the militia has granted me some coin to reward those that bring me four rat whiskers.")

Ok, next
A possible problem could be
else
{
}
not sure as use that, I always use elsif, it much easier :D.

Another problem, did you want the guy to spawn? I suggest making an origin spawn in some random GM Box (Origin Spawn is using the #spawn command), then spawning that origin spawn's NPC ID. That should be about it ^^

MarCrush
05-20-2005, 01:02 PM
Hi,
I'm not that great with PERL myself yet, but have you put the npc_name.pl file into your quests dir under the correct zoneshortname dir?

for instance, a quest that has it's npc in qeynos2 (zone shortname) called myname_isthis.pl would go into quests/qeynos2/myname_isthis.pl

Hope this helps..

SR

PS.. after placing the quest, target the npc and do a #reloadpl command.. (this clears and reloads the cached pl files), (I think.. LOL), it IS definetly necessary when working on a quest, in order for it to reload properly.

SR

It works now, thanks.

mwmdragon
05-20-2005, 05:44 PM
Just make sure ther is 2 empty lines at the end of each quests file.

Also the quests posted on this site are old and have been re-done but They will not be available to everyone until PEQ releases a new pack or until I finnish freeport.


By the way those quests compiled perfectly in PerlIDE and ran in EQEmu.
Just to defend the Newbie coding :P

MarCrush
05-21-2005, 03:37 AM
Just make sure ther is 2 empty lines at the end of each quests file.

Also the quests posted on this site are old and have been re-done but They will not be available to everyone until PEQ releases a new pack or until I finnish freeport.


By the way those quests compiled perfectly in PerlIDE and ran in EQEmu.
Just to defend the Newbie coding :P

I made sure there were two lines at the end of the quest files.

When I put the quest files under freportw and I logged on my server, went to character select, click enter world and WTF the zoneserver crashed. So I replaced Zone.exe with a 4 MB (was 1MB) and now I get errors when I am in some zones (freportw, jaggedpine) on the computer the server is on and I have the option of Abort/Retry/Ignore (if I do nothing I will just crash).
Clicking abort crashes the zoneserver, clicking retry zoneserver stays up for a while they it gives me an error that it needs to close (OK=Close, Cancel=Debug), clicking Ingore just does the same thing as retry (or most likely).

I still don't know why I keep getting "Zone.exe encountered a problem and needed to close" on startup of Windows.

woah, first
if($text=~/truth is good/i && $class == 'Paladin')
that should be an elsif
Also, you might want to re-format
elsif(($text=~/truth is good/i) && ($class eq "Paladin"))

Ya, you want to use eq when it is letters. " " works around Paladin, and ' ' works too. I always use " "

after all functions, always use a ; to end it, such as:
quest::say("Pleased to meet you.");
Notice the ; at the end. Without that you will get a crap load of syntax errors. Do not use it after if statements, elsif statements, or else statements.
This what you had:
quest::say("Pleased to meet you $name, if you are a newcomer to Freeport then you can clearly see we are having quite the rat problem. If you are interested the militia has granted me some coin to reward those that bring me four rat whiskers.")

Ok, next
A possible problem could be
else
{
}
not sure as use that, I always use elsif, it much easier .

Another problem, did you want the guy to spawn? I suggest making an origin spawn in some random GM Box (Origin Spawn is using the #spawn command), then spawning that origin spawn's NPC ID. That should be about it ^^
Uh, what are you talking about, I got those quests off the forums. That's why the developer doesn't say MarCrush!

mwmdragon
05-24-2005, 05:10 AM
The only help I could suggest now is to re-download the Perl Enabled EQEmu server files. Do not use any of your old files. Start fresh and edit the files that need editing.

And try with ONLY these 2 quest scripts in your freportw folder in your quest directory, and then make sure your first zone that is logged into is west freeport.

This is the newest code for Exterminator Qalantir and Guard Alayle, which has been used on a server and works.



############################################
# ZONE: West Freeport (freportw)
# DATABASE: PEQ-Velious
# LAST EDIT DATE: April 30,2005
# VERSION: 2.0
# DEVELOPER: MWMDRAGON
#
# *** NPC INFORMATION ***
#
# NAME: Guard_Alayle
# ID: 9135
# TYPE: Warrior
# RACE: Freeport Guards
# LEVEL: 10
#
# *** ITEMS GIVEN OR TAKEN ***
#
# A Sealed Letter ID-18817
# A tattered flier ID-18818
#
# *** QUESTS INVOLVED IN ***
#
#1 - Soulfire
#2 - Traitor Quest
#
# *** QUESTS AVAILABLE TO ***
#
#1 - Paladin
#2 - Warrior
#
# *** NPC NOTES ***
#
# Krazen_Loosh ID-9143 is supposed to spawn and kill Guard Alayle
#
# Must drop Reserve Militia Tunic ID-3097 (For The Traitor Quest)
#
############################################

sub EVENT_SAY
{
if($text=~/Hail/i)
{
quest::say("Greetings, citizen! You should not be in the Militia House. These are restricted grounds. Please leave at once unless you have business here.");
}

if($text=~/Truth is good/i)
{
quest::say("'Ssshhh!! Pipe down. The others might hear you. You must have something for me. Kalatrina must have given you something if you serve the Hall of Truth. If you have nothing, please leave. You will blow my cover.");
}

}

sub EVENT_ITEM
{
# A Sealed Letter ID-18817
if($itemcount{18817} == 1)
{
quest::say("This is not good news. I must leave immediately. Here. Take this to Kala.. I mean my father. I found it on the floor of Sir Lucan D'Lere's quarters. Thanks again, messenger. I got this just in time.");

quest::ding();
# A tattered flier ID-18818
quest::summonitem("18818");
# NPC Krazen_Loosh ID-9143
quest::spawn2(9143,0,0,-61.71,-106.59,-24.25,0);
}
}

sub EVENT_SIGNAL
{
# Sent from Krazen_Loosh NPCID-9143
quest::shout("Oh no!! It is too late!! Run!!");
}

sub EVENT_DEATH
{
quest::say("My comrades will avenge my death");
}
#END of FILE Zone:freportw ID:9135 -- Guard_Alayle





############################################
# ZONE: West Freeport (freportw)
# DATABASE: PEQ-Velios
# LAST EDIT DATE: April 5,2005
# VERSION: 2.0
# DEVELOPER: MWMDRAGON
#
# *** NPC INFORMATION ***
#
# NAME: Exterminator_Qalantir
# ID: 9128
# TYPE: Warrior
# RACE: Human
# LEVEL: 30
#
# *** ITEMS GIVEN OR TAKEN ***
#
# Rat Whiskers ID-13071
#
# *** QUESTS INVOLVED IN ***
#
#1 - Exterminate the Vermin (West Freeport)
#
# *** QUESTS AVAILABLE TO ***
#
#1 - All
#
############################################

sub EVENT_SAY
{
if ($text=~/hail/i)
{
quest::say("Pleased to meet you $name, if you are a newcomer to Freeport then you can clearly see we are having quite the rat problem. If you are interested the militia has granted me some coin to reward those that bring me four rat whiskers.")
}

}
sub EVENT_ITEM
{
# Rat Whiskers ID-13071
if ($itemcount{13071} == 4)
{
quest::say("This is good work! I know this isnt much but it is all I can offer you. Thanks for your help!");
quest::ding();
quest::exp(25);
quest::givecash ("1","1","1","0");
}
}

#END of FILE Zone:freportw ID:9128 -- Exterminator_Qalantir