[Release] Create martial artist 4th class in the creation menu

05/25/2019 02:27 redbull2905#1
1: OpenNos.GameObject/Packet/ClientPacket =>

Code:
using OpenNos.Core;
using OpenNos.Domain;

namespace OpenNos.Packets.ClientPackets
{
    [PacketHeader("CHAR_NEW_JOB", PassNonParseablePacket = true)]
    public class MartialArtistCreatePacket : PacketDefinition
    {
        [PacketIndex(0)]
        public string Name { get; set; }

        [PacketIndex(1)]
        public byte Slot { get; set; }

        [PacketIndex(2)]
        public GenderType Gender { get; set; }

        [PacketIndex(3)]
        public HairStyleType HairStyle { get; set; }

        [PacketIndex(4)]
        public HairColorType HairColor { get; set; }
    }
}
2: OpenNos.Handler/CharacterScreenPacketHandler =>


Code:
        /// <summary>
        /// Char_NEW character creation character
        /// </summary>
        /// <param name="characterCreatePacket"></param>
        public void CreateCharacterWrestler(MartialArtistCreatePacket characterCreatePacket)
        {
            if (Session.HasCurrentMapInstance)
            {
                return;
            }

            // TODO: Hold Account Information in Authorized object
            long accountId = Session.Account.AccountId;
            Logger.LogUserEvent("CREATECHARACTER", Session.GenerateIdentity(),
                $"[CreateCharacter]Name: {characterCreatePacket.Name} Slot: {characterCreatePacket.Slot} Gender: {characterCreatePacket.Gender} HairStyle: {characterCreatePacket.HairStyle} HairColor: {characterCreatePacket.HairColor}");
            if (characterCreatePacket.Slot <= 3
                && DAOFactory.CharacterDAO.LoadBySlot(accountId, characterCreatePacket.Slot) == null
                && characterCreatePacket.Name.Length > 3 && characterCreatePacket.Name.Length < 15)
            {
                Regex rg = new Regex(@"^[\u0021-\u007E\u00A1-\u00AC\u00AE-\u00FF\u4E00-\u9FA5\u0E01-\u0E3A\u0E3F-\u0E5B\u002E]*$");
                if (rg.Matches(characterCreatePacket.Name).Count == 1)
                {
                    bool canCreate = DAOFactory.CharacterDAO.LoadByAccount(Session.Account.AccountId).Any(character => character.Level >= 80
                    && character.State == CharacterState.Active);

                    if (!canCreate)
                    {
                        Session.SendPacket(UserInterfaceHelper.GenerateInfo($"Vous ne pouvez pas créer d’artiste martial (Niv. 80, requis))"));
                        return;
                    }

                    bool AlreadyHaveMartial = DAOFactory.CharacterDAO.LoadByAccount(
                    Session.Account.AccountId).Any(s =>
                    s.Class == ClassType.Fighter && s.State == CharacterState.Active);

                    if (AlreadyHaveMartial)
                    {
                        Session.SendPacket(UserInterfaceHelper.GenerateInfo($"Vous ne pouvez pas créer d'artiste martial (Supprimer votre artiste martial)"));
                        return;
                    }

                    if (DAOFactory.CharacterDAO.LoadByName(characterCreatePacket.Name) == null)
                    {
                        if (characterCreatePacket.Slot > 3)
                        {
                            return;
                        }
                        CharacterDTO newCharacter = new CharacterDTO
                        {
                            Class = ClassType.Fighter,
                            Gender = characterCreatePacket.Gender,
                            HairColor = characterCreatePacket.HairColor,
                            HairStyle = characterCreatePacket.HairStyle,
                            Hp = 12390,
                            JobLevel = 20,
                            Level = 81,
                            MapId = 1,
                            MapX = 80,
                            MapY = 116,
                            Mp = 2490,
                            MaxMateCount = 10,
                            SpPoint = 10000,
                            SpAdditionPoint = 0,
                            Name = characterCreatePacket.Name,
                            Slot = characterCreatePacket.Slot,
                            AccountId = accountId,
                            MinilandMessage = "WELCOME",
                            State = CharacterState.Active,
                            MinilandPoint = 2000,
                            Gold = 20000,
                            Reputation = 50000,
                        };

                        DAOFactory.CharacterDAO.InsertOrUpdate(ref newCharacter);
                        CharacterSkillDTO sk1 =
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1525 };

                        // init skills
                        List<CharacterSkillDTO> wSkills = new List<CharacterSkillDTO>
                        {
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1525 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1526 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1527 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1528 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1529 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1530 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1531 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1532 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1533 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1534 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1535 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1536 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1537 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1538 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1539 }
                        };

                        DAOFactory.CharacterSkillDAO.InsertOrUpdate(wSkills);
                        DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk1);

                        using (Inventory startupInventory = new Inventory(new Character(newCharacter)))
                        {
                            startupInventory.AddNewToInventory(4757, 1, InventoryType.Wear, 4, 8);
                            startupInventory.AddNewToInventory(4756, 1, InventoryType.Wear, 4, 8);                            
                            startupInventory.AddNewToInventory(4758, 1, InventoryType.Wear, 4, 8);
                            startupInventory.AddNewToInventory(1907, 1, InventoryType.Main);
                            startupInventory.AddNewToInventory(800, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(801, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(802, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(803, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(1452, 3, InventoryType.Main);
                            startupInventory.AddNewToInventory(4486, 1, InventoryType.Equipment, 80, 9);
                            startupInventory.ForEach(i => DAOFactory.IteminstanceDAO.InsertOrUpdate(i));
                            LoadCharacters(characterCreatePacket.OriginalContent);
                        }
                    }
                    else
                    {
                        Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("ALREADY_TAKEN")}");
                    }
                }
                else
                {
                    Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("INVALID_CHARNAME")}");
                }
            }
        }
