View Single Post
  #6  
Old 01-14-2012, 05:02 PM
blackdragonsdg
Dragon
 
Join Date: Dec 2008
Location: Tennessee
Posts: 656
Default

What exactly do you mean by way point? Creating the .path files for each zone or just creating pathing for individual mobs?

5. zone portals

Zone portals can literally be just about any object or door in any given zone. All you have to do is find the correct object or door in there respective tables in the database then add the destination coordinates, heading, target zone name(zone short name) and maybe click type.

6. Adding text to npc's.

You have to create scripts to add text to npc's. Here is an example of an npc responding to a hail.

RandomNPC.pl
Code:
sub EVENT_SAY {
    if($text=~/Hail/i) {
    quest::say("Hello, Welcome to my shop. If you bought an item that is part of my exchange program then let me know.");
    }
}

7. Teleport bot example.

Translocator.pl
Code:
#Translocator for Multiple Zones

#Array for all available zones to be sent to
@ZoneList = qw(
	lopingplains
	emeraldjungle
	frontiermtns
	rathemtn
	westwastes
	eastwastes
	southkarana
	cazicthule
	akanon
	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
	mischiefplane
	qeytoqrg
	rivervale
	runnyeye
	shadowhaven
	skyshrine
	soldunga
	sro
	felwitheb
	ssratemple
	qrg
	acrylia
	arena
	burningwood
	citymist
	sharvahl
	nadox
	dawnshroud
	thegrey
	gunthak
	hole
	jaggedpine
	maiden
	overthere
	paludal
	hateplaneb
	scarlet
	umbral
	frozenshadow
	velketor
	vexthal
	warrens
	warslikswood
	freportw
);

sub EVENT_SAY{

	#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 = $ZoneList[$n];
				$client->Message(315, "$NPCName whispers to you, 'Possible match is: $ZoneName");
			}
			#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]");
			}
			$n++;
			$count++;
		}
	}
}
How to assign scripts to npcs using the examples above. Your scripts name must match either the npc name or npc id number for which you want the script to work with. Using Translocator.pl or RandomNPC.pl from above would require you to make an npc with the name of Translocator or RandomNPC respectively.

In case you don't already know how to create scripts. Using RandomNPC.pl as an example....Open notepad then copy and paste everything inside the code block into the text document. Select save as then use RandomNPC.pl as the file name and set file type to all files. Save the file. Now place the newly created script into the appropriate zone folder in your quests directory. The zone folders use the short names of zones which can be found in the zone table of your database.
Reply With Quote