|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Archive::Quests Archive area for Quests's posts that were moved here after an inactivity period of 90 days. |
|
|
|
06-11-2004, 11:14 AM
|
Sarnak
|
|
Join Date: Feb 2004
Posts: 37
|
|
.pl??
hey! just got perl installed and everything working, but i logged into my server to find that my quests don't work. Lemme explain my setup..
my everquest directory (my client) is located in D:\Everquest. My Server is at D:\Server-EqEmu. Within D:\Server-EqEmu i have 3 folders. One is D:\Server-EqEmu\Eqemu (this has the world.exe, zone.exe, ect. files). One is D:\Server-EqEmu\mysql (holds the db stuff). And the other is D:\Server-EqEmu\perl (holds perls stuff).
In D:\Server-EqEmu\Eqemu i put the perl58.pl file, but deleted it due to it crashing the zone.exe files. I also put a plugin.pl in this folder...i read this plugin.pl sends the quests to the server (not sure if the plugin.pl is causing a problem, it was sent to me...not sure if i need to edit more than the server name..).
Thing is the quests aren't working. Perl is installed. IO::Scaler is installed. and my quests are in D:\Sever-Eqemu\EQEmu\$EQEmuDir$\Quests. I was unsure why i needed to name the folder $EQEmuDir$, but was told to do so in another post describing the perl system. I have a quest called default.pl in my nexus folder to set the quest for the zone just to test it...
Quote:
#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!");}
}
|
simple hail quest.
My zone window:
Quote:
[Status] CURRENT_ZONE_VERSION: EQEMu 0.5.7-DR3
[Status] Loading Variables
[Status] Loading zone names
[Status] Loading items
[Status] EMuShareMem loaded
[Status] Loading npcs
[Status] Loading npc faction lists
[Status] Loading loot tables
[Status] Loading doors
[Status] Loading guilds
[Status] Loading factions
[Status] Loading corpse timers
[Status] Loading what ever is left
[Status] Loading commands
[Status] command_init(): Warning: Command 'help' defaulting to access level 0!
[Status] command_init(): Warning: Command 'version' defaulting to access level 0
!
[Status] command_init(): Warning: Command 'serversidename' defaulting to access
level 0!
[Status] command_init(): Warning: Command 'loc' defaulting to access level 0!
[Status] command_init(): Warning: Command 'flag' defaulting to access level 0!
[Status] command_init(): Warning: Command 'si' defaulting to access level 0!
[Status] 163 commands loaded
[Status] Loading embedded perl
[Status] Loading perlemb plugins.
[Status] Entering sleep mode
Connected to worldserver: 127.0.0.1:9000
|
Shows that perl is enabled...
Lastly, i put .pl after my quests (example: 183017.pl would be a filename), but the document itself stays as a text file. I would think it would be a perl file...but either there's something wrong with plugin.pl or there's something wrong with my file setup.
Any help would be great.
command promt:
i enter perl -MCPAN -e shell
i get this:
Quote:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\Mark>perl -MCPAN -e shell
Terminal does not support AddHistory.
There seems to be running another CPAN process (pid 1612). Contacting...
Other job not responding. Shall I overwrite the lockfile? (Y/N) [y] y
cpan shell -- CPAN exploration and modules installation (v1.7601)
ReadLine support available (try 'install Bundle::CPAN')
cpan>
|
thinking that's suppose to happen, i enter install IO::Scaler, i get this:
Quote:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\Mark>perl -MCPAN -e shell
Terminal does not support AddHistory.
There seems to be running another CPAN process (pid 3872). Contacting...
Other job not responding. Shall I overwrite the lockfile? (Y/N) [y]
cpan shell -- CPAN exploration and modules installation (v1.7601)
ReadLine support available (try 'install Bundle::CPAN')
cpan> install IO::Scalar
CPAN: Storable loaded ok
Going to read \.cpan\Metadata
Database was generated on Fri, 11 Jun 2004 19:35:49 GMT
IO::Scalar is up to date.
cpan>
|
plugin.pl:
Quote:
$SERVER="Nads_test_area";
$version="0.0.1";
@remove=("job","mrace","interest","guild");
#this is the main controller routine for default quests
sub dispatch{
my($pack, $filename, $line, $subr, $has_args, $want_array)=caller(1);
#$debug && quest::say("[debug]in dispatch");
#$debug && quest::say("[debug] package : $pack");
#$debug && quest::say("[debug] subroutine : $subr");
#get all variables in caller's scope
# first, we want to cleanup what was set by previous call
undef $job;
undef $interest;
undef $guild;
undef $mrace;
#$debug=0;
no strict 'refs';
my $package;
($package=$subr) =~ s/::\w+// ;
my $stash = *{$package . '::'}{HASH};
my $n;
foreach $old (@remove){
defined ${$old} && eval { "undef $package"."::"."$old"};
}
foreach $n (keys %$stash) {
my $fullname = $package . '::' . $n;
if( defined $$fullname){
$$n=${$fullname};
# potentially unsafe, don't do :push(@remove,$n); for the moment
#uncomment to get report of what is available
#quest::say("$n -> $$n (eqiv to $fullname)\n");
}
}
$debug && quest::say("checking event");
#this looks for the correct routine to use, based on l=globals and event type
if(defined $subr){
my $event;
if($subr =~ /EVENT_SAY/) { $event="say";}
if($subr =~ /EVENT_SLAY/) { $event="slay";}
if($subr =~ /EVENT_DEATH/) { $event="death";}
if($subr =~ /EVENT_SPAWN/) { $event="spawn";}
if($subr =~ /EVENT_ITEM/) { $event="item";}
if($subr =~ /EVENT_ATTACK/) { $event="attack";}
if($subr =~ /EVENT_WAYPOINT/) { $event="waypoint";}
#now lookup the routine, and return after first match.
#the following assumes npc have a $job, $mrace and $guild global
# This is where precedence takes place :
# first look for an interest oriented event, then a job oriented match,
# then race dependant, then guild ...
# whatever you set as a global category for the mob
# If guild behaviour is more important (or more specific)
# than race or job, for example, move the line up.
# zone usually comes last, as it allows to reproduce the genuine
# 'default.pl' behavior.
# returning ensures you don't get 2,3 or 4 answers for an event
#$debug && showvars();
#$debug && showfuncs();
defined $interest && defined &{"$interest$event"} && &{"$interest$event"} && return;
defined $job && defined &{"$job$event"} && &{"$job$event"} && return;
defined $mrace && defined &{"$mrace$event"} && &{"$mrace$event"} && return;
defined $guild && defined &{"$guild$event"} && &{"$guild$event"} && return;
#eventually revert to the standard per-zone default.pl
defined &{"$zonesn$event"} && &{"$zonesn$event"} && return;
# we came here if there was no match (i.e. no specific routine
# for that event)
# do nothing then ? or ...
defined &{"default$event"} && &{"default$event"} && return;
}
#we very unlucky to get here
}
sub showvars{
my($pack, $filename, $line, $subr, $has_args, $want_array)=caller(1);
#get all variables in caller's scope
no strict 'refs';
my $package;
($package=$subr) =~ s/::\w+// ;
my $stash = *{$package . '::'}{HASH};
my $n;
foreach $n (sort keys %$stash) {
my $fullname = $package . '::' . $n;
if( defined $$fullname){
$$n=${$fullname};
#uncomment to get report of what is available
quest::say("$n -> $$n (eqiv to $fullname)");
}else{
#defined &$fullname && quest::say("function $fullname is defined");
if(defined @$fullname){
quest::say(" list \@$fullname : (". join(",",@$fullname) . ")");
}
if(defined %$fullname){
quest::say(" hash \%$fullname : (");
foreach $k ( keys %$fullname){
quest::say(" $k => ${fullname}->{$k} ");
}
quest::say(")");
}
}
}
}
sub showfuncs{
my($pack, $filename, $line, $subr, $has_args, $want_array)=caller(1);
#get all variables in caller's scope
no strict 'refs';
my $package;
($package=$subr) =~ s/::\w+// ;
my $stash = *{$package . '::'}{HASH};
my $n;
foreach $n (sort keys %$stash) {
my $fullname = $package . '::' . $n;
defined &$fullname && quest::say("function $fullname is defined");
}
}
#print "starting plugin for $SERVER\n";
|
Thanks.
|
|
|
|
06-11-2004, 11:28 AM
|
Discordant
|
|
Join Date: Jun 2003
Location: England
Posts: 267
|
|
Re: .pl??
You dont need to name your EQEmu folder $EQEmuDir$ . That was just meaning whatever your EQEmu folder is called.
For example, I might have a quest in
C:\EQEmu\quests\default.pl
Make sure yours are in something like
D:\Server-EqEmu\EQemu\quests\default.pl
This should fix yout problem.
__________________
;o)
|
|
|
|
06-11-2004, 11:37 AM
|
Hill Giant
|
|
Join Date: Dec 2003
Posts: 166
|
|
Re: .pl??
Quote:
Originally Posted by nadr man
Thing is the quests aren't working. Perl is installed. IO::Scaler is installed. and my quests are in D:\Sever-Eqemu\EQEmu\$EQEmuDir$\Quests. I was unsure why i needed to name the folder $EQEmuDir$, but was told to do so in another post describing the perl system. I have a quest called default.pl in my nexus folder to set the quest for the zone just to test it...
|
$EQEmuDir$ represents your EQEmu directory. For instance, if I run emu from C:\EQEmu, my quests directory will be named C:\EQEmu\quests.
Within this "quests" directory you may create a subdirectory for each zone (ie: feerrott, nexus, potimeb, etc.). You may also place a default.pl file in this directory. Inside each of these zone subdirectories, you may have a perl file for any NPC type that is loaded in that zone.
You may have a structure like the following:
C:\EQEmu\quests\default.pl
C:\EQEmu\quests\nexus\2019.pl
C:\EQEmu\quests\nexus\152013.pl
C:\EQEmu\quests\feerrott\47003.pl
etc..
|
|
|
|
06-11-2004, 11:44 AM
|
Sarnak
|
|
Join Date: Feb 2004
Posts: 37
|
|
well, i did the D:\Server-EqEmu\eqemu\quests...but still quests don't work.
i'm assuming there's something wrong with perl. Any other ideas would be great.
|
06-12-2004, 06:18 AM
|
Old-EQEmu Developer
|
|
Join Date: Oct 2002
Location: Spain
Posts: 323
|
|
try another event,like spawn_death and then kill a mob,see if that triggers.
Code:
EVENT_DEATH
{
quest::shout("test");
}
|
06-17-2004, 02:53 AM
|
Sarnak
|
|
Join Date: Feb 2004
Posts: 37
|
|
nothing works. When i did #reloadquest (or something along those lines) i got "clearing .qst cashe"...i'm wondering if the server's not compiled correctly.
|
06-17-2004, 08:12 AM
|
Old-EQEmu Developer
|
|
Join Date: Oct 2002
Location: Spain
Posts: 323
|
|
#reloadquest is for .qst format I think,reload for PL is not implemented.
|
|
|
|
06-17-2004, 08:38 AM
|
Sarnak
|
|
Join Date: Feb 2004
Posts: 37
|
|
Well, i just did 2 things.
1. I reinstalled perl -- it went in fine.
2. I downloaded quests from quests.eqemulator.net.
At this point, those downloaded quests don't work. Atm i think it's my plugin.pl causing my problem. I'm using the plugin.pl from The Lazy Perl Quest Writer stickied in this forum.
it looks like this:
Quote:
$SERVER="Khalzed-dur";
$version="0.0.1";
@remove=("job","mrace","interest","guild");
#this is the main controller routine for default quests
sub dispatch{
my($pack, $filename, $line, $subr, $has_args, $want_array)=caller(1);
#$debug && quest::say("[debug]in dispatch");
#$debug && quest::say("[debug] package : $pack");
#$debug && quest::say("[debug] subroutine : $subr");
#get all variables in caller's scope
# first, we want to cleanup what was set by previous call
undef $job;
undef $interest;
undef $guild;
undef $mrace;
#$debug=0;
no strict 'refs';
my $package;
($package=$subr) =~ s/::\w+// ;
my $stash = *{$package . '::'}{HASH};
my $n;
foreach $old (@remove){
defined ${$old} && eval { "undef $package"."::"."$old"};
}
foreach $n (keys %$stash) {
my $fullname = $package . '::' . $n;
if( defined $$fullname){
$$n=${$fullname};
# potentially unsafe, don't do :push(@remove,$n); for the moment
#uncomment to get report of what is available
#quest::say("$n -> $$n (eqiv to $fullname)\n");
}
}
$debug && quest::say("checking event");
#this looks for the correct routine to use, based on l=globals and event type
if(defined $subr){
my $event;
if($subr =~ /EVENT_SAY/) { $event="say";}
if($subr =~ /EVENT_SLAY/) { $event="slay";}
if($subr =~ /EVENT_DEATH/) { $event="death";}
if($subr =~ /EVENT_SPAWN/) { $event="spawn";}
if($subr =~ /EVENT_ITEM/) { $event="item";}
if($subr =~ /EVENT_ATTACK/) { $event="attack";}
if($subr =~ /EVENT_WAYPOINT/) { $event="waypoint";}
#now lookup the routine, and return after first match.
#the following assumes npc have a $job, $mrace and $guild global
# This is where precedence takes place :
# first look for an interest oriented event, then a job oriented match,
# then race dependant, then guild ...
# whatever you set as a global category for the mob
# If guild behaviour is more important (or more specific)
# than race or job, for example, move the line up.
# zone usually comes last, as it allows to reproduce the genuine
# 'default.pl' behavior.
# returning ensures you don't get 2,3 or 4 answers for an event
#$debug && showvars();
#$debug && showfuncs();
defined $interest && defined &{"$interest$event"} && &{"$interest$event"} && return;
defined $job && defined &{"$job$event"} && &{"$job$event"} && return;
defined $mrace && defined &{"$mrace$event"} && &{"$mrace$event"} && return;
defined $guild && defined &{"$guild$event"} && &{"$guild$event"} && return;
#eventually revert to the standard per-zone default.pl
defined &{"$zonesn$event"} && &{"$zonesn$event"} && return;
# we came here if there was no match (i.e. no specific routine
# for that event)
# do nothing then ? or ...
defined &{"default$event"} && &{"default$event"} && return;
}
#we very unlucky to get here
}
sub showvars{
my($pack, $filename, $line, $subr, $has_args, $want_array)=caller(1);
#get all variables in caller's scope
no strict 'refs';
my $package;
($package=$subr) =~ s/::\w+// ;
my $stash = *{$package . '::'}{HASH};
my $n;
foreach $n (sort keys %$stash) {
my $fullname = $package . '::' . $n;
if( defined $$fullname){
$$n=${$fullname};
#uncomment to get report of what is available
quest::say("$n -> $$n (eqiv to $fullname)");
}else{
#defined &$fullname && quest::say("function $fullname is defined");
if(defined @$fullname){
quest::say(" list \@$fullname : (". join(",",@$fullname) . ")");
}
if(defined %$fullname){
quest::say(" hash \%$fullname : (");
foreach $k ( keys %$fullname){
quest::say(" $k => ${fullname}->{$k} ");
}
quest::say(")");
}
}
}
}
sub showfuncs{
my($pack, $filename, $line, $subr, $has_args, $want_array)=caller(1);
#get all variables in caller's scope
no strict 'refs';
my $package;
($package=$subr) =~ s/::\w+// ;
my $stash = *{$package . '::'}{HASH};
my $n;
foreach $n (sort keys %$stash) {
my $fullname = $package . '::' . $n;
defined &$fullname && quest::say("function $fullname is defined");
}
}
#print "starting plugin for $SERVER\n";
|
This plugin.pl looks like it's made to call 4 categories (job,mrace,interest,guild). From the point of a perl-idiot, this looks like it could be the problem. If this plugin.pl is incorrect, could someone post the contents of theirs?
|
|
|
|
06-18-2004, 11:50 PM
|
|
Dragon
|
|
Join Date: Mar 2004
Location: England
Posts: 776
|
|
Ok , I have everything installed correctly and had no errors on doing it , But when I boot 5 zones it never shows perl enabled, Please help ! i want some quests ...... :(
EDIT : Damn im sorry , I meant to put this is a different thread , I had to many windows open and got confused
|
06-19-2004, 12:39 AM
|
Sarnak
|
|
Join Date: Feb 2004
Posts: 37
|
|
in the source code you need to enable perl
|
06-19-2004, 07:43 AM
|
|
Dragon
|
|
Join Date: Mar 2004
Location: England
Posts: 776
|
|
Ok i got perl enabled now and it says it on my zones "Loading embedded Perl " but not the second line" Loading perlemb plugins"
any suggestions? and thanks for the help
|
06-19-2004, 07:54 AM
|
Sarnak
|
|
Join Date: Feb 2004
Posts: 37
|
|
do you have a quests folder or any .pl files in your eqemu folder?
|
06-19-2004, 11:19 AM
|
|
Dragon
|
|
Join Date: Mar 2004
Location: England
Posts: 776
|
|
I have plugin.pl in the eqemu folder and quests in a quest folder and i also have a plugin folder with plugin.pl in that .....not sure how that folder got there
|
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 03:41 PM.
|
|
|
|
|
|
|
|
|
|
|
|
|