EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   General::Server Discussion (https://www.eqemulator.org/forums/forumdisplay.php?f=601)
-   -   Updated Solo Server Package (https://www.eqemulator.org/forums/showthread.php?t=42039)

djeryv 08-14-2018 07:31 PM

Updated Solo Server Package
 
I made a series of solo server changes a few years ago, and I still use them today. I recently setup a Windows 7 virtual machine using VM Workstation so I did the quick install and it worked pretty flawlessly. There is always some tweaking needing done if you do your own private login server, but it went well. With that, I had to update my solo server settings to accomodate the new task_activities table (and a few others) so here is my updated stuff in case anyone wants to run a solo server of their own. The Prophetess of Norrath is a new feature that can come in handy.

LINK

This was setup with database version 9125.

This entire package changes an Everquest server to be more solo-friendly. It is meant for servers with very low populations, or servers you play in single player mode.

This does quite a few different things. It will scale monsters back to a level where you can fight them alone, meaning the ones where a group is meant to combat them. Due to this, you should not need any bots to play here. This should then allow you to play a race and class unique to its abilities and not have the cookie-cutter group doing the same tactics. Monsters should not readily help their comrades, and they will have a smaller radius of noticing you. This lets you fight monsters one at a time and avoid getting ganged up on. The spawn times have been increased for those that spawned quickly. This lets you clear out dungeons easier since you will be in the area alone. NOTE: These affect creatures level 20 or over, as this is where the balance shifts toward more group oriented battles.

The Bazaar will also be filled with merchants with tons of wares and unique items. It gives you a place to spend your mountains of gold later on. This is to help you acquire items that better aid playing alone, and also give the Bazaar some life. There will also be spell merchants there that sell unusual spells that are really hard to get. This should exclude things like research spells and spells you get from monsters.

If you use all of the included features, then the starting cities will not have any Plane of Knowledge books. This is to bring back the classic mode of play where you had to begin in your starting city, and travel far across the land to get to other locations. The other books will remain, but in places where you would get to them at a much higher level.

Within the Plane of Knowledge are 2 unique NPCs. One is a barbarian that will freely cast Spirit of Wolf on folks. The other is a witch that will teleport you to almost any zone you want to go. This is another reason that the Plane of Knowledge should not be discovered until a character has adventured for awhile.

The Priests of Discord are replaced with Teachers of Norrath. These teachers will help you spend your skill points on skills you may have learned from your guildmaster. This was added to fix a flaw in the skill distribution system, so although that may be fixed, these teachers are here just in case.

Each city will have a Prophetess of Norrath. If you tell these sages a name of a spell, song, etc, they will try and tell you who in the world sells that scroll and where they are located. Since it queries the database doing this, it can take up to 20 seconds to get a response. They will explain to you that you should wait while they think about your request, to warn players of the delay.

There are some rule settings for item and experience loss on death, along with drop and lore flags being removed. Many items have their prices set or set to a lower amount. This is because of the quests added to the system and because the Bazaar sells some of these items and there was no price set for them originally. Quest rewards would make a character rich very quickly, so these prices were greatly lowered at times. Mounts have had their prices reduced, so one can purchase them without needing a small fortune. The mana and health regenerate faster while resting, so you can get back into the action.

Brother Dremel is in the Bazaar, and he will trade rare items used in crafting, for various items that the witches give for quest rewards. So if you need a rare ingredient, Dremel may have it. He would tell you the exact item he wants in trade and which of the witches gives that item as a reward. This is to help solo characters actually craft items, without needing a high population of players to make the ingredients for you.

The last part, and probably the biggest part, is the quest system included with this. There are about 447 tasks that are available. Each starting city will have a Witch of the Velvet Order nearby. They will give quests to adventurers, and these quests have some purpose/goal in the area the witch is in. So each witch will have unique tasks for each starting city area. They are far enough away from guards, so hostile races can get quests from them as well without having the local guards kill them. The Plane of Knowledge has such a witch as well, and she will give higher level quests that can be anywhere in the world. These quests give no experience points, but they do have various rewards that could help an adventurer. The witch will be clear on the task you need to do, along with the choice of items you can get if you finish the task. Since it uses the newer task system, your progress will be tracked for you. The witches give you plenty to do and you can do these tasks as many times as you want. Each one indicates a recommended level as well.

jpyou127 08-15-2018 06:36 AM

In the README you mention a file "solo_knowledge.sql", but it is not in the google drive files.

Very cool stuff btw!

djeryv 08-15-2018 12:58 PM

Quote:

Originally Posted by jpyou127 (Post 259710)
In the README you mention a file "solo_knowledge.sql", but it is not in the google drive files.

Very cool stuff btw!

I fixed the README. It was a typo as everything is in one SQL file.

Thanks for the catch.

djeryv 08-16-2018 07:45 PM

i did a slight update on this today. I was playing yesterday and I forgot I wanted to incorporate links instead of the old fashion [type the word]. So now my included NPCs do that for their offerings. For the Prophetess, she will now search for spells and items and tell you what merchant sells them and what zone they are in. You can click on the links of the search results and inspect the items. She will even explain to you how to do a wildcard search as well, because you may want to find both Cloth Cap and Cloth Cape so you can search for Cloth Cap*.

djeryv 08-18-2018 06:38 PM

I did another update today where there are no longer any SQL delays when you talk to the Prophetess. I should have known to avoid using the views and make a search table with primary keys set. Anyway, the Prophetess will also tell you what spells you can go out and buy for whatever level you ask about for your class.

djeryv 08-19-2018 06:39 AM

I think I will see if the Prophetess can tell of monsters that carry items, like she does with the merchants. I'll mess with that today as it requires more table joins. It is mainly because I don't care for wikis (or using web pages to look up this stuff) and would rather be able to do it in-game. We'll see what I can come up with.

dagulus2 08-19-2018 06:44 AM

In terms of the SQL Data you ave to add to get the Prophetess working, does this only have to be done once or will it need updating if I add merchants or items?

djeryv 08-19-2018 07:01 AM

Quote:

Originally Posted by dagulus2 (Post 259808)
In terms of the SQL Data you ave to add to get the Prophetess working, does this only have to be done once or will it need updating if I add merchants or items?

Well, I did have to make tables instead of views because views cannot have primary keys set. When I moved to the table format, and set primary keys, the queries she ran were really quick.

So the SQL would need to be ran each time you add to merchants, but there is a command to drop the table if it exists and recreate it so it is a quick matter...but you would need to remember to run it.

Views would avoid this step, but the Prophetess took about 20 seconds to return results and I would rather it be instant. I think I will setup the Prophetess as a separate package for people to get, in case they don't want the other solo server stuff...of course leaving her in the solo server package as well.

djeryv 08-20-2018 07:13 PM

Well, I failed to get the Prophetess to tell players where items can be looted from. The issue is that if your server is on the low power end, querying through a table with over 600,000 records (the loot table is very big) takes too much time. During this time of the query, the server is pretty much non-responsive until it is done. So although not a big deal with single player environments, adding a few more players will ruin the experience.

I did make an SQL query to create one single table, however, that will allow for the searches I already implemented. And since I made the separate table, searches take a second or less to do. When I queried the database tables, and the joins I needed, it would take 15 or more seconds.

I also learned during this process that MySQL views just aren't very efficient. They took even longer to query than the multiple table joins.

So the Prophetess is still very useful. You can search for items for sale and she will tell you who sells it and what zone they are in. You can do wildcard searches as well. If you tell her a level, she will tell you where you can go buy your spells from for that level. So, for example, if you are a Necromancer...and say "3" to her...she will tell you where you can go buy your level 3 necromancer spells from.

John C 08-22-2018 09:50 PM

djeryv -
I might have an older version as I downloaded it a few days ago. Great work. Some amazing ideas in here. I did find two minor typos though that I wanted to ensure you are aware of...

Line 7927...

LOCK TABLES `spawn2` WRITE;
INSERT INTO spawn2 (spawngroupID, zone, x, y, z, respawntime) VALUES
('800088', 'poknowledge', '386.227', '67.6062', '-107.834', '300'),
UNLOCK TABLES;

Note the comma at the end of the insert statement. Should be a semicolon.

Line 9380...

LOCK TABLES `spawn2` WRITE;
INSERT INTO spawn2 (spawngroupID, zone, x, y, z, respawntime) VALUES
('800016', 'poknowledge', '858.639', '18.5724', '67.127', '300');
('800016', 'akanon', '60.8742', '602.831', '-22.373', '300'),
('800016', 'cabwest', '546.094', '-59.7544', '3.752', '300'),

Note the semicolon at the end of the first insert values. Should be a comma.

Thanks again.

djeryv 08-23-2018 07:21 AM

Fixed. Thanks for the catch.

What happened was I swapped the 2 sisters around with a cut and paste. I wanted the sage to be in the library and the teleporting witch out in the open more.

ward3 08-24-2018 04:35 PM

Awesome. I have been having the itch to startup another personal server. This might tip the scales for me to mess with. :)

Element D 08-25-2018 10:56 AM

Guidance on how to source the sql
 
Just setup a server for my wife and I to play on, and I saw this post. It sounds perfect as we will be the only two on the server.

That being said, my server is up and running and I don't want to mess it up. When you say "Source the following SQL file into your database" is there a command to do so, or a guide here explaining how to do this type of thing?

John C 08-25-2018 01:41 PM

ElementD -
Just open the SQL file in any text editor. Select All and Copy the full text. Then open HeidiSQL, which gets loaded with the game. You will have to enter the password to connect to the database. The default is "eqemu" and hit (open). Once you are in the database, you'll see a little button in the upper middle that has a blue triangle and says "query". Click there to bring up the query window. Paste the SQL command text that you copied from his script and hit F9 to execute it.

In the bottom window you'll see it run through all of the commands. Assuming it all works and you get no errors, you're done. Just exit out (and you don't have to save the script within Heidi).

Good Luck!

djeryv 08-25-2018 02:12 PM

I just updated this and added a new NPC called the Artisan of Norrath. They are in all of the cities and they have the same items that Brother Dremel has...except he accepts payment for the items. Like the sage, you can search for an item he carries and he will show you what he has and the price. He sells about 2,800 different crafting items that are hard to get on a solo server.

Element D 08-27-2018 07:55 PM

Guidance on how to source the sql -cont
 
John C -

Thanks for the help, but I'm unfortunately still a little confused. The install did place a HeidiSQL shortcut on my desktop, but when run it doesn't show any database and the open command is grey.

djeryv -

Thank you so much for the work on this solo package! I noticed the update and the new sql, does that also get sourced in the same way John C is explaining?

edit - also forgot to ask. If i leave step 2 out am i still able to use the plane of knowledge from any book location?

John C 08-27-2018 08:06 PM

When you open Heidi, you should see...

http://www.chastain.us/media/heidi.jpg


Everything that is populated should already be there. If not, what you see here are the default values for all of it. You then have to enter the password (where the red arrow is) and the default should be "eqemu".

You should then be able to hit "open" to access the DB. If not, it might be time to start looking at additional details such as, are you running on Windows or Linux? Did you change any setting during the install? Are you running the DB on the same box as you are running Heidi?

Fingers crossed.

djeryv 08-27-2018 08:22 PM

Source it the same...but first delete the lines that get rid of the nearby POK books.

Element D 08-27-2018 08:24 PM

I feel i'm missing something very easy here, but when i open Heidi with the shortcut on the desktop that was put there during installation, all the fields are empty including the session name. The only tab i have has is a start tab. New, import settings, cancel, and more are my only options.

Sorry I forgot to add I'm on windows 10, no changes other than the IP for the login server. Opening Heidi on same box as server install.

John C 08-27-2018 08:52 PM

Great. Hit NEW, give your session a name, and configure the rest just like is shown in the picture above. Hopefully then you should be able to OPEN it and see the DB.

Element D 08-27-2018 09:13 PM

That did it! Sorry if this is basic stuff, but it's all new to me.

I deleted the two lines for removing the pok books and when i hit F9 it says "unsafe queries found" "your query contains UPDATEs and/or DELETEs without a WHERE clause.". "please confirm that you know what you're doing" I think it's quite clear at this point I do not fully. :)

I've not made any other changes other than deleting those two lines.

John C 08-27-2018 09:22 PM

That warning is just telling you that there are not any restrictions on some of the queries to restrict which rows they will impact. It is just trying to make sure that you really want to update every record in the database. And that is exactly what you are trying to do, so just tell it to go ahead.

Making progress. You are almost there.

Element D 08-27-2018 09:31 PM

So it did come up with an error 1109 "unknown table 'npc_types' in information schema"

I decided to try clicking on the mysql that's on the left and hitting F9 again. Got the error again.

Do i need to click on the peq on the left and F9 again?

I appreciate your patients.

djeryv 08-28-2018 07:43 AM

Yes...you were in the wrong database when you ran that.

Also keep in mind that this is your initial server setup. So if you mess up the SQL stuff...you can wipe the peq database and resource it without losing anything. I am just mentioning this to put you at ease that you will not ruin anything you can't recover from.

John C 08-28-2018 08:30 AM

Yep. You want to select the PEQ database (which stands for Project EQ). See below.

http://www.chastain.us/media/peq.jpg

You can actually see all the EQ related tables. And djeryv is right, you can always restore your database if you mess something up but I would recommend against repeatedly trying to run a failing script.

Let's use an example to illustrate the point. Assume that a script has 4 lines. The first line reduces all monster HPs by 25%. The second line inserts a new NPC. The third line adds an item - and has an error that causes it to fail.

You run the script the first time. Hit points are reduced to 75% of the original value. The NPC is added. And then you get an error on line 3. So you run it again, and the HPs are reduced by another 25%. They are now 56% of the original value instead of 75% as intended, and a second NPC is added, before you hit the same error again.

djeryv 08-28-2018 09:38 AM

To further add onto this, for anyone pursing using custom content some of us provide, I would suggest get a server up and running first. If you can login, make a character, and run around...great. Then shut down the emulator and backup the database. Then run the custom stuff you downloaded and make sure it works fine. If not, you can just wipe the database and restore your backup and try again...or throw out the custom content entirely.

Angelicus6 08-28-2018 11:01 AM

Not sure if you can help me, but if I wanted to have the old wolf and skeleton models on my server how would I go about doing that?

I am new to having my own EQ server for myself and maybe family, so I don't have a clue how to do this.

djeryv 08-28-2018 11:25 AM

Quote:

Originally Posted by Angelicus6 (Post 259965)
Not sure if you can help me, but if I wanted to have the old wolf and skeleton models on my server how would I go about doing that?

I am new to having my own EQ server for myself and maybe family, so I don't have a clue how to do this.

That is beyond the scope of this particular thread, so you may want to start a new one elsewhere.

I do know, however, you will probably end up copying files from a Titanium install, but someone else may be better to help you in more detail.

Angelicus6 08-28-2018 11:27 AM

Quote:

Originally Posted by djeryv (Post 259966)
That is beyond the scope of this particular thread, so you may want to start a new one elsewhere.

I do know, however, you will probably end up copying files from a Titanium install, but someone else may be better to help you in more detail.

Okay, Thank you and sorry about that!

I posted in here because I am going to use your solo server settings and figured it would be okay to ask.

djeryv 08-28-2018 12:26 PM

Quote:

Originally Posted by Angelicus6 (Post 259967)
Okay, Thank you and sorry about that! I posted in here because I am going to use your solo server settings and figured it would be okay to ask.

It is good to start a new topic on this because one day...someone else will search for a question like you have and will hopefully find an answer easier.

Honestly, I would have just outright answered your question if I knew what to do. I just don't know which files you will need to copy and/or edit.

Angelicus6 08-28-2018 01:43 PM

Quote:

Originally Posted by djeryv (Post 259969)
It is good to start a new topic on this because one day...someone else will search for a question like you have and will hopefully find an answer easier.

Honestly, I would have just outright answered your question if I knew what to do. I just don't know which files you will need to copy and/or edit.

No worries! I did start another topic and have been searching for an answer on google. So far all I have been able to find is how to change it client side, but not server side.

Other than that I was able to get your solo server package up and running.

Element D 08-28-2018 07:22 PM

Sourced! Woohoo!

Thanks for the reassurance and help learning how this works. Very much appreciated.

Also, thanks again djeryv for all the work putting this together.

Darcy.

Bruser555 08-28-2018 08:10 PM

Where are the installer files for this solo server package? Was looking to possibly help my SQL poor skills while making a solo server for me and a friend.

Do you have specific instructions from start to finish? Maybe I am missing the location...

Sounds like the type of start I need for a server.

Element D 08-28-2018 08:46 PM

Original post from djeryv has a Google drive Link in it. There is a readme.txt file in the zip file. If you can't figure it out from that (as I could not) pretty much every post from John C in this thread is gold.

djeryv 08-29-2018 05:50 AM

As said previously, make sure you get a server up and running first. Don't worry about my solo server package until that point. Once you have a functioning server, follow the directions in the README. You simply copy some files to a specific folder, and then load up my database changes into your everquest database (usually called PEQ). Start the server and you are off and running.

Having a server for you and a friend is a perfect use for this. It lets you play alone and lets you play one character at that. I appreciate the bot system and think it is far more useful than the mercenary system...but I feel that bots can kinda ruin the experience of playing a character to its strength.

As an example, if you use bots...you may create a cookie-cutter group. So you make a cleric character and then you make a fighter and wizard bot to go with you. Then you decide to make a wizard character and then you make a fighter and cleric bot. I found that when I played this way...I played each character pretty much the same and approached it like a a group as if I was playing Baldur's Gate.

I would prefer having the monsters adjusted and then approach areas and problems differently based on the character I made. It just lets you explore the character better when all you have with you is your skills and spells. I also think bots can kinda spoil the nicety of the pet-having classes like mages and necromancers. I make a necromancer because I want to have that skeleton following me around. It is one of the things that make that class fun to play.

Angelicus6 08-29-2018 09:40 AM

Are all mobs soloable? So epic quests can be done solo?

djeryv 08-29-2018 11:40 AM

Quote:

Originally Posted by Angelicus6 (Post 259982)
Are all mobs soloable? So epic quests can be done solo?

There is no way to tell since the world is so massive that I would have to test this by killing everything with every character type.

My only testing was my friends and I playing it over the years, and we never ran into anything we couldn't beat. If it was yellow...it was hard. If it was white...we would probably win. If it were blue...we were pretty much sure to win. That is really all we wanted to achieve. We have characters that reached level 55-60 playing this way.

krv62 08-30-2018 01:54 PM

Doors in Gloomingdeep acting like Portals
 
Sorry if this was already brought up, I didn't read through all the posts.

The player.pl file included in this package causes ALL Doors (jail cell and Fort) to act as portals to your Home City.

The code in player.pl that is to blame:

sub EVENT_CLICKDOOR {
my $dbh = plugin::LoadMysql();

$nth = $dbh->prepare("SELECT class, race, deity FROM character_data WHERE name='$name'");
$nth->execute();
@row = $nth->fetchrow_array();
my $n_class = $row[0];
my $n_race = $row[1];
my $n_deity = $row[2];

$sth = $dbh->prepare("SELECT zone_id, x, y, z, heading FROM start_zones WHERE player_class=$n_class AND player_deity=$n_deity AND player_race=$n_race");
$sth->execute();
@row = $sth->fetchrow_array();
my $zn_id = $row[0];
my $zn_x = $row[1];
my $zn_y = $row[2];
my $zn_z = $row[3];
my $zn_head = $row[4];

$dbh->disconnect();
quest::movepc($zn_id, $zn_x, $zn_y, $zn_z, $zn_head);
}


I don't have a code fix for it, I just reverted back to my original player.pl file and all is good.

djeryv 08-30-2018 02:17 PM

This should be fixed now as I simply told the PL script to use doorid 11 to run that section (which is the cave). The main upload has been updated as well.

Anyone who already got this package, just replace your player.pl file (in the tutorialb folder) with this:

Code:

sub EVENT_ENTERZONE
{

        quest::movepc(189,18, -147, 19.6, 0);

        if(!defined $qglobals{tutbind} && $ulevel == 1)
        {
                quest::selfcast(2049);
                quest::setglobal("tutbind",1,1,"D30");
        }
       
        if(!defined $qglobals{tutpop})
        {
                quest::popup("Join the revolution!", "Welcome to the Revolt! You have been given two new quests:
                        <br><br><c \"#FFFF00\">Rally with Rahtiz:</c><br>If you are ready to begin fighting for the revolt,
                        hail Guard Rahtiz and see where you are needed.<br><br><c \"#FFFF00\">Basic Training:</c><br>If you
                        would like more training on the finer points of Everquest, speak with Arias and he will direct you to other knowledgeable
                        members of the slave revolt.<br><br><c \"#F07F00\">Click 'OK' to continue.</c>");
                        quest::assigntask(22);
                        quest::assigntask(23);
                        quest::setglobal("tutpop",1,1,"D30");
        }
       
        if($ulevel > 15 && $status < 80)
        {
                $client->Message(15,"You are too high in level to be in this zone.");

                my $dbh = plugin::LoadMysql();
       
                $nth = $dbh->prepare("SELECT class, race, deity FROM character_data WHERE name='$name'");
                $nth->execute();
                @row = $nth->fetchrow_array();
                my $n_class = $row[0];
                my $n_race = $row[1];
                my $n_deity = $row[2];
       
                $sth = $dbh->prepare("SELECT zone_id, x, y, z, heading FROM start_zones WHERE player_class=$n_class AND player_deity=$n_deity AND player_race=$n_race");
                $sth->execute();
                @row = $sth->fetchrow_array();
                my $zn_id = $row[0];
                my $zn_x = $row[1];
                my $zn_y = $row[2];
                my $zn_z = $row[3];
                my $zn_head = $row[4];
       
                $dbh->disconnect();
                quest::movepc($zn_id, $zn_x, $zn_y, $zn_z, $zn_head);
        } 
}

sub EVENT_TASK_STAGE_COMPLETE
{
        if ($task_id == 34)
        {
                quest::ze(15, "A cheer arises from the slaves as the last of the Kobold overseers fall.");
        }
  if ($task_id == 28 && $activity_id == 1) {
    $client->Message(0,"Vahlara bows as you return. 'Just in time. Many are wounded and more arrive by the hour. If you can find any Gloomingdeep silk, bring it to me and I can reward you with more burlap clothing. It's not much, but it's nicer than the rags these kobolds left us with.'");
  }
}

sub EVENT_CLICKDOOR {

        if( $doorid == 11 )
        {
                my $dbh = plugin::LoadMysql();
               
                $nth = $dbh->prepare("SELECT class, race, deity FROM character_data WHERE name='$name'");
                $nth->execute();
                @row = $nth->fetchrow_array();
                my $n_class = $row[0];
                my $n_race = $row[1];
                my $n_deity = $row[2];
               
                $sth = $dbh->prepare("SELECT zone_id, x, y, z, heading FROM start_zones WHERE player_class=$n_class AND player_deity=$n_deity AND player_race=$n_race");
                $sth->execute();
                @row = $sth->fetchrow_array();
                my $zn_id = $row[0];
                my $zn_x = $row[1];
                my $zn_y = $row[2];
                my $zn_z = $row[3];
                my $zn_head = $row[4];
               
                $dbh->disconnect();
                quest::movepc($zn_id, $zn_x, $zn_y, $zn_z, $zn_head);
        }
}


Element D 09-03-2018 10:05 PM

Find Item System "prophetess of Norrath"
 
My wife and I are really enjoying the Solo Package so far and have made liberal use of the SOW Barbarian in POK. We're looking for certain items from the Prophetess, but neither of us have been able to get her to recognize our quires.

We hail her and click the item link where the explanation says to use 'M:something'. Do you need to use the /say to get it to function? Do we need to actually type it out as a question? I've tried clicking item, then /say M:*Tunic.
It just shows me saying it in the dialog window with no response.


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

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