enjoy~
05/25/2019 13:06 FI0w#2
Quote:
Originally Posted by redbull2905 View Post
1: OpenNos.GameObject/Packet/ClientPacket =>

Code:
using OpenNos.Core;
using OpenNos.Domain;

namespace OpenNos.Packets.ClientPackets
{
    [PacketHeader("CHAR_NEW_JOB", PassNonParseablePacket = true)]
    public class MartialArtistCreatePacket : PacketDefinition
    {
        [PacketIndex(0)]
        public string Name { get; set; }

        [PacketIndex(1)]
        public byte Slot { get; set; }

        [PacketIndex(2)]
        public GenderType Gender { get; set; }

        [PacketIndex(3)]
        public HairStyleType HairStyle { get; set; }

        [PacketIndex(4)]
        public HairColorType HairColor { get; set; }
    }
}
2: OpenNos.Handler/CharacterScreenPacketHandler =>


Code:
        /// <summary>
        /// Char_NEW character creation character
        /// </summary>
        /// <param name="characterCreatePacket"></param>
        public void CreateCharacterWrestler(MartialArtistCreatePacket characterCreatePacket)
        {
            if (Session.HasCurrentMapInstance)
            {
                return;
            }

            // TODO: Hold Account Information in Authorized object
            long accountId = Session.Account.AccountId;
            Logger.LogUserEvent("CREATECHARACTER", Session.GenerateIdentity(),
                $"[CreateCharacter]Name: {characterCreatePacket.Name} Slot: {characterCreatePacket.Slot} Gender: {characterCreatePacket.Gender} HairStyle: {characterCreatePacket.HairStyle} HairColor: {characterCreatePacket.HairColor}");
            if (characterCreatePacket.Slot <= 3
                && DAOFactory.CharacterDAO.LoadBySlot(accountId, characterCreatePacket.Slot) == null
                && characterCreatePacket.Name.Length > 3 && characterCreatePacket.Name.Length < 15)
            {
                Regex rg = new Regex(@"^[\u0021-\u007E\u00A1-\u00AC\u00AE-\u00FF\u4E00-\u9FA5\u0E01-\u0E3A\u0E3F-\u0E5B\u002E]*$");
                if (rg.Matches(characterCreatePacket.Name).Count == 1)
                {
                    bool canCreate = DAOFactory.CharacterDAO.LoadByAccount(Session.Account.AccountId).Any(character => character.Level >= 80
                    && character.State == CharacterState.Active);

                    if (!canCreate)
                    {
                        Session.SendPacket(UserInterfaceHelper.GenerateInfo($"Vous ne pouvez pas créer d’artiste martial (Niv. 80, requis))"));
                        return;
                    }

                    bool AlreadyHaveMartial = DAOFactory.CharacterDAO.LoadByAccount(
                    Session.Account.AccountId).Any(s =>
                    s.Class == ClassType.Fighter && s.State == CharacterState.Active);

                    if (AlreadyHaveMartial)
                    {
                        Session.SendPacket(UserInterfaceHelper.GenerateInfo($"Vous ne pouvez pas créer d'artiste martial (Supprimer votre artiste martial)"));
                        return;
                    }

                    if (DAOFactory.CharacterDAO.LoadByName(characterCreatePacket.Name) == null)
                    {
                        if (characterCreatePacket.Slot > 3)
                        {
                            return;
                        }
                        CharacterDTO newCharacter = new CharacterDTO
                        {
                            Class = ClassType.Fighter,
                            Gender = characterCreatePacket.Gender,
                            HairColor = characterCreatePacket.HairColor,
                            HairStyle = characterCreatePacket.HairStyle,
                            Hp = 12390,
                            JobLevel = 20,
                            Level = 81,
                            MapId = 1,
                            MapX = 80,
                            MapY = 116,
                            Mp = 2490,
                            MaxMateCount = 10,
                            SpPoint = 10000,
                            SpAdditionPoint = 0,
                            Name = characterCreatePacket.Name,
                            Slot = characterCreatePacket.Slot,
                            AccountId = accountId,
                            MinilandMessage = "WELCOME",
                            State = CharacterState.Active,
                            MinilandPoint = 2000,
                            Gold = 20000,
                            Reputation = 50000,
                        };

                        DAOFactory.CharacterDAO.InsertOrUpdate(ref newCharacter);
                        CharacterSkillDTO sk1 =
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1525 };

                        // init skills
                        List<CharacterSkillDTO> wSkills = new List<CharacterSkillDTO>
                        {
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1525 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1526 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1527 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1528 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1529 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1530 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1531 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1532 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1533 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1534 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1535 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1536 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1537 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1538 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1539 }
                        };

                        DAOFactory.CharacterSkillDAO.InsertOrUpdate(wSkills);
                        DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk1);

                        using (Inventory startupInventory = new Inventory(new Character(newCharacter)))
                        {
                            startupInventory.AddNewToInventory(4757, 1, InventoryType.Wear, 4, 8);
                            startupInventory.AddNewToInventory(4756, 1, InventoryType.Wear, 4, 8);                            
                            startupInventory.AddNewToInventory(4758, 1, InventoryType.Wear, 4, 8);
                            startupInventory.AddNewToInventory(1907, 1, InventoryType.Main);
                            startupInventory.AddNewToInventory(800, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(801, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(802, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(803, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(1452, 3, InventoryType.Main);
                            startupInventory.AddNewToInventory(4486, 1, InventoryType.Equipment, 80, 9);
                            startupInventory.ForEach(i => DAOFactory.IteminstanceDAO.InsertOrUpdate(i));
                            LoadCharacters(characterCreatePacket.OriginalContent);
                        }
                    }
                    else
                    {
                        Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("ALREADY_TAKEN")}");
                    }
                }
                else
                {
                    Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("INVALID_CHARNAME")}");
                }
            }
        }
