// 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); }
// 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!")); } } }
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); }