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

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #1  
Old 12-15-2008, 08:07 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

According to the script from 13th floor that dumps items, here:

http://eqitems.13th-floor.org/svn/sc...ump/fields.txt

It looks like the current list of item fields is in this order:

Code:
itemclass
name
lore
lorefile
idfile
id
weight
norent
nodrop
size
slots
price
icon
UNK013
UNK014
benefitflag
tradeskills
cr
dr
pr
mr
fr
svcorruption
astr
asta
aagi
adex
acha
aint
awis
hp
mana
endur
ac
classes
races
deity
skillmodvalue
UNK038
skillmodtype
banedmgrace
banedmgbody
banedmgraceamt
banedmgamt
magic
casttime_
reqlevel
reclevel
recskill
bardtype
bardvalue
light
delay
elemdmgtype
elemdmgamt
range
damage
color
itemtype
material
UNK060
UNK061
sellrate
combateffects
shielding
stunresist
strikethrough
extradmgskill
extradmgamt
spellshield
avoidance
accuracy
charmfileid
factionmod1
factionamt1
factionmod2
factionamt2
factionmod3
factionamt3
factionmod4
factionamt4
charmfile
augtype
augrestrict
augdistiller
augslot1type
augslot1visible
augslot1unk2
augslot2type
augslot2visible
augslot2unk2
augslot3type
augslot3visible
augslot3unk2
augslot4type
augslot4visible
augslot4unk2
augslot5type
augslot5visible
augslot5unk2
pointtype
ldontheme
ldonprice
UNK098
ldonsold
bagtype
bagslots
bagsize
bagwr
book
booktype
filename
loregroup
artifactflag
UNK109
favor
guildfavor
fvnodrop
dotshielding
attack
regen
manaregen
enduranceregen
haste
damageshield
UNK120
UNK121
attuneable
nopet
UNK124
potionbelt
potionbeltslots
stacksize
notransfer
UNK129
questitemflag
UNK131
UNK132
clickeffect
clicktype
clicklevel2
clicklevel
maxcharges
casttime
recastdelay
recasttype
clickunk5
clickname
clickunk7
proceffect
proctype
proclevel2
proclevel
procunk1
procunk2
procunk3
procunk4
procrate
procname
procunk7
worneffect
worntype
wornlevel2
wornlevel
wornunk1
wornunk2
wornunk3
wornunk4
wornunk5
wornname
wornunk7
focuseffect
focustype
focuslevel2
focuslevel
focusunk1
focusunk2
focusunk3
focusunk4
focusunk5
focusname
focusunk7
scrolleffect
scrolltype
scrolllevel2
scrolllevel
scrollunk1
scrollunk2
scrollunk3
scrollunk4
scrollunk5
scrollname
scrollunk7
UNK193
purity
dsmitigation
heroic_str
heroic_int
heroic_wis
heroic_agi
heroic_dex
heroic_sta
heroic_cha
healamt
spelldmg
clairvoyance
backstabdmg
evolvinglevel
verified
created
So, I guess all of the extra fields I posted in the previous post were actually new. I know the herioc stuff went in with the SoF release, so I just need to see if I can find in the patch notes when the others after healamt were added. Then, I should just be able to fill in the anniversary (using anniversary files for SoF still) items file either with these new fields, or maybe just set them all to 0 so that the correct number of fields are at least being sent. The heroic stats do sound cool and should add more variety for possible upgraded gear in the emulator. For anyone that doesn't know already, apparently they add more stats that can increase the cap of the particular stat it is adding to, so you can exceed the caps with the stats from them. That shouldn't be hard at all to code if we can get to that point.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #2  
Old 12-16-2008, 12:21 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I spent most of the day working on this, but this should be the item field list order that is currently used on live according to 13th floor collects:

