EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::Windows Servers (https://www.eqemulator.org/forums/forumdisplay.php?f=587)
-   -   A little help with customizing my server. (https://www.eqemulator.org/forums/showthread.php?t=34718)

helman 01-13-2012 07:21 PM

A little help with customizing my server.
 
I'm look for help with the following.

You can send me to a post with help or wiki, or type it in here on how to do it.
But here my list of things i would like to know how to do.
  1. How to change the starting zone
  2. How to change npc spawn locations
  3. how to fully edit the spells, Such as adding new spells, and changing the effect of spells.
  4. Where to download and how to implant the way point.
  5. How to add the pop up window like in akka's fun house and EZ server.
  6. How to set the way point in other zones and how to set up instances
  7. How to add the lotto bot
  8. How to add zone portals, like what was in BoTA when he was using The forgotten Halls. or when in the SoD hub on Storm Haven.

That all atm. I have the PEQ database editor but I can't figure out how to do any of that. But if some one can teach me I'll be good. Also if any requires me to download something please give me a link. (Save so much time.) Also sorry if this is in the wrong section.

blackdragonsdg 01-13-2012 09:52 PM

Will answer a few questions for you.

1. The start_zones table of the database. Use Navicat or a similar program to view it.

2. The spawn2 table of the database and here again use Navicat or a similar program to view it.

6. For zone instancing read this
Code:

http://eqemulator.org/forums/showthread.php?t=32609

helman 01-13-2012 10:11 PM

Ok thank you.

helman 01-13-2012 11:35 PM

Um for some reason it wont take effect i have it set to 118 for the Forgotten halls but it keeps taking me to Crescent reach or the Tutorials. Why?

ok now its taking me to South Qeynos. still set to 118.

Ok had to set startzone in the variables to fhalls but it kicked my toon to the arena so need help fixing that.

fixed it.

helman 01-14-2012 05:56 AM

Ok now time to update what i want help with doing XDD.
  1. how to fully edit the spells, Such as adding new spells, and changing the effect of spells.
  2. Where to download and how to implant the way point
  3. how to add the pop up windo like in akka's fun house and EZ server
  4. How to add the lotto bot
  5. How to add zone portals, like what was in BoTA when he was using The forgotten Halls. or when in the SoD hub on Storm Haven.
  6. How to add text to npcs
  7. how to add a tele bot
  8. how to add a buff bot.


Please and thanks

blackdragonsdg 01-14-2012 05:02 PM

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.

helman 01-15-2012 07:02 PM

Ok. I'll give that a try now, The way point is something Akka made. Its also in EZ server. If you give it plat it will hold it in a bank like system that it will use for better buffs or make an instance of the zone you're in. How do I add an object to like my hub zone, and give it a zone location? I'll be trying to figure it out, but I'm still a noob with the tools and mysql.

blackdragonsdg 01-15-2012 09:36 PM

Given your description of the way point that is very very custom. You might try checking the quest section just in the off chance someone posted it or a partial script there.

Here is an example of how to add an object to a zone. The following will add an augment pool to Plane of Knowledge. It will appear in front of main bank.

Code:

delete from object where id = 2278;
INSERT INTO `object` (`id`, `zoneid`, `version`, `xpos`, `ypos`, `zpos`, `heading`, `itemid`, `charges`, `objectname`, `type`, `icon`, `unknown08`, `unknown10`, `unknown20`, `unknown24`, `unknown60`, `unknown64`, `unknown68`, `unknown72`, `unknown76`, `unknown84`) VALUES (2278, 202, 0, 423.98, 387.54, -124.94, 0, 0, 0, 'IT10714_ACTORDEF', 53, 1142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

The zone location is controlled by the zone id number which you can get from the zone table of the database. Most of it is self explanatory except for maybe objectname in which case find a link to the list of them on this site or find an object you like in a zone and look it up in the database.

helman 01-16-2012 12:58 AM

Ok i'm having a hard time adding responses. Like with below. After you hail him and say Information to hear more. This is my code. I have it like that and set in the right zone folder. but with it like that when i hail him My npc Says nothing to me. So how do i fix it so he will say things and work right? (talking to someone with no c++ experience.

Code:

sub EVENT_SAY {
    if($text=~/Hail/i) {
    quest::say("Welcom to The Forgotten Halls, %T. Please Let me Know if you want Some (information) about the halls.");
   
        sub EVENT_SAY {
        if($test=~/Information/i) {
        quest::say("These Halls use to be used by Taelosian pilgrims studing magic and the control granite. After a while it was open to adventures, Raiders, And Informents looking for a place to rest and continue there journeys or give information.
        Because it was a grathing for adventures, Raiders, And Informents any evil people like Cazic Thul Wanted it Distoryed. Cause so The Taelosian Elders Had it sealed off. But that was years ago.
        This place was left behind in time, Untill The Rifts showed up all over Norath. I and my assistent was sent into one to see wher it led. We came out here, a place sealed by the elders.
        We started to look around to see if we could find the source of the rifts. We did just that. We found a Huge Strang Crystal That was never recorded in our history books.
        We did research and came to a conclusion. This stone was the sorce of the Rifts, and it dosn't seem to cause any harm to us. We also found out that only those that have a perpous to come here can pas through the Rifts and inter here.
        Ever one asks the same question, Yes this place is safe. Please Let me know if you want (locations) of the Merchants here and osther stuff.");
       
        sub EVENT_SAY {
        if($text=!/locations/i) {
        quest::say("this will come soon");
}


but with the following code he dose. The only problem is i can't get him to say my name not his. So is there a in-game command for geting a npc to target a player and say its name like %T.
Code:

sub EVENT_SAY {
    if($text=~/Hail/i) {
    quest::say("Welcom to The Forgotten Halls, %T. Please Let me Know if you want Some (information) about the halls.");
    }
}


Edit I got it working XDD. I just looked at a .pl for a npc from a other zone and used it as a reference.

blackdragonsdg 01-16-2012 01:55 AM

This is completely untested but try this
Code:

sub EVENT_SAY {
        if($text=~/Hail/i) {
                quest::say("Welcome to The Forgotten Halls, $name. Please Let me Know if you want Some (information) about the halls.");
        }
        if($text=~/information/i) {
                quest::say("These Halls use to be used by Taelosian pilgrims studing magic and the control granite. After a while it was open to adventures, Raiders, And Informents looking for a place to rest and continue there journeys or give information. Because it was a grathing for adventures, Raiders, And Informents any evil people like Cazic Thul Wanted it Distoryed. Cause so The Taelosian Elders Had it sealed off. But that was years ago. This place was left behind in time, Untill The Rifts showed up all over Norath. I and my assistent was sent into one to see wher it led. We came out here, a place sealed by the elders. We started to look around to see if we could find the source of the rifts. We did just that. We found a Huge Strang Crystal That was never recorded in our history books. We did research and came to a conclusion. This stone was the sorce of the Rifts, and it dosn't seem to cause any harm to us.");
                quest::say("We also found out that only those that have a perpous to come here can pas through the Rifts and inter here. Everyone asks the same question, Yes this place is safe. Please Let me know if you want (locations) of the Merchants here and osther stuff.");
        }
        if($text=~/locations/i) {
                quest::say("this will come soon");
        }
}

Here are a few links that may help you with quest writing.
Code:

http://www.eqemulator.net/wiki/wikka.php?wakka=QuestTutorial

http://www.eqemulator.net/wiki/wikka.php?wakka=QuestObjects


helman 01-16-2012 02:04 AM

Ok thank you and can you send me a link to the objects? The only ones I can fine are the ones for trade skill. But I think there are more like the pok stone. Also how can I set the object to a zone point that I click on. I know i have a lot of questions. When I get most of I done I will give you credit. Probable as my mentor if you don't mind.

blackdragonsdg 01-16-2012 02:53 AM

I may have been wrong about that list of object & door names as I can't find it either.

PoK Book Example
Code:

INSERT INTO `doors` (`id`, `doorid`, `zone`, `version`, `name`, `pos_y`, `pos_x`, `pos_z`, `heading`, `opentype`, `guild`, `lockpick`, `keyitem`, `nokeyring`, `triggerdoor`, `triggertype`, `doorisopen`, `door_param`, `dest_zone`, `dest_instance`, `dest_x`, `dest_y`, `dest_z`, `dest_heading`, `invert_state`, `incline`, `size`, `buffer`, `client_version_mask`, `is_ldon_door`) VALUES (3415, 1, 'Everfrost', 0, 'POKTELE500', 2887.25, -78.1207, -64.1542, 238.73, 58, 0, 0, 0, 0, 0, 0, 0, 0, 'poknowledge', 0, 132.109, 873, -145, 128, 0, 0, 100, 0, 4294967295, 0);
The above example is the PoK book that leads from Everfrost Peaks to PoKnowledge. I think I referenced clicktype earlier in which case it should have been opentype as it is listed above. The opentype is what controls what the door/object does when it is clicked.

Noport 01-16-2012 02:55 AM

Example only


#Old man Thorren.pl
# LOC PoK (-170.68, -261.52, -156.31)

sub EVENT_SAY {
if($text=~/Hail/i){
quest::say("Welcome to The Veil of Alaris, $name. To ease your [Newly discoved Lands]. If you wish, I can also send you to [Arena] or [Crafthalls]. But be warned that while I can Teleport you to these distant Lands, you are on your own for finding a way back.");

} if($text=~/Newly discoved Lands/i) {
quest::say("Argath,Valley of Lunanyn,Sarith,Rubak Oseka,Beast Domain,Resplacement Temple,Bronze,Pillars,Windsong,Sepulcher,Sepulcher East,Sepulcher West")
}
if($text=~/Arena/i) {
quest::movepc(-882.00,132.00,51.47); #Arena
}
if($text=~/Crafthalls/i) {
quest::movepc(0.00,0.00,-6.30); #Ngreth's Den
}
if($text=~/Argath/i) {
quest::movepc(62000.00,7930.00,-29.99);
}
if($text=~/Valley of Lunanyn/i) {
quest::movepc(3379.00,-1922.00,1333.37);
}
if($text=~/Sarith/i) {
quest::movepc(918.00,-499.00,-1.87);
}
if($text=~/Rubak Oseka/i) {
quest::movepc(-27.00,-56.00,516.17);
}
if($text=~/Beast Domain/i) {
quest::movepc(-4846.00,4463.00,181.21);
}
if($text=~/Resplacement Temple/i) {
quest::movepc(92.00,-76.00,9.90);
}
if($text=~/Bronze/i) {
quest::movepc(-978.00,-2255.00,50.54);
}
if($text=~/Pillars/i) {
quest::movepc();
}
if($text=~/Windsong/i) {
quest::movepc();
}
if($text=~/Sepulcher/i) {
quest::movepc();
}
if($text=~/Sepulcher East/i) {
quest::movepc();
}
if($text=~/Sepulcher West/i) {
quest::movepc();
}

sub EVENT_SPAWN
{
$x = $npc->GetX();
$y = $npc->GetY();
quest::set_proximity($x - 170.68, $x - 261.52, $y - 156.31, $y + 0);
}


sub EVENT_ITEM {
quest::say("I have no use for this, $name.");
plugin::return_items(\%itemcount);
}

#END of FILE Zone:poknowledge

helman 01-16-2012 03:03 AM

Can you tell me how i can manually find the ids for them?

Noport what cha telling me here? I'm lost.

blackdragonsdg 01-16-2012 03:19 AM

The id's are something you will have to find out for yourself as your database is probably different than mine. About all I can tell you is that the id will be the next available for use. The doorid will be the next available for use with in whatever zone you placed it in. This is where having navicat or a similar program will come in handy. The ability to sort a table by various column headers and content or even filter the entire table to a specific zone is very very helpful.


All times are GMT -4. The time now is 02:18 AM.

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