PDA

View Full Version : Adding PL scripts to NPCs


Melandril
05-28-2019, 09:03 AM
TL;DR;
I read http://www.eqemulator.org/forums/showthread.php?t=33005&highlight=pearl+script and 1) #reloadpl was not recognized and 2) no matter if I used an existing NPC (eg #arias in tutorialb) or spawned and created a new npc, the script did not load

longer version
before starting, #arias did not respond to me....which I assumed was quest related...so, I ignored this. Then I thought perhaps #arias was different from "arias", checked the DB on that assumption, and there is only #arias.

either way, I wanted to play with the two most basic scripts I could find: a read-response script and a teleport script (pasted below). I know the coordinates are wrong, but I could not get even the "hail" portion to work, not with a #reloadqst (which did appear to work?) or with a full shutdown and restart of the emu server.

sub EVENT_SAY {
if($text=~/hail/i) {
quest::say("$name, where do you want to go today? I can send you to the [". quest::saylink("temple") . "] ?");
}
else if($text=~/temple/i) {
quest::say("Let me know if this spell works....I just wrote it!");
quest::movepc(729,-55,44,-158.81); # TODO: fix coordinates later
}
}

The script is located in the "\eqemu_server\quests\tutorialb" once each for #arias.pl and the teleporter.pl I added. As for why I thought this should work....it's basically the same functions that came with #arias on a fresh download....which I am sure are working for other people and assumed would work for me.

With all that said, I guess, what I'm trying to ask is, how do I get this script to trigger for either the existing #arias or the new spawn teleporter npcs, given that I think I've placed the script in the right folder? Is there an extra step to attach script to npc spawn or object?

Thank you

Sturm
05-28-2019, 09:52 AM
You have a syntax error else if should be elsif in Perl.


sub EVENT_SAY {
if($text=~/hail/i) {
quest::say("$name, where do you want to go today? I can send you to the [". quest::saylink("temple") . "] ?");
}
elsif($text=~/temple/i) {
quest::say("Let me know if this spell works....I just wrote it!");
quest::movepc(729,-55,44,-158.81); # TODO: fix coordinates later
}
}


Also ensure the file is named #Arias.pl not #arias.pl - pretty sure their case sensitive.

An easy way to check your syntax is to open a command window then change directory to where your quests are located:

cd C:/EQ_Emu/quests (or whatever your path is to that folder)

then:

perl -c #Arias.pl

That should spit out any error's and tell you what line it's on or near, then you just gotta figure out what's wrong there.

Oh! Right nearly forgot the in-game command is: #reloadquests

Happy Scripting!

Maze_EQ
05-28-2019, 02:50 PM
You have a syntax error else if should be elsif in Perl.


sub EVENT_SAY {
if($text=~/hail/i) {
quest::say("$name, where do you want to go today? I can send you to the [". quest::saylink("temple") . "] ?");
}
elsif($text=~/temple/i) {
quest::say("Let me know if this spell works....I just wrote it!");
quest::movepc(729,-55,44,-158.81); # TODO: fix coordinates later
}
}


Also ensure the file is named #Arias.pl not #arias.pl - pretty sure their case sensitive.

An easy way to check your syntax is to open a command window then change directory to where your quests are located:

cd C:/EQ_Emu/quests (or whatever your path is to that folder)

then:

perl -c #Arias.pl

That should spit out any error's and tell you what line it's on or near, then you just gotta figure out what's wrong there.

Oh! Right nearly forgot the in-game command is: #reloadquests

Happy Scripting!

To avoid dealing with the names of NPCs you can alternatively use the NPCID.

Create a text file in each folder where you make scripts to identify 295001.pl = #Arias

As Sturm said, use perl -c 295001.pl to verify syntax is correct.

I prefer the NPCID method because it's common to have multiple npcs with the same name to perform different functions.

Melandril
05-28-2019, 05:19 PM
you both have my thanks

Now that I have the NPCs responding (and have learned how to check scripts and have learned my JavaScript syntax isn't going to cut with elsif's), I can start the amazing adventure of stealing and tweaking the scripts in the quests forums =)