示例#1
0
        // Construtores
        public static SMobList New()
        {
            SMobList tmp = new SMobList()
            {
                Mob             = SMob.New(),
                Number          = 0,
                Speed           = 1,
                PositionInicial = SPosition.New(),
                PositionFinal   = SPosition.New(),
                FreqStep        = 1,
                IdGroup         = 0,
                Tab             = ""
            };

            return(tmp);
        }
示例#2
0
        // Controlador
        public static void Controller(Client client, P_20F rcv)
        {
            if (!Regex.IsMatch(rcv.Name, @"^[A-Za-z0-9-]{4,12}$"))
            {
                client.Send(P_101.New("Somente letras e números no nome. 4 a 12 caracteres."));
            }
            else if (rcv.Slot < 0 || rcv.Slot > 3)
            {
                client.Close( );
            }
            else if (rcv.ClassInfo < 0 || rcv.ClassInfo > 3)
            {
                client.Close( );
            }
            else
            {
                // Retorna character da conta
                ref Character character = ref client.Account.Characters[rcv.Slot];

                // Verifica se não está vaziu
                if (character != null)
                {
                    client.Close( );
                }
                else
                {
                    character               = new Character(SMob.New());
                    character.Mob.Name      = rcv.Name;
                    character.Mob.ClassInfo = (ClassInfo)rcv.ClassInfo;
                    character               = UserMobDAO.CreateOrUpdateChar(character);

                    if (character != null)
                    {
                        //Atualiza o xml da account para salvar o novo char criado
                        UserAccountDAO.CreateOrUpdateAccount(client.Account);

                        // Envia os pacotes de criação de personagem
                        client.Send(P_110.New(client));
                        client.Send(P_101.New($"Personagem [{character.Mob.Name}] criado! Bom jogo!"));
                    }
                    else
                    {
                        client.Send(P_101.New($"Erro ao criar o personagem, contate o suporte!"));
                    }
                }
            }
示例#3
0
        public static Character CreateOrUpdateChar(Character character)
        {
            lock (m_Locker)
            {
                DeleteCharFile(character);
                SMob userMob = SMob.New();
                switch (character.Mob.ClassInfo)
                {
                case ClassInfo.TK:
                    userMob = SMob.TK(character.Mob.Name);
                    break;

                case ClassInfo.FM:
                    userMob = SMob.FM(character.Mob.Name);
                    break;

                case ClassInfo.BM:
                    userMob = SMob.BM(character.Mob.Name);
                    break;

                case ClassInfo.HT:
                    userMob = SMob.HT(character.Mob.Name);
                    break;
                }

                using (XmlWriter xw = XmlWriter.Create(GetPath(character.Mob.Name), m_WriterSettings))
                    m_Serializator.Serialize(xw, character);

                if (Exists(character.Mob.Name))
                {
                    return(new Character(userMob));
                }

                return(null);
            }
        }
        private static SMob convertMobBinToXml(STRUCT_MOB paMob)
        {
            SMob mob = SMob.New();

            mob.Name       = paMob.name;
            mob.CapaReino  = paMob.Clan;
            mob.Merchant   = paMob.Merchant;
            mob.GuildIndex = paMob.Guild;
            mob.ClassInfo  = paMob.Class > 4 ? ClassInfo.TK : (ClassInfo)paMob.Class;
            mob.AffectInfo = paMob.resistencia;
            mob.QuestInfo  = paMob.Quest;
            mob.Gold       = paMob.gold;
            // mob.Unk1 = new byte[0](paMob.Unk1);
            mob.Exp          = (ulong)paMob.Exp;
            mob.LastPosition = SPosition.New(paMob.SPX, paMob.SPY);
            mob.BaseStatus   = new SStatus();
            mob.GameStatus   = new SStatus();
            mob.Equip        = new SItem[16];
            mob.Inventory    = new SItem[60];
            mob.Andarilho    = new SItem[2];
            //mob.Unk2 = new byte[8];
            mob.Item547     = 0;
            mob.ChaosPoints = 0;
            mob.CurrentKill = 0;
            mob.TotalKill   = 0;
            //mob.Unk3 = new byte[2];
            mob.LearnedSkill = paMob.LearnedSkill;
            mob.StatusPoint  = paMob.ScoreBonus;
            mob.MasterPoint  = paMob.SpecialBonus;
            mob.SkillPoint   = paMob.SkillBonus;
            mob.Critical     = paMob.Critical;
            mob.SaveMana     = paMob.SaveMana;
            mob.SkillBar1    = paMob.SkillBar;

            //mob.Unk4 = new byte[4];
            mob.Resistencia[0] = paMob.Resist[0];
            mob.Resistencia[1] = paMob.Resist[1];
            mob.Resistencia[2] = paMob.Resist[2];
            mob.Resistencia[3] = paMob.Resist[3];
            //mob.Unk5 = new byte[210];
            mob.MagicIncrement = (short)paMob.Magic;
            mob.Tab            = "";


            mob.BaseStatus.Level   = paMob.BaseScore.Level;
            mob.BaseStatus.Defense = paMob.BaseScore.Defesa;
            mob.BaseStatus.Attack  = paMob.BaseScore.Ataque;

            mob.BaseStatus.Merchant  = paMob.BaseScore.Merchante;
            mob.BaseStatus.MobSpeed  = paMob.BaseScore.Speed;
            mob.BaseStatus.Direction = paMob.BaseScore.Direcao;
            mob.BaseStatus.ChaosRate = paMob.BaseScore.ChaosRate;

            mob.BaseStatus.MaxHP = paMob.BaseScore.MaxHP;
            mob.BaseStatus.MaxMP = paMob.BaseScore.MaxMP;
            mob.BaseStatus.CurHP = paMob.BaseScore.HP;
            mob.BaseStatus.CurMP = paMob.BaseScore.MP;

            mob.BaseStatus.Str = paMob.BaseScore.Str;
            mob.BaseStatus.Int = paMob.BaseScore.Int;
            mob.BaseStatus.Dex = paMob.BaseScore.Dex;
            mob.BaseStatus.Con = paMob.BaseScore.Con;



            ///
            mob.GameStatus.Level   = paMob.CurrentScore.Level;
            mob.GameStatus.Defense = paMob.CurrentScore.Defesa;
            mob.GameStatus.Attack  = paMob.CurrentScore.Ataque;

            mob.GameStatus.Merchant  = paMob.CurrentScore.Merchante;
            mob.GameStatus.MobSpeed  = paMob.CurrentScore.Speed;
            mob.GameStatus.Direction = paMob.CurrentScore.Direcao;
            mob.GameStatus.ChaosRate = paMob.CurrentScore.ChaosRate;

            mob.GameStatus.MaxHP = paMob.CurrentScore.MaxHP;
            mob.GameStatus.MaxMP = paMob.CurrentScore.MaxMP;
            mob.GameStatus.CurHP = paMob.CurrentScore.HP;
            mob.GameStatus.CurMP = paMob.CurrentScore.MP;

            mob.GameStatus.Str = paMob.CurrentScore.Str;
            mob.GameStatus.Int = paMob.CurrentScore.Int;
            mob.GameStatus.Dex = paMob.CurrentScore.Dex;
            mob.GameStatus.Con = paMob.CurrentScore.Con;

            mob.Affects = new SAffect[32];

            for (int i = 0; i < paMob.Equip.Length; i++)
            {
                mob.Equip[i].Id = paMob.Equip[i].sIndex;
                mob.Equip[i].Ef = new SItemEF[3];
                for (int a = 0; a < paMob.Equip[i].sEffect.Length; a++)
                {
                    mob.Equip[i].Ef[a].Type  = paMob.Equip[i].sEffect[a].cEfeito;
                    mob.Equip[i].Ef[a].Value = paMob.Equip[i].sEffect[a].cValue;
                }
            }

            try
            {
                for (int i = 0; i < 60; i++)
                {
                    mob.Inventory[i].Id = paMob.Carry[i].sIndex;
                    mob.Inventory[i].Ef = new SItemEF[3];
                    for (int a = 0; a < paMob.Carry[i].sEffect.Length; a++)
                    {
                        mob.Inventory[i].Ef[a].Type  = paMob.Carry[i].sEffect[a].cEfeito;
                        mob.Inventory[i].Ef[a].Value = paMob.Carry[i].sEffect[a].cValue;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);;
            }


            return(mob);
        }