EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Q&A (https://www.eqemulator.org/forums/forumdisplay.php?f=599)
-   -   Different Rewards Per Class? (https://www.eqemulator.org/forums/showthread.php?t=41643)

Minirva 12-13-2017 01:27 AM

Different Rewards Per Class?
 
I am trying to write a quest that will give a different reward for each class on turn in. When I just have the check for turn ins and a single reward things work fine. Once I try working in classes with different rewards, the npc just eats the turn ins.
I have tried a few variations of what I have below and hit a wall with my very limited knowledge. Am I way off on how I am trying to write this?

Code:

# Zone: The Plane of Knowledge (poknowledge) >> Magus_of_the_Planes (2000032)

sub EVENT_SAY
{

        my $essence = quest::saylink("essence");
        my $reward = quest::saylink("reward");
        my $ready = quest::saylink("ready");
        my $Planeofhate = quest::saylink("Plane of Hate");
        my $Planeofear = quest::saylink("Plane of Fear");
        my $Planeofsky = quest::saylink("Plane of Sky");
       
        if ($text=~/hail/i) {
                quest::say("Can you feel it $name? The Faceless One, the Prince of Hate, and the ever watchful eye of the Wurmqueen! Their powers swell. Imagine what us mortals could do with such power! $name, you must gather their [$essence] for me. I would [$reward] you greatly for such a treacherous task. If you are willing to undertake this endeavor, let me know when you are [$ready], and I will send you to the planes.");
        }
        if ($text=~/essence/i) {
                quest::say("The power of the Gods themselves. Their never ending life force. Enter their realms and confront each. Kill their physical forms and drain the essence from their bodies. Make haste $name, you will not have much time to escape the planes before the Gods will manifest once again in thier physical form.");
        }
        if ($text=~/reward/i) {
                quest::say("Yes your reward. I will create five shards out of the essences, from which I will grant you one. This shard will have the ability to greatly enhance your equipment.");
        }
        if ($text=~/ready/i) {
                quest::say("I am glad yo hear it. Where shall I send you? [$Planeofhate], [$Planeofear], or the [$Planeofsky]?");
        }
        if ($text=~/Plane of Hate/i) {
                quest::movepc(186,-393,656,4);
        }
        if ($text=~/Plane of Fear/i) {
                quest::movepc(72,1031,-771,108);
        }
        if ($text=~/Plane of Sky/i) {
                quest::movepc(71,614,1415,663);
        }
}

sub EVENT_ITEM {
        if (plugin::check_handin(\%itemcount, 147514 => 1, 147515 => 1, 147516 => 1)){
        if ($class eq "Warrior") {
                quest::summonitem(29648);
        }
        elsif ($class eq "Cleric") {
                quest::summonitem(16272);
        }
        elsif ($class eq "Paladin") {
                quest::summonitem(147513);
        }
}


ghanja 12-13-2017 02:56 PM

Code:

perl -c name_of_script.pl

ghanja 12-13-2017 03:05 PM

Code:

elsif ($lookingfor eq "easy answer") {

Code:

# Zone: The Plane of Knowledge (poknowledge) >> Magus_of_the_Planes (2000032)
sub EVENT_SAY {
        if ($text=~/hail/i) {
                quest::say(        "Can you feel it $name? The Faceless One, the Prince of Hate, and the ever watchful eye of the Wurmqueen! ".
                                        "Their powers swell. Imagine what us mortals could do with such power! $name, you must gather their ".
                                        "[".quest::saylink("essence")."] for me. I would [".quest::saylink("reward")."] you greatly for such ".
                                        "a treacherous task. If you are willing to undertake this endeavor, let me know when you are [".
                                        quest::saylink("ready")."], and I will send you to the planes.");
        }
        elsif ($text=~/essence/i) {
                quest::say(        "The power of the Gods themselves. Their never ending life force. Enter their realms and confront each. ".
                                        "Kill their physical forms and drain the essence from their bodies. Make haste $name, you will not have ".
                                        "much time to escape the planes before the Gods will manifest once again in thier physical form.");
        }
        elsif ($text=~/reward/i) {
                quest::say(        "Yes your reward. I will create five shards out of the essences, from which I will grant you one. This ".
                                        "shard will have the ability to greatly enhance your equipment.");
        }
        elsif ($text=~/ready/i) {
                quest::say(        "I am glad yo hear it. Where shall I send you? [".quest::saylink("Plane of Hate")."], ".
                                        "[".quest::saylink("Plane of Fear")."], or the [".quest::saylink("Plane of Sky")."]?");
        }
        elsif ($text=~/Plane of Hate/i) {
                quest::movepc(186,-393,656,4);
        }
        elsif ($text=~/Plane of Fear/i) {
                quest::movepc(72,1031,-771,108);
        }
        elsif ($text=~/Plane of Sky/i) {
                quest::movepc(71,614,1415,663);
        }
}

sub EVENT_ITEM {
        if (plugin::check_handin(\%itemcount, 147514 => 1, 147515 => 1, 147516 => 1)) {
                if ($class eq "Warrior") {
                        quest::summonitem(29648);
                }
                elsif ($class eq "Cleric") {
                        quest::summonitem(16272);
                }
                elsif ($class eq "Paladin") {
                        quest::summonitem(147513);
                }
        }
}

You were missing a closing curly in your EVENT_ITEM subroutine.

Minirva 12-13-2017 11:35 PM

Thanks once again Ghanja :)

Minirva 12-13-2017 11:41 PM

Btw at the risk of looking even more noobish, what did you mean by

Code:

elsif ($lookingfor eq "easy answer") {
and

Code:

perl -c name_of_script.pl

Splose 12-13-2017 11:49 PM

if looking for an easy answer and that's a command prompt command to check if there are any syntax errors in your scripts. Can also use this webpage for that http://ult-tex.net/tools/ultra/line_count.pl

Also.. Use this, you'll have to fix the item id's but this'll cut down on a lot of space.. also when you're doing a turnin npc always put the return items at the bottom of the script so if players hand it some random shit it wont eat it.

Code:

# Zone: The Plane of Knowledge (poknowledge) >> Magus_of_the_Planes (2000032)
sub EVENT_SAY {
        if ($text=~/hail/i) {
                quest::say(        "Can you feel it $name? The Faceless One, the Prince of Hate, and the ever watchful eye of the Wurmqueen! ".
                                        "Their powers swell. Imagine what us mortals could do with such power! $name, you must gather their ".
                                        "[".quest::saylink("essence")."] for me. I would [".quest::saylink("reward")."] you greatly for such ".
                                        "a treacherous task. If you are willing to undertake this endeavor, let me know when you are [".
                                        quest::saylink("ready")."], and I will send you to the planes.");
        }
        elsif ($text=~/essence/i) {
                quest::say(        "The power of the Gods themselves. Their never ending life force. Enter their realms and confront each. ".
                                        "Kill their physical forms and drain the essence from their bodies. Make haste $name, you will not have ".
                                        "much time to escape the planes before the Gods will manifest once again in thier physical form.");
        }
        elsif ($text=~/reward/i) {
                quest::say(        "Yes your reward. I will create five shards out of the essences, from which I will grant you one. This ".
                                        "shard will have the ability to greatly enhance your equipment.");
        }
        elsif ($text=~/ready/i) {
                quest::say(        "I am glad to hear it. Where shall I send you? [".quest::saylink("Plane of Hate")."], ".
                                        "[".quest::saylink("Plane of Fear")."], or the [".quest::saylink("Plane of Sky")."]?");
        }
        elsif ($text=~/Plane of Hate/i) {
                quest::movepc(186,-393,656,4);
        }
        elsif ($text=~/Plane of Fear/i) {
                quest::movepc(72,1031,-771,108);
        }
        elsif ($text=~/Plane of Sky/i) {
                quest::movepc(71,614,1415,663);
        }
}

sub EVENT_ITEM {
        my %rewards = (
                "Warrior" => 135015,
                "Cleric" => 135015,
                "Paladin" => 135015,
                "Ranger" => 135008,
                "Shadowknight" => 135015,
                "Druid" => 135022,
                "Monk" => 135029,
                "Bard" => 135015,
                "Rogue" => 135008,
                "Shaman" => 135008,
                "Necromancer" => 135001,
                "Wizard" => 135001,
                "Magician" => 135001,
                "Enchanter" => 135001,
                "Beastlord" => 135022,
                "Berserker" => 135008
        );
       
        if(plugin::check_handin(\%itemcount, 147514 => 1, 147515 => 1, 147516 => 1)) {
                quest::summonitem($rewards{$class});
        }
        plugin::return_items(\%itemcount);
}



All times are GMT -4. The time now is 10:49 AM.

Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.