/* * This file is part of UAS2. * * UAS2 is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * UAS2 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with UASv1; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /** * @file Account.h * Processes the create and delete character messages. */ #ifndef __ACCOUNT_H #define __ACCOUNT_H #include #define CHARDATA_RACE_ALUVIAN 0x0 #define CHARDATA_RACE_GHARU 0x1 #define CHARDATA_RACE_SHO 0x2 #define CHARDATA_HAIRSTYLE_BUSINESS 0x0 #define CHARDATA_HAIRSTYLE_PUNK 0x1 #define CHARDATA_HAIRSTYLE_PONYTAIL 0x2 #define CHARDATA_HAIRSTYLE_BALD 0x3 #define CHARDATA_SEX_FEMALE 0x0 #define CHARDATA_SEX_MALE 0x1 #define CHARDATA_STARTINGTOWN_HOLTBURG_SOUTH 0x0 #define CHARDATA_STARTINGTOWN_HOLTBURG_WEST 0x1 #define CHARDATA_STARTINGTOWN_SHOUSHI_SOUTHEAST 0x2 #define CHARDATA_STARTINGTOWN_SHOUSHI_WEST 0x3 #define CHARDATA_STARTINGTOWN_YARAQ_NORTH 0x4 #define CHARDATA_STARTINGTOWN_YARAQ_EAST 0x5 #define CHARDATA_CLASS_CUSTOM 0x0 #define CHARDATA_CLASS_BOW_HUNTER 0x1 #define CHARDATA_CLASS_SWASHBUCKLER 0x2 #define CHARDATA_CLASS_LIFE_CASTER 0x3 #define CHARDATA_CLASS_WAR_MAGE 0x4 #define CHARDATA_CLASS_WAYFARER 0x5 #define CHARDATA_CLASS_SOLDIER 0x6 #define SKILL_AXE 0x01 #define SKILL_BOW 0x02 #define SKILL_CROSSBOW 0x03 #define SKILL_DAGGER 0x04 #define SKILL_MACE 0x05 #define SKILL_MELEE_DEFENSE 0x06 #define SKILL_MISSLE_DEFENSE 0x07 #define SKILL_SPEAR 0x09 #define SKILL_STAFF 0x0A #define SKILL_SWORD 0x0B #define SKILL_THROWN_WEAPONS 0x0C #define SKILL_UNARMED_COMBAT 0x0D #define SKILL_ARCANE_LORE 0x0E #define SKILL_MAGIC_DEFENSE 0x0F #define SKILL_MANA_CONVERSION 0x10 #define SKILL_ITEM_TINKERING 0x12 #define SKILL_ASSESS_PERSON 0x13 #define SKILL_DECEPTION 0x14 #define SKILL_HEALING 0x15 #define SKILL_JUMP 0x16 #define SKILL_LOCKPICK 0x17 #define SKILL_RUN 0x18 #define SKILL_ASSESS_CREATURE 0x1B #define SKILL_WEAPON_TINKERING 0x1C #define SKILL_ARMOR_TINKERING 0x1D #define SKILL_MAGIC_ITEM_TINKERING 0x1E #define SKILL_CREATURE_ENCHANTMENT 0x1F #define SKILL_ITEM_ENCHANTMENT 0x20 #define SKILL_LIFE_MAGIC 0x21 #define SKILL_WAR_MAGIC 0x22 #define SKILL_LEADERSHIP 0x23 #define SKILL_LOYALTY 0x24 #define SKILL_FLETCHING 0x25 #define SKILL_ALCHEMY 0x26 #define SKILL_COOKING 0x27 #define SKILL_SALVAGE 0x28 /** * The CreateCharacterMessage struct parallels the structure of the Create Character message. * * Values from this struct are used by cDatabase to create characters. @see cDatabase::CreateAvatar */ #pragma pack( push, 1 ) struct CreateCharacterMessage { DWORD dwF656; // DWORD dwBeefbeef; //0xBEEFBEEF always; probably used in place of GUID WORD wLengthOfAccountName; //Length of the account name char szAccountName[40]; //40 byte account name; zero-filled // DWORD dwUnk1; DWORD dwValOne; //Constant 1 DWORD dwRace; //Use CHARDATA_RACE_ DWORD dwSex; //Use CHARDATA_SEX_ DWORD dwForeheadTexture; //Value from a race-wide index of texures DWORD dwNoseTexture; //Value from a race-wide index of texures DWORD dwChinTexture; //Value from a race-wide index of texures DWORD dwHairColor; //Value from a race-wide index of colors DWORD dwEyeColor; //Value from a race-wide index of colors DWORD dwHairStyle; //Use CHARDATA_HAIRSTYLE_ DWORD dwHatType; //Value from a race-wide index of hat types; 0xFFFFFFFF (-1) means no hat DWORD dwHatColor; //Value from a race-wide index of colors DWORD dwShirtType; //Value from a race-wide index of shirt types DWORD dwShirtColor; //Value from a race-wide index of colors DWORD dwPantsType; //Value from a race-wide index of pants DWORD dwPantsColor; //Value from a race-wide index of colors DWORD dwShoeType; //Value from a race-wide index of shoe types DWORD dwShoeColor; //Value from a race-wide index of colors //Values range from 0x0000000000000000 to 3FF0000000000000000 (0-1) //Indicate degree of color shading double dblSkinShade; double dblHairShade; double dblHatShade; double dblShirtShade; double dblPantsShade; double dblShoeShade; DWORD dwProfession; //CHARDATA_PROFESSION_ DWORD dwStrength; DWORD dwEndurance; DWORD dwCoordination; DWORD dwQuickness; DWORD dwFocus; DWORD dwSelf; DWORD dwUnk2; DWORD dwUnk3; DWORD dwNumSkills; //Portal.dat file dependent DWORD dwSkillStatus[0x30]; // 0 - Skill ID not used // 1 - Skill Unusable / Untrained // 2 - Skill Trained // 3 - Skill Specialized WORD wNameLength; char szName[40]; DWORD dwUnk4; //Always 0xFFFFFFFF? DWORD dwUnk5; //Random value that has ranged from 0x02-0x0C DWORD dwStartingPlace; //CHARDATA_STARTINGTOWN_ DWORD dwUnk6; //Random value that has ranged from 0x53-0x157 }; #pragma pack( pop ) /** * The AvatarDeleteMessage struct parallels the structure of the Delete Character message. */ #pragma pack( push, 1 ) struct AvatarDeleteMessage { DWORD dwF655; // DWORD dwBeef; WORD wNameLength; char szAccountName[40]; // DWORD dw74; DWORD dwSlot; }; #pragma pack( pop ) #endif // #ifndef __ACCOUNT_H