Exemple #1
0
        //TODO: Simplify method body
        public override async Task RunImpl()
        {
            if (!await IsValidChar())
            {
                return;
            }

            PcTemplate template = CharTemplateTable.GetTemplate(_classId);

            L2Player player = new L2Player(template, _idFactory.NextId())
            {
                Name          = _name,
                Account       = _client.Account,
                Sex           = (Gender)_sex,
                HairStyleId   = (HairStyleId)_hairStyle,
                HairColor     = (HairColor)_hairColor,
                Face          = (Face)_face,
                CharacterSlot = _client.AccountCharacters.Count
            };

            _characterService.CreatePlayer(player);
            _client.AccountCharacters.Add(player);
            _client.SendPacketAsync(new CharCreateOk());
            _client.SendPacketAsync(new CharList(_client, _client.SessionKey.PlayOkId1));
        }
Exemple #2
0
 public L2Player(int objectId, PcTemplate template) : base(objectId, template)
 {
     Template      = template;
     CharacterStat = new CharacterStat(this);
     InitializeCharacterStatus();
     Calculators = new Models.Stats.Calculator[Models.Stats.Stats.Values.Count()];
     AddFuncsToNewCharacter();
 }
        public void Initialize()
        {
            XmlDocument doc = new XmlDocument();

            string[] xmlFilesArray = Directory.GetFiles(@"data\xml\classes\");
            foreach (string i in xmlFilesArray)
            {
                doc.Load(i);

                XmlNodeList nodes = doc.DocumentElement?.SelectNodes("/list/class");

                if (nodes == null)
                {
                    continue;
                }

                foreach (XmlNode node in nodes)
                {
                    XmlElement ownerElement = node.Attributes?[0].OwnerElement;
                    if ((ownerElement == null) || (node.Attributes == null) || !"class".Equals(ownerElement.Name))
                    {
                        continue;
                    }

                    XmlNamedNodeMap attrs   = node.Attributes;
                    ClassId         classId = ClassId.Values.FirstOrDefault(x => ((int)x.Id).Equals(Convert.ToInt32(attrs.Item(0).Value)));
                    StatsSet        set     = new StatsSet();

                    for (XmlNode cd = node.FirstChild; cd != null; cd = cd.NextSibling)
                    {
                        if ((cd.NextSibling != null) && "set".Equals(cd.NextSibling.Name) && (cd.NextSibling != null))
                        {
                            attrs = cd.NextSibling.Attributes;
                            if (attrs == null)
                            {
                                continue;
                            }

                            string name  = attrs.GetNamedItem("name").Value;
                            string value = attrs.GetNamedItem("val").Value;
                            set.Set(name, value);
                        }
                        else
                        {
                            break;
                        }
                    }

                    PcTemplate pcTempl = new PcTemplate(classId, set);
                    Templates.Add((int)pcTempl.ClassId.Id, pcTempl);
                }
            }

            Log.Info($"CharTemplateTable: Loaded {Templates.Count} character templates.");
        }
Exemple #4
0
        public void Initialize()
        {
            XmlDocument doc = new XmlDocument();

            string[] xmlFilesArray = Directory.GetFiles(@"data\xml\classes\");
            for (int i = 0; i < xmlFilesArray.Length; i++)
            {
                doc.Load(xmlFilesArray[i]);
                XmlNodeList nodes = doc.DocumentElement.SelectNodes("/list/class");

                foreach (XmlNode node in nodes)
                {
                    if ("class".Equals(node.Attributes[0].OwnerElement.Name))
                    {
                        XmlNamedNodeMap attrs   = node.Attributes;
                        ClassId         classId = ClassId.Values.FirstOrDefault(x => ((int)x.Id).Equals(Convert.ToInt32(attrs.Item(0).Value)));
                        StatsSet        set     = new StatsSet();

                        for (XmlNode cd = node.FirstChild; cd != null; cd = cd.NextSibling)
                        {
                            if ("set".Equals(cd.NextSibling.Name) && cd.NextSibling != null)
                            {
                                attrs = cd.NextSibling.Attributes;
                                string name  = attrs.GetNamedItem("name").Value;
                                string value = attrs.GetNamedItem("val").Value;
                                set.Set(name, value);
                            }
                            else
                            {
                                break;
                            }
                        }
                        PcTemplate pcTempl = new PcTemplate(classId, set);
                        templates.Add((int)pcTempl.ClassId.Id, pcTempl);
                    }
                }
            }
            Log.Info($"Loaded { templates.Count } character templates.");
        }
Exemple #5
0
        public void setTemplate(PcTemplate template)
        {
            addTemplate(TEffectType.p_physical_attack, template.BasePAtk);
            addTemplate(TEffectType.p_physical_defense, template.BasePDef);
            addTemplate(TEffectType.p_magical_attack, template.BaseMAtk);
            addTemplate(TEffectType.p_magical_defense, template.BaseMDef);
            addTemplate(TEffectType.p_speed, 700);//template.runspd);

            addTemplate(TEffectType.b_max_weight, 2500000.0);
            addTemplate(TEffectType.b_accuracy, 50);
            addTemplate(TEffectType.b_critical_rate, 100);
            addTemplate(TEffectType.b_evasion, 50);
            //addTemplate(TEffectType.b_breath, template.B);

            addTemplate(TEffectType.b_attack_spd, template.BasePAtkSpd);
            addTemplate(TEffectType.b_casting_spd, 333);

            addTemplate(TEffectType.b_max_hp, template.HpTable[owner.Level]);
            addTemplate(TEffectType.b_reg_hp, template.BaseHpReg);
            addTemplate(TEffectType.b_max_mp, template.MpTable[owner.Level]);
            addTemplate(TEffectType.b_reg_mp, template.BaseMpReg);
            addTemplate(TEffectType.b_max_cp, template.CpTable[owner.Level]);
            addTemplate(TEffectType.b_reg_cp, 50);
        }
Exemple #6
0
        public void SetTemplate(PcTemplate template)
        {
            AddTemplate(EffectType.PPhysicalAttack, template.BasePAtk);
            AddTemplate(EffectType.PPhysicalDefense, template.BasePDef);
            AddTemplate(EffectType.PMagicalAttack, template.BaseMAtk);
            AddTemplate(EffectType.PMagicalDefense, template.BaseMDef);
            AddTemplate(EffectType.PSpeed, 700); //template.runspd);

            AddTemplate(EffectType.BMaxWeight, 2500000.0);
            AddTemplate(EffectType.BAccuracy, 50);
            AddTemplate(EffectType.BCriticalRate, 100);
            AddTemplate(EffectType.BEvasion, 50);
            //addTemplate(TEffectType.b_breath, template.B);

            AddTemplate(EffectType.BAttackSpd, template.BasePAtkSpd);
            AddTemplate(EffectType.BCastingSpd, 333);

            AddTemplate(EffectType.BMaxHp, template.HpTable[_owner.Level]);
            AddTemplate(EffectType.BRegHp, template.BaseHpReg);
            AddTemplate(EffectType.BMaxMp, template.MpTable[_owner.Level]);
            AddTemplate(EffectType.BRegMp, template.BaseMpReg);
            AddTemplate(EffectType.BMaxCp, template.CpTable[_owner.Level]);
            AddTemplate(EffectType.BRegCp, 50);
        }
Exemple #7
0
        //TODO: Simplify method body
        public override void RunImpl()
        {
            if (!IsValidChar())
            {
                return;
            }

            PcTemplate template = CharTemplateTable.Instance.GetTemplate(_classId);

            L2Player player = new L2Player(_playerService, _idFactory.NextId(), template);

            player.Inventory   = new PcInventory(_itemService, _idFactory, _itemTable, player);
            player.Name        = _name;
            player.AccountName = _client.AccountName;
            player.Title       = string.Empty;
            player.Sex         = (Gender)_sex;
            player.HairStyleId = (HairStyleId)_hairStyle;
            player.HairColor   = (HairColor)_hairColor;
            player.Face        = (Face)_face;
            player.Exp         = 0;
            player.Level       = 1;
            player.Gameclient  = _client;
            //player.Stats = new CharacterStat(player);
            player.ClassId              = template.ClassId;
            player.BaseClass            = template;
            player.ActiveClass          = template;
            player.CharStatus.CurrentCp = player.MaxCp;
            player.CharStatus.SetCurrentHp(player.MaxHp);
            player.CharStatus.SetCurrentHp(player.MaxMp);
            //player.MaxMp = player.Stats.MaxMp;//;(int)player.CharacterStat.GetStat(EffectType.BMaxMp);
            //player.MaxCp = player.Stats.MaxCp;
            //player.MaxHp = player.Stats.MaxHp;
            player.X        = template.SpawnX;
            player.Y        = template.SpawnY;
            player.Z        = template.SpawnZ;
            player.CharSlot = player.Gameclient.AccountChars.Count;

            if (template.Items != null)
            {
                player.Inventory = new PcInventory(_itemService, _idFactory, _itemTable, player);

                //foreach (PC_item i in template._items)
                //{
                //    if (!i.item.isStackable())
                //    {
                //        for (long s = 0; s < i.count; s++)
                //        {
                //            L2Item item = new L2Item(i.item);
                //            item.Enchant = i.enchant;
                //            if (i.lifetime != -1)
                //                item.AddLimitedHour(i.lifetime);

                //            item.Location = L2Item.L2ItemLocation.inventory;
                //            player.Inventory.addItem(item, false, false);

                //            if (i.equip)
                //            {
                //                int pdollId = player.Inventory.getPaperdollId(item.Template);
                //                player.setPaperdoll(pdollId, item, false);
                //            }
                //        }
                //    }
                //    else
                //        player.addItem(i.item.ItemID, i.count);
                //}
            }

            _playerService.CreatePlayer(player);
            //player = PlayerService.RestorePlayer(player.ObjId, _client);
            player.Gameclient.AccountChars.Add(player);
            _client.SendPacket(new CharCreateOk());
            L2World.Instance.AddPlayer(player);
            _client.SendPacket(new CharacterSelectionInfo(_client.AccountName, _client.AccountChars, _client.SessionKey.PlayOkId1)
            {
                CharId = player.ObjId
            });
        }
Exemple #8
0
        //TODO: Simplify method body
        public override void RunImpl()
        {
            if (_name.Length > 16)
            {
                _client.SendPacket(new CharCreateFail(CharCreateFail.CharCreateFailReason.TooLong16Chars));
                return;
            }

            if (_client.AccountChars.Count > 7)
            {
                _client.SendPacket(new CharCreateFail(CharCreateFail.CharCreateFailReason.TooManyCharsOnAccount));
                return;
            }

            if (PlayerService.CheckIfPlayerNameExists(_name))
            {
                _client.SendPacket(new CharCreateFail(CharCreateFail.CharCreateFailReason.NameExists));
                return;
            }

            PcTemplate template = CharTemplateTable.Instance.GetTemplate((byte)_classId);

            if (template == null)
            {
                _client.SendPacket(new CharCreateFail(CharCreateFail.CharCreateFailReason.CreationRestriction));
                return;
            }

            L2Player player = L2Player.Create();

            player.Name        = _name;
            player.AccountName = _client.AccountName;
            player.Title       = string.Empty;
            player.Sex         = _sex;

            player.HairStyle  = _hairStyle;
            player.HairColor  = _hairColor;
            player.Face       = _face;
            player.Level      = 1;
            player.Gameclient = _client;

            player.Exp = 0;

            player.CStatsInit();
            player.CharacterStat.SetTemplate(template);

            player.BaseClass   = template;
            player.ActiveClass = template;

            player.CurHp = template.HpTable[player.Level];
            player.CurMp = template.MpTable[player.Level];
            player.CurCp = template.CpTable[player.Level];
            player.MaxMp = (int)player.CharacterStat.GetStat(EffectType.BMaxMp);
            player.MaxCp = (int)player.CharacterStat.GetStat(EffectType.BMaxCp);
            player.MaxHp = (int)player.CharacterStat.GetStat(EffectType.BMaxHp);

            player.X = template.SpawnX;
            player.Y = template.SpawnY;
            player.Z = template.SpawnZ;

            if (template.Items != null)
            {
                player.Inventory = new PcInventory(player);

                //foreach (PC_item i in template._items)
                //{
                //    if (!i.item.isStackable())
                //    {
                //        for (long s = 0; s < i.count; s++)
                //        {
                //            L2Item item = new L2Item(i.item);
                //            item.Enchant = i.enchant;
                //            if (i.lifetime != -1)
                //                item.AddLimitedHour(i.lifetime);

                //            item.Location = L2Item.L2ItemLocation.inventory;
                //            player.Inventory.addItem(item, false, false);

                //            if (i.equip)
                //            {
                //                int pdollId = player.Inventory.getPaperdollId(item.Template);
                //                player.setPaperdoll(pdollId, item, false);
                //            }
                //        }
                //    }
                //    else
                //        player.addItem(i.item.ItemID, i.count);
                //}
            }

            player.CharSlot = player.Gameclient.AccountChars.Count;

            PlayerModel playerModel = new PlayerModel
            {
                AccountName          = player.AccountName,
                ObjectId             = player.ObjId,
                Name                 = player.Name,
                Level                = player.Level,
                MaxHp                = player.MaxHp,
                CurHp                = (int)player.CurHp,
                MaxCp                = player.MaxCp,
                CurCp                = (int)player.CurCp,
                MaxMp                = player.MaxMp,
                CurMp                = (int)player.CurMp,
                Face                 = player.Face,
                HairStyle            = player.HairStyle,
                HairColor            = player.HairColor,
                Sex                  = player.Sex,
                Heading              = player.Heading,
                X                    = player.X,
                Y                    = player.Y,
                Z                    = player.Z,
                Exp                  = player.Exp,
                ExpBeforeDeath       = player.ExpOnDeath,
                Sp                   = player.Sp,
                Karma                = player.Karma,
                PvpKills             = player.PvpKills,
                PkKills              = player.PkKills,
                ClanId               = player.ClanId,
                Race                 = (int)player.BaseClass.ClassId.ClassRace,
                ClassId              = (int)player.ActiveClass.ClassId.Id,
                BaseClass            = (int)player.BaseClass.ClassId.Id,
                DeleteTime           = player.DeleteTime,
                CanCraft             = player.CanCraft,
                Title                = player.Title,
                RecHave              = player.RecHave,
                RecLeft              = player.RecLeft,
                AccessLevel          = player.AccessLevel,
                Online               = player.Online,
                OnlineTime           = player.OnlineTime,
                CharSlot             = player.CharSlot,
                LastAccess           = player.LastAccess,
                ClanPrivs            = player.ClanPrivs,
                WantsPeace           = player.WantsPeace,
                IsIn7SDungeon        = player.IsIn7SDungeon,
                PunishLevel          = player.PunishLevel,
                PunishTimer          = player.PunishTimer,
                PowerGrade           = player.PowerGrade,
                Nobless              = player.Nobless,
                Hero                 = player.Hero,
                Subpledge            = player.Subpledge,
                LastRecomDate        = player.LastRecomDate,
                LevelJoinedAcademy   = player.LevelJoinedAcademy,
                Apprentice           = player.Apprentice,
                Sponsor              = player.Sponsor,
                VarkaKetraAlly       = player.VarkaKetraAlly,
                ClanJoinExpiryTime   = player.ClanJoinExpiryTime,
                ClanCreateExpiryTime = player.ClanCreateExpiryTime,
                DeathPenaltyLevel    = player.DeathPenaltyLevel
            };

            PlayerService.CreatePlayer(playerModel);
            player.Gameclient.AccountChars.Add(player);
            _client.SendPacket(new CharCreateOk());
            L2World.Instance.AddPlayer(player);
            _client.SendPacket(new CharacterSelectionInfo(_client.AccountName, _client.AccountChars, _client.SessionId)
            {
                CharId = player.ObjId
            });
        }
Exemple #9
0
        public static void Initialize()
        {
            _templates = new Dictionary <int, PcTemplate>();

            XmlDocument doc = new XmlDocument();

            string[] xmlFilesArray = Directory.GetFiles(@"data\xml\classes\");
            foreach (string i in xmlFilesArray)
            {
                doc.Load(i);

                XmlNodeList nodes = doc.DocumentElement?.SelectNodes("/list/class");

                if (nodes == null)
                {
                    continue;
                }

                foreach (XmlNode node in nodes)
                {
                    XmlElement ownerElement = node.Attributes?[0].OwnerElement;
                    if (ownerElement == null || node.Attributes == null || ownerElement.Name != "class")
                    {
                        continue;
                    }

                    XmlNamedNodeMap attrs   = node.Attributes;
                    ClassId         classId = ClassId.Values.FirstOrDefault(x => (int)x.Id == Convert.ToInt32(attrs.Item(0).Value));
                    StatsSet        set     = new StatsSet();

                    for (XmlNode cd = node.FirstChild; cd?.NextSibling != null; cd = cd.NextSibling)
                    {
                        if (cd.NextSibling.Name == "set")
                        {
                            attrs = cd.NextSibling.Attributes;

                            if (attrs == null)
                            {
                                continue;
                            }

                            string name  = attrs.GetNamedItem("name").Value;
                            string value = attrs.GetNamedItem("val").Value;

                            set.Set(name, value);
                        }
                        else if (cd.NextSibling.Name == "items")
                        {
                            attrs = cd.NextSibling.Attributes;

                            if (attrs == null)
                            {
                                continue;
                            }

                            string value = attrs.GetNamedItem("val").Value;

                            set.Set("items", value);
                        }
                    }

                    PcTemplate pcTempl = new PcTemplate(classId, set);
                    _templates.Add((int)pcTempl.ClassId.Id, pcTempl);
                }
            }

            Log.Info($"Loaded {_templates.Count} character templates.");
        }
Exemple #10
0
        public override void run()
        {
            if (_name.Length < 2 || _name.Length > 16)
            {
                getClient().sendPacket(new CharCreateFail(getClient(), CharCreateFail.CharCreateFailReason.TOO_LONG_16_CHARS));
                return;
            }

            if (getClient()._accountChars.Count > 7)
            {
                getClient().sendPacket(new CharCreateFail(getClient(), CharCreateFail.CharCreateFailReason.TOO_MANY_CHARS_ON_ACCOUNT));
                return;
            }

            bool exists = playerService.CheckIfPlayerNameExists(_name);

            if (exists)
            {
                getClient().sendPacket(new CharCreateFail(getClient(), CharCreateFail.CharCreateFailReason.NAME_EXISTS));
                return;
            }

            PcTemplate template = CharTemplateTable.Instance.GetTemplate((byte)_classId);

            if (template == null)
            {
                getClient().sendPacket(new CharCreateFail(getClient(), CharCreateFail.CharCreateFailReason.CREATION_RESTRICTION));
                return;
            }

            L2Player player = L2Player.create();

            player.Name        = _name;
            player.AccountName = getClient().AccountName;
            player.Title       = "";
            player.Sex         = _sex;

            player.HairStyle  = _hairStyle;
            player.HairColor  = _hairColor;
            player.Face       = _face;
            player.Level      = 1;
            player.Gameclient = getClient();

            player.Exp = 0;

            //player.MaximumHp = template._hp[player.Level];
            player.CStatsInit();
            player.CharacterStat.setTemplate(template);

            player.BaseClass   = template;
            player.ActiveClass = template;

            player.CurHP = template.HpTable[player.Level];
            player.CurMP = template.MpTable[player.Level];
            player.CurCP = template.CpTable[player.Level];
            player.MaxMp = (int)player.CharacterStat.getStat(TEffectType.b_max_mp);
            player.MaxCp = (int)player.CharacterStat.getStat(TEffectType.b_max_cp);

            player.X = -71338;
            player.Y = 258271;
            player.Z = -3104;



            if (template.Items != null)
            {
                player.Inventory        = new InvPC();
                player.Inventory._owner = player;

                //foreach (PC_item i in template._items)
                //{
                //    if (!i.item.isStackable())
                //    {
                //        for (long s = 0; s < i.count; s++)
                //        {
                //            L2Item item = new L2Item(i.item);
                //            item.Enchant = i.enchant;
                //            if (i.lifetime != -1)
                //                item.AddLimitedHour(i.lifetime);

                //            item.Location = L2Item.L2ItemLocation.inventory;
                //            player.Inventory.addItem(item, false, false);

                //            if (i.equip)
                //            {
                //                int pdollId = player.Inventory.getPaperdollId(item.Template);
                //                player.setPaperdoll(pdollId, item, false);
                //            }
                //        }
                //    }
                //    else
                //        player.addItem(i.item.ItemID, i.count);
                //}
            }

            player.CharSlot = player.Gameclient._accountChars.Count + 1;

            PlayerModel playerModel = new PlayerModel()
            {
                AccountName          = player.AccountName,
                ObjectId             = player.ObjID,
                Name                 = player.Name,
                Level                = player.Level,
                MaxHp                = (int)player.MaximumHp,
                CurHp                = (int)player.MaximumHp,
                MaxCp                = player.MaxCp,
                CurCp                = player.MaxCp,
                MaxMp                = player.MaxMp,
                CurMp                = (int)player.CurMp,
                Face                 = player.Face,
                HairStyle            = player.HairStyle,
                HairColor            = player.HairColor,
                Sex                  = player.Sex,
                Heading              = player.Heading,
                X                    = player.X,
                Y                    = player.Y,
                Z                    = player.Z,
                Exp                  = player.Exp,
                ExpBeforeDeath       = player.ExpOnDeath,
                Sp                   = player.SP,
                Karma                = player.Karma,
                PvpKills             = player.PvpKills,
                PkKills              = player.PkKills,
                ClanId               = player.ClanId,
                Race                 = (int)player.BaseClass.ClassId.ClassRace,
                ClassId              = (int)player.ActiveClass.ClassId.Id,
                BaseClass            = (int)player.BaseClass.ClassId.Id,
                DeleteTime           = player.DeleteTime,
                CanCraft             = player.CanCraft,
                Title                = player.Title,
                RecHave              = player.RecHave,
                RecLeft              = player.RecLeft,
                AccessLevel          = player.AccessLevel,
                Online               = player.Online,
                OnlineTime           = player.OnlineTime,
                CharSlot             = player.CharSlot,
                LastAccess           = player.LastAccess,
                ClanPrivs            = player.ClanPrivs,
                WantsPeace           = player.WantsPeace,
                IsIn7sDungeon        = player.IsIn7sDungeon,
                PunishLevel          = player.PunishLevel,
                PunishTimer          = player.PunishTimer,
                PowerGrade           = player.PowerGrade,
                Nobless              = player.Nobless,
                Hero                 = player.Hero,
                Subpledge            = player.Subpledge,
                LastRecomDate        = player.LastRecomDate,
                LevelJoinedAcademy   = player.LevelJoinedAcademy,
                Apprentice           = player.Apprentice,
                Sponsor              = player.Sponsor,
                VarkaKetraAlly       = player.VarkaKetraAlly,
                ClanJoinExpiryTime   = player.ClanJoinExpiryTime,
                ClanCreateExpiryTime = player.ClanCreateExpiryTime,
                DeathPenaltyLevel    = player.DeathPenaltyLevel
            };

            playerService.CreatePlayer(playerModel);
            player.Gameclient._accountChars.Add(player);
            getClient().sendPacket(new CharCreateOk());
            CharacterSelectionInfo csl = new CharacterSelectionInfo(getClient().AccountName, getClient()._accountChars, getClient()._sessionId);

            csl.charId = player.ObjID;
            getClient().sendPacket(csl);
        }