PDA

View Full Version : Perl Quest Difficulties


Synch
01-11-2004, 06:10 AM
I've spent a little time searching around, and I haven't seen this addressed yet, so I'll ask.

I just added some quests to my server. None of them seem to work. The zones do not go down immediately, so it doesn't look like major syntax errors. I followed the stickied HOWTO at the top of this forum for installing IOScalar and nmake, so that's right, AFAIK. However, whenever I go to a NPC that I know has a quest file associated with him, like the Soulbinder in Shadowhaven or Sirran the Lunatic, I get no response from them if I hail them. In fact, no NPC has responded to my hails yet.

Any idea what might be going on? Zone and World did not give me any errors that I saw.

[edit]

Well, I get a warning about plugin.pl but from what I can tell, that's an optional file. Any ideas?

mew972
01-11-2004, 09:59 AM
did you put the quests in the right folders?
did you zone out of the zone with the quest person then zone back in?
Are you using the right NPCID?

Synch
01-11-2004, 12:26 PM
Yes, yes and yes. =)

koad
01-11-2004, 04:03 PM
sounds like your on the right track. it moaning about plugin.pl means you have perl support in the binary working.. does zone.exe say it has loaded embperl? and mebbe post a NPCID.pl snippit?

Lurker_005
01-11-2004, 09:28 PM
The best way to make sure quests are functioning is to only use a default.pl file with a VERY simple quest.

{eqemu dir}\quests\default.pl
#default.pl
#test quest to make sure quests are working
sub EVENT_SAY {
if($text=~/Hail/i){quest::say("Shhh... I am trying to test out questing!");}
}

Remove ALL other quests and restart your server. EVERY mob should reply to a hail now. If not something is wrong. Not compiled right, using wrong directory, using the wrong files, using the wrong quests for your DB.....

Synch
01-12-2004, 05:27 AM
Alright Lurker, I'll give that a shot. If I'm not mistaken, there's a default.pl for every zone I was trying. What I may do is just rename my quest directory and create a new default.pl for some zone, maybe airplane or freportw and see if that works. If so, I'll know it's the quest files.

Failing that I may try a clean install of the EMU and see if I screwed a configuration setting somewhere that I continually overlook.

Thanks for the help, I'll report here when I get off work and have a chance to see if it worked.

Muuss
01-12-2004, 06:25 AM
You may also try a .qst quest... you're perhaps using the wrong binaries... who knows :)

Lurker_005
01-12-2004, 07:36 PM
perl quests ONLY support 1 global default.pl I made an attempt to enable zone default.pl files, but I don't know enough about C to make it work.

Synch
01-13-2004, 12:15 PM
The binaries I'm using are the perl enabled ones from Shawn's release of DR2. I created a default.pl file and tried hailing various NPCs. No response. The default.pl I used was one of Lurker's

sub EVENT_SAY() {
quest::say("Greetings. $name... I can tell you about [variables] and [commands] or you can give me items.") if ($text=~/hail/i);
quest::say("Want to test a variable? Try [name]. [race]. [class]. [userid]. [ulevel]. [uguildid]. [mobid]. [mlevel]. [faction]. [zonesn]. [zoneln]. or [status]") if ($text=~/variabl/i);
quest::say("name = $name") if($text=~/name/i);
quest::say("race = $race") if($text=~/race/i);
quest::say("class = $class") if($text=~/class/i);
quest::say("userid = $userid") if($text=~/userid/i);
quest::say("ulevel = $ulevel") if($text=~/ulevel/i);
quest::say("uguildid = $uguildid") if($text=~/uguildid/i);
quest::say("mobid = $mobid") if($text=~/mobid/i);
quest::say("mlevel = $mlevel") if($text=~/mlevel/i);
quest::say("faction = $faction") if($text=~/faction/i);
quest::say("zonesn = $zonesn") if($text=~/zonesn/i);
quest::say("zoneln = $zoneln") if($text=~/zoneln/i);
quest::say("status = $status") if($text=~/status/i);
quest::say("Want to test a command? Try [emote]. [shout]. [spawn]. [echo]. [summonitem]. [castspell]. [depop]. [cumflag]. [flagnpc]. [flagclient].[exp]. [level]. [safemove]. [rain]. [snow]. [givecash]. [pvp]. [doanim]. [addskill]. or [me]") if($text=~/command/i);
quest::emote("emotes before you.") if ($text=~/emote/i);
quest::shout("Is this shouting?") if ($text=~/shout/i);
quest::say("I don't feel like spawning anything right now") if($text=~/spawn/i);
quest::echo("this is an echo echo echo echo echo") if ($text=~/echo/i);
quest::summonitem(17969) if ($text=~/summonitem/i);
quest::castspell(278, $id) if ($text=~/castspell/i);
quest::say("awww... I don't wanna!") if ($text=~/depop/i);
quest::exp(100) if ($text=~/exp/i);
quest::level($ulevel + 1) if ($text=~/level/i);
quest::safemove() if ($text=~/safemove/i);
quest::rain(1) if ($text=~/rain/i);
quest::snow(1) if ($text=~/snow/i);
quest::givecash(0,0,0,50) if ($text=~/givecash/i);
quest::pvp("on") if ($text=~/pvp/i);
quest::doanim(3) if ($text=~/doanim/i);
quest::me("The heavens applaud you.") if ($text=~/me/i);
}