enjoy~
Credits?
05/25/2019 13:08 Itachi-Senpai#3
Quote:
Originally Posted by FI0w View Post
Credits?
sag mal ist das deine version?
05/25/2019 13:09 FI0w#4
Quote:
Originally Posted by Itachi-Senpai View Post
sag mal ist das deine version?
Bin ehrlich hab kA nur hat er es niemals selbst gemacht :rolleyes:
05/27/2019 20:36 0Lucifer0#5
Quote:
Originally Posted by redbull2905 View Post
1: OpenNos.GameObject/Packet/ClientPacket =>

Code:
using OpenNos.Core;
using OpenNos.Domain;

namespace OpenNos.Packets.ClientPackets
{
    [PacketHeader("CHAR_NEW_JOB", PassNonParseablePacket = true)]
    public class MartialArtistCreatePacket : PacketDefinition
    {
        [PacketIndex(0)]
        public string Name { get; set; }

        [PacketIndex(1)]
        public byte Slot { get; set; }

        [PacketIndex(2)]
        public GenderType Gender { get; set; }

        [PacketIndex(3)]
        public HairStyleType HairStyle { get; set; }

        [PacketIndex(4)]
        public HairColorType HairColor { get; set; }
    }
}
2: OpenNos.Handler/CharacterScreenPacketHandler =>


