well when it was doing that with me that was because (lookface,hair or the action) has wrong input , and the client was crashing , my suggestion is you are entering a wrong value for the hair! (1003,310,8000) try this values it might work!
and here is my codes it may help though
Code:
CharPacket::CharPacket(std::string hero_name, std::string spouse_name)
: BasePacket(0x3ee, 68 + hero_name.length() + spouse_name.length())
{
int pos = 61;
this->writeInt<uint8_t>(pos++, 2);
this->writeInt<uint8_t>(pos++, hero_name.length());
this->writeString(pos, hero_name, hero_name.length());
pos +=hero_name.length();
this->writeInt<uint8_t>(pos++, spouse_name.length());
this->writeString(pos, spouse_name, spouse_name.length());
}
void set_HeroId(uint32_t heroId) { writeInt<uint32_t>(4, heroId); }
void set_Appearance(uint32_t app) { writeInt<uint32_t>(8, app); }
void set_Hair(uint32_t hair) { writeInt<uint32_t>(12, hair); }
void set_Money(uint32_t value) { writeInt<uint32_t>(16, value); }
void set_Experience(int32_t value) { writeInt<int32_t>(20, value); }
void set_Strength(uint16_t value){ writeInt<uint16_t>(40, value); }
void set_Agility(uint16_t value){ writeInt<uint16_t>(42, value); }
void set_vitality(int32_t value){ writeInt<uint16_t>(44, value); }
void set_spirit(int32_t value){ writeInt<uint16_t>(46, value); }
void set_statpoints(int32_t value){ writeInt<uint16_t>(48, value); }
void set_health(int32_t value){ writeInt<uint16_t>(50, value); }
void set_mana(int32_t value){ writeInt<uint16_t>(52, value); }
void set_pkpoint(int16_t pk){ writeInt<int16_t>(54, pk); }
void set_level(int32_t value){ writeInt<uint8_t>(56, value); }
void set_profession(int32_t value){ writeInt<uint16_t>(57, value); }
void set_Action(uint16_t action){ writeInt<uint16_t>(59, action); }
that's from my old C++ source , Good Luck :)