Code:
/* 000 */	//I(ItemClass) Leave this one off on purpose
/* 001 */	S(Name)
/* 002 */	S(Lore)
/* 003 */	S("")//lorefile - Newly Added - Field is Null
/* 003 */	S(IDFile)
/* 004 */	I(ID)
/* 005 */	I(Weight)
/* 006 */	I(NoRent)
/* 007 */	I(NoDrop)
/* 008 */	I(Size)
/* 009 */	I(Slots)
/* 010 */	I(Price)
/* 011 */	I(Icon)
/* 012 */	I(0)
/* 013 */	I(0)
/* 014 */	I(BenefitFlag)
/* 015 */	I(Tradeskills)
/* 016 */	I(CR)
/* 017 */	I(DR)
/* 018 */	I(PR)
/* 019 */	I(MR)
/* 020 */	I(FR)
/* 020 */	I(0)//svcorruption - Newly Added
/* 021 */	I(AStr)
/* 022 */	I(ASta)
/* 023 */	I(AAgi)
/* 024 */	I(ADex)
/* 025 */	I(ACha)
/* 026 */	I(AInt)
/* 027 */	I(AWis)
/* 028 */	I(HP)
/* 029 */	I(Mana)
/* 111 */	I(Endur) //endur - Relocated
/* 030 */	I(AC)
/* 052 */	I(Classes)//classes - Relocated
/* 053 */	I(Races)//races - Relocated
/* 031 */	I(Deity)
/* 032 */	I(SkillModValue)
/* 033 */	I(0)//UNK038 - Default is 0
/* 034 */	I(SkillModType)
/* 035 */	I(BaneDmgRace)
/* 037 */	I(BaneDmgBody)//banedmgbody - Relocated
/* 103 */	I(BaneDmgRaceAmt)//banedmgraceamt - Relocated
/* 036 */	I(BaneDmgAmt)//banedmgamt - Relocated
/* 038 */	I(Magic)
/* 039 */	I(CastTime_)
/* 040 */	I(ReqLevel)
/* 045 */	I(RecLevel)//reclevel - Relocated
/* 046 */	I(RecSkill)//recskill - Relocated
/* 041 */	I(BardType)
/* 042 */	I(BardValue)
/* 043 */	I(Light)
/* 044 */	I(Delay)
/* 047 */	I(ElemDmgType)
/* 048 */	I(ElemDmgAmt)
/* 049 */	I(Range)
/* 050 */	I(Damage)
/* 051 */	I(Color)
/* 056 */	I(ItemType)
/* 057 */	I(Material)
/* 054 */	I(0)//UNK060 - Default is 0
/* 054 */	I(0)//UNK061 - Default is 0
/* 058 */	F(SellRate)
/* 063 */	I(CombatEffects)
/* 064 */	I(Shielding)
/* 065 */	I(StunResist)
/* 066 */	I(StrikeThrough)
/* 067 */	I(ExtraDmgSkill)
/* 068 */	I(ExtraDmgAmt)
/* 069 */	I(SpellShield)
/* 070 */	I(Avoidance)
/* 071 */	I(Accuracy)
/* 072 */	I(CharmFileID)
/* 073 */	I(FactionMod1)//Swapped these so Faction Amt comes after each Faction Mod
/* 077 */	I(FactionAmt1)//Swapped these so Faction Amt comes after each Faction Mod
/* 074 */	I(FactionMod2)//Swapped these so Faction Amt comes after each Faction Mod
/* 078 */	I(FactionAmt2)//Swapped these so Faction Amt comes after each Faction Mod
/* 075 */	I(FactionMod3)//Swapped these so Faction Amt comes after each Faction Mod
/* 079 */	I(FactionAmt3)//Swapped these so Faction Amt comes after each Faction Mod
/* 076 */	I(FactionMod4)//Swapped these so Faction Amt comes after each Faction Mod
/* 080 */	I(FactionAmt4)//Swapped these so Faction Amt comes after each Faction Mod
/* 081 */	S(CharmFile)
/* 082 */	I(AugType)
/* 104 */	I(AugRestrict)//augrestrict - Relocated
/* 122 */	I(AugDistiller)//augdistiller - Relocated
/* 083 */	I(AugSlotType[0])
/* 084 */	I(AugSlotUnk[0])//augslot1visible - Default 1
/* 084 */	I(0)//augslot1unk2 - Newly Added  - Default 0
/* 085 */	I(AugSlotType[1])
/* 086 */	I(AugSlotUnk[1])
/* 084 */	I(0)//augslot2unk2 - Newly Added
/* 087 */	I(AugSlotType[2])
/* 088 */	I(AugSlotUnk[2])
/* 084 */	I(0)//augslot3unk2 - Newly Added
/* 089 */	I(AugSlotType[3])
/* 090 */	I(AugSlotUnk[3])
/* 084 */	I(0)//augslot4unk2 - Newly Added
/* 091 */	I(AugSlotType[4])
/* 092 */	I(AugSlotUnk[4])
/* 084 */	I(0)//augslot5unk2 - Newly Added
/* 128 */	I(PointType)//pointtype - Relocated
/* 093 */	I(LDoNTheme)
/* 094 */	I(LDoNPrice)
/* 084 */	I(70)//UNK098 - Newly Added - Default 70, but some are set to 0
/* 095 */	I(LDoNSold)
/* 096 */	I(BagType)
/* 097 */	I(BagSlots)
/* 098 */	I(BagSize)
/* 099 */	I(BagWR)
/* 100 */	I(Book)
/* 101 */	I(BookType)
/* 102 */	S(Filename)
/* 105 */	I(LoreGroup)
/* 107 */	I(ArtifactFlag)
/* 106 */	I(PendingLoreFlag)//UNK109 - Default 0, but a few are 1
/* 109 */	I(Favor)
/* 121 */	I(GuildFavor)//guildfavor - Relocated
/* 110 */	I(FVNoDrop)
/* 112 */	I(DotShielding)
/* 113 */	I(Attack)
/* 114 */	I(Regen)
/* 115 */	I(ManaRegen)
/* 116 */	I(EnduranceRegen)
/* 117 */	I(Haste)
/* 118 */	I(DamageShield)
/* 123 */	I(-1) //UNK120 - Default is -1
/* 124 */	I(0) //UNK121 - Default is 0
/* 125 */	I(Attuneable)
/* 126 */	I(NoPet)
/* 127 */	I(0) //UNK124 - Default 0, but a few are 1
/* 129 */	I(PotionBelt)
/* 130 */	I(0) //potionbeltslots - Default 0, but a few are 1
/* 131 */	I(StackSize)
/* 132 */	I(NoTransfer)
/* 133 */	I(Stackable)//UNK129 - Default is 0, but some are much higher
/* 133 */	I(0)//questitemflag - Default is 0 (off), flag on = 1
/* 133 */	I(0)//UNK131 - Default is 0, but there is an item set to 1
/* 133 */	I(0)//UNK132 - Default is 0
/* 134 */	I(Click.Effect)
/* 135 */	I(Click.Type)
/* 136 */	I(Click.Level2)
/* 137 */	I(Click.Level)
/* 055 */	I(MaxCharges)//maxcharges - Relocated
/* 060 */	I(CastTime_)//casttime - Relocated - Note Duplicate Entries for CastTime_ and none for CastTime
/* 119 */	I(RecastDelay)//recastdelay - Relocated
/* 120 */	I(RecastType)//recasttype - Relocated
/* 133 */	I(0)//clickunk5 - Newly Added - Default is 0
/* 138 */	S("")//clickname - Newly Added - Default is Null
/* 133 */	I(-1)//clickunk7 - Newly Added - Default is -1, but some set to 0 and some much higher
/* 139 */	I(Proc.Effect)
/* 140 */	I(Proc.Type)
/* 141 */	I(Proc.Level2)
/* 142 */	I(Proc.Level)
/* 133 */	I(0)//procunk1 - Newly Added - Default is 0, but some set to -1 and 1
/* 133 */	I(0)//procunk2 - Newly Added - Default is 0
/* 133 */	I(0)//procunk3 - Newly Added - Default is 0
/* 133 */	I(0)//procunk4 - Newly Added - Default is 0
/* 062 */	I(ProcRate)procrate - Relocated
/* 138 */	S("")//procname - Newly Added - Default is Null
/* 133 */	I(-1)//procunk7 - Newly Added - Default is -1, but some set to 0
/* 144 */	I(Worn.Effect)
/* 145 */	I(Worn.Type)
/* 146 */	I(Worn.Level2)
/* 147 */	I(Worn.Level)
/* 133 */	I(0)//wornunk1 - Newly Added - Default is 0
/* 133 */	I(0)//wornunk2 - Newly Added - Default is 0
/* 133 */	I(0)//wornunk3 - Newly Added - Default is 0
/* 133 */	I(0)//wornunk4 - Newly Added - Default is 0
/* 133 */	I(0)//wornunk5 - Newly Added - Default is 0
/* 138 */	S("")//wornname - Newly Added - Default is Null
/* 133 */	I(-1)//wornunk7 - Newly Added - Default is -1, but some set to 0
/* 149 */	I(Focus.Effect)
/* 150 */	I(Focus.Type)
/* 151 */	I(Focus.Level2)
/* 152 */	I(Focus.Level)
/* 133 */	I(0)//focusunk1 - Newly Added - Default is 0
/* 133 */	I(0)//focusunk2 - Newly Added - Default is 0
/* 133 */	I(0)//focusunk3 - Newly Added - Default is 0
/* 133 */	I(0)//focusunk4 - Newly Added - Default is 0
/* 133 */	I(0)//focusunk5 - Newly Added - Default is 0
/* 138 */	S("")//focusname - Newly Added - Default is Null
/* 133 */	I(-1)//focusunk7 - Newly Added - Default is -1, but some set to 0
/* 154 */	I(Scroll.Effect)
/* 155 */	I(Scroll.Type)
/* 156 */	I(Scroll.Level2)
/* 157 */	I(Scroll.Level)scrollunk1
/* 133 */	I(0)//scrollunk2 - Newly Added - Default is 0
/* 133 */	I(0)//scrollunk3 - Newly Added - Default is 0
/* 133 */	I(0)//scrollunk4 - Newly Added - Default is 0
/* 133 */	I(0)//scrollunk5 - Newly Added - Default is 0
/* 138 */	S("")//scrollname - Newly Added - Default is Null
/* 133 */	I(-1)//scrollunk7 - Newly Added - Default is -1, but some set to 0
/* 158 */	I(0)//UNK193 - Default is 0
/* 133 */	I(0)//purity - Newly Added - Default is 0, but some go up to 75
/* 133 */	I(0)//dsmitigation - Newly Added - Default is 0, but some are up to 2
/* 133 */	I(0)//heroic_str - Newly Added - Default is 0
/* 133 */	I(0)//heroic_int - Newly Added - Default is 0
/* 133 */	I(0)//heroic_wis - Newly Added - Default is 0
/* 133 */	I(0)//heroic_agi - Newly Added - Default is 0
/* 133 */	I(0)//heroic_dex - Newly Added - Default is 0
/* 133 */	I(0)//heroic_sta - Newly Added - Default is 0
/* 133 */	I(0)//heroic_cha - Newly Added - Default is 0
/* 133 */	I(0)//healamt - Newly Added - Default is 0, but some are up to 9
/* 133 */	I(0)//spelldmg - Newly Added - Default is 0, but some are up to 9
/* 133 */	I(0)//clairvoyance - Newly Added - Default is 0, but some are up to 10
/* 133 */	I(0)//backstabdmg - Newly Added - Default is 0, but some are up to 65
/* 133 */	I(0)//evolvinglevel - Newly Added - Default is 0, but some are up to 7