Code:
        /// <summary>
        /// Char_NEW character creation character
        /// </summary>
        /// <param name="characterCreatePacket"></param>
        public void CreateCharacterWrestler(MartialArtistCreatePacket characterCreatePacket)
        {
            if (Session.HasCurrentMapInstance)
            {
                return;
            }

            // TODO: Hold Account Information in Authorized object
            long accountId = Session.Account.AccountId;
            Logger.LogUserEvent("CREATECHARACTER", Session.GenerateIdentity(),
                $"[CreateCharacter]Name: {characterCreatePacket.Name} Slot: {characterCreatePacket.Slot} Gender: {characterCreatePacket.Gender} HairStyle: {characterCreatePacket.HairStyle} HairColor: {characterCreatePacket.HairColor}");
            if (characterCreatePacket.Slot <= 3
                && DAOFactory.CharacterDAO.LoadBySlot(accountId, characterCreatePacket.Slot) == null
                && characterCreatePacket.Name.Length > 3 && characterCreatePacket.Name.Length < 15)
            {
                Regex rg = new Regex(@"^[\u0021-\u007E\u00A1-\u00AC\u00AE-\u00FF\u4E00-\u9FA5\u0E01-\u0E3A\u0E3F-\u0E5B\u002E]*$");
                if (rg.Matches(characterCreatePacket.Name).Count == 1)
                {
                    bool canCreate = DAOFactory.CharacterDAO.LoadByAccount(Session.Account.AccountId).Any(character => character.Level >= 80
                    && character.State == CharacterState.Active);

                    if (!canCreate)
                    {
                        Session.SendPacket(UserInterfaceHelper.GenerateInfo($"Vous ne pouvez pas créer d’artiste martial (Niv. 80, requis))"));
                        return;
                    }

                    bool AlreadyHaveMartial = DAOFactory.CharacterDAO.LoadByAccount(
                    Session.Account.AccountId).Any(s =>
                    s.Class == ClassType.Fighter && s.State == CharacterState.Active);

                    if (AlreadyHaveMartial)
                    {
                        Session.SendPacket(UserInterfaceHelper.GenerateInfo($"Vous ne pouvez pas créer d'artiste martial (Supprimer votre artiste martial)"));
                        return;
                    }

                    if (DAOFactory.CharacterDAO.LoadByName(characterCreatePacket.Name) == null)
                    {
                        if (characterCreatePacket.Slot > 3)
                        {
                            return;
                        }
                        CharacterDTO newCharacter = new CharacterDTO
                        {
                            Class = ClassType.Fighter,
                            Gender = characterCreatePacket.Gender,
                            HairColor = characterCreatePacket.HairColor,
                            HairStyle = characterCreatePacket.HairStyle,
                            Hp = 12390,
                            JobLevel = 20,
                            Level = 81,
                            MapId = 1,
                            MapX = 80,
                            MapY = 116,
                            Mp = 2490,
                            MaxMateCount = 10,
                            SpPoint = 10000,
                            SpAdditionPoint = 0,
                            Name = characterCreatePacket.Name,
                            Slot = characterCreatePacket.Slot,
                            AccountId = accountId,
                            MinilandMessage = "WELCOME",
                            State = CharacterState.Active,
                            MinilandPoint = 2000,
                            Gold = 20000,
                            Reputation = 50000,
                        };

                        DAOFactory.CharacterDAO.InsertOrUpdate(ref newCharacter);
                        CharacterSkillDTO sk1 =
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1525 };

                        // init skills
                        List<CharacterSkillDTO> wSkills = new List<CharacterSkillDTO>
                        {
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1525 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1526 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1527 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1528 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1529 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1530 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1531 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1532 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1533 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1534 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1535 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1536 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1537 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1538 },
                            new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 1539 }
                        };

                        DAOFactory.CharacterSkillDAO.InsertOrUpdate(wSkills);
                        DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk1);

                        using (Inventory startupInventory = new Inventory(new Character(newCharacter)))
                        {
                            startupInventory.AddNewToInventory(4757, 1, InventoryType.Wear, 4, 8);
                            startupInventory.AddNewToInventory(4756, 1, InventoryType.Wear, 4, 8);                            
                            startupInventory.AddNewToInventory(4758, 1, InventoryType.Wear, 4, 8);
                            startupInventory.AddNewToInventory(1907, 1, InventoryType.Main);
                            startupInventory.AddNewToInventory(800, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(801, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(802, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(803, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(1452, 3, InventoryType.Main);
                            startupInventory.AddNewToInventory(4486, 1, InventoryType.Equipment, 80, 9);
                            startupInventory.ForEach(i => DAOFactory.IteminstanceDAO.InsertOrUpdate(i));
                            LoadCharacters(characterCreatePacket.OriginalContent);
                        }
                    }
                    else
                    {
                        Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("ALREADY_TAKEN")}");
                    }
                }
                else
                {
                    Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("INVALID_CHARNAME")}");
                }
            }
        }
enjoy~
Would have been easier to call the createcharacter method... [Only registered and activated users can see links. Click Here To Register...]
you just need two additional if for this class...
05/28/2019 00:16 redbull2905#6
Quote:
Originally Posted by FI0w View Post
Bin ehrlich hab kA nur hat er es niemals selbst gemacht :rolleyes:
and you except criticize that everyone do you do anything ? :babyrage:
05/29/2019 00:58 GGGGame#7
Copy Paste ->

Class = ClassType.Fighter,

"Hi guys i release this new fix" :kappa:
05/29/2019 04:02 Cryless~#8
Quote:
Originally Posted by GGGGame View Post
Copy Paste ->

Class = ClassType.Fighter,

"Hi guys i release this new fix" :kappa:
But he's right. Flow is useless. :D
05/30/2019 21:04 Bull.#9
funny.. grab please the popcorn..

Hi @[Only registered and activated users can see links. Click Here To Register...]

Please give me the popcorn!
05/30/2019 23:49 Cryless~#10
Quote:
Originally Posted by Bull. View Post
funny.. grab please the popcorn..

Hi @[Only registered and activated users can see links. Click Here To Register...]

Please give me the popcorn!
I give you a bull shit.

;)