Still stuck. No errors listed in Zone or World output... any further ideas guys?

*edit*
Lurker, I tried removing all the quests and using only your default.pl that you listed above. Still no response. Something odd is afoot. I checked zone.exe and it does state that embperl is loaded. This irks me as I used to program CGIs in perl and I can't seem to get something as simple as this working. I knew I should have stuck with UNIX. =)

Lurker_005
01-13-2004, 12:23 PM
well, copy and paste your zone and world output, perhaps even a dir listing of your quests dir (show the path too)

Synch
01-13-2004, 12:25 PM
Here's my zone.exe output:

[Status] CURRENT_ZONE_VERSION: EQEMu 0.5.3-DR2
[Status] Loading Variables
[Status] Loading zone names
[Status] Loading items
[Status] EMuShareMem loaded
[Status] Loading npcs
[Status] Loading NPCTypes from database...
[Status] Loading npc faction lists
[Status] Loading NPC Faction Lists from database...
[Status] Loading loot tables
[Status] Loading Loot tables from database...
[Status] Loading doors
[Status] Loading Doors from database...
[Status] FileLoadSPDat() Loading spells from spells_us.txt
[Status] FileLoadSPDat() spells loaded: 4578
[Status] Loading guilds
[Status] Loading factions
[Status] Loading corpse timers
[Status] Loading what ever is left
[Status] Loading commands
[Status] 151 commands loaded
[Status] Loading embedded perl
[Status] Loading perlemb plugins.
[Status] Warning - plugin.pl: Perl runtime error: open 'plugin.pl' No such file
or directory at (eval 3) line 1.

[Status] Entering sleep mode
Connected to worldserver: 192.168.0.100:9000


Here's World
[Status] CURRENT_WORLD_VERSION:EQEMu 0.5.3-DR2
[Status] Loading variables..
[Status] Loading zones..
[Status] Loading items..
[Status] EMuShareMem loaded
[Status] Loading items from database: count=26699, max id=68199
[Status] LoginServer.ini read.
[Status] Loading guild ranks..
[Status] Loading addon.ini..
[Status] Loading EQ time of day..
[Status] Reboot zone modes ON
[Status] Deleted 0 stale player corpses from database
[Status] Deleted 0 stale player backups from database
Breaking bards...done
TCP listening on: 24.170.122.234:9000
World server listening on: 24.170.122.234:9000
Connected to LoginServer: eqlogin1.eqemulator.net:5997


Hang on, I'll get you the directory listing.

Synch
01-13-2004, 12:27 PM
Here's the quests directory.


C:\eqemu\quests>dir
Volume in drive C has no label.
Volume Serial Number is 4C37-8525

Directory of C:\eqemu\quests

01/13/2004 06:17 PM <DIR> .
01/13/2004 06:17 PM <DIR> ..
01/13/2004 06:17 PM 157 default.pl
1 File(s) 157 bytes
2 Dir(s) 30,181,982,208 bytes free

C:\eqemu\quests>

There were more quests, but I've moved them to another directory so that I could test with just this simple default.pl. Once I get this working, I'll move them back and we'll see if they work.

Lurker_005
01-13-2004, 12:38 PM
Man it does all look right! Let me try the binaries shawn released yesterday and see if they behave differently for me.

Synch
01-13-2004, 12:41 PM
Thanks for the help Lurker. If it turns out that Shawn's binaries have a flaw (ah, beta... ^.^) then I'll probably await the official 0.5.3 release. Do we know if perl will be enabled by default or will I need to recompile? Neither is a problem, of course innate compiled support is less of a hassle. =)

Lurker_005
01-13-2004, 12:46 PM
patching.. yada yada...
(been using dr1 till they got things working good again)

by the way create an empty plugin.pl file in your eqemu dir to get rid of the warning.

Lurker_005
01-13-2004, 01:22 PM
ok, no problems with shawn's exe's either. Off the top of my head I can't think of where the problem might be. Best I can suggest is to start over from the beginning and resetup your server following a guide. Look for anything you may be taking for granted.

killspree
01-14-2004, 09:35 AM
[Status] Warning - plugin.pl: Perl runtime error: open 'plugin.pl' No such file
or directory at (eval 3) line 1.

That a normal error? Haven't fiddled with recent dev releases of the emu for a month or so, so not sure.

farce
01-14-2004, 09:40 AM
yeah that's normal

Lurker_005
01-14-2004, 06:11 PM
by the way create an empty plugin.pl file in your eqemu dir to get rid of the warning.

couple of posts up ;)

Synch
01-16-2004, 01:37 PM
Alright Lurker, I'll give it another shot. Clean install it is.

MacLeod
01-18-2004, 03:15 AM
You might have to make a new line and/or put a space at the end of your pl file.

turk
01-28-2004, 02:57 AM
does zone.exe say it has loaded embperl? and mebbe post a NPCID.pl snippit?
I'm having more or less the same problem. But I don't see any mention of emperl in the zone windows. I installed perl and installed the IO::Scalar thing. When doing the test "perl -MIO::Scalar -e "print 'AOK'"" I get an AOK. Any suggestions?

Lurker_005
01-28-2004, 04:12 PM
I'm having more or less the same problem. But I don't see any mention of emperl in the zone windows.

Are you sure that your using the perl version of EQEmu?

turk
01-28-2004, 05:31 PM
I must not be using the perl enabled EQemu. I threw in the .qst format files and it worked. It was me.