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

Development::Database/World Building World Building forum, dedicated to the EQEmu MySQL Database. Post partial/complete databases for spawns, items, etc.

Reply
 
Thread Tools Display Modes
  #1  
Old 12-29-2006, 12:50 AM
Angelox
AX Classic Developer
 
Join Date: May 2006
Location: filler
Posts: 2,049
Default New Years resolutions anyone?

You see, we have a big problem here; No standard database to build on. We got EQ, which was Cavedudes contribution as a database for everyone to use - then we got PEQ, which is sort of a database that everyone has a "limited" access. then we got mine, which I started because no one would post public updates to their work. basically I'm a "one man band" - you know, harmonica in the mouth, bass drum in-between my legs, etc. , when it comes to database building -
What is the point here? are we going to continue with our personal "agendas" tell we get tired and quit, basically leave EqEmu with out a good. solid PUBLIC database for another year, or are we going to make some changes?
Why don't we get together, merge everything we have and start from there? I haven't went over to anybody's project, simply because I have done way too much work, not just packet spawning, but long, pain-in-the ass work, that should not have to be done over again by me or anyone else.
If someone offered to merge it (AX_PEQ) into a public database, together with all the other db that would accept updates and post regular db updates, then I would go for that.
The EqEmu source has a system that works pretty well, even with the few Devs atm. I can't understand why the MySql database doesn't?
I know we have people in this forum right now that are interested in this.
Reply With Quote
  #2  
Old 12-29-2006, 01:47 AM
John Adams
Demi-God
 
Join Date: Jul 2006
Posts: 1,552
Default

Angelox, while your efforts are monumental compared to most, I have to disagree that no one else offers any input to "the public database(s)". Yes, there are 3+ databases floating around. Cavedude (I thought) abandoned his-own-private-works for PEQ, so that sorta combines 2 efforts into one. ax_peq has been blessed as an official database (something you should be very proud of!) in the installer package. Aside from raw PEQ and ax_peq, anyone elses "private" work is their own, really. Doesn't mean it fits into the PEQ philosophies.

And I know for a fact many people (including myself) post SQL updates to zones, doors, etc... many code and quest fixes/additions.

I feel the community is living and breathing well. It may feel like a burden to you to carry an entire database on your own shoulders, but you also admittedly have lots of spare time - most of us do not. Plus, this makes you a celebrity! Can I have an autographed picture of your avatar pls?

I (personally) do what I can here, mostly helping others with info if I know the answer. I hope to do more, but time is limited. And I don't know C++ so well. Maybe someday.
Reply With Quote
  #3  
Old 12-31-2006, 04:59 PM
Zengez
Hill Giant
 
Join Date: Nov 2004
Posts: 160
Default

I dunno, I kind of agree with Angelox here, Which is why I wanted to institute something along the lines of a wiki style database server... which was laughed out of hand and dismissed, oh well.

But I think what Angelox is more aiming toward isn't the fixes and patches and items that are addressed as a community things (i.e. doors, quests, and zone lines) but rather the raw and pain in the ass spawning of a ton of mobs throughout all the zones that aren't being touched. I know Angelox is ALSO talking about doors and zonelines etc, and that shouldn't be by any means overlooked as without them it doesn't really matter too much if stuff is spawned correctly, but at the same time being able to zone into an empty zone isn't much of an accomplishment either.

Seems to me the problem is that people are going one of two routes;

One: This is an Emulator, and as such, should be open to customization and so it doesn't matter if we aren't spawning things similiar to live, as that isn't the point,

Two: We don't even have all the stuff that we have 'done' finished, so lets finish that and fine tune it before we move on.

My response to these are as follows;

One: Very true, and a perfectly good point, if you just want to build your own world, litterally, custom tailor your own spawns and zones, great, and good luck, you needn't care any further. (this is arguable, but I'm tired and I'll leave that to someone else)

Two: Also a good point, but as has been said so very many times, this isn't live, this is an emulator. As such it will nearly be impossible to make zones exactly the same. Even if we got everything spawned as perfectly as possible, a bunch of other things are still broken. More importantly, I'd argue (in my currently limited capacity) that having most all the zones 90% spawned is far better than having 20% of the zones 100% spawned. Most of the spawn work is not terribly difficult at all, just mass production of static and/or basic roaming mobs. The other 10% is the quest triggers, named spawns, and special loot stuff that takes actual knowledge of the spawning system and time to dedicate to correctly crafting, and as a result might be beyond the abilities of a large portion of basic admins and spawners.

But, here is my issue with this, I simply don't know the stats of the mobs.
Sure, I could go about spawning mobs and probably getting the pathing right, and I'd have a bunch of lvl 1 mobs with 10 hit points and no damage wandering around the countless zones as glorified placeholders for whatever they should be. I've even re-activated my account in live to try and gather some data to get better info on spawns, but that will still take far too much effort than what it's worth, since at most I get some very rough damage stats and some equally inaccurate hit point guestimates.

So, Thats why I think something that may be a good start would be for people with true massive population experience to type up a thread on how they decide stats for mobs. Things like what really goes into the max damage in a mob, will their strength matter? or is it entirely off the 'maxdmg' stat? how many hitpoints do mobs tend to have by level and expansion? dmg? special abilities? etc etc...

Finally, perhaps a semi-public server if wiki is such a terrible idea, where we have a select few that are allowed to log into a 24/7 server and spawn as they desire to ballpark a full pop of every zone in as short a time period as possible, even if the mobs aren't quite right, or some zones are only half spawned, it's better than nothing. I myself stopped truely exploring expansion zones since PoP so my experience is limited, especially since I never did any Raiding, so there isn't much for me to go on, but I'm sure others have. If this were done then more serious database developers like Angelox and the PEQ team would merely have to make (hopefully) minor edits, some tweaks, and some crafting of quest mobs and whatnot, and the database could grow and develope much easier since the bulk work would be more or less completed.

Anyways, thats my 2 cents, perhaps it will spike some debate and get somewhere /shrug

