Beispiel #1
0
 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";
 }
Beispiel #2
0
 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);
 }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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;
        }
Beispiel #6
0
 //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;
 }