EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Custom (https://www.eqemulator.org/forums/forumdisplay.php?f=671)
-   -   Translocator Quest To Many Common Zones (https://www.eqemulator.org/forums/showthread.php?t=25015)

Cruzer 08-11-2009 01:24 PM

thanks trev

Lillu 08-30-2009 02:43 PM

Thanks for sharing this Trev. My players found a minor 'issue' if you have time to adress it. When you misstype a short zonename, the NPC will respond with a "-" (instead of telling you that you can't type :)).

trevius 08-30-2009 06:11 PM

I haven't tried this yet, but I think this might do what you are wanting:

Code:

#Translocator for Multiple Zones

#Array for all available zones to be sent to
@ZoneList = qw(
        cazicthule
        akanon
        bothunder
        befallen
        blackburrow
        cabeast
        cabwest
        mistmoore
        chardok
        thurgadina
        veksar
        cobaltscar
        crystal
        dalnir
        necropolis
        dreadlands
        dulak
        freporte
        echo
        erudnext
        unrest
        everfrost
        fieldofbone
        fungusgrove
        greatdivide
        grobb
        guktop
        halas
        highkeep
        charasis
        paw
        kael
        kaesora
        karnor
        kurn
        lakeofillomen
        nurga
        soldungb
        najena
        nexus
        freportn
        nro
        oggok
        sebilis
        permafrost
        airplane
        fearplane
        growthplane
        hateplane
        poinnovation
        poknowledge
        mischiefplane
        ponightmare
        postorms
        povalor
        qeytoqrg
        rivervale
        runnyeye
        shadowhaven
        skyshrine
        soldunga
        sro
        felwitheb
        ssratemple
        qrg
        acrylia
        arena
        burningwood
        citymist
        sharvahl
        nadox
        dawnshroud
        thegrey
        gunthak
        hole
        jaggedpine
        maiden
        overthere
        paludal
        podisease
        hateplaneb
        pojustice
        scarlet
        umbral
        frozenshadow
        poeartha
        velketor
        vexthal
        warrens
        warslikswood
        freportw
);

sub EVENT_SAY{

        my $MatchCheck = 0;
        my $all = quest::saylink("All", 1);

        #Spacer between Text messages to make them easier to read
        $client->Message(7, "-");
        my $NPCName = $npc->GetCleanName();

        if ($text =~/Hail/i)
        {
                $client->Message(315, "$NPCName whispers to you, 'If there is a zone you would like to go to, just tell me the short name of it and I will see if I have a spell to send you there. If you do not know the full name, just type part of the name to search my list of possible zones.  Or, I can list [$all] of them if you like.'");
        }

        #Counts each row for the While
        my $count = 1;

        #Counts each element in the Array for the While
        my $n = 0;

       
        if ($text !~ /Hail/i)
        {
                #Use scalar form of Array
                while ($ZoneList[$n])
                {
                        #This uses the lc() function in perl to convert anything typed into all lowercase, since that is what the zone list is
                        #If the zone name contains part of the text said, or if the player wants to list all possible zones we list them
                        if (($ZoneList[$n] =~ lc($text) && $ZoneList[$n] ne lc($text)) || ($text =~ /^All$/i))
                        {
                                my $ZoneName = quest::saylink($ZoneList[$n]);
                                $client->Message(315, "$NPCName whispers to you, 'Possible match is: $ZoneName");
                                $MatchCheck++;
                        }
                        #If they say the full name of one of the zones in the Array, or click one of the saylinks, port them to the safe loc there
                        if ($ZoneList[$n] eq lc($text) && $text !~ /^All$/i)
                        {
                                $client->Message(315, "$NPCName whispers to you, 'Enjoy your adventure!'");
                                $client->Message(6, "$NPCName casts a spell to translocate you to another place.");
                                quest::zone("$ZoneList[$n]");
                                $MatchCheck++;
                        }
                        $n++;
                        $count++;
                }
                #If there are no matches found, let the player know it.
                if ($MatchCheck == 0)
                {
                        $client->Message(315, "$NPCName whispers to you, 'Sorry, $name, I was unable to find a match for '$text'.");
                }
        }
}


Lillu 08-30-2009 08:08 PM

yep, and once again thanks Trev!

chrsschb 02-02-2012 11:18 PM

I'm looking for a way to take this script and add more text to the responses. Like if a person is flagged for the zone, the level range/requirement, etc. The flagged portion could be green if flagged, red if not, the level range could be colored similar to cons, depending on how you rate compared to the zone.

Like right now the responses (when pressing [all]) looks like:

Surefall Glade: [qrg]
West Freeport: [freportw]

I want it to look like this:

[Level 50-60] [Not Flagged] Plane of Awesome: [awesomeplane]


Can it be done?

sorvani 02-03-2012 01:18 AM

Sure, just have to check all the quest globals that lock you out of said zone, and level bypass, etc, etc.
Huge amount of work depending on your server.

chrsschb 02-03-2012 01:24 AM

Well I figured as much. Looking for a little more guidance. Pretty new these things.


All times are GMT -4. The time now is 05:13 PM.

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