EDIT:: As a clarification, that semi-private server would just be a database breeding ground, the updates would be made public and everything would thus would be for the good of the community.

Last edited by Zengez; 01-01-2007 at 01:06 AM..
Reply With Quote
  #4  
Old 12-31-2006, 06:13 PM
rojadruid
Discordant
 
Join Date: May 2005
Location: Smith Falls, Ontario, Canada
Posts: 283
Default

On a personal note I plan to try to quit smoking.
__________________
Rojadruid

Innoruuk Server [legit]
Server Admin.
Server Status: UP
Reply With Quote
  #5  
Old 12-31-2006, 10:34 PM
CrabClaw's Avatar
CrabClaw
Hill Giant
 
Join Date: Jun 2006
Location: Plane of Knowledge
Posts: 191
Default

Resolution #1: to help write as many quests as I can, now that I have learned a simple knowledge of *.pl quest coding (I helped I did know Java).

Resolution #2: Don't make resolutions(hehe - joking).

Yes! By all means! You have to accept you can never be 100% live like. So it is far batter to have more zones well spawned, and organized to be playable then being by the book about things. Besides it opens the door to make some improvements to things as well (EQ-Live still has a ton of unfinished stuff and broken quests). Even on Live they re-shuffled and re-did zones so all the old world content (Freeport, Oasis, Commonlands, Nek, and the like. Even the PoN was re-balanced back in just-pre-OoW days), and is really open for reinterpretation. So I say make the old zones a good inspired-by-live play re-do, and give yourself some license for creative additions (more modern drops and updated quests, new Nameds and such).

Oh and by the way,

Happy new Year!
Reply With Quote
  #6  
Old 01-01-2007, 11:01 AM
John Adams
Demi-God
 
Join Date: Jul 2006
Posts: 1,552
Default

What I'd like to see for EQEmu'2007:
-- Drive a stake in the ground and name a new "stable" build. I propose focused, organized testing by the Emulator community players and admins. There are test plans posted in the Wiki (which are in dire need of updating), everyone should take a chunk and go to town, report bugs, get them fixed. If a dev or two knows that for a month, community members will be posting details on specific bugs, maybe they will offer their time to help stablize the code.

-- Wikiwakkawoo my gods, please start updating the Wiki! This is my personal resolution, because this is absolutely something any of us are capable of doing. If we see posted info that might help others, let's start adding it to the wiki. We've preached it, now let's do it.

-- Bring the spawns for newer zone layouts up to Titanium standards. If you are going to say "Titanium only", the data should support that client, not just 6.2. Renaming lavastorm.eqg is not moving forward, nor supporting the only "legal" client for this emulator.

-- A repository for fixes that isn't a VBulletin code tag! If we make Diffs, I'd like to see a file upload area where we can stick these raw snippets of text. A forum is no place to paste code fixes. Many people have pointed links back to their own shares, but those go inactive almost as quickly as they appear. History lost. This goes for databases, too. God forbid, what if Angelox or GeorgeS got pissed off and closed their sites? A year from now, we'd be begging someone to post their database or tools from the archives.

-- Quest Helpers. So much effort is being put into making quests more stable, add missing ones, or create custom ones to aid lower population servers. I'd like to see more dev help (or maybe a nice tutorial how to add functionality to the questmgr) so quest writers lives will be easier. While the current system works quite well, there are some things you simply cannot do... yet. Also, finding someone dedicated to incorporating all this quest work into an official package would ensure 1) acknowledgement and 2) preservation of effort. The PEQ /quests site is perfect for this, but seems understaffed (?)

-- More awareness that community input IS acknowledged. It seems there is this cloud that pops up once in a while, members posting that no one but a small handful do anything. If you shovel through the archives over the past 3 years, it would become evident how many people offer their time, expertise, and solutions, but vanish after burnout or feeling ignored. People contribute here, daily. It's time we notice that and be happy it's as good as it is. However...

-- And finally, to go along with the theme of this thread, more community members who CAN code, helping with the base effort and not just their own server(s). Customizing is great, but if you fix a core bug while customizing your server, please share the core fix it so this project continues to move forward. Like Boats. How many times has this been fixed, then re-broken?

Ok, flame away. And yes, Mattmeck - I volunteer to do EVERYTHING myself ~yawn~
Reply With Quote
  #7  
Old 01-01-2007, 11:19 AM
sfisque
Hill Giant
 
Join Date: Oct 2006
Posts: 248
Default my resolutions

Fix or find a work-around for bind-zone-disconnect-on-death bug

This one irritates me to no end. i've poured through the code for days on end, down several dead ends and finally back to start. i'll get it sooner or later.


Split the database imports

The database imports need to be split into specific tables so that people can "update" or "diff" specific sections if they have custom mods they do not want to whack. a good example, importing the faction fixes from wildcardx would be great without having to whack the entire database.

== sfisque
Reply With Quote
  #8  
Old 01-01-2007, 01:57 PM
Angelox
AX Classic Developer
 
Join Date: May 2006
Location: filler
Posts: 2,049
Default

I didn't mean to harp on anyone here with my post. I know a lot of you all out there are doing what you can, and have helped me out a lot. I really appreciate that.
Reply With Quote
  #9  
Old 01-02-2007, 06:20 AM
ArChron
Fire Beetle
 
Join Date: Dec 2006
Location: Vienna
Posts: 28
Default

New Years Resolutions?

Get off my butt and finally put together the Rails project that has been stewing around in my head since I found EQEmu, and wanted to figure out the database.

I use MySQL 5, and have a few trivial items constructed to help make sense of the DB... like adding a classes table and a races table so that I can see real names of values in a query...

