Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Feature Requests

Development::Feature Requests Post suggestions/feature requests here.

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #4  
Old 11-28-2008, 05:23 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Here is what I have so far for SQL for a table. Haven't made a table myself yet, so lemme know if something looks wrong. I also included 1 example line for a fast white horse. Once this code is done, I will try to go through and create a full table for it to match what the current source code already does for all mounts.
Code:
DROP TABLE IF EXISTS `horses`;
CREATE TABLE `horses` (
  `id` int(11) NOT NULL auto_increment,
  `filename` varchar(32) NOT NULL,
  `race` smallint(3) NOT NULL default '216',
  `gender` tinyint(1) NOT NULL default '0',
  `texture` tinyint(2) NOT NULL default '0',
  `mountspeed` float(4,2) NOT NULL default '1.00',
  `gnome_size` smallint(5) NOT NULL default '0',
  `halfling_size` smallint(5) NOT NULL default '0',
  `dwarf_size` smallint(5) NOT NULL default '0',
  `froglok_size` smallint(5) NOT NULL default '0',
  `halfelf_size` smallint(5) NOT NULL default '0',
  `darkelf_size` smallint(5) NOT NULL default '0',
  `woodelf_size` smallint(5) NOT NULL default '0',
  `highelf_size` smallint(5) NOT NULL default '0',
  `erudite_size` smallint(5) NOT NULL default '0',
  `human_size` smallint(5) NOT NULL default '0',
  `iksar_size` smallint(5) NOT NULL default '0',
  `vahshir_size` smallint(5) NOT NULL default '0',
  `barbarian_size` smallint(5) NOT NULL default '0',
  `ogre_size` smallint(5) NOT NULL default '0',
  `troll_size` smallint(5) NOT NULL default '0',
  `notes` varchar(64) default 'Notes',
  PRIMARY KEY  (`id`,`filename`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `horses` VALUES ('1', 'SumHorseWhFast', '216', '0', '1', '175', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '2871 - Summon Horse');
Instead of using floats for all char sizes to allow decimals, I just set them to 5 and we can divide by 100 in the code. So, gnomesize 225 would make a horse that is 2.25 in size.

I also just made a struct for this, but am not exactly sure if this is completely right or not yet.

zonedb.h
Code:
struct Horses_Struct {
	int id[11];
	char filename[32];
	int16 race[3];
	int8 gender[1];
	int8 texture[2];
	float mountspeed[4];
	int16 gnome_size[5];
	int16 halfling_size[5];
	int16 dwarf_size[5];
	int16 froglok_size[5];
	int16 halfelf_size[5];
	int16 darkelf_size[5];
	int16 woodelf_size[5];
	int16 highelf_size[5];
	int16 erudite_size[5];
	int16 human_size[5];
	int16 iksar_size[5];
	int16 vahshir_size[5];
	int16 barbarian_size[5];
	int16 ogre_size[5];
	int16 troll_size[5];
};
And, if I understand correctly, all that is left to do is to change the following to pull from the info from the new table:

horse.cpp
Code:
const NPCType *Horse::BuildHorseType(int16 spell_id) {


	// Spell: 2862 Tan Rope
	// Spell: 2863 Tan Leather
	// Spell: 2864 Tan Silken
	// Spell: 2865 Brown Chain
	// Spell: 2866 Tan Ornate Chain
	// Spell: 2867 White Rope
	// Spell: 2868 White Leather
	// Spell: 2869 White Silken
	// Spell: 2870 White Chain
	// Spell: 2871 White Ornate Chain
	// Spell: 2872 Black Rope
	// Spell: 2919 Tan Rope
	// Spell: 2918 Guide
	// Spell: 2917 Black Chain,		
	
	char mount_color=0;
	
	NPCType* npc_type = new NPCType;
	memset(npc_type, 0, sizeof(NPCType));
	strcpy(npc_type->name,"Unclaimed_Mount");	//this should never get used
      strcpy(npc_type->npc_attacks,"ABH");
	npc_type->cur_hp = 1; 
	npc_type->max_hp = 1; 
	npc_type->race = 216;
	npc_type->gender = (spell_id >= 3813 && spell_id <= 3832) ? 1 : 0; // Drogmor's are female horses. Yuck.
	npc_type->class_ = 1; 
	npc_type->deity= 1;
	npc_type->level = 1;
	npc_type->npc_id = 0;
	npc_type->loottable_id = 0;

	switch(spell_id) {
		case 2862:
			mount_color=0;  // Brown horse
			npc_type->runspeed=MOUNT_SLOW1_RUN;
			break;
		case 2863:
			mount_color=0;  // Brown horse
			npc_type->runspeed=MOUNT_SLOW2_RUN;
			break;
		case 2864:
			mount_color=0;  // Brown horse
			npc_type->runspeed=MOUNT_RUN1_RUN;
			break;
		case 2865:
			mount_color=0;  // Brown horse
			npc_type->runspeed=MOUNT_RUN2_RUN;
			break;
		case 2866:
			mount_color=0;  // Brown horse
			npc_type->runspeed=MOUNT_FAST_RUN;
			break;
		case 2867:
			mount_color=1;  // White horse
			npc_type->runspeed=MOUNT_SLOW1_RUN;
			break;
		case 2868:
			mount_color=1;  // White horse
			npc_type->runspeed=MOUNT_SLOW2_RUN;
			break;
		case 2869:
			mount_color=1;  // White horse
			npc_type->runspeed=MOUNT_RUN1_RUN;
			break;
		case 2870:
			mount_color=1;  // White horse
			npc_type->runspeed=MOUNT_RUN2_RUN;
			break;
		case 2871:
			mount_color=1;  // White horse
			npc_type->runspeed=MOUNT_FAST_RUN;
			break;
		case 2872:
			mount_color=2;  // Black horse
			npc_type->runspeed=MOUNT_SLOW1_RUN;
			break;
		case 2873:
			mount_color=2;  // Black horse
			npc_type->runspeed=MOUNT_SLOW2_RUN;
			break;
		case 2916:
			mount_color=2;  // Black horse
			npc_type->runspeed=MOUNT_RUN1_RUN;
			break;
		case 2917:
			mount_color=2;  // Black horse
			npc_type->runspeed=MOUNT_RUN2_RUN;
			break;
		case 2918:
			mount_color=2;  // Black horse
			npc_type->runspeed=MOUNT_FAST_RUN;
			break;
		case 2919:
			mount_color=3;  // Tan horse
			npc_type->runspeed=MOUNT_SLOW1_RUN;
			break;
		case 2920:
			mount_color=3;  // Tan horse
			npc_type->runspeed=MOUNT_SLOW2_RUN;
			break;
		case 2921:
			mount_color=3;  // Tan horse
			npc_type->runspeed=MOUNT_RUN1_RUN;
			break;
		case 2922:
			mount_color=3;  // Tan horse
			npc_type->runspeed=MOUNT_RUN2_RUN;
			break;
		case 2923:
			mount_color=3;  // Tan horse
			npc_type->runspeed=MOUNT_FAST_RUN;
			break;
		case 3813:
			mount_color=0;  // White drogmor
			npc_type->runspeed=MOUNT_SLOW1_RUN;
			break;
		case 3814:
			mount_color=0;  // White drogmor
			npc_type->runspeed=MOUNT_SLOW2_RUN;
			break;
		case 3815:
			mount_color=0;  // White drogmor
			npc_type->runspeed=MOUNT_RUN1_RUN;
			break;
		case 3816:
			mount_color=0;  // White drogmor
			npc_type->runspeed=MOUNT_RUN2_RUN;
			break;
		case 3817:
			mount_color=0;  // White drogmor
			npc_type->runspeed=MOUNT_FAST_RUN;
			break;
		case 3818:
			mount_color=1;  // Black drogmor
			npc_type->runspeed=MOUNT_SLOW1_RUN;
			break;
		case 3819:
			mount_color=1;  // Black drogmor
			npc_type->runspeed=MOUNT_SLOW2_RUN;
			break;
		case 3820:
			mount_color=1;  // Black drogmor
			npc_type->runspeed=MOUNT_RUN1_RUN;
			break;
		case 3821:
			mount_color=1;  // Black drogmor
			npc_type->runspeed=MOUNT_RUN2_RUN;
			break;
		case 3822:
			mount_color=1;  // Black drogmor
			npc_type->runspeed=MOUNT_FAST_RUN;
			break;
		case 3823:
			mount_color=2;  // Green drogmor
			npc_type->runspeed=MOUNT_SLOW1_RUN;
			break;
		case 3824:
			mount_color=2;  // Green drogmor
			npc_type->runspeed=MOUNT_SLOW2_RUN;
			break;
		case 3825:
			mount_color=2;  // Green drogmor
			npc_type->runspeed=MOUNT_RUN1_RUN;
			break;
		case 3826:
			mount_color=2;  // Green drogmor
			npc_type->runspeed=MOUNT_RUN2_RUN;
			break;
		case 3827:
			mount_color=2;  // Green drogmor
			npc_type->runspeed=MOUNT_FAST_RUN;
			break;
		case 3828:
			mount_color=3;  // Red drogmor
			npc_type->runspeed=MOUNT_SLOW1_RUN;
			break;
		case 3829:
			mount_color=3;  // Red drogmor
			npc_type->runspeed=MOUNT_SLOW2_RUN;
			break;
		case 3830:
			mount_color=3;  // Red drogmor
			npc_type->runspeed=MOUNT_RUN1_RUN;
			break;
		case 3831:
			mount_color=3;  // Red drogmor
			npc_type->runspeed=MOUNT_RUN2_RUN;
			break;
		case 3832:
			mount_color=3;  // Red drogmor
			npc_type->runspeed=MOUNT_FAST_RUN;
			break;
		case 2874:
			npc_type->runspeed=MOUNT_FAST_RUN;
			mount_color=1;
			break;
		case 2875:
			npc_type->runspeed=MOUNT_FAST_RUN;
			mount_color=2;
			break;			
		default:
/*			Message(13,"I dont know what mount spell this is! (%i)", spell_id);
			mount_color= 0;  // Brown horse
			npc_type->walkspeed=MOUNT_SLOW1_WALK;
			npc_type->runspeed=MOUNT_SLOW1_RUN;*/
			LogFile->write(EQEMuLog::Error, "Unknown mount spell id %d", spell_id);
			safe_delete(npc_type);
			return(NULL);
			break;
	}
	npc_type->texture = mount_color;

	npc_type->light = 0;
	npc_type->STR = 75;
	npc_type->STA = 75;
	npc_type->DEX = 75;
	npc_type->AGI = 75;
	npc_type->INT = 75;
	npc_type->WIS = 75;
	npc_type->CHA = 75;
	
	horses_auto_delete.Insert(npc_type);
	
	return(npc_type);
}
I am not quite sure what the best way is to pull info from the DB. I am also not yet sure on how to pull the filename from the spell to associate it with the matching filename field in the table when creating the horse.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 11-28-2008 at 02:36 PM..
Reply With Quote
 

Thread Tools
Display Modes

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:00 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 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3