private string GetFaction(character character) { if (character.race == (byte)RaceID.Human || character.race == (byte)RaceID.Dwarf || character.race == (byte)RaceID.Gnome || character.race == (byte)RaceID.NightElf) return "Alliance"; return "Horde"; }
public PlayerEntity AddPlayerEntity(character character, WorldSession session) { ObjectGUID guid = new ObjectGUID((ulong)character.guid, TypeID.TYPEID_PLAYER); PlayerEntity playerEntity = new PlayerEntity(guid, character, session); PlayerEntities.Add(playerEntity); playerEntity.Setup(); return playerEntity; }
public PSNameQueryResponse(character character) : base(WorldOpcodes.SMSG_NAME_QUERY_RESPONSE) { this.Write((ulong)character.guid); this.Write(Encoding.UTF8.GetBytes(character.name + '\0')); this.Write((byte)0); // realm name for cross realm BG usage this.Write((uint)character.race); this.Write((uint)character.guid); this.Write((uint)character.@class); }
private void OnCharCreate(WorldSession session, PCCharCreate packet) { byte[] playerBytes = { packet.Skin, packet.Face, packet.HairStyle, packet.HairColor }; byte[] playerBytes2 = { packet.Accessory }; playercreateinfo info = CreateInfo.SingleOrDefault(ci => ci.race == packet.Race && ci.@class == packet.Class); var charGuid = Characters.AsQueryable().Any() ? Characters.AsQueryable().Max(c => c.guid) + 1 : 1; character character = new character() { guid = charGuid, account = session.Account.id, name = Utils.NormalizeText(packet.Name), race = packet.Race, @class = packet.Class, gender = packet.Gender, level = 1, xp = 0, money = 100000, playerBytes = BitConverter.ToInt32(playerBytes, 0), playerBytes2 = 0, playerFlags = 0, position_x = info.position_x, position_y = info.position_y, position_z = info.position_z, map = info.map, orientation = info.orientation, taximask = "", online = 0, cinematic = 0, totaltime = 0, leveltime = 0, logout_time = 0, is_logout_resting = 0, rest_bonus = 0, resettalents_cost = 0, resettalents_time = 0, trans_x = 0, trans_y = 0, trans_z = 0, trans_o = 0, transguid = 0, extra_flags = 0, at_login = 0, zone = info.zone, death_expire_time = 0, taxi_path = "", honor_highest_rank = 0, honor_standing = 0, stored_honor_rating = 0, stored_dishonorable_kills = 0, stored_honorable_kills = 0, watchedFaction = 0, drunk = 0, health = 100, power1 = 0, power2 = 0, power3 = 0, power4 = 0, power5 = 0, exploredZones = "", equipmentCache = GetStartingEquipment(packet.Race, packet.Class, packet.Gender), ammoId = 0, actionBars = 0, deleteInfos_Account = session.Account.id, deleteInfos_Name = Utils.NormalizeText(packet.Name), deleteDate = 0 }; Characters.Add(character); Core.CharacterDatabase.SaveChanges(); session.SendPacket(new PSCharCreate(LoginErrorCode.CHAR_CREATE_SUCCESS)); }
public PlayerInfo(ObjectGUID guid, character databaseCharacter, ChrRaces race, ChrClasses chrClass) : base(guid) { this.Class = chrClass; this.ClassID = this.Class.ClassID; this.Gender = databaseCharacter.gender; this.Power = (byte)this.Class.PowerType; this.Race = race; this.RaceID = race.RaceID; this.FactionTemplate = race.FactionID; this.DisplayID = this.NativeDisplayID = (int)(this.Gender == 0 ? race.ModelM : race.ModelF); this.Health = (int)databaseCharacter.health; //Level = databaseCharacter.Level; this.XP = (int)databaseCharacter.xp; this.NextLevelXP = 400; Byte[] playerBytes = BitConverter.GetBytes(databaseCharacter.playerBytes); Byte[] playerBytes2 = BitConverter.GetBytes(databaseCharacter.playerBytes2); this.Skin = playerBytes[0]; this.Face = playerBytes[1]; this.HairStyle = playerBytes[2]; this.HairColor = playerBytes[3]; this.Accessory = playerBytes2[0]; FactionTemplate = race.FactionID; UnitFlag = (int)UnitFlags.UNIT_FLAG_PVP; FlagUnk = 0x08 | 0x20; WatchedFactionIndex = (int)databaseCharacter.watchedFaction; this.Money = (int)databaseCharacter.money; /* item_template[] equipment = ItemUtils.GenerateInventoryByIDs(Utils.CSVStringToIntArray(databaseCharacter.equipmentCache)); VisualItems = new Item[19]; for (byte itemSlot = 0; itemSlot < 19; itemSlot++) { if (equipment == null) return; if (equipment[itemSlot] != null) { VisualItems[itemSlot] = new Item() { Creator = guid.RawGUID, EnchantmentIDs = new[] { 0, 0 }, Entry = equipment[itemSlot].entry, RandomPropertyID = equipment[itemSlot].RandomProperty, ItemSuffixFactor = 3 }; } else { VisualItems[itemSlot] = new Item() { Creator = 0, EnchantmentIDs = new[] { 0, 0 }, Entry = 0, RandomPropertyID = 0, ItemSuffixFactor = 0 }; } }*/ Type |= (int)TypeMask.TYPEMASK_PLAYER; }
//This shouldnt be here!!! Refactor later. Core should not need to reference database! public static int GetModel(character character) { return character.gender == (byte)Gender.Male ? (byte)MODELS[(RaceID)character.race].Male : (byte)MODELS[(RaceID)character.race].Female; }