Code:
USE `ax_peq`;
CREATE TABLE `ax_peq`.`classes` (
  `class_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `class_name` CHAR(30) DEFAULT 'Un-named' COMMENT 'Class Name',
  PRIMARY KEY(`class_id`)
)
ENGINE = MYISAM;

USE `ax_peq`;
INSERT INTO `classes` (`class_id`,`class_name`) VALUES ( 1, 'Warrior');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES ( 2, 'Cleric');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES ( 3, 'Paladin');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES ( 4, 'Ranger');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES ( 5, 'Shadow Knight');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES ( 6, 'Druid');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES ( 7, 'Monk');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES ( 8, 'Bard');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES ( 9, 'Rogue');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (10, 'Shaman');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (11, 'Necromancer');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (12, 'Wizard');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (13, 'Magician');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (14, 'Enchanter');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (15, 'Beastlord');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (16, 'Berserker');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (20, 'GM Warrior');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (21, 'GM Cleric');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (22, 'GM Paladin');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (23, 'GM Ranger');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (24, 'GM Shadow Knight');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (25, 'GM Druid');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (26, 'GM Monk');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (27, 'GM Bard');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (28, 'GM Rogue');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (29, 'GM Shaman');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (30, 'GM Necromancer');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (31, 'GM Wizard');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (32, 'GM Magician');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (33, 'GM Enchanter');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (34, 'GM Beastlord');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (35, 'GM Berserker');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (40, 'Banker');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (41, 'Shopkeeper');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (60, 'Adventure Recruiter');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (61, 'Adventure Merchant');
INSERT INTO `classes` (`class_id`,`class_name`) VALUES (63, 'Tribute Master');
and you can create some views out of SELECTs that are useful as well...

Code:
SELECT s.id, s.race, r.race_desc, s.class, c.class_name, s.zoneid, 
  z.long_name, s.itemid, i.Name, i.filename FROM starting_items s 
  INNER JOIN classes c ON s.class=c.class_id 
  INNER JOIN races r ON s.race=r.race_id 
  INNER JOIN items i ON s.itemid=i.id 
  INNER JOIN zone z ON s.zoneid=z.zoneidnumber 
  ORDER BY s.race, s.class;

and

SELECT l.id, l.name, e.item_id, i.Name AS itemName, e.chance FROM lootdrop l
  INNER JOIN lootdrop_entries e ON l.id=e.lootdrop_id
  INNER JOIN items i ON e.item_id=i.id
  ORDER BY l.id;
I can build stuff as I have time, but there's a fairly steep curve for the database, so it's largely hunt and peck thus far.
Reply With Quote
  #10  
Old 01-02-2007, 06:24 AM
ArChron
Fire Beetle
 
Join Date: Dec 2006
Location: Vienna
Posts: 28
Default

Here's half of the the races table, which made the last post too long to, well, post, so combine this code segment with the next code segment for the full SQL.

Code:
USE `ax_peq`;
CREATE TABLE `races` (
  `race_id` INTEGER NOT NULL COMMENT 'ID',
  `race_desc` CHAR(60) NOT NULL DEFAULT 'Un-named' COMMENT 'Description',
  PRIMARY KEY(`race_id`)
)
ENGINE = MYISAM;

INSERT INTO `races` VALUES (0,'Soldier')
INSERT INTO `races` VALUES (1,'Human')
INSERT INTO `races` VALUES (2,'Barbarian')
INSERT INTO `races` VALUES (3,'Erudite')
INSERT INTO `races` VALUES (4,'Wood Elf')
INSERT INTO `races` VALUES (5,'High Elf')
INSERT INTO `races` VALUES (6,'Dark Elf')
INSERT INTO `races` VALUES (7,'Half Elf')
INSERT INTO `races` VALUES (8,'Dwarf')
INSERT INTO `races` VALUES (9,'Troll')
INSERT INTO `races` VALUES (10,'Ogre')
INSERT INTO `races` VALUES (11,'Halfling')
INSERT INTO `races` VALUES (12,'Gnome')
INSERT INTO `races` VALUES (13,'Aviak')
INSERT INTO `races` VALUES (14,'Were Wolf')
INSERT INTO `races` VALUES (15,'Brownie')
INSERT INTO `races` VALUES (16,'Centaur')
INSERT INTO `races` VALUES (17,'Golem')
INSERT INTO `races` VALUES (18,'Giant / Cyclops')
INSERT INTO `races` VALUES (19,'Trakenon')
INSERT INTO `races` VALUES (20,'Doppleganger')
INSERT INTO `races` VALUES (21,'Evil Eye')
INSERT INTO `races` VALUES (22,'Beetle')
INSERT INTO `races` VALUES (23,'Kerra')
INSERT INTO `races` VALUES (24,'Fish')
INSERT INTO `races` VALUES (25,'Fairy')
INSERT INTO `races` VALUES (26,'Froglok')
INSERT INTO `races` VALUES (27,'Froglok Ghoul')
INSERT INTO `races` VALUES (28,'Fungusman')
INSERT INTO `races` VALUES (29,'Gargoyle')
INSERT INTO `races` VALUES (30,'Gasbag')
INSERT INTO `races` VALUES (31,'Gelatinous Cube')
INSERT INTO `races` VALUES (32,'Ghost')
INSERT INTO `races` VALUES (33,'Ghoul')
INSERT INTO `races` VALUES (34,'Giant Bat')
INSERT INTO `races` VALUES (35,'Giant Eel')
INSERT INTO `races` VALUES (36,'Giant Rat')
INSERT INTO `races` VALUES (37,'Giant Snake')
INSERT INTO `races` VALUES (38,'Giant Spider')
INSERT INTO `races` VALUES (39,'Gnoll')
INSERT INTO `races` VALUES (40,'Goblin')
INSERT INTO `races` VALUES (41,'Gorilla')
INSERT INTO `races` VALUES (42,'Wolf')
INSERT INTO `races` VALUES (43,'Bear')
INSERT INTO `races` VALUES (44,'Freeport Guards')
INSERT INTO `races` VALUES (45,'Demi Lich')
INSERT INTO `races` VALUES (46,'Imp')
INSERT INTO `races` VALUES (47,'Griffin')
INSERT INTO `races` VALUES (48,'Kobold')
INSERT INTO `races` VALUES (49,'Lava Dragon')
INSERT INTO `races` VALUES (50,'Lion');
INSERT INTO `races` VALUES (51,'Lizard Man')
INSERT INTO `races` VALUES (52,'Mimic')
INSERT INTO `races` VALUES (53,'Minotaur')
INSERT INTO `races` VALUES (54,'Orc')
INSERT INTO `races` VALUES (55,'Human Beggar')
INSERT INTO `races` VALUES (56,'Pixie')
INSERT INTO `races` VALUES (57,'Dracnid')
INSERT INTO `races` VALUES (58,'Solusek Ro')
INSERT INTO `races` VALUES (59,'Bloodgills')
INSERT INTO `races` VALUES (60,'Skeleton')
INSERT INTO `races` VALUES (61,'Shark')
INSERT INTO `races` VALUES (62,'Tunare')
INSERT INTO `races` VALUES (63,'Tiger')
INSERT INTO `races` VALUES (64,'Treant')
INSERT INTO `races` VALUES (65,'Vampire')
INSERT INTO `races` VALUES (66,'Rallos Zek')
INSERT INTO `races` VALUES (67,'Highpass Citizen')
INSERT INTO `races` VALUES (68,'Tentacle')
INSERT INTO `races` VALUES (69,'Will O Wisp')
INSERT INTO `races` VALUES (70,'Zombie')
INSERT INTO `races` VALUES (71,'Qeynos Citizen')
INSERT INTO `races` VALUES (72,'Ship')
INSERT INTO `races` VALUES (73,'Launch')
INSERT INTO `races` VALUES (74,'Piranha')
INSERT INTO `races` VALUES (75,'Elemental')
INSERT INTO `races` VALUES (76,'Puma')
INSERT INTO `races` VALUES (77,'Neriak Citizen')
INSERT INTO `races` VALUES (78,'Erudite Citizen')
INSERT INTO `races` VALUES (79,'Bixie')
INSERT INTO `races` VALUES (80,'Reanimated Hand')
INSERT INTO `races` VALUES (81,'Rivervale Citizen')
INSERT INTO `races` VALUES (82,'Scarecrow')
INSERT INTO `races` VALUES (83,'Skunk')
INSERT INTO `races` VALUES (84,'Snake Elemental')
INSERT INTO `races` VALUES (85,'Spectre')
INSERT INTO `races` VALUES (86,'Sphinx')
INSERT INTO `races` VALUES (87,'Armadillo')
INSERT INTO `races` VALUES (88,'Clockwork Gnome')
INSERT INTO `races` VALUES (89,'Drake')
INSERT INTO `races` VALUES (90,'Halas Citizen')
INSERT INTO `races` VALUES (91,'Alligator')
INSERT INTO `races` VALUES (92,'Grobb Citizen')
INSERT INTO `races` VALUES (93,'Oggok Citizen')
INSERT INTO `races` VALUES (94,'Kaladim Citizen')
INSERT INTO `races` VALUES (95,'Cazic Thule')
INSERT INTO `races` VALUES (96,'Cockatrice')
INSERT INTO `races` VALUES (97,'Daisy Man')
INSERT INTO `races` VALUES (98,'Elf Vampire')
INSERT INTO `races` VALUES (99,'Denizen')
INSERT INTO `races` VALUES (100,'Dervish');
INSERT INTO `races` VALUES (101,'Efreeti')
INSERT INTO `races` VALUES (102,'Froglok Tadpole')
INSERT INTO `races` VALUES (103,'Kedge')
INSERT INTO `races` VALUES (104,'Leech')
INSERT INTO `races` VALUES (105,'Swordfish')
INSERT INTO `races` VALUES (106,'Felguard')
INSERT INTO `races` VALUES (107,'Mammoth')
INSERT INTO `races` VALUES (108,'Eye of Zomm')
INSERT INTO `races` VALUES (109,'Wasp')
INSERT INTO `races` VALUES (110,'Mermaid')
INSERT INTO `races` VALUES (111,'Harpie')
INSERT INTO `races` VALUES (112,'Fayguard')
INSERT INTO `races` VALUES (113,'Drixie')
INSERT INTO `races` VALUES (114,'Ghost Ship')
INSERT INTO `races` VALUES (115,'Clam')
INSERT INTO `races` VALUES (116,'Sea Horse')
INSERT INTO `races` VALUES (117,'Ghost Dwarf')
INSERT INTO `races` VALUES (118,'Erudite Ghost')
INSERT INTO `races` VALUES (119,'Sabertooth Cat')
INSERT INTO `races` VALUES (120,'Wolf Elemental')
INSERT INTO `races` VALUES (121,'Gorgon')
INSERT INTO `races` VALUES (122,'Dragon Skeleton')
INSERT INTO `races` VALUES (123,'Innoruuk')
INSERT INTO `races` VALUES (124,'Unicorn')
INSERT INTO `races` VALUES (125,'Pegasus')
INSERT INTO `races` VALUES (126,'Djinn')
INSERT INTO `races` VALUES (127,'Invisible Man')
INSERT INTO `races` VALUES (128,'Iksar')
INSERT INTO `races` VALUES (129,'Scorpion')
INSERT INTO `races` VALUES (130,'Vah Shir')
INSERT INTO `races` VALUES (131,'Sarnak')
INSERT INTO `races` VALUES (132,'Draglock')
INSERT INTO `races` VALUES (133,'Lycanthrope')
INSERT INTO `races` VALUES (134,'Mosquito')
INSERT INTO `races` VALUES (135,'Rhino')
INSERT INTO `races` VALUES (136,'Xalgoz')
INSERT INTO `races` VALUES (137,'Kunark Goblin')
INSERT INTO `races` VALUES (138,'Yeti')
INSERT INTO `races` VALUES (139,'Iksar Citizen')
INSERT INTO `races` VALUES (140,'Forest Giant')
INSERT INTO `races` VALUES (141,'Boat')
INSERT INTO `races` VALUES (142,'Nearest Doodad (Rock, torch, rug, etc.) in sight.')
INSERT INTO `races` VALUES (143,'Nearest Tree in sight.')
INSERT INTO `races` VALUES (144,'Burynai')
INSERT INTO `races` VALUES (145,'Goo')
INSERT INTO `races` VALUES (146,'Spectral Sarnak')
INSERT INTO `races` VALUES (147,'Spectral Iksar')
INSERT INTO `races` VALUES (148,'Kunark Fish')
INSERT INTO `races` VALUES (149,'Iksar Scorpion')
INSERT INTO `races` VALUES (150,'Erollisi');
INSERT INTO `races` VALUES (151,'Tribunal')
INSERT INTO `races` VALUES (152,'Bertoxxulous')
INSERT INTO `races` VALUES (153,'Bristlebane')
INSERT INTO `races` VALUES (154,'Fay Drake')
INSERT INTO `races` VALUES (155,'Sarnak Skeleton')
INSERT INTO `races` VALUES (156,'Ratman')
INSERT INTO `races` VALUES (157,'Wyvern')
INSERT INTO `races` VALUES (158,'Wurm')
INSERT INTO `races` VALUES (159,'Devourer')
INSERT INTO `races` VALUES (160,'Iksar Golem')
INSERT INTO `races` VALUES (161,'Iksar Skeleton')
INSERT INTO `races` VALUES (162,'Man Eating Plant')
INSERT INTO `races` VALUES (163,'Raptor')
INSERT INTO `races` VALUES (164,'Sarnak Golem')
INSERT INTO `races` VALUES (165,'Water Dragon')
INSERT INTO `races` VALUES (166,'Iksar Hand')
INSERT INTO `races` VALUES (167,'Succulent')
INSERT INTO `races` VALUES (168,'Flying Monkey')
INSERT INTO `races` VALUES (169,'Brontotherium')
INSERT INTO `races` VALUES (170,'Snow Dervish')
INSERT INTO `races` VALUES (171,'Dire Wolf')
INSERT INTO `races` VALUES (172,'Manticore')
INSERT INTO `races` VALUES (173,'Totem')
INSERT INTO `races` VALUES (174,'Cold Spectre')
INSERT INTO `races` VALUES (175,'Enchanted Armor')
INSERT INTO `races` VALUES (176,'Snow Bunny')
INSERT INTO `races` VALUES (177,'Walrus')
INSERT INTO `races` VALUES (178,'Rock-gem Men')
INSERT INTO `races` VALUES (181,'Yak Man')
INSERT INTO `races` VALUES (182,'Faun')
INSERT INTO `races` VALUES (183,'Coldain')
INSERT INTO `races` VALUES (184,'Velious Dragons')
INSERT INTO `races` VALUES (185,'Hag')
INSERT INTO `races` VALUES (186,'Hippogriff')
INSERT INTO `races` VALUES (187,'Siren')
INSERT INTO `races` VALUES (188,'Frost Giant')
INSERT INTO `races` VALUES (189,'Storm Giant')
INSERT INTO `races` VALUES (190,'Ottermen')
INSERT INTO `races` VALUES (191,'Walrus Man')
INSERT INTO `races` VALUES (192,'Clockwork Dragon')
INSERT INTO `races` VALUES (193,'Abhorent')
INSERT INTO `races` VALUES (194,'Sea Turtle')
INSERT INTO `races` VALUES (195,'Black and White Dragons')
INSERT INTO `races` VALUES (196,'Ghost Dragon')
INSERT INTO `races` VALUES (197,'Ronnie Test')
INSERT INTO `races` VALUES (198,'Prismatic Dragon')
INSERT INTO `races` VALUES (199,'ShikNar')
There are more efficient ways to write these big data INSERTs, but this is eminently more editable for my likes...
Reply With Quote
  #11  
Old 01-02-2007, 06:25 AM
ArChron
Fire Beetle
 
Join Date: Dec 2006
Location: Vienna
Posts: 28
Default

And here's the third half...

Code:
INSERT INTO `races` VALUES (200,'Rockhopper');
INSERT INTO `races` VALUES (201,'Underbulk')
INSERT INTO `races` VALUES (202,'Grimling')
INSERT INTO `races` VALUES (203,'Vacuum Worm')
INSERT INTO `races` VALUES (204,'Evan Test')
INSERT INTO `races` VALUES (205,'Kahli Shah')
INSERT INTO `races` VALUES (206,'Owlbear')
INSERT INTO `races` VALUES (207,'Rhino Beetle,')
INSERT INTO `races` VALUES (208,'Vampyre')
INSERT INTO `races` VALUES (209,'Earth Elemental')
INSERT INTO `races` VALUES (210,'Air Elemental')
INSERT INTO `races` VALUES (211,'Water Elemental')
INSERT INTO `races` VALUES (212,'Fire Elemental')
INSERT INTO `races` VALUES (213,'Wetfang Minnow')
INSERT INTO `races` VALUES (214,'Thought Horror')
INSERT INTO `races` VALUES (215,'Tegi')
INSERT INTO `races` VALUES (216,'Horse')
INSERT INTO `races` VALUES (217,'Shissar')
INSERT INTO `races` VALUES (218,'Fungal Fiend')
INSERT INTO `races` VALUES (219,'Vampire Volatalis')
INSERT INTO `races` VALUES (220,'StoneGrabber')
INSERT INTO `races` VALUES (221,'Scarlet Cheetah')
INSERT INTO `races` VALUES (222,'Zelniak')
INSERT INTO `races` VALUES (223,'Lightcrawler')
INSERT INTO `races` VALUES (224,'Shade')
INSERT INTO `races` VALUES (225,'Sunflower')
INSERT INTO `races` VALUES (226,'Sun Revenant')
INSERT INTO `races` VALUES (227,'Shrieker')
INSERT INTO `races` VALUES (228,'Galorian')
INSERT INTO `races` VALUES (229,'Netherbian')
INSERT INTO `races` VALUES (230,'Akheva')
INSERT INTO `races` VALUES (231,'Spire Spirit')
INSERT INTO `races` VALUES (232,'Sonic Wolf')
INSERT INTO `races` VALUES (233,'Ground Shaker')
INSERT INTO `races` VALUES (234,'Vah Shir Skeleton')
INSERT INTO `races` VALUES (235,'Mutant Humanoid')
INSERT INTO `races` VALUES (236,'Seru')
INSERT INTO `races` VALUES (237,'Recuso')
INSERT INTO `races` VALUES (238,'Vah Shir King')
INSERT INTO `races` VALUES (239,'Vah Shir Guard')
INSERT INTO `races` VALUES (240,'Teleport Man')
INSERT INTO `races` VALUES (241,'Lujein')
INSERT INTO `races` VALUES (242,'Naiad')
INSERT INTO `races` VALUES (243,'Nymph')
INSERT INTO `races` VALUES (244,'Ent')
INSERT INTO `races` VALUES (245,'Wrinnfly')
INSERT INTO `races` VALUES (246,'Tarew Marr')
INSERT INTO `races` VALUES (247,'Solusek Ro')
INSERT INTO `races` VALUES (248,'Clockwork Golem')
INSERT INTO `races` VALUES (249,'Clockwork Brain')
INSERT INTO `races` VALUES (250,'Spectral Banshee');
INSERT INTO `races` VALUES (251,'Guard of Justice')
INSERT INTO `races` VALUES (252,'PoM Castle')
INSERT INTO `races` VALUES (253,'Disease Boss')
INSERT INTO `races` VALUES (254,'Solusek Ro Guard')
INSERT INTO `races` VALUES (255,'Bertoxxulous')
INSERT INTO `races` VALUES (256,'New Tribunal')
INSERT INTO `races` VALUES (257,'Terris Thule')
INSERT INTO `races` VALUES (258,'Vegerog')
INSERT INTO `races` VALUES (259,'Crocodile')
INSERT INTO `races` VALUES (260,'Bat')
INSERT INTO `races` VALUES (261,'Slarghilug')
INSERT INTO `races` VALUES (262,'Tranquilion')
INSERT INTO `races` VALUES (263,'Tin Soldier')
INSERT INTO `races` VALUES (264,'Nightmare Wraith')
INSERT INTO `races` VALUES (265,'Malarian')
INSERT INTO `races` VALUES (266,'Knight of Pestilence')
INSERT INTO `races` VALUES (267,'Lepertoloth')
INSERT INTO `races` VALUES (268,'Bubonian Boss')
INSERT INTO `races` VALUES (269,'Bubonian Underling')
INSERT INTO `races` VALUES (270,'Pusling')
INSERT INTO `races` VALUES (271,'Water Mephit')
INSERT INTO `races` VALUES (272,'Stormrider')
INSERT INTO `races` VALUES (273,'Junk Beast')
INSERT INTO `races` VALUES (274,'Broken Clockwork')
INSERT INTO `races` VALUES (275,'Giant Clockwork')
INSERT INTO `races` VALUES (276,'Clockwork Beetle')
INSERT INTO `races` VALUES (277,'Nightmare Goblin')
INSERT INTO `races` VALUES (278,'Karana')
INSERT INTO `races` VALUES (279,'Blood Raven')
INSERT INTO `races` VALUES (280,'Nightmare Gargoyle')
INSERT INTO `races` VALUES (281,'Mouths of Insanity')
INSERT INTO `races` VALUES (282,'Skeletal Horse')
INSERT INTO `races` VALUES (283,'Saryn')
INSERT INTO `races` VALUES (284,'Fennin Ro')
INSERT INTO `races` VALUES (285,'Tormentor')
INSERT INTO `races` VALUES (286,'Necromancer Priest')
INSERT INTO `races` VALUES (287,'Nightmare')
INSERT INTO `races` VALUES (288,'New Rallos Zek')
INSERT INTO `races` VALUES (289,'Tallon Zek')
INSERT INTO `races` VALUES (290,'Vallon Zek')
INSERT INTO `races` VALUES (291,'Air Mephit')
INSERT INTO `races` VALUES (292,'Earth Mephit')
INSERT INTO `races` VALUES (293,'Fire Mephit')
INSERT INTO `races` VALUES (294,'Nightmare Mephit')
INSERT INTO `races` VALUES (295,'Zebuxoruk')
INSERT INTO `races` VALUES (296,'Mithaniel Marr')
INSERT INTO `races` VALUES (297,'Knightmare Rider')
INSERT INTO `races` VALUES (298,'The Rathe')
INSERT INTO `races` VALUES (299,'Xegony')
INSERT INTO `races` VALUES (300,'Balrog');
INSERT INTO `races` VALUES (301,'Unknown')
INSERT INTO `races` VALUES (302,'Lobster Monster')
INSERT INTO `races` VALUES (303,'Pheonix')
INSERT INTO `races` VALUES (304,'Tiamat')
INSERT INTO `races` VALUES (305,'Bear (new)')
INSERT INTO `races` VALUES (306,'Earth Golem')
INSERT INTO `races` VALUES (307,'Iron Golem')
INSERT INTO `races` VALUES (308,'Storm Golem')
INSERT INTO `races` VALUES (309,'Air Golem')
INSERT INTO `races` VALUES (310,'Wood Golem')
INSERT INTO `races` VALUES (311,'Fire Golem')
INSERT INTO `races` VALUES (312,'Water Golem')
INSERT INTO `races` VALUES (313,'Veiled Gargoyle')
INSERT INTO `races` VALUES (314,'Lynx')
INSERT INTO `races` VALUES (315,'Squid')
INSERT INTO `races` VALUES (316,'Frog')
INSERT INTO `races` VALUES (317,'Flying Serpent')
INSERT INTO `races` VALUES (318,'Tactics Soldier')
INSERT INTO `races` VALUES (319,'Armored Boar')
INSERT INTO `races` VALUES (320,'Djinni')
INSERT INTO `races` VALUES (321,'Boar')
INSERT INTO `races` VALUES (322,'Knight of Marr')
INSERT INTO `races` VALUES (323,'Black Armor')
INSERT INTO `races` VALUES (324,'Knightmare Knight')
INSERT INTO `races` VALUES (325,'Rallos Ogre')
INSERT INTO `races` VALUES (326,'Arachnid')
INSERT INTO `races` VALUES (327,'Crystal Arachnid')
INSERT INTO `races` VALUES (328,'Tower Model')
INSERT INTO `races` VALUES (330,'Froglok(LoY)')
INSERT INTO `races` VALUES (335,'Troll Pirate')
INSERT INTO `races` VALUES (336,'Troll Shaman?')
INSERT INTO `races` VALUES (337,'Troll Pirate #2')
INSERT INTO `races` VALUES (345,'Luggald')
INSERT INTO `races` VALUES (346,'Armored Luggald')
INSERT INTO `races` VALUES (347,'Robed Luggald')
INSERT INTO `races` VALUES (348,'Drogmor')
INSERT INTO `races` VALUES (349,'Froglok Skeleton')
INSERT INTO `races` VALUES (350,'Froglok Zombie')
INSERT INTO `races` VALUES (353,'Unarmored DnD-Style Kobold?')
INSERT INTO `races` VALUES (354,'Lightly Armored DnD-Style Kobold?')
INSERT INTO `races` VALUES (355,'Heavily Armored DnD-Style Kobold?')
INSERT INTO `races` VALUES (356,'Scaled Wolf (Neutral Gender)')
INSERT INTO `races` VALUES (357,'Undead Drogmor')
INSERT INTO `races` VALUES (365,'Valdoon Kel`Novar')
INSERT INTO `races` VALUES (367,'New Skeleton Model')
INSERT INTO `races` VALUES (372,'Evil Whirlwind')
INSERT INTO `races` VALUES (378,'Treasure Chest')
INSERT INTO `races` VALUES (379,'Clay Vase')
INSERT INTO `races` VALUES (381,'Weapons Rack')
INSERT INTO `races` VALUES (382,'Coffin')
INSERT INTO `races` VALUES (383,'Skull Mounted on Bone Triangle');
INSERT INTO `races` VALUES (384,'Jester')
INSERT INTO `races` VALUES (387,'Construct')
INSERT INTO `races` VALUES (388,'Hynid')
INSERT INTO `races` VALUES (389,'Turepta')
INSERT INTO `races` VALUES (390,'Cragbeast')
INSERT INTO `races` VALUES (391,'Mite')
INSERT INTO `races` VALUES (392,'Ukun')
INSERT INTO `races` VALUES (393,'Ixt')
INSERT INTO `races` VALUES (394,'Ikaav')
INSERT INTO `races` VALUES (395,'Aneuk')
INSERT INTO `races` VALUES (396,'Kyv')
INSERT INTO `races` VALUES (397,'Noc')
INSERT INTO `races` VALUES (398,'Ra`Tuk')
INSERT INTO `races` VALUES (399,'Tunat muram cuu`Vauax')
Reply With Quote
  #12  
Old 01-02-2007, 06:26 AM
ArChron
Fire Beetle
 
Join Date: Dec 2006
Location: Vienna
Posts: 28
Default

And the fourth half... I guess that makes two whole posts...

What was that someone said about a forum being the wrong place to store code stuff?


Code:
INSERT INTO `races` VALUES (400,'Huvul')
INSERT INTO `races` VALUES (402,'Mastruq')
INSERT INTO `races` VALUES (403,'Male Trusik--Lacks Shawl')
INSERT INTO `races` VALUES (404,'Ship')
INSERT INTO `races` VALUES (405,'OoW golem type')
INSERT INTO `races` VALUES (406,'Overlord Mata Muram')
INSERT INTO `races` VALUES (407,'Lighting warrior models')
INSERT INTO `races` VALUES (408,'Pirylien fire mob (RSS)')
INSERT INTO `races` VALUES (410,'Feran')
INSERT INTO `races` VALUES (411,'Pirylien fire mob (RSS)')
INSERT INTO `races` VALUES (412,'Chimera')
INSERT INTO `races` VALUES (413,'Dragorn')
INSERT INTO `races` VALUES (414,'Murkglider')
INSERT INTO `races` VALUES (415,'New Rat Model')
INSERT INTO `races` VALUES (416,'New Bat Model')
INSERT INTO `races` VALUES (417,'Frost Pyrilien')
INSERT INTO `races` VALUES (418,'Discordling')
INSERT INTO `races` VALUES (419,'Girplan')
INSERT INTO `races` VALUES (420,'Hanvar / arch magus model')
INSERT INTO `races` VALUES (425,'Crystal Model')
INSERT INTO `races` VALUES (427,'Large Purse Model')
INSERT INTO `races` VALUES (430,'New Dracolich')
INSERT INTO `races` VALUES (431,'Green halo with green smoke')
INSERT INTO `races` VALUES (432,'DoN regular drake')
INSERT INTO `races` VALUES (433,'Goblin (DoN model)')
INSERT INTO `races` VALUES (434,'Dragon-Horse...thing.')
INSERT INTO `races` VALUES (435,'Lava Dragon')
INSERT INTO `races` VALUES (436,'Basilisk (new model)')
INSERT INTO `races` VALUES (437,'East-Asian Gold Dragon (Snake-like)')
INSERT INTO `races` VALUES (438,'Storm(?) Dragon Model')
INSERT INTO `races` VALUES (439,'Puma')
INSERT INTO `races` VALUES (440,'Normal Spider (new model, tutorial, don)')
INSERT INTO `races` VALUES (441,'Large-abdomen Normal Spider')
INSERT INTO `races` VALUES (442,'Guardian of the Sands')
INSERT INTO `races` VALUES (445,'Dragon Egg (from Vishimtar event, etc..)')
INSERT INTO `races` VALUES (446,'East-Asian Crystal Dragon (Statue?)')
INSERT INTO `races` VALUES (447,'Smoldering bluish-purple ball (look into this)');
INSERT INTO `races` VALUES (448,'Statue, sparkly hands; similar to 442, no anims.')
INSERT INTO `races` VALUES (449,'Pile of (Spider?) Eggs')
INSERT INTO `races` VALUES (450,'Lava Spider')
INSERT INTO `races` VALUES (451,'Large-abdomen Lava Spider')
INSERT INTO `races` VALUES (452,'Shadow(?) Dragon')
INSERT INTO `races` VALUES (453,'Burly Ancient-Rome-Looking Warrior')
INSERT INTO `races` VALUES (454,'werewolf (new model)')
INSERT INTO `races` VALUES (455,'kobold (new model)')
INSERT INTO `races` VALUES (456,'Sporali')
INSERT INTO `races` VALUES (457,'Gnomework')
INSERT INTO `races` VALUES (458,'New Orc')
INSERT INTO `races` VALUES (459,'Corathus')
INSERT INTO `races` VALUES (460,'Coral(?) Model')
INSERT INTO `races` VALUES (462,'a cocoon')
INSERT INTO `races` VALUES (464,'gargoyle (new type)')
INSERT INTO `races` VALUES (465,'witheran')
INSERT INTO `races` VALUES (467,'Shilskin')
INSERT INTO `races` VALUES (469,'new evil eye model (same as OoW one)')
INSERT INTO `races` VALUES (470,'Hanvar looking mob (without axe)')
INSERT INTO `races` VALUES (472,'mech boar mount model')
INSERT INTO `races` VALUES (473,'fairy (new model)')
INSERT INTO `races` VALUES (433,'Goblin, new')
INSERT INTO `races` VALUES (436,'Basilisk')
INSERT INTO `races` VALUES (454,'Werewolf')
INSERT INTO `races` VALUES (455,'Kobold')
INSERT INTO `races` VALUES (456,'Sporali')
INSERT INTO `races` VALUES (458,'Orc')
INSERT INTO `races` VALUES (464,'Gargoyle')
INSERT INTO `races` VALUES (469,'Evil eye (with teeths and tentacles)')
INSERT INTO `races` VALUES (470,'Hanvar without axe')
INSERT INTO `races` VALUES (472,'Mecha boar')
INSERT INTO `races` VALUES (473,'Unknown');
Reply With Quote
  #13  
Old 01-02-2007, 07:29 AM
Angelox
AX Classic Developer
 
Join Date: May 2006
Location: filler
Posts: 2,049
Default

Very nice , and needed!
Although you got much more than I ever found, I attached my "data.php" which I've been building on , I already added a bunch of yours, but it also has corrections and a few more "unknowns" added;
http://www.nahunta.org/~angelox/files/data.php.txt
Reply With Quote
  #14  
Old 01-03-2007, 06:17 AM
Aerewen
Hill Giant
 
Join Date: Dec 2006
Posts: 110
Default

Part of the problem with the lack of a public database is the fact that we don't have a common numbering system for anyone to modify from...

think about it... someone gives you a SQL file that adds say 200 doors to your database that populate pok, abyssmal sea, and say uh shadowhaven as an example... those doors will auto increment their id field so the doors that might be numbered 200-400 on your database might be 500-700 on someone else's

now yeah i know doors dont really matter because the id means nothing really, but think about the npc_types table, the spawngroups spawn2 spawnentry etc etc

we have no default numbering system for those ID's that *DO* matter...

a while back the concept of zonenumber * 1000 was applies to the npc_types table... but it's not consistent. some older zones still have npc's with numbers out of that scope. and the other problem is that we cant do a mass modify script using names extracted from spawn lists because there are a ton of different rat, bat, orc, goblin, giant, etc etc mobs in different zones and i can only hope that they all have different npc_type values in the existing database or we're a lot worse off than i thought we were lol

If we were to take the time to mod the database to a default numbering scheme... then we could start adding to a larger database because we would know that every door, spawngroup, spawn entry, etc etc in the plane of knowledge has an id value between x and y which means that if I make a perfect copy of the live servers' POK i can make 2 SQL files to distribute it.

one does DELETE FROM `blah` WHERE `id` >= 202000 AND `id` < 203000 etc etc

and the other adds my new stuff

reboot and tadaa. but the way it is now... i had to create a new table which was a copy of the npc_types table, then delete 3 rows from it to fit the insert query for the newest pok i found to start working from. then after the inster was done, add those rows back in to make it work with the latest db version, export it all to sql, delete all the npc types entries for pok, delete all the spawn groups etc etc etc, then reinsert my sql file into npc types with all the new values for the merchantlists etc.

difference? took me about 3 hours to source it in, VS about 5 minutes if we had a global setup for the database that everyone used.

im a php/mysql programmer so im actually working on a php system that will go through and revamp my entire database using a numbering scheme of 1000*zoneid on auto increment.

so far the past couple attempts have screwed up loot, merchants, pets, spells etc... so it's still a work in progress, but once i have it finished i will release the new database, not the utility.

if i put out the utility then everyone who has their own custom database work will just use it to mod their db and continue to mooch our releases without any contributions of their own. but by releasing the database only we force them to conform if they want to use our db updates :p
Reply With Quote
  #15  
Old 01-03-2007, 07:03 AM
CrabClaw's Avatar
CrabClaw
Hill Giant
 
Join Date: Jun 2006
Location: Plane of Knowledge
Posts: 191
Default

The above example reminds me of what they did when Total Annihilation (a little RTS game with robots) modding was popular. The database was open ended on IDs but to avoid overwriting each other's work they agreed upon ranges of data IDs for each mod out there. So the basic live-like data went from 1 to X and then in blocks of 1000's people reserved space for custom content.

But, over my years watching and trying to contribute what I can to this project, I can say it's like having a overloaded garage full of content with no one really wanting to dig and clean it. But yes there is redundancy in the npc_types database there are 14 same level Snow Dervishes, and 17 'a stonegazer cockatrice''s, when there should only be two stonegazer cockatrices (a level 33-35-ish for the OT, and a level 37-40-ish for the DL and TT).

It is doable bite by byte though.

*looks at his garage*

*hides*
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 02:06 PM.


 

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