Go Back   EQEmulator Home > EQEmulator Forums > Archives > Archive::Development > Archive::Development

Archive::Development Archive area for Development's posts that were moved here after an inactivity period of 90 days.

Reply
 
Thread Tools Display Modes
  #1  
Old 02-18-2004, 06:30 PM
vesuvias
Fire Beetle
 
Join Date: Feb 2004
Posts: 17
Default Fixed spellbar bug and luclin faces viewed by other clients

Ok round two. I made just two changes this time.

-Fixed luclin faces (face,beard,hair,etc) so that this information is now correctly being sent to
the other clients. Before even though (after my last change) you could set your face correctly, no one else in the world was getting the correct information sent to thier clients. These changes should fix that.

-Fixed the last remenents of the spell bug I believe (ran solid for four hours as a necro without a single bugged casting). Turns out this last bug was directly related to fizzles (I bet if fizzle was in red as opposed to dark blue we could have correlated this earlier ). Fizzling crashed the spellar everytime (test it now by setting your channeling to zero and cast a few times, bye bye spellbar) and since its based on channelling you really never fizzled at high levels (so it appeared intermitent). Was a simple fix once I found it.

Ok this is a big long list of diffs because fixing luclin faces required that I add a beard variable to mob.h and a few of its methods (and lots of classes call or overide those methods). I also included all of the changes I made from my previous list because these diffs are agianst the current cvs (which my last round of changes aren't a part of yet).

I know 0.5.5 is right around the corner and some of this might (likely) change when we see it. If I had access to that code base I would be making these changes agianst it. Irregardless, when 0.5.5 gets here I may have to go back and do some of this work agian.

Hope this helps if even a little... I know my son enjoys not having to log out every five minutes because his spellbar was bugged

Ves

you can get the changed files here

Diffs to follow *edited to include context and player_corpse.cpp*

spells.cpp
Code:
Index: spells.cpp
===================================================================
RCS file: /cvsroot/eqemu/eqemu/eqemu/Source/zone/spells.cpp,v
retrieving revision 1.1.1.13
diff -c -r1.1.1.13 spells.cpp
*** spells.cpp	7 Feb 2004 21:34:24 -0000	1.1.1.13
--- spells.cpp	19 Feb 2004 05:22:07 -0000
***************
*** 399,405 ****
  	if(slot <= 8 && !CheckFizzle(spell_id))
  	{
  		int fizzle_msg = IsBardSong(spell_id) ? MISS_NOTE : SPELL_FIZZLE;
! 		InterruptSpell(fizzle_msg, 0x121);
  
  		// fizzle 1/4 the mana away
  		if(IsClient())
--- 399,405 ----
  	if(slot <= 8 && !CheckFizzle(spell_id))
  	{
  		int fizzle_msg = IsBardSong(spell_id) ? MISS_NOTE : SPELL_FIZZLE;
! 		InterruptSpell(fizzle_msg, 0x121,spell_id);
  
  		// fizzle 1/4 the mana away
  		if(IsClient())
client.cpp
Code:
Index: client.cpp
===================================================================
RCS file: /cvsroot/eqemu/eqemu/eqemu/Source/zone/client.cpp,v
retrieving revision 1.1.1.12
diff -c -r1.1.1.12 client.cpp
*** client.cpp	6 Feb 2004 23:32:59 -0000	1.1.1.12
--- client.cpp	16 Feb 2004 18:41:44 -0000
***************
*** 116,125 ****
  	0,	// wis
  	0,	// cha
  	0xff,	// Luclin Hair Colour
! 	0xff,	// Luclin Beard
  	0xff,	// Luclin Eye1
  	0xff,	// Luclin Eye2
  	0xff,	// Luclin Hair Style
  	0xff,	// Luclin Face
  	0xff,	// AA Title
  	1, // fixedz
--- 116,126 ----
  	0,	// wis
  	0,	// cha
  	0xff,	// Luclin Hair Colour
! 	0xff,	// Luclin Beard Color
  	0xff,	// Luclin Eye1
  	0xff,	// Luclin Eye2
  	0xff,	// Luclin Hair Style
+ 	0xff,	// Luclin Beard
  	0xff,	// Luclin Face
  	0xff,	// AA Title
  	1, // fixedz
client_process.cpp
Code:
Index: client_process.cpp
===================================================================
RCS file: /cvsroot/eqemu/eqemu/eqemu/Source/zone/client_process.cpp,v
retrieving revision 1.1.1.12
diff -c -r1.1.1.12 client_process.cpp
*** client_process.cpp	7 Feb 2004 21:34:11 -0000	1.1.1.12
--- client_process.cpp	19 Feb 2004 23:56:37 -0000
***************
*** 1604,1631 ****
  					int8 minlevel = 0;
  					sint8 myerror=ZONE_ERROR_NOTREADY;
  					char target_zone[32] = {0};
  					if (zc->zoneID != 0 && dead)
  					{
! #ifdef GUILDWARS
! 					if(animation > 65 && admin<80 && CheckCheat()){
! 						if(cheater || cheatcount>0){
! 							Message(15,"Cheater log updated...yup your busted,its not nice to cheat.");
! 							char descript[50]={0};
! 							sprintf(descript,"%s: %i","Death zone cheat");
! 							database.logevents(this->AccountName(),this->AccountID(),admin,this->GetName(),"none","Death zone cheat",descript,15);
! 							if(cheater==false){
! 								worldserver.SendEmoteMessage(0,0,0,13,"<Cheater Locator> We have found a cheater.  %s (Acct: %s) was just caught hacking, please show them what we think of hackers...",this->GetName(),this->AccountName());
! 								cheater=true;
  							}
! 							cheatcount=0;
  						}
- 						else
- 							cheatcount++;
  					}
- #else
- 					break;
  #endif
! 					}
  					if (zc->zoneID == 0){
  						if(strlen(zonesummon_name)==0)//Player Died
  							strcpy(target_zone, zone->GetShortName());
--- 1604,1631 ----
  					int8 minlevel = 0;
  					sint8 myerror=ZONE_ERROR_NOTREADY;
  					char target_zone[32] = {0};
+ 					
+ #ifdef GUILDWARS
  					if (zc->zoneID != 0 && dead)
  					{
! 						if(animation > 65 && admin<80 && CheckCheat()){
! 							if(cheater || cheatcount>0){
! 								Message(15,"Cheater log updated...yup your busted,its not nice to cheat.");
! 								char descript[50]={0};
! 								sprintf(descript,"%s: %i","Death zone cheat");
! 								database.logevents(this->AccountName(),this->AccountID(),admin,this->GetName(),"none","Death zone cheat",descript,15);
! 								if(cheater==false){
! 									worldserver.SendEmoteMessage(0,0,0,13,"<Cheater Locator> We have found a cheater.  %s (Acct: %s) was just caught hacking, please show them what we think of hackers...",this->GetName(),this->AccountName());
! 									cheater=true;
! 								}
! 								cheatcount=0;
  							}
! 							else
! 								cheatcount++;
  						}
  					}
  #endif
! 
  					if (zc->zoneID == 0){
  						if(strlen(zonesummon_name)==0)//Player Died
  							strcpy(target_zone, zone->GetShortName());
***************
*** 1649,1658 ****
  					zonesummon_ignorerestrictions = 0;
  					
  					ZonePoint* zone_point = zone->GetClosestZonePoint(x_pos, y_pos, z_pos, zc->zoneID);
! 		
! 					tarx=zonesummon_x;
! 					tary=zonesummon_y;
! 					tarz=zonesummon_z;
  					
  					// -1, -1, -1 = code for zone safe point
  					if ((x_pos == -1 && y_pos == -1 && (z_pos == -1 || z_pos == -10)) ||
--- 1649,1656 ----
  					zonesummon_ignorerestrictions = 0;
  					
  					ZonePoint* zone_point = zone->GetClosestZonePoint(x_pos, y_pos, z_pos, zc->zoneID);
! 					//zone debugging
! 					ZonePoint* zp = zone_point;										
  					
  					// -1, -1, -1 = code for zone safe point
  					if ((x_pos == -1 && y_pos == -1 && (z_pos == -1 || z_pos == -10)) ||
***************
*** 1666,1676 ****
  						zonesummon_z = -2;
  					}
  					// -3 -3 -3 = bind point
! 					else if (zonesummon_x == -3 && zonesummon_y == -3 && (zonesummon_z == -3 || zonesummon_z == -30) && database.GetZoneName(m_pp.bind_zone_id)) {
! 						strcpy(target_zone, database.GetZoneName(m_pp.bind_zone_id));
! 						tarx = m_pp.bind_x;
! 						tary = m_pp.bind_y;
! 						tarz = m_pp.bind_z;
  						zonesummon_x = -2;
  						zonesummon_y = -2;
  						zonesummon_z = -2;
--- 1664,1678 ----
  						zonesummon_z = -2;
  					}
  					// -3 -3 -3 = bind point
! 					else if (zonesummon_x == -3 && zonesummon_y == -3 && (zonesummon_z == -3 || zonesummon_z == -30)) {						
! 						if (database.GetZoneName(m_pp.bind_zone_id)){
! 							//zoneing to bind point
! 							strcpy(target_zone, database.GetZoneName(m_pp.bind_zone_id));
! 							tarx = m_pp.bind_x;
! 							tary = m_pp.bind_y;
! 							tarz = m_pp.bind_z;
! 							
! 						} //else bind point isn't set and we will zone to the zone safe point
  						zonesummon_x = -2;
  						zonesummon_y = -2;
  						zonesummon_z = -2;
***************
*** 1690,1712 ****
  							tarz=GetZ();
  						else
  							tarz = zone_point->target_z;
! 						tarheading = zone_point->target_heading;
  					}
  					// if not -2 -2 -2, zone to these coords. -2, -2, -2 = not a zonesummon zonerequest
  					else if (!(zonesummon_x == -2 && zonesummon_y == -2 && (zonesummon_z == -2 || zonesummon_z == -20))) {
  						tarx = zonesummon_x;
  						tary = zonesummon_y;
  						tarz = zonesummon_z;
  						zonesummon_x = -2;
  						zonesummon_y = -2;
  						zonesummon_z = -2;
  					}
! 					else {
  						cout << "WARNING: No target coords for this zone in DB found" << endl;
  						cout << "Zoning to safe coords: " << target_zone << " (" << database.GetZoneID(target_zone) << ")" << ", x=" << tarx << ", y=" << tary << ", z=" << tarz << endl;
! 						tarx=-1;
! 						tary=-1;
! 						tarz=-1;
  						zonesummon_x = -2;
  						zonesummon_y = -2;
  						zonesummon_z = -2;
--- 1692,1716 ----
  							tarz=GetZ();
  						else
  							tarz = zone_point->target_z;
! 						tarheading = zone_point->target_heading;						
  					}
  					// if not -2 -2 -2, zone to these coords. -2, -2, -2 = not a zonesummon zonerequest
  					else if (!(zonesummon_x == -2 && zonesummon_y == -2 && (zonesummon_z == -2 || zonesummon_z == -20))) {
+ 						
  						tarx = zonesummon_x;
  						tary = zonesummon_y;
  						tarz = zonesummon_z;
+ 						
  						zonesummon_x = -2;
  						zonesummon_y = -2;
  						zonesummon_z = -2;
  					}
! 					else {						
  						cout << "WARNING: No target coords for this zone in DB found" << endl;
  						cout << "Zoning to safe coords: " << target_zone << " (" << database.GetZoneID(target_zone) << ")" << ", x=" << tarx << ", y=" << tary << ", z=" << tarz << endl;
! 						//tarx=-1;
! 						//tary=-1;
! 						//tarz=-1;
  						zonesummon_x = -2;
  						zonesummon_y = -2;
  						zonesummon_z = -2;
***************
*** 1716,1722 ****
  						myerror = ZONE_ERROR_NOEXPERIENCE;
  					
  					APPLAYER* outapp = NULL;
! 					if (target_zone[0] != 0 && admin >= minstatus && GetLevel() >= minlevel) {
  						LogFile->write(EQEMuLog::Status, "Zoning '%s' to: %s (%i) x=%f, y=%f, z=%f",
  							m_pp.name, target_zone, database.GetZoneID(target_zone),
  							tarx, tary, tarz);
--- 1720,1726 ----
  						myerror = ZONE_ERROR_NOEXPERIENCE;
  					
  					APPLAYER* outapp = NULL;
! 					if (target_zone[0] != 0 && admin >= minstatus && GetLevel() >= minlevel) {						
  						LogFile->write(EQEMuLog::Status, "Zoning '%s' to: %s (%i) x=%f, y=%f, z=%f",
  							m_pp.name, target_zone, database.GetZoneID(target_zone),
  							tarx, tary, tarz);
***************
*** 1734,1740 ****
  						
  						Save();
  						
! 						if (m_pp.zone_id == zone->GetZoneID()) {
  							// No need to ask worldserver if we're zoning to ourselves (most
  							// likely to a bind point), also fixes a bug since the default response was failure
  							APPLAYER* outapp = new APPLAYER(OP_ZoneChange,sizeof(ZoneChange_Struct));
--- 1738,1744 ----
  						
  						Save();
  						
! 						if (m_pp.zone_id == zone->GetZoneID()) {							
  							// No need to ask worldserver if we're zoning to ourselves (most
  							// likely to a bind point), also fixes a bug since the default response was failure
  							APPLAYER* outapp = new APPLAYER(OP_ZoneChange,sizeof(ZoneChange_Struct));
***************
*** 1747,1752 ****
--- 1751,1758 ----
  							zone->StartShutdownTimer(AUTHENTICATION_TIMEOUT * 1000);
  						}
  						else {
+ 							//zoneing to another zone so we need to the let the world server
+ 							//handle things with the client for a while
  							ServerPacket* pack = new ServerPacket(ServerOP_ZoneToZoneRequest, sizeof(ZoneToZone_Struct));
  							ZoneToZone_Struct* ztz = (ZoneToZone_Struct*) pack->pBuffer;
  							ztz->response = 0;
***************
*** 1760,1767 ****
  							safe_delete(pack);
  						}
  					}
! 					else {
! 						LogFile->write(EQEMuLog::Error, "Zone %i is not available", zc->zoneID);
  						
  						outapp = new APPLAYER(OP_ZoneChange, sizeof(ZoneChange_Struct));
  						ZoneChange_Struct *zc2 = (ZoneChange_Struct*)outapp->pBuffer;
--- 1766,1773 ----
  							safe_delete(pack);
  						}
  					}
! 					else {						
! 						LogFile->write(EQEMuLog::Error, "Zone %i is not available because target wasn't found or character insufficent level", zc->zoneID);
  						
  						outapp = new APPLAYER(OP_ZoneChange, sizeof(ZoneChange_Struct));
  						ZoneChange_Struct *zc2 = (ZoneChange_Struct*)outapp->pBuffer;
***************
*** 3558,3565 ****
  					m_pp.eyecolor2	= fc->eyecolor2;
  					m_pp.hairstyle	= fc->hairstyle;
  					m_pp.face		= fc->face;
! 					//m_pp.beard	= fc->?;
! 					//m_pp.?		= fc->woad;
  					
  					Save();
  					SimpleMessage_StringID(13,FACE_ACCEPTED);
--- 3564,3570 ----
  					m_pp.eyecolor2	= fc->eyecolor2;
  					m_pp.hairstyle	= fc->hairstyle;
  					m_pp.face		= fc->face;
! 					m_pp.beard		= fc->beard;					
  					
  					Save();
  					SimpleMessage_StringID(13,FACE_ACCEPTED);
***************
*** 4821,4826 ****
--- 4826,4832 ----
  	eyecolor2	= m_pp.eyecolor2;
  	hairstyle	= m_pp.hairstyle;
  	luclinface	= m_pp.face;
+ 	beard		= m_pp.beard;
  	m_pp.hunger_level = 6000;
  	m_pp.thirst_level = 6000;
  	//aa_title	= m_pp.aa_title;
mob.cpp
Code:
Index: mob.cpp
===================================================================
RCS file: /cvsroot/eqemu/eqemu/eqemu/Source/zone/mob.cpp,v
retrieving revision 1.1.1.10
diff -c -r1.1.1.10 mob.cpp
*** mob.cpp	7 Feb 2004 21:34:05 -0000	1.1.1.10
--- mob.cpp	19 Feb 2004 05:52:01 -0000
***************
*** 84,90 ****
  		 int8	in_eyecolor1, // the eyecolors always seem to be the same, maybe left and right eye?
  		 int8	in_eyecolor2,
  		 int8	in_hairstyle,
! 		 int8	in_luclinface, // and beard
  		 int8	in_aa_title,
  		 float	in_fixed_z,
  		 int16	in_d_meele_texture1,
--- 84,91 ----
  		 int8	in_eyecolor1, // the eyecolors always seem to be the same, maybe left and right eye?
  		 int8	in_eyecolor2,
  		 int8	in_hairstyle,
! 		 int8	in_beard, // and beard
! 		 int8	in_luclinface,
  		 int8	in_aa_title,
  		 float	in_fixed_z,
  		 int16	in_d_meele_texture1,
***************
*** 146,151 ****
--- 147,154 ----
  	eyecolor1	= in_eyecolor1;
  	eyecolor2	= in_eyecolor2;
  	hairstyle	= in_hairstyle;
+ 	beard		= in_beard;
+ 	luclinface	= in_luclinface;
  	if(in_aa_title>0)
  		aa_title	= in_aa_title;
  	else
***************
*** 533,539 ****
  }
  
  void Mob::FillSpawnStruct(NewSpawn_Struct* ns, Mob* ForWho) {
!     strcpy(ns->spawn.name, name);
  	if(IsClient())
  	strncpy(ns->spawn.last_name,lastname,32);
  	ns->spawn.heading	= heading;
--- 536,542 ----
  }
  
  void Mob::FillSpawnStruct(NewSpawn_Struct* ns, Mob* ForWho) {
! 	strcpy(ns->spawn.name, name);
  	if(IsClient())
  	strncpy(ns->spawn.last_name,lastname,32);
  	ns->spawn.heading	= heading;
***************
*** 552,585 ****
  	ns->spawn.level		= level;
  	ns->spawn.deity		= deity;
  	ns->spawn.animation	= 0;
! 	ns->spawn.light		= light;
  	ns->spawn.invis		= IsInvisible(ForWho);
  	ns->spawn.npc		= IsClient() ? 0 : 1;
  	ns->spawn.pet_owner_id	= ownerid;
! 	if(hairstyle>0)
  		ns->spawn.hairstyle		= hairstyle;
  	else
  		ns->spawn.hairstyle		=0xFF;
! 	if(haircolor>0)
  		ns->spawn.haircolor		= haircolor;
  	else
  		ns->spawn.haircolor		=0xFF;
! 	ns->spawn.beard		= 0xFF; // where is the beard?
! 	if(beardcolor>0)
  		ns->spawn.beardcolor	= beardcolor;
  	else
  		ns->spawn.beardcolor	=0xFF;
  
! 	if(eyecolor1>0)
  		ns->spawn.eyecolor1		= eyecolor1;
  	else
  		ns->spawn.eyecolor1		= 0xFF;
! 	if(eyecolor2>0)
  		ns->spawn.eyecolor2		= eyecolor2;
  	else
  		ns->spawn.eyecolor2		= 0xFF;
! 	ns->spawn.hairstyle		= hairstyle;
! 	ns->spawn.face			= 0;
  	if(helmtexture>0 && helmtexture<255){
  		ns->spawn.equipment[0]	= helmtexture;
  		ns->spawn.helm=helmtexture;
--- 555,597 ----
  	ns->spawn.level		= level;
  	ns->spawn.deity		= deity;
  	ns->spawn.animation	= 0;
! //	ns->spawn.light		= light; //not really sure where light is now in the struct
  	ns->spawn.invis		= IsInvisible(ForWho);
  	ns->spawn.npc		= IsClient() ? 0 : 1;
  	ns->spawn.pet_owner_id	= ownerid;
! 	if(hairstyle>0 || IsClient())//only clients can actually have a valid hairstyle
  		ns->spawn.hairstyle		= hairstyle;
  	else
  		ns->spawn.hairstyle		=0xFF;
! 	if(haircolor>0 || IsClient())
  		ns->spawn.haircolor		= haircolor;
  	else
  		ns->spawn.haircolor		=0xFF;
! 	if(beard>0 || IsClient())
! 		ns->spawn.beard		= beard;
! 	else
! 		ns->spawn.beard		=0xFF;
! 	if(beardcolor>0 || IsClient())
  		ns->spawn.beardcolor	= beardcolor;
  	else
  		ns->spawn.beardcolor	=0xFF;
  
! 	if(eyecolor1>0 || IsClient())
  		ns->spawn.eyecolor1		= eyecolor1;
  	else
  		ns->spawn.eyecolor1		= 0xFF;
! 	if(eyecolor2>0 || IsClient())
  		ns->spawn.eyecolor2		= eyecolor2;
  	else
  		ns->spawn.eyecolor2		= 0xFF;
! 	if (IsClient())
! 		ns->spawn.face = luclinface;
! 	else
! 		ns->spawn.face = 0;
! 	ns->spawn.unknown143[0] = 0xff;//this used to be labeled beard.. if its not FF it will turn
! 								   //mob invis
! 	
! 
  	if(helmtexture>0 && helmtexture<255){
  		ns->spawn.equipment[0]	= helmtexture;
  		ns->spawn.helm=helmtexture;
***************
*** 881,887 ****
  	//SendPosUpdate(1);
  }
  
! void Mob::SendIllusionPacket(int16 in_race, int8 in_gender, int16 in_texture, int16 in_helmtexture, int8 in_haircolor, int8 in_beardcolor, int8 in_eyecolor1, int8 in_eyecolor2, int8 in_hairstyle, int8 in_luclinface, int8 in_aa_title) {
  	if (in_race == 0) {
  		this->race = GetBaseRace();
  		if (in_gender == 0xFFFF)
--- 893,899 ----
  	//SendPosUpdate(1);
  }
  
! void Mob::SendIllusionPacket(int16 in_race, int8 in_gender, int16 in_texture, int16 in_helmtexture, int8 in_haircolor, int8 in_beardcolor, int8 in_eyecolor1, int8 in_eyecolor2, int8 in_hairstyle, int8 in_luclinface, int8 in_beard,int8 in_aa_title) {
  	if (in_race == 0) {
  		this->race = GetBaseRace();
  		if (in_gender == 0xFFFF)
***************
*** 940,945 ****
--- 952,958 ----
  		this->eyecolor2 = in_eyecolor2;
  		this->hairstyle = in_hairstyle;
  		this->luclinface = in_luclinface;
+ 		this->beard = in_beard;
  		this->aa_title = in_aa_title;
  	}
  	else {
***************
*** 947,954 ****
  		this->beardcolor = 0xFF;
  		this->eyecolor1 = 0xFF;
  		this->eyecolor2 = 0xFF;
! 		this->hairstyle = 0xFF;
  		this->luclinface = 0xFF;
  		this->aa_title = 0xFF;
  	}
  	APPLAYER* outapp = new APPLAYER(OP_Illusion, sizeof(Illusion_Struct));
--- 960,968 ----
  		this->beardcolor = 0xFF;
  		this->eyecolor1 = 0xFF;
  		this->eyecolor2 = 0xFF;
! 		this->hairstyle	= 0xFF;
  		this->luclinface = 0xFF;
+ 		this->beard	= 0xFF;
  		this->aa_title = 0xFF;
  	}
  	APPLAYER* outapp = new APPLAYER(OP_Illusion, sizeof(Illusion_Struct));
mob.h
Code:
Index: mob.h
===================================================================
RCS file: /cvsroot/eqemu/eqemu/eqemu/Source/zone/mob.h,v
retrieving revision 1.1.1.7
diff -c -r1.1.1.7 mob.h
*** mob.h	7 Feb 2004 21:33:53 -0000	1.1.1.7
--- mob.h	19 Feb 2004 05:37:36 -0000
***************
*** 214,221 ****
  		int8	in_eyecolor1, // the eyecolors always seem to be the same, maybe left and right eye?
  		int8	in_eyecolor2,
  		int8	in_hairstyle,
! 		int8	in_title, //Face Overlay? (barbarian only)
! 		int8	in_luclinface, // and beard);
  		float	in_fixedZ,
  		int16	in_d_meele_texture1,
  		int16	in_d_meele_texture2,
--- 214,222 ----
  		int8	in_eyecolor1, // the eyecolors always seem to be the same, maybe left and right eye?
  		int8	in_eyecolor2,
  		int8	in_hairstyle,
! 		int8	in_beard,
! 		int8	in_luclinface,
! 		int8	in_aa_title,
  		float	in_fixedZ,
  		int16	in_d_meele_texture1,
  		int16	in_d_meele_texture2,
***************
*** 441,447 ****
  	inline bool	IsCasting() { return (bool) (casting_spell_id != 0); }
  	int16	CastingSpellID() { return casting_spell_id; }
  	
! 	void	SendIllusionPacket(int16 in_race, int8 in_gender = 0xFF, int16 in_texture = 0xFFFF, int16 in_helmtexture = 0xFFFF, int8 in_haircolor = 0xFF, int8 in_beardcolor = 0xFF, int8 in_eyecolor1 = 0xFF, int8 in_eyecolor2 = 0xFF, int8 in_hairstyle = 0xFF, int8 in_luclinface = 0xFF, int8 in_title = 0xFF);
  	void	SendAppearancePacket(int32 type, int32 value, bool WholeZone = true, bool iIgnoreSelf = false);
  	void	SetAppearance(int8 app, bool iIgnoreSelf = true);
  	inline const int8&	GetAppearance()				{ return appearance; }
--- 442,448 ----
  	inline bool	IsCasting() { return (bool) (casting_spell_id != 0); }
  	int16	CastingSpellID() { return casting_spell_id; }
  	
! 	void	SendIllusionPacket(int16 in_race, int8 in_gender = 0xFF, int16 in_texture = 0xFFFF, int16 in_helmtexture = 0xFFFF, int8 in_haircolor = 0xFF, int8 in_beardcolor = 0xFF, int8 in_eyecolor1 = 0xFF, int8 in_eyecolor2 = 0xFF, int8 in_hairstyle = 0xFF, int8 in_luclinface = 0xFF, int8 in_beard = 0xFF, int8 in_aa_title = 0xFF);
  	void	SendAppearancePacket(int32 type, int32 value, bool WholeZone = true, bool iIgnoreSelf = false);
  	void	SetAppearance(int8 app, bool iIgnoreSelf = true);
  	inline const int8&	GetAppearance()				{ return appearance; }
***************
*** 717,722 ****
--- 718,724 ----
  	int8	eyecolor2;
  	int8	hairstyle;
  	int8	luclinface; // and beard
+ 	int8	beard;
  	int8	aa_title;
  	
  	int16	rune;
npc.cpp
Code:
Index: npc.cpp
===================================================================
RCS file: /cvsroot/eqemu/eqemu/eqemu/Source/zone/npc.cpp,v
retrieving revision 1.1.1.7
diff -c -r1.1.1.7 npc.cpp
*** npc.cpp	6 Feb 2004 23:32:55 -0000	1.1.1.7
--- npc.cpp	16 Feb 2004 18:41:45 -0000
***************
*** 93,98 ****
--- 93,99 ----
  	  d->eyecolor1,
  	  d->eyecolor2,
  	  d->hairstyle,
+ 	  d->beard,
  	  d->luclinface,
  	  d->aa_title,
  	  d->fixedZ,
PlayerCorpse.cpp
Code:
Index: PlayerCorpse.cpp
===================================================================
RCS file: /cvsroot/eqemu/eqemu/eqemu/Source/zone/PlayerCorpse.cpp,v
retrieving revision 1.1.1.7
diff -c -r1.1.1.7 PlayerCorpse.cpp
*** PlayerCorpse.cpp	6 Feb 2004 23:33:06 -0000	1.1.1.7
--- PlayerCorpse.cpp	16 Feb 2004 18:42:08 -0000
***************
*** 99,105 ****
  // Mongrel: added see_invis and see_invis_undead
  Corpse::Corpse(NPC* in_npc, ItemList** in_itemlist, int32 in_npctypeid, NPCType** in_npctypedata, int32 in_decaytime)
   : Mob("Unnamed_Corpse","",0,0,in_npc->GetGender(),in_npc->GetRace(),in_npc->GetClass(),0//bodytype added
!        ,in_npc->GetDeity(),in_npc->GetLevel(),in_npc->GetNPCTypeID(),0,in_npc->GetSize(),0,0,in_npc->GetHeading(),in_npc->GetX(),in_npc->GetY(),in_npc->GetZ(),0,0,in_npc->GetTexture(),in_npc->GetHelmTexture(),0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,0,0,0,0,0)
  {
  	pIsChanged = false;
  	p_PlayerCorpse = false;
--- 99,105 ----
  // Mongrel: added see_invis and see_invis_undead
  Corpse::Corpse(NPC* in_npc, ItemList** in_itemlist, int32 in_npctypeid, NPCType** in_npctypedata, int32 in_decaytime)
   : Mob("Unnamed_Corpse","",0,0,in_npc->GetGender(),in_npc->GetRace(),in_npc->GetClass(),0//bodytype added
!        ,in_npc->GetDeity(),in_npc->GetLevel(),in_npc->GetNPCTypeID(),0,in_npc->GetSize(),0,0,in_npc->GetHeading(),in_npc->GetX(),in_npc->GetY(),in_npc->GetZ(),0,0,in_npc->GetTexture(),in_npc->GetHelmTexture(),0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,0,0,0,0,0)
  {
  	pIsChanged = false;
  	p_PlayerCorpse = false;
***************
*** 148,154 ****
  // Mongrel: added see_invis and see_invis_undead
  Corpse::Corpse(Client* client, PlayerProfile_Struct* pp, sint32 in_rezexp, int8 iCorpseLevel)
   : Mob("Unnamed_Corpse","",0,0,client->GetGender(),client->GetRace(),client->GetClass(), 0, // bodytype added
!         client->GetDeity(),client->GetLevel(),0,0, client->GetSize(), 0, 0,client->GetHeading(),client->GetX(),client->GetY(),client->GetZ(),0,0,client->GetTexture(),client->GetHelmTexture(),0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,0,0,0,0,0)
  {
  	pIsChanged		= true;
  	NPCTypedata		= 0;
--- 148,154 ----
  // Mongrel: added see_invis and see_invis_undead
  Corpse::Corpse(Client* client, PlayerProfile_Struct* pp, sint32 in_rezexp, int8 iCorpseLevel)
   : Mob("Unnamed_Corpse","",0,0,client->GetGender(),client->GetRace(),client->GetClass(), 0, // bodytype added
!         client->GetDeity(),client->GetLevel(),0,0, client->GetSize(), 0, 0,client->GetHeading(),client->GetX(),client->GetY(),client->GetZ(),0,0,client->GetTexture(),client->GetHelmTexture(),0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,0,0,0,0,0)
  {
  	pIsChanged		= true;
  	NPCTypedata		= 0;
***************
*** 215,221 ****
  // To be called from LoadFromDBData
  // Mongrel: added see_invis and see_invis_undead
  Corpse::Corpse(int32 in_dbid, int32 in_charid, char* in_charname, ItemList* in_itemlist, int32 in_copper, int32 in_silver, int32 in_gold, int32 in_plat, float in_x, float in_y, float in_z, float in_heading, float in_size, int8 in_gender, int16 in_race, int8 in_class, int8 in_deity, int8 in_level, int8 in_texture, int8 in_helmtexture,int32 in_rezexp)
!  : Mob("Unnamed_Corpse","",0,0,in_gender, in_race, in_class, 0, in_deity, in_level,0,0, in_size, 0, 0, in_heading, in_x, in_y, in_z,0,0,in_texture,in_helmtexture,0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,0,0,0,0,0)
  {
  	pIsChanged = false;
  	NPCTypedata = 0;
--- 215,221 ----
  // To be called from LoadFromDBData
  // Mongrel: added see_invis and see_invis_undead
  Corpse::Corpse(int32 in_dbid, int32 in_charid, char* in_charname, ItemList* in_itemlist, int32 in_copper, int32 in_silver, int32 in_gold, int32 in_plat, float in_x, float in_y, float in_z, float in_heading, float in_size, int8 in_gender, int16 in_race, int8 in_class, int8 in_deity, int8 in_level, int8 in_texture, int8 in_helmtexture,int32 in_rezexp)
!  : Mob("Unnamed_Corpse","",0,0,in_gender, in_race, in_class, 0, in_deity, in_level,0,0, in_size, 0, 0, in_heading, in_x, in_y, in_z,0,0,in_texture,in_helmtexture,0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,0,0,0,0,0)
  {
  	pIsChanged = false;
  	NPCTypedata = 0;
zonedump.h
Code:
Index: zonedump.h
===================================================================
RCS file: /cvsroot/eqemu/eqemu/eqemu/Source/zone/zonedump.h,v
retrieving revision 1.1.1.3
diff -c -r1.1.1.3 zonedump.h
*** zonedump.h	6 Feb 2004 23:32:30 -0000	1.1.1.3
--- zonedump.h	16 Feb 2004 13:56:30 -0000
***************
*** 79,84 ****
--- 79,85 ----
  	int8	eyecolor2;
  	int8	hairstyle;
  	int8	luclinface; // and beard);
+ 	int8	beard;
  	int8	aa_title;
  	int8    banish;
  	int16	min_dmg;
database.cpp
Code:
Index: database.cpp
===================================================================
RCS file: /cvsroot/eqemu/eqemu/eqemu/Source/common/database.cpp,v
retrieving revision 1.1.1.11
diff -c -r1.1.1.11 database.cpp
*** database.cpp	6 Feb 2004 23:33:28 -0000	1.1.1.11
--- database.cpp	15 Feb 2004 05:36:33 -0000
***************
*** 1161,1170 ****
  				cs->level[char_num]		= pp->level;
  				cs->class_[char_num]	= pp->class_;
  				cs->race[char_num]		= pp->race;
! 				cs->gender[char_num]	= pp->gender;
! 				cs->face[char_num]		= pp->face;
  				cs->deity[char_num]		= pp->deity;
  				cs->zone[char_num]		= GetZoneID(row[2]);
  				
  				// Character's equipped items
  				// @merth: Haven't done bracer01/bracer02 yet.
--- 1161,1177 ----
  				cs->level[char_num]		= pp->level;
  				cs->class_[char_num]	= pp->class_;
  				cs->race[char_num]		= pp->race;
! 				cs->gender[char_num]	= pp->gender;				
  				cs->deity[char_num]		= pp->deity;
  				cs->zone[char_num]		= GetZoneID(row[2]);
+ 				cs->face[char_num]		= pp->face;
+ 				cs->haircolor[char_num] = pp->haircolor;
+ 				cs->beardcolor[char_num]= pp->beardcolor;
+ 				cs->eyecolor2[char_num] = pp->eyecolor2;
+ 				cs->eyecolor1[char_num] = pp->eyecolor1;
+ 				cs->hair[char_num]		= pp->hairstyle;
+ 				cs->beard[char_num]		= pp->beard;
+ 				
  				
  				// Character's equipped items
  				// @merth: Haven't done bracer01/bracer02 yet.
***************
*** 6548,6559 ****
  return true;}
  
  bool Database::GetStartZone(PlayerProfile_Struct* in_pp, CharCreate_Struct* in_cc){
! 	cout<<"Choice:"<<in_cc->start_zone<<endl;
  	char errbuf[MYSQL_ERRMSG_SIZE];
  	char *query = 0;
  	MYSQL_RES *result;
  	MYSQL_ROW row;
! if (RunQuery(query, MakeAnyLenString(&query, "SELECT x,y,z,zone_id,bind_id FROM start_zones WHERE player_choice=%i and player_class=%i and player_deity=%i and player_race=%i", in_cc->start_zone, in_cc->class_, in_cc->deity, in_cc->race), errbuf, &result)) {         
        safe_delete_array(query); 
        if (mysql_num_rows(result) != 0) { 
           row = mysql_fetch_row(result); 
--- 6555,6567 ----
  return true;}
  
  bool Database::GetStartZone(PlayerProfile_Struct* in_pp, CharCreate_Struct* in_cc){
! 	//cout<<"Choice:"<<in_cc->start_zone<<" Class:"<<in_cc->class_<<" Race:"<<in_cc->race<<" Diety:"<<in_cc->deity<<endl;
  	char errbuf[MYSQL_ERRMSG_SIZE];
  	char *query = 0;
  	MYSQL_RES *result;
  	MYSQL_ROW row;
! 	int qLen = MakeAnyLenString(&query, "SELECT x,y,z,zone_id,bind_id,bind_x,bind_y,bind_z FROM start_zones WHERE (player_choice=%i OR  player_choice=-1) and (player_class=%i OR player_class=-1) and (player_deity=%i OR player_deity=-1) and (player_race=%i OR player_race=-1) ORDER BY select_rank DESC", in_cc->start_zone, in_cc->class_, in_cc->deity, in_cc->race);
! if (RunQuery(query,qLen,errbuf,&result)) {         
        safe_delete_array(query); 
        if (mysql_num_rows(result) != 0) { 
           row = mysql_fetch_row(result); 
***************
*** 6561,6577 ****
           in_pp->x = atoi(row[1]); 
           in_pp->z = atoi(row[2]); 
           in_pp->zone_id = atoi(row[3]); 
!          in_pp->bind_zone_id = atoi(row[4]); 
           mysql_free_result(result); 
           return true; 
        } 
  	  else {
! 			LogFile->write(EQEMuLog::Error, "Database: could not find start_zones entry in database. Using Defaults..");
  	  }
  	  mysql_free_result(result);
  	}
  	else {
! 		LogFile->write(EQEMuLog::Error, "Database: could not find start_zones table in database. Using Defaults..");
  		safe_delete_array(query);
  	}
  	in_pp->x = 0; in_pp->y = 0; in_pp->z = 0;
--- 6569,6612 ----
           in_pp->x = atoi(row[1]); 
           in_pp->z = atoi(row[2]); 
           in_pp->zone_id = atoi(row[3]); 
!          in_pp->bind_zone_id = atoi(row[4]);
! 		 //if we haven't set a bind_zone_id lets set it to the starting zone
! 		 if (in_pp->bind_zone_id ==0) in_pp->bind_zone_id = in_pp->zone_id; 
! 		 in_pp->bind_x = atof(row[5]);
! 		 in_pp->bind_y = atof(row[6]);
! 		 in_pp->bind_z = atof(row[7]);
! 		 //if bind x,y,z are all 0 then we need as a default to use the safe point
! 		 //for the bound zone
! 		 if (in_pp->bind_x ==0 && in_pp->bind_y ==0 && in_pp->bind_z ==0){
! 			char *query2 = 0;
! 			MYSQL_RES *result2;
! 			MYSQL_ROW row2;
! 			if (RunQuery(query2, MakeAnyLenString(&query2, "SELECT safe_x,safe_y,safe_z FROM zone WHERE zoneidnumber=%i",in_pp->bind_zone_id), errbuf, &result2)) {
! 				if (mysql_num_rows(result2) != 0) {
! 					row2 = mysql_fetch_row(result2); 
! 					in_pp->bind_x = atof(row[0]);
! 					in_pp->bind_y = atof(row[1]);
! 					in_pp->bind_z = atof(row[2]);
! 				}
! 				mysql_free_result(result2);
! 			} else {
! 				safe_delete_array(query2);
! 				LogFile->write(EQEMuLog::Error, "Database: could not find a zone entry in database for the starting bound zone.");	
! 			}
! 
! 		 }
           mysql_free_result(result); 
           return true; 
        } 
  	  else {
! 		  LogFile->write(EQEMuLog::Error, "Database: could not find a start_zones entry in database for this choice,class,race,diety. Using Defaults..");
! 		  
  	  }
  	  mysql_free_result(result);
  	}
  	else {
! 		LogFile->write(EQEMuLog::Error, errbuf);
! 		LogFile->write(EQEMuLog::Error, "Database: SQL Error. Using Defaults..");
  		safe_delete_array(query);
  	}
  	in_pp->x = 0; in_pp->y = 0; in_pp->z = 0;
eq_packet_structs.h
Code:
Index: eq_packet_structs.h
===================================================================
RCS file: /cvsroot/eqemu/eqemu/eqemu/Source/common/eq_packet_structs.h,v
retrieving revision 1.1.1.10
diff -c -r1.1.1.10 eq_packet_structs.h
*** eq_packet_structs.h	7 Feb 2004 21:34:35 -0000	1.1.1.10
--- eq_packet_structs.h	19 Feb 2004 06:07:34 -0000
***************
*** 148,154 ****
  /*1120*/	Color_Struct	cs_colors[10][9];	// Characters Equipment Colors (RR GG BB 00)
  /*1480*/	int32	deity[10];			// Characters Deity
  /*1520*/	int32	melee[2][10];		// Characters primary and secondary IDFile number
! /*1600*/	int8	unknown1600[60];	// ***Placeholder
  };
  
  /*
--- 148,159 ----
  /*1120*/	Color_Struct	cs_colors[10][9];	// Characters Equipment Colors (RR GG BB 00)
  /*1480*/	int32	deity[10];			// Characters Deity
  /*1520*/	int32	melee[2][10];		// Characters primary and secondary IDFile number
! /*1600*/	int8	haircolor[10];	
! /*1610*/	int8    beardcolor[10];
! /*1620*/	int8	eyecolor2[10];	
! /*1630*/	int8    eyecolor1[10];
! /*1640*/	int8	hair[10];	
! /*1650*/	int8    beard[10];
  };
  
  /*
***************
*** 601,609 ****
  {
  	/*0000*/	int32	class_; //guess
  	/*0004*/	char	name[64];
! 	/*0068*/	int32	haircolor; //guess
! 	/*0072*/	int32	eyecolor1; //guess
! 	/*0076*/	int32	eyecolor2; //guess
  	/*0080*/	sint32	gender;
  	/*0084*/	sint32	race;
  	/*0088*/	sint32	start_zone;
--- 606,614 ----
  {
  	/*0000*/	int32	class_; //guess
  	/*0004*/	char	name[64];
! 	/*0068*/	int32	haircolor;
! 	/*0072*/	int32	beard;
! 	/*0076*/	int32	beardcolor;
  	/*0080*/	sint32	gender;
  	/*0084*/	sint32	race;
  	/*0088*/	sint32	start_zone;
***************
*** 635,643 ****
  /*0116*/	sint32	WIS;
  /*0120*/	sint32	INT;
  /*0124*/	sint32	CHA;
! /*0128*/	int32	beard;//guess
! /*0132*/	int32	beardcolor;//guess
! /*0136*/	int32	face;
  /*0140*/
  };
  
--- 640,648 ----
  /*0116*/	sint32	WIS;
  /*0120*/	sint32	INT;
  /*0124*/	sint32	CHA;
! /*0128*/	int32   face;
! /*0132*/	int32	eyecolor1;//its possiable we could have these switched
! /*0136*/	int32	eyecolor2;//since setting one sets the other we really can't check
  /*0140*/
  };
  
***************
*** 824,831 ****
  struct Spawn_Struct
  {
  /*000*/	int8	npc;	// 0=player,1=npc,2=pc corpse,3=npc corpse,4=???,5=unknown spawn,10=self
! /*001*/	int8	eyecolor1;			// Player left eye color
! /*002*/	int8	eyecolor2;			// Player right eye color
  /*003*/	int8	aa_title; // 0=none, 1=general, 2=archtype, 3=class
  /*004*/	int32	dye_rgb[7]; 			// armor dye colors
  /*032*/ int8	unknown001[11]; 
--- 829,836 ----
  struct Spawn_Struct
  {
  /*000*/	int8	npc;	// 0=player,1=npc,2=pc corpse,3=npc corpse,4=???,5=unknown spawn,10=self
! /*001*/	int8	beard;
! /*002*/	int8	beardcolor;	
  /*003*/	int8	aa_title; // 0=none, 1=general, 2=archtype, 3=class
  /*004*/	int32	dye_rgb[7]; 			// armor dye colors
  /*032*/ int8	unknown001[11]; 
***************
*** 840,849 ****
  // horse: 0=brown, 1=white, 2=black, 3=tan
  };
  /*049*/ int32	race; // race 
! /*053*/ int8	beard; // Player beard style
  /*054*/ char	name[64]; // name 
! /*118*/ int8	haircolor; // hair color 
! /*119*/ int8	light; // 0=visible,1=invisible 
  /*120*/ int8	invis; 
  /*121*/ int8	max_hp; // max hp 
  /*122*/ int8	pvp; // 0=Not pvp,1=pvp 
--- 845,854 ----
  // horse: 0=brown, 1=white, 2=black, 3=tan
  };
  /*049*/ int32	race; // race 
! /*053*/ int8	eyecolor1;
  /*054*/ char	name[64]; // name 
! /*118*/ int8	eyecolor2;
! /*119*/ int8	face; //light was replaced by face here not sure where light is now
  /*120*/ int8	invis; 
  /*121*/ int8	max_hp; // max hp 
  /*122*/ int8	pvp; // 0=Not pvp,1=pvp 
***************
*** 858,867 ****
  		sint32	deltaZ:13; 
  /*137*/ sint32	deltaY:13; 
  		sint32	z:19; 
! /*141*/ int8	beardcolor;
! /*142*/ int8	hairstyle;
! /*143*/ int8	face;
! /*144*/ int8	unknown141[7]; 
  /*151*/ float	size; // Size 
  /*155*/ int8	helm; 
  /*156*/ float	runspeed; // 
--- 863,871 ----
  		sint32	deltaZ:13; 
  /*137*/ sint32	deltaY:13; 
  		sint32	z:19; 
! /*141*/ int8	hairstyle;
! /*142*/ int8	haircolor;
! /*143*/ int8	unknown143[8]; 
  /*151*/ float	size; // Size 
  /*155*/ int8	helm; 
  /*156*/ float	runspeed; // 
***************
*** 1841,1848 ****
  /*002*/	int8	eyecolor1; // the eyecolors always seem to be the same, maybe left and right eye?
  /*003*/	int8	eyecolor2;
  /*004*/	int8	hairstyle;
! /*005*/	int8	woad; //Face Overlay? (barbarian only)
! /*006*/	int8	face; // and beard
  };
  
  /*
--- 1845,1854 ----
  /*002*/	int8	eyecolor1; // the eyecolors always seem to be the same, maybe left and right eye?
  /*003*/	int8	eyecolor2;
  /*004*/	int8	hairstyle;
! /*005*/	int8	beard; //this is beard not woad
! /*006*/	int8	face; //there are only 10 faces for barbs changing woad just
! 					  //increase the face value by ten so if there were 8 woad 
! 					  //designs then there would be 80 barb faces
  };
  
  /*
Reply With Quote
  #2  
Old 02-19-2004, 04:13 AM
Scorpious2k's Avatar
Scorpious2k
Demi-God
 
Join Date: Mar 2003
Location: USA
Posts: 1,067
Default

More great work!

But.. ummm... you missed the changes to PlayerCorpse.cpp:

here's what I put in:
in Corpse::Corpse (around line 100)

replace

Code:
 : Mob("Unnamed_Corpse","",0,0,in_npc->GetGender(),in_npc->GetRace(),in_npc->GetClass(),0//bodytype added
       ,in_npc->GetDeity(),in_npc->GetLevel(),in_npc->GetNPCTypeID(),0,in_npc->GetSize(),0,0,in_npc->GetHeading(),in_npc->GetX(),in_npc->GetY(),in_npc->GetZ(),0,0,in_npc->GetTexture(),in_npc->GetHelmTexture(),0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,0,0,0,0,0)
with

Code:
// vesuvias - appearence fix
 : Mob("Unnamed_Corpse","",0,0,in_npc->GetGender(),in_npc->GetRace(),in_npc->GetClass(),0//bodytype added
       ,in_npc->GetDeity(),in_npc->GetLevel(),in_npc->GetNPCTypeID(),0,in_npc->GetSize(),0,0,in_npc->GetHeading(),in_npc->GetX(),in_npc->GetY(),in_npc->GetZ(),0,0,in_npc->GetTexture(),in_npc->GetHelmTexture(),0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,0,0,0,0,0)
in Corpse::Corpse (around line 155)

replace

Code:
 : Mob("Unnamed_Corpse","",0,0,client->GetGender(),client->GetRace(),client->GetClass(), 0, // bodytype added
        client->GetDeity(),client->GetLevel(),0,0, client->GetSize(), 0, 0,client->GetHeading(),client->GetX(),client->GetY(),client->GetZ(),0,0,client->GetTexture(),client->GetHelmTexture(),0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,0,0,0,0,0)
with

Code:
// vesuvias - appearence fix
 : Mob("Unnamed_Corpse","",0,0,client->GetGender(),client->GetRace(),client->GetClass(), 0, // bodytype added
        client->GetDeity(),client->GetLevel(),0,0, client->GetSize(), 0, 0,client->GetHeading(),client->GetX(),client->GetY(),client->GetZ(),0,0,client->GetTexture(),client->GetHelmTexture(),0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,0,0,0,0,0)
and in Corpse::Corpse (around line 225)

replace

Code:
 : Mob("Unnamed_Corpse","",0,0,in_gender, in_race, in_class, 0, in_deity, in_level,0,0, in_size, 0, 0, in_heading, in_x, in_y, in_z,0,0,in_texture,in_helmtexture,0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,0,0,0,0,0)
with

Code:
// vesuvias - appearence fix
 : Mob("Unnamed_Corpse","",0,0,in_gender, in_race, in_class, 0, in_deity, in_level,0,0, in_size, 0, 0, in_heading, in_x, in_y, in_z,0,0,in_texture,in_helmtexture,0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,0,0,0,0,0)
__________________
Maybe I should try making one of these servers...
Reply With Quote
  #3  
Old 02-19-2004, 04:20 AM
vesuvias
Fire Beetle
 
Join Date: Feb 2004
Posts: 17
Default

Quote:
Originally Posted by Scorpious2k
More great work!

But.. ummm... you missed the changes to PlayerCorpse.cpp:
Dooh! Thanks much. I thought I got all of the instances of the Mob constructor, thanks for keeping me straight. when I get home I will update the above post with the changes (and change the files as well).

Ves
Reply With Quote
  #4  
Old 02-19-2004, 04:42 AM
kathgar
Discordant
 
Join Date: May 2002
Posts: 434
Default

Include context in diffs, that change in npc.h = worthless for an example
__________________
++[>++++++<-]>[<++++++>-]<.>++++[>+++++<-]>[<
+++++>-]<+.+++++++..+++.>>+++++[<++++++>-]<+
+.<<+++++++++++++++.>.+++.------.--------.>+.
Reply With Quote
  #5  
Old 02-19-2004, 08:48 AM
Scorpious2k's Avatar
Scorpious2k
Demi-God
 
Join Date: Mar 2003
Location: USA
Posts: 1,067
Default

I didn't see the spellbar fix . Did I miss it or were there some changes to spells.cpp not posted?

The rest is currently running on our server, and judging by the reaction - its working.

"I don't remember having white hair" LOL
__________________
Maybe I should try making one of these servers...
Reply With Quote
  #6  
Old 02-19-2004, 09:35 AM
animepimp
Dragon
 
Join Date: Jan 2004
Posts: 860
Default

Yeah, I jsut helped test this on Scorpious 2k server a few minutes ago and it worked perfectly. Faces are saved between sessions and everybody else could see the changes I made to my face.
Reply With Quote
  #7  
Old 02-19-2004, 09:39 AM
Scorpious2k's Avatar
Scorpious2k
Demi-God
 
Join Date: Mar 2003
Location: USA
Posts: 1,067
Default

Quote:
Originally Posted by animepimp
everybody else could see the changes I made to my face.
I wasn't going to mention the green and orange lines.... I'm sure they'll clear up with a little salve or something....
__________________
Maybe I should try making one of these servers...
Reply With Quote
  #8  
Old 02-19-2004, 12:11 PM
vesuvias
Fire Beetle
 
Join Date: Feb 2004
Posts: 17
Default

Ok I redid the diffs to include context and I added spells.cpp to the ziped file I listed (forgot that one the first time). I added player_corpse.cpp to the diffs. Wheeew!!! Anything else ??

Next time I think I will post a link to the diffs if I have this many that are this big.

Ves
Reply With Quote
  #9  
Old 02-20-2004, 09:32 AM
Scorpious2k's Avatar
Scorpious2k
Demi-God
 
Join Date: Mar 2003
Location: USA
Posts: 1,067
Default

Quote:
Originally Posted by vesuvias
Wheeew!!! Anything else ??
Merged into 5.3 ... will look at 5.5 next
__________________
Maybe I should try making one of these servers...
Reply With Quote
  #10  
Old 02-20-2004, 11:20 AM
Scorpious2k's Avatar
Scorpious2k
Demi-God
 
Join Date: Mar 2003
Location: USA
Posts: 1,067
Default

vesuvias: Shawn just made a pre release version of 5.5 available. If you can get the new packet positions, I'll merge it all in for you and he'll release it.

http://Shawn319.eqemulator.net/cvs
__________________
Maybe I should try making one of these servers...
Reply With Quote
  #11  
Old 02-20-2004, 12:48 PM
vesuvias
Fire Beetle
 
Join Date: Feb 2004
Posts: 17
Default

Great, thanks for the release. Compiling now. I will look at this tonight (after I get the kids in bed) .

Ves
Reply With Quote
  #12  
Old 02-21-2004, 12:35 AM
Bahumut
Fire Beetle
 
Join Date: Jul 2003
Posts: 5
Default vesuvias = awesome

like Scorp said, it is GREAT to have another code tinkerer around here....shawn and the rest of developers have the new versions with all these patches to worry about, and server admins have the changes that will happen to their servers to worry about...it's great to see someone put a little effort into fixing stuff up instead of just complaining about stuff not working. my forte is hardware, but i think i'll take a look at the 5.5 code the next time i get a chance (ie. Monday :( ) is there anything you would like me to focus on Scorp or vesuvias?
Reply With Quote
  #13  
Old 02-21-2004, 12:37 AM
Monrezz's Avatar
Monrezz
Dragon
 
Join Date: Mar 2003
Location: #loc
Posts: 745
Default

The bugs! :P




*Edit*
Like zone stability, common bugs that are annoying but minor...etc
__________________

kRPG Profile
Reply With Quote
  #14  
Old 02-21-2004, 12:43 AM
Bahumut
Fire Beetle
 
Join Date: Jul 2003
Posts: 5
Default i'll do my best

hehe, gotcha...like i said, my specialty is hardware...but i took c++ in high school, so i shouldnt be too bad off . on a random side note...there are other people up this early? trust me, this is far from by choice....got in late last night and couldnt sleep, hope i make up for it tonight
Reply With Quote
  #15  
Old 02-21-2004, 12:50 AM
Monrezz's Avatar
Monrezz
Dragon
 
Join Date: Mar 2003
Location: #loc
Posts: 745
Default

Early? It's 1pm here :P


Bahumut
Newbie

Joined: 24 Jul 2003
Posts: 2

Posted: 21-02-2004 12:43 PM Post subject: i'll do my best
__________________

kRPG Profile
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 08:03 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