//This doesn't appear to be used /* 102 */	S(verified)//verified
//This doesn't appear to be used /* 102 */	S(serialized)//created
//Unsure where this goes right now (or if it is even used) /* 108 */	I(SummonedFlag)

#undef I
#undef C
#undef S
#undef F
I will try this as soon as I get home tonight. I am guessing that the following fields were added after SoF, so I will comment them out for now and try adding them 1 at a time until it works (hopefully):
Code:
/* 133 */	I(0)//healamt - Newly Added - Default is 0, but some are up to 9
/* 133 */	I(0)//spelldmg - Newly Added - Default is 0, but some are up to 9
/* 133 */	I(0)//clairvoyance - Newly Added - Default is 0, but some are up to 10
/* 133 */	I(0)//backstabdmg - Newly Added - Default is 0, but some are up to 65
/* 133 */	I(0)//evolvinglevel - Newly Added - Default is 0, but some are up to 7
Note that the item field numbers are not correct, but once I have the list working, I will renumber it all manually.

Also, the only thing I am not quite sure about here is the use of quotes on ints and nulls. Does anyone know if I(0) is the same as I("0"), and if S("") is the same as NULL, or if there is a better way to put NULL there? Maybe something like S(NULL)?
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #3  
Old 12-16-2008, 01:17 AM
MNWatchdog
Hill Giant
 
Join Date: Feb 2006
Posts: 179
Default

Have you checked Macroquest sources from around that time? I would assume most of the structs are in there.
Reply With Quote
  #4  
Old 12-16-2008, 03:25 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I already looked into it a little, but Macroquest reads directly from memory and doesn't do any kind of packet sniffing as far as I can tell. So, it uses offsets and such, which might possibly be useful for figuring out something, but I don't really know what to do with them personally.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #5  
Old 12-16-2008, 04:48 AM
MNWatchdog
Hill Giant
 
Join Date: Feb 2006
Posts: 179
Default

Just thinking that by comparing MQ Titanium/Emus structs to MQs SoF structs would make it far easier to figure out what new fields need to be added to Emus structs that need to be send to the SoF client.

Im thinking that say a items struct is sent to the client in the same formate its readable from memory. I dont know if this is true, but if it is, looking at MQs SoFs structs should help a lot.
Reply With Quote
  #6  
Old 12-16-2008, 03:49 PM
Rocker8956
Hill Giant
 
Join Date: Sep 2007
Posts: 117
Default

Wow, way above my skill level so all I can do is cheer you on.

Just one thought though, perhaps the correct fields could be found by looking at stats on items that were released with SoF.

I think clairvoyance and healamt were on those items but they could have been added later.
Reply With Quote
  #7  
Old 12-16-2008, 05:31 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Like I said, MQ reads from memory and is written in a completely different way than our packet structures. They use offsets that line up directly with the assembly code from the eqgame.exe, and so their format is completely different. Possibly if I was very familiar with the MQ source, I might have an idea of how it could be useful. Unfortunately I might as well be trying to read in German (which I don't know how to do), because that is about how different the code is from the emu source.

I figured out last night that all of the fields I had listed in my last post were actually in with the SoF release. The only one I am still not 100% certain about is the evolving items part. According to 13th floor, I saw it mentioned that evolving items need their own separate table and have a separate opcode (I think) if the item is able to evolve. Hopefully setting that field to 0 will just disable evolving so we don't need to write anything for it until we are at a point where we can do it at leisure. As far as the item field list for SoF, I think that I now have it 100% (or very close to it) complete. This is good, because it is 1 more step closer to being done, but the bad part is that it didn't fix my current issue.

I looked into it further last night and checked the debug where I am crashing in SoF vs a debug of a successful Titanium connection. I then compared a few things in the Titanium assembly code to the SoF assembly code. I am pretty sure that I have narrowed the current issue down to the Spawn_Structure. Unfortunately, I think that structure is by far the worst and hardest part left of getting SoF to work with the emulator. Out of all structures, the spawn struct gets completely moved around with almost every patch. I was able to find the packet size of 385 (HEX is 181) for the Titanium spawn struct by using the hex calculator here http://www.squarebox.co.uk/hcalc.html (very useful when messing with the assembly code), and then searching for 0x0181 in the assembly code. I found the same section of code in the SoF assembly code, but I was unable to figure out what the struct size was. Since this technique worked perfectly for finding the struct size for the player profile, I think that means that the new spawn struct for SoF is now a variable length struct. I checked the current SEQ source code and it lists it as variable length, even though the SEQ version from when SoF came out shows it as a fixed size.

I don't know anything about variable structure sizes or what to do with them. The spawn struct also seems to use unions, packet padding, signed and unsigned ints, all of which I know absolutely nothing about... All of the other structures are pretty straight forward and I think most of them should already be ready to start working once I get the spawn struct correct. This is probably going to be the biggest hurdle to getting SoF working.

I am still going to do some further testing on Titanium to see if I can duplicate the exact crash I am having on SoF, which should help narrow down the exact cause of the problem. That technique has already helped me multiple times in figuring out what is causing a problem.

I figured this stuff was over my skill level too, but so far, I have learned alot just reading the structures and forums here and SEQ forums. I have been able to do alot of things that I didn't expect to be able to do. So, even though it might sound above your skill level doesn't mean that you wouldn't be able to figure it out if you put some thought into it
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #8  
Old 12-16-2008, 09:05 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Here is a link to the post from right before when SoF was released stating that he was able to get the spawn struct from the eqgame.exe and that it should be fully accurate:

http://www.showeq.net/forums/showpos...4&postcount=21

Since that struct didn't change in the update following the SoF release and they said everything in SEQ was still functional, I am wondering if it is safe to assume that it is correct. Ultimately, I wish I knew exactly what he did to pull all of that info from the .exe and if I knew that, this would be simple.

Here is the Spawn_Struct according to SEQ at the time of SoF (and a few patches later as well):

Code:
/* 
** Generic Spawn Struct 
** Length: 897 Octets 
** Used in: 
**   dbSpawnStruct
**   petStruct
**   spawnShroudOther
**   spawnShroudSelf
*/ 

struct spawnStruct
{
/*0000*/ uint8_t  unknown0000[9];
/*0009*/ int16_t  deity;          // Player's Deity
/*0011*/ uint8_t  unknown0011[11];
/*0022*/ uint8_t  gender;         // Gender (0=male, 1=female)
/*0023*/ uint8_t  unknown0023[4];
/*0027*/ union 
	 {
		struct
		{
		/*0027*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
		/*0039*/ EquipStruct equip_chest; // Equiptment: Chest visual
		/*0051*/ EquipStruct equip_arms; // Equiptment: Arms visual
		/*0063*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
		/*0075*/ EquipStruct equip_hands; // Equiptment: Hands visual
		/*0087*/ EquipStruct equip_legs; // Equiptment: Legs visual
		/*0099*/ EquipStruct equip_feet; // Equiptment: Boots visual
		/*0111*/ EquipStruct equip_primary; // Equiptment: Main visual
		/*0123*/ EquipStruct equip_secondary; // Equiptment: Off visual
		} equip;
		/*0027*/ EquipStruct equipment[9];
	 };
/*0135*/ uint8_t  state;          // stand state
/*0136*/ uint8_t  unknown0136;
/*0137*/ uint32_t guildID;        // Current guild
/*0141*/ uint8_t  unknown0141[24];
/*0165*/ uint8_t  class_;         // Player's class
/*0166*/ uint8_t  unknown0166[201];
/*%%% gm right this time? */
/*0367*/ uint8_t  gm;
/*0368*/ uint8_t  unknown0368[134];
/*0502*/ float    runspeed;       // Speed when walking
/*0506*/ uint8_t  light;          // Spawn's lightsource
/*0507*/ uint8_t  unknown0507[4];
/*0511*/ uint8_t  level;          // Spawn Level
/*0512*/ uint8_t  unknown0512[23];
/*0535*/ uint32_t race;           // Spawn race
/*0539*/ uint8_t  unknown0539[41];
/*0580*/ char     suffix[32];     // Player's suffix (of Veeshan, etc.)
/*0612*/ uint8_t  unknown0612;
/*0613*/ uint8_t  bodytype;       // Bodytype
/*0614*/ uint8_t  unknown0614[41];
/*0655*/ uint8_t  curHp;          // Current hp
/*0656*/ uint8_t  unknown0656[2];
/*0658*/ char     lastName[32];   // Player's Lastname
/*0690*/ uint8_t  unknown0690[2];
/*0692*/ char     title[32];      // Title
/*0724*/ uint8_t  unknown0724[6];
/*0730*/ uint8_t  NPC;            // 0=player,1=npc,2=pc corpse,3=npc corpse
/*0731*/ uint8_t  unknown0731[12];
/*0743*/ signed   padding0000:12; // ***Placeholder
	 signed   x:19;           // x coord
	 signed   padding0002:1; // ***Placeholder
/*0747*/ signed   deltaX:13;      // change in x
	 signed   deltaY:13;      // change in y
	 signed   padding0006:6;  // ***Placeholder
/*0751*/ signed   z:19;           // z coord
	 signed   deltaHeading:10;// change in heading
	 signed   padding0014:3;  // ***Placeholder
/*0755*/ signed   y:19;           // y coord
	 signed   deltaZ:13;      // change in z
/*0759*/ signed   animation:10;   // animation
	 unsigned heading:12;     // heading
	 signed   padding0018:10;  // ***Placeholder
/*0763*/ uint32_t spawnId;        // Spawn Id
/*0767*/ uint8_t  unknown0767[8];
/*0775*/ char     name[64];       // Player's Name
/*0839*/ uint32_t petOwnerId;     // If this is a pet, the spawn id of owner
/*0843*/ uint8_t  unknown0843;
/*0844*/ union 
	 {
		struct 
		{
		/*0844*/ Color_Struct color_helmet;    // Color of helmet item
		/*0848*/ Color_Struct color_chest;     // Color of chest item
		/*0852*/ Color_Struct color_arms;      // Color of arms item
		/*0856*/ Color_Struct color_bracers;   // Color of bracers item
		/*0860*/ Color_Struct color_hands;     // Color of hands item
		/*0864*/ Color_Struct color_legs;      // Color of legs item
		/*0868*/ Color_Struct color_feet;      // Color of feet item
		/*0872*/ Color_Struct color_primary;   // Color of primary item
		/*0876*/ Color_Struct color_secondary; // Color of secondary item
		} equipment_colors;
		/*0844*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above
	 };
/*0880*/ uint8_t  anon;           // 0=normal, 1=anon, 2=roleplay
/*0881*/ uint8_t  unknown0881[10];
/*0891*/ float    walkspeed;      // Speed when running
/*0895*/ uint8_t  unknown896[2];
/*0897*/
};
Part of the problem may be that I had to change this considerably to fit in all of the stuff that EQEmu currently uses for settings on spawns within the same number of bytes. Also, I don't know how to count the signed and padding stuff, so my structure size may be off.

It is still possible that something else could be the cause of my crashes, but at least by fixing everything as much as possible now, it will mean less work later. I am glad that the itemlist stuff is all done now, so it should hopefully work as soon as it is ready to get to that point
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
Reply

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 04:39 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