// ---- BUILD ITEM HEADER ---- unsigned short CWorldServer::BuildItemHead( CItem thisitem ) { if (thisitem.count==0) return 0; return thisitem.itemnum << 5 | ( thisitem.itemtype & 0x1f ); } // ---- BUILD ITEM DATA ---- unsigned CWorldServer::BuildItemData( CItem thisitem ) { if (thisitem.count==0) return 0; if ( thisitem.itemtype >= 10 && thisitem.itemtype <= 13 ) { return thisitem.count; } else { unsigned retval = 0; retval |= (thisitem.refine>>4) << 28; retval |= (thisitem.appraised?1:0) << 27; retval |= (thisitem.slot?1:0) << 26; retval |= (thisitem.lifespan*10) << 16; retval |= thisitem.durability << 9; retval |= thisitem.stats; return retval; } } struct CItem { unsigned short itemnum; unsigned short itemtype; unsigned short refine; unsigned short durability; unsigned short lifespan; unsigned short count; unsigned short slot; unsigned short gem; bool appraised; unsigned stats; };