Go Back   EQEmulator Home > EQEmulator Forums > Archives > Archive::Development > Archive::Database/World Building

Archive::Database/World Building Archive area for General Discussion's posts that were moved here after an inactivity period of 90 days.

Reply
 
Thread Tools Display Modes
  #1  
Old 07-06-2004, 08:47 AM
Kode Black
Sarnak
 
Join Date: Jun 2004
Posts: 58
Default Learning... (any advice?)

Does anyone have some good references to guides they have learned from? Yes, there are alot of resources on this site, but alot of it is jumbled or outdated... I know some of you have walked this path before and could possibly point me in the right direction.

I am trying to learn all the world building tools at the moment, taking them as they come. At the moment mysql is getting alot of my attention, I am getting familiar with it, actually able to make some sense of it without staring at it blankly. Though I can understand some of it, I am lost on why some characters are used, like ( at the end of a line, or what "smallint(11)", "tinyint(08 )" or just "int" all mean. Do you actually gain an understanding of those things, or are they just lines you learn to enter because thats the way it is?
Anyway, any reference or learning material for the tools would be extremely helpful, mysql, compiling, 3rd party tools... anything you got, please throw it my way.
I know many of you started not knowing any of this as well, and I see those same people now doing excellent, so please, throw me a bone

I have thus far managed to get down the basics, undestanding what the database, source, and config is for... I have learned the basics of sql and even edited a few things to the server that I finally got up and running.
Right now my points of interest and intent is to learn to create npcs the way I want them, create quests, set my server to pvp, compile my server to my liking with edited zone lines and disable some of the zones. Its alot of work but its my new project, I'll be spending several hours a day working on it till I get it right

Thanks in advance for whatever you offer.
P.S. If this is something I am capable of learning, I have intention of hosting on a dedicated server, so this will eventually get back to the emu comnunity.
Reply With Quote
  #2  
Old 07-06-2004, 12:19 PM
x-scythe
Discordant
 
Join Date: Jun 2003
Posts: 449
Default

PERL and C++ are always good to learn. i started out learning PERL from the PERL quest guide in the quest forum and then moved on to more advanced stuff from there. now im learning C++, however i bought a book to teach me that.
i would suggest tho learning less complicated languages first. like HTML.
heres the order i learned things in:
1. HTML
2. PHP (just the basics)
3. Javascript (basics for the most part)
4. PERL
5. C++ (still learning)

i didnt really get to big into PHP and Javascript but it would probably be easier for you to learn PHP before starting any other Object Oriented language like PERL or C++. I never really learned SQL. I'll probably learn that after i get fairly good with C++. If you want to learn C++ the book "C++ For Dummies" is pretty good. thats the one im using and it doesnt require too much prior knowledge to learn (like a lot of other books that require you to know C before learning C++)..

but ya, if you don't know any other languages I would suggest starting off at lower level languages like HTML. HTML is easy as hell
Reply With Quote
  #3  
Old 07-06-2004, 04:31 PM
Kode Black
Sarnak
 
Join Date: Jun 2004
Posts: 58
Default

I was going through sql, I had an idea...

mysql> select * from zone_points where target_zone = 'vexthal';
+-----+--------+--------+---+---+---+---------+-------------+----------+----------+----------+----------------+--------+--------+----------+
| id | zone | number | y | x | z | heading | target_zone | target_y | target_x | target_z | target_heading | keep_x | keep_y | zoneinst |
+-----+--------+--------+---+---+---+---------+-------------+----------+----------+----------+----------------+--------+--------+----------+
| 785 | umbral | 45 | 0 | 0 | 0 | 0 | vexthal | 216 | -1664 | -35 | 2 | 0 | 0 | 0 |
+-----+--------+--------+---+---+---+---------+-------------+----------+----------+----------+----------------+--------+--------+----------+
1 row in set (0.00 sec)

mysql> select * from zone_points where target_zone = 'qrg';
+-----+------------+--------+---+---+---+---------+-------------+----------+----------+----------+----------------+--------+--------+----------+
| id | zone | number | y | x | z | heading | target_zone | target_y | target_x | target_z | target_heading | keep_x | keep_y | zoneinst |
+-----+------------+--------+---+---+---+---------+-------------+----------+----------+----------+----------------+--------+--------+----------+
| 704 | qeytoqrg | 4 | 0 | 0 | 0 | 0 | qrg | -611 | 114 | 5 | 999 | 0 | 0 | 0 |
| 645 | jaggedpine | 1 | 0 | 0 | 0 | 0 | qrg | 56 | -510 | 42 | 256 | 0 | 0 | 0 |
+-----+------------+--------+---+---+---+---------+-------------+----------+----------+----------+----------------+--------+--------+----------+
2 rows in set (0.00 sec)

If I were to change zone id 785 in umbral plains to be target zone qrg -611 114 5 in the appropriate x/y/z collumns like when zoning from 'qeytoqrg', would that turn the UP/VT zone to UP/Qrg?

Just a thought.
Reply With Quote
  #4  
Old 07-07-2004, 02:36 AM
animepimp
Dragon
 
Join Date: Jan 2004
Posts: 860
Default

Yes it would.
Reply With Quote
  #5  
Old 07-07-2004, 03:48 AM
Kode Black
Sarnak
 
Join Date: Jun 2004
Posts: 58
Default

Sometimes it works, sometimes it doesn't :(
I accidentally set all my target_zone's to qeynos by not using a where deffinition, thats okay, I'm just testing... anyway, zoneing from where qeynos goes to qeynos2, I end up in qeynos, not qeynos2 as its changed in sql.
So I did some further tests and changed ALL the qrg zones to lead to crushbone... no dice, I can still zone from qrg to qeynos hills.

However, if I zone to say Vex Thal and zone out, it sends me to Qeynos like I had accidentally set it...
What I'm wondering is, could it have something to do with the original source that I am using? Can I not override that, cause I though sql would make changes right to it...
Reply With Quote
  #6  
Old 07-07-2004, 03:52 AM
animepimp
Dragon
 
Join Date: Jan 2004
Posts: 860
Default

Some of the zone lines are hard coded in the client and the client tells the server where its going so it ignores the Db, I think.
Reply With Quote
  #7  
Old 07-07-2004, 08:41 AM
Kode Black
Sarnak
 
Join Date: Jun 2004
Posts: 58
Default

Seems to be that way, its only the Qeynos area that is like that so far. Any idea how that could be otherwise edited?
Reply With Quote
  #8  
Old 07-07-2004, 10:20 AM
Kode Black
Sarnak
 
Join Date: Jun 2004
Posts: 58
Default

Could someone please clarify the different parts of a server for me, it sounds really dumb but I have yet to completely understand them.

Source:
Database:
Configuration:

Assuming those are different...

By best guess, I would define them as:

Source: This is all the important ifmormation, the source for the way zones appear and react, the source for character/mob apearance and animations, enviromental sources like water. Overall its everything that makes the foundation for the game, the graphical and enviromental configuration. In essence, the material for the EQ world.
Database: This is where the world breathes, what brings the world to life, this is what tells the creature to move, runs and stores quests, stores information for items, mobs, characters, zone points and basically controls everything that happens in the world.
Now, are the creatures part of the source and how they react part of the database?
Configuration: These are the particular settings for your world, this tells world if pvp is enabled, how much damage a spell will do in pvp, level limits and if a player has access to the # commands.

How far off base am I on that? Did I screw anything up?

On the software end...
MySQL: This basically manages the database, allowing you to edit the mobs, spawn times, zonepoints, drop rates, regen rates and more along those lines, mostly anything pertaining to the database. MySQL also runs quest scripts made with Perl.
Am I right on that?

Perl: Enables you to write scripts which will be run in mysql. Can these scripts be edited by sql? Is perl run hand in hand with sql, or is it seperate and sql just uses the scripts made in perl?

Compiler/Compiling: WTF? Something to do with creating/editing a source I think.

Anything I am missing?

Also, a few questions, just some scenerios, if I were trying to do ______ I would use _______.
Set max levels: Compile config files?
Set world wide pvp: Compile config files?
Remove Spawns: SQL & Database?
Create New items: SQL or 3rd party software to edit DB?
Change Zone Points: SQL & DB, but is this the right way?
Disable Zones: SQL & DB?

Also, do AA's come from your source or from your DB? Meaning, to change or fix existing AA's, would that be done in the DB with MySQL?

I know, its alot....thanks for the help.
And I know it sounds noob :(
Reply With Quote
  #9  
Old 07-07-2004, 12:07 PM
Tangeleno
Sarnak
 
Join Date: Mar 2004
Posts: 61
Default

~~WARNING STILL LEARNING MYSELF I MAYBE WRONG!~~

Quote:
Originally Posted by Kode Black
Could someone please clarify the different parts of a server for me, it sounds really dumb but I have yet to completely understand them.

Source:
Database:
Configuration:
The source is the code for the server executibles. These executibles read the info in the database and send that info to the client. It also does most of the calculations for mana, hitpoints, damage, exp, AA, runspeed ect ect.

The database is where all the filling for eq is stored. Its job is to simply hold all the info for the game. This covers almost everything from the names of NPCs' to the player's characters to the items, to the factions to the loot tables and quite a few other things.

Configuration is how your server is set up. Pretty simple.

Quote:
MySQL: This basically manages the database, allowing you to edit the mobs, spawn times, zonepoints, drop rates, regen rates and more along those lines, mostly anything pertaining to the database. MySQL also runs quest scripts made with Perl.
Am I right on that?

Perl: Enables you to write scripts which will be run in mysql. Can these scripts be edited by sql? Is perl run hand in hand with sql, or is it seperate and sql just uses the scripts made in perl?

Compiler/Compiling: WTF? Something to do with creating/editing a source I think.
MySQL is a database server program. Its job is to give out the info in the database to programs that ask for it. You can edit your database with mysql in the command prompt but there are other window programs out there that make the task much easier.

Perl is a programming language. What is meant when people ask if you have installed perl is if you have installed the perl compiler. Perl is one of the few languages that is platform independant, meaning that the perl script you write can run on any OS as long as they have the compiler installed. SQL does not run any perl scripts. As I understand it here is how the perl system works.
  • Player zones into a zone with quest npc's
    The server executibles load the quest file with the help of the perl compiler.
    The server executibles then tell the client what to display to the client.
    If the conditions of the quest are met the server executibles then add/remove/edit some info in the database and tells the client what to display to the player.
Perl scripts can be written in almost any text editor including textpad for those who are bold.

A compiler is a program that takes the source code and turns it into executibles. Visual Studio.net is the only compiler supported with EQemu (afaik) As for editing the source, well you can do that in notepad if you feel bold enough. Programs like Visual Studio.Net color code everything and make it nice and pretty.

As for the AA question, I think some of the info is hard coded into the server and other info is in the database.

**EDIT**
Closing tags and removing extra close tags
Reply With Quote
  #10  
Old 07-08-2004, 12:33 PM
Kode Black
Sarnak
 
Join Date: Jun 2004
Posts: 58
Default

Okay, let me recap once more and make sure I am understanding this.
You take your binaries, i.e. source, which is a cluster of files written in C++, these files can be edited to meet your needs... after setting them how you want, you compile them... this creates your sharemem.dll.
Then you have you cfg file which holds all your zones, some text files like db.ini and addon.ini which act as references for your .exe's.
Everything runs off of sql which acts like a errand boy, sending information to and from different locations as it is requested from the client, zone.exe and world.exe.

So, if I am correct with all that, can I assume that server pvp settings need to be set when you compile?
Also, I seen OpenZone4, 3rd party software, this allows you to rewrite the zones? What does something like this write in, C++ also?
And, I have seen some commands written by Draupner which allow you to add new commands by editing files, that refers to editing your binaries and recompiling, I assume, am I correct?
And, to edit something like pvp settings, would that be done through the DB or does that extend so far as to the source? i.e. you need to edit the binaries and compile?

Thanks again for all the help so far... I have been making alot of improvements and for the most part I can read and understand sql... atleast the basics. Though I am still confused about tinyint and blob... I know they are a unit of measure so to speak, a definition to a collumn... my lingo is bad :( I just don't understand what they refer to, tinyint, smallint, bigint ... I have the sql guide though which I am reading...

EDIT:
Hmmm, zone.exe and world.exe, do those come from a compile, is it the same compile as sharemem.dll?
Reply With Quote
  #11  
Old 07-08-2004, 01:08 PM
Tangeleno
Sarnak
 
Join Date: Mar 2004
Posts: 61
Default

Yes the zone.exe world.exe and sharemem.dll all come from the same compile. A binary is another name for the compiled product. An example of a source code is
Code:
#include <stdio.h>

int main() {
  printf("Hello World!\n");
  return 0;
}
Now what you would do is write this in a text editor and then compile it with a "C" compiler which will give you the binary/executible which will display the text "Hello World!" when ran. Pretty simple eh?

As far as I know to make a server PvP enabled would require editing the source, it is probably a very simple chance but you can never be certain.

I think how OpenZone works is by converting a .3ds file (which is a file made in the 3d graphic editor 3d Studio) into what ever format the everquest client can read. All you would need to do on the server end I imagine is update your database to reflect that the zone does infact exist, has spawns, loot tables ect ect.

The commands written by Draupner are to be added to the source code and then recompiled.

Once again the same disclaimer still stands. I too am still learning.
Some one please correct me if I'm wrong!
Reply With Quote
  #12  
Old 07-08-2004, 02:11 PM
Kode Black
Sarnak
 
Join Date: Jun 2004
Posts: 58
Default

I think I'll pick up C++ for dumbies or something this weekend...
Yes, it looks simple enough, just need to reference and see how its written... what makes that file execute though?
Or is it just an open ended example of how the code is written?
Reply With Quote
  #13  
Old 07-08-2004, 02:59 PM
Tangeleno
Sarnak
 
Join Date: Mar 2004
Posts: 61
Default

That code is acctually the C language not C++ theres quite a couple differences I think. Somthing I have noticed however is that all the languages seem to hold the same couple of rules no matter what language. Seems to me the most you have to do to learn a programming language is learn the syntax that most seem to follow and then learn the different commands,operators ect for each langauge. At least thats what it seems to me.
Reply With Quote
  #14  
Old 07-08-2004, 03:11 PM
animepimp
Dragon
 
Join Date: Jan 2004
Posts: 860
Default

There is a variable in the database that can be changed to enable server wide PvP or disable it without recompiling the executables. But if you want mroe than jsut PvP On or Off, like on in some zones and off in others you need to make more extensive code changes and recompile.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 09:15 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3