PDA

View Full Version : ::scribespells() up to X level?


Asphixiate
04-19-2008, 02:40 AM
I have a simple scribespells quest functioning, but I am wondering if it is possible to make it only scribe up to only level 50 spells?

Thanks.

Asphixiate
04-22-2008, 05:32 PM
Well let me approach this a bit differently.

if my perl script is:

sub EVENT_SAY
{
if ($text=~/Hail/i) { quest::say("Hello, $name. If you would like, I can [scribe] all of your spells up to level 50. After that, you will have to find any remaining spells on your own!"); }
if ($text=~/scribe/i) { quest::say("Very well, here you are $name!");
quest::scribespells(); }
}

is there a way to modify this to do the following:

if pclevel < 50 then:

if ($text=~/Hail/i) { quest::say("Hello, $name. If you would like, I can [scribe] all of your spells up to level 50. After that, you will have to find any remaining spells on your own!"); }

if pclevel > 50 then

if ($text=~/Hail/i) { quest::say("Hello, $name. You are too high to have any spells scribed!"); }


If someone could spell this out for me, that would be awesome!

Thanks

trevius
04-22-2008, 05:39 PM
This is a pretty simple quest. The following should work perfectly for you. Let me know if you have any issues with it.

sub EVENT_SAY
{
if ($text=~/Hail/i && $ulevel <= 50) { quest::say("Hello, $name. If you would like, I can [scribe] all of your spells up to level 50. After that, you will have to find any remaining spells on your own!"); }
if ($text=~/Hail/i && $ulevel >= 51) { quest::say("Hello, $name. You are too high to have any spells scribed!"); }
if ($text=~/scribe/i && $ulevel <= 50) { quest::say("Very well, here you are $name!");
quest::scribespells(); }
}

In the future, you might want to check the quest wiki. It has a TON of great info related to quests.

Here is the link:
http://www.eqemulator.net/wiki/wikka.php?wakka=QuestTutorial

Asphixiate
04-22-2008, 08:03 PM
great thank you trevius, wasn't sure how to structure it.

Asphixiate
04-26-2008, 04:14 AM
Is there a reason this doesn't work? (I want to exclude the pure melee classes from scribing discs).

sub EVENT_SAY
{
if ($text=~/Hail/i && $ulevel <= 50 && $class != 'Warrior' || $class != 'Rogue' || $class != 'Monk'){
quest::say("Hello, $name. If you would like, I can [scribe] all of your spells up to level 50. After that, you will have to find any remaining spells on your own!"); }

if ($text=~/Hail/i && $ulevel >= 51) { quest::say("Hello, $name. You are too high to have any spells scribed!"); }

if ($text=~/scribe/i && $ulevel <= 50) { quest::say("Very well, here you are $name!");
quest::scribespells(); }
}

the above actually breaks the script entirely, no one is able to trigger the hail event.

AndMetal
04-26-2008, 04:48 AM
Is there a reason this doesn't work? (I want to exclude the pure melee classes from scribing discs).

sub EVENT_SAY
{
if ($text=~/Hail/i && $ulevel <= 50 && $class != 'Warrior' || $class != 'Rogue' || $class != 'Monk'){
quest::say("Hello, $name. If you would like, I can [scribe] all of your spells up to level 50. After that, you will have to find any remaining spells on your own!"); }

if ($text=~/Hail/i && $ulevel >= 51) { quest::say("Hello, $name. You are too high to have any spells scribed!"); }

if ($text=~/scribe/i && $ulevel <= 50) { quest::say("Very well, here you are $name!");
quest::scribespells(); }
}

the above actually breaks the script entirely, no one is able to trigger the hail event.

Change != to ne and it should work fine.

Perl is a little ... different with string comparisons (especially compared to PHP). Check out this page (http://www.pageresource.com/cgirec/ptut7.htm) for the specifics.

Also, you'll probably want to put all of the checks for classes in parentheses, otherwise your order of operations might cause some problems:
if ($text=~/Hail/i && $ulevel <= 50 && ($class != 'Warrior' || $class != 'Rogue' || $class != 'Monk')){

Hope this helps :-)

trevius
04-26-2008, 05:52 AM
Though, this is something you shouldn't really have to worry about. Pure melee classes learned from the spell scriber don't actually work ask a disc. They either need to turn the tomb into their class GM the same as live or you would have to enable the #traindisc command. The spell scriber won't train any real discs, but it will train spell versions of some discs for hybrids.

Asphixiate
04-26-2008, 12:01 PM
Hm, still doesn't work. Not a big deal though since they don't actually learn anything from it like you said trevius.

Thanks

kovouau
04-26-2008, 02:40 PM
can try using quotation marks instead of '.... "Warrior" instead of 'Warrior' for example