public void UpdateRoleInfo(Role role, int exp, int coin) { RoleEntity roleEntity = RoleDBModel.Instance.GetEntity(role.RoleId); int[] roleLevelExp = GetRoleLevel(roleEntity, exp); Console.WriteLine(roleLevelExp[0] + " " + roleLevelExp[1]); roleEntity.Level = roleLevelExp[0]; roleEntity.Exp = roleLevelExp[1]; roleEntity.Gold = coin; JobEntity jobEntity = JobDBModel.Instance.Get(roleEntity.JobId); JobLevelEntity jobLevelEntity = JobLevelDBModel.Instance.Get(roleEntity.Level); roleEntity.Attack = (int)Math.Round(jobLevelEntity.Attack * (jobEntity.AttackCoefficient * 0.01f)); roleEntity.AttackAddition = 0; roleEntity.Defense = (int)Math.Round(jobLevelEntity.Defense * jobEntity.DefenseCoefficient * 0.01f); roleEntity.DefenseAddition = 0; roleEntity.Res = (int)Math.Round(jobEntity.ResCoefficient * jobLevelEntity.Res * 0.01f); roleEntity.ResAddition = 0; roleEntity.Hit = (int)Math.Round(jobEntity.HitCoefficient * jobLevelEntity.Hit * 0.01f); roleEntity.HitAddition = 0; roleEntity.Cri = (int)Math.Round(jobEntity.CriCoefficient * jobLevelEntity.Cri * 0.01f); roleEntity.CriAddition = 0; roleEntity.Dodge = (int)Math.Round(jobEntity.DodgeCoefficient * jobLevelEntity.Dodge * 0.01f); roleEntity.DodgeAddition = 0; roleEntity.CurrHP = roleEntity.MaxHP = jobLevelEntity.HP; roleEntity.CurrMP = roleEntity.MaxMP = jobLevelEntity.MP; roleEntity.Fighting = FightingUtil.GetRoleFighting(roleEntity.MaxHP, roleEntity.Attack, 0, roleEntity.Defense, 0, roleEntity.Res, 0, roleEntity.Hit, 0, roleEntity.Dodge, 0, roleEntity.Cri, 0); RoleDBModel.Instance.Update(roleEntity); OnRoleInfoResponse(role, roleEntity); }
/// <summary> 客户端请求创建角色 </summary> /// <param name="role"></param> /// <param name="buffer"></param> private void OnRoleCreate(Role role, byte[] buffer) { RoleCreateRequestProto proto = RoleCreateRequestProto.GetProto(buffer); //查询昵称是否存在 int count = RoleCacheModel.Instance.GetCount(string.Format("[NickName]='{0}'", proto.RoleName)); MFReturnValue <object> retValue = null; if (count > 0) { //角色名已经存 retValue = new MFReturnValue <object>(); retValue.HasError = true; } else { RoleEntity entity = new RoleEntity(); entity.JobId = proto.JobId; entity.NickName = proto.RoleName; entity.Status = Mmcoy.Framework.AbstractBase.EnumEntityStatus.Released; entity.AccountId = role.AccountId; entity.CreateTime = DateTime.Now; entity.UpdateTime = DateTime.Now; entity.Level = 1; //给角色战斗相关的属性赋值(根据 职业 等级) JobEntity jobEntity = JobDBModel.Instance.Get(entity.JobId); JobLevelEntity jobLevelEntity = JobLevelDBModel.Instance.Get(entity.Level); entity.Attack = (int)Math.Round(jobLevelEntity.Attack * (jobEntity.AttackCoefficient * 0.01f)); entity.AttackAddition = 0; entity.Defense = (int)Math.Round(jobLevelEntity.Defense * jobEntity.DefenseCoefficient * 0.01f); entity.DefenseAddition = 0; entity.Res = (int)Math.Round(jobEntity.ResCoefficient * jobLevelEntity.Res * 0.01f); entity.ResAddition = 0; entity.Hit = (int)Math.Round(jobEntity.HitCoefficient * jobLevelEntity.Hit * 0.01f); entity.HitAddition = 0; entity.Cri = (int)Math.Round(jobEntity.CriCoefficient * jobLevelEntity.Cri * 0.01f); entity.CriAddition = 0; entity.Dodge = (int)Math.Round(jobEntity.DodgeCoefficient * jobLevelEntity.Dodge * 0.01f); entity.DodgeAddition = 0; entity.CurrHP = entity.MaxHP = jobLevelEntity.HP; entity.CurrMP = entity.MaxMP = jobLevelEntity.MP; entity.Fighting = FightingUtil.GetRoleFighting(entity.MaxHP, entity.Attack, 0, entity.Defense, 0, entity.Res, 0, entity.Hit, 0, entity.Dodge, 0, entity.Cri, 0); entity.FightingAddition = 0; entity.LastInWorldMapId = 1; retValue = RoleCacheModel.Instance.Create(entity); Console.WriteLine(retValue.ReturnCode + " " + retValue.OutputValues["Id"] + " " + retValue.Message); } OnRoleCreateResponse(role, retValue); }
public void SetMonsterData(MonsterEntity entity) { NickName = entity.Name; CurrHP = MaxHP = entity.HP; //CurrHP = MaxHP = entity.HP+99999999; Attack = entity.Attack; Defense = entity.Defense; Res = entity.ResDefense; Hit = entity.Hit; Dodge = entity.Dodge; Cri = entity.Cri; int fighting = FightingUtil.CalculateRoleFighting(MaxHP, Attack, AttackAddition, Defense, DefenseAddition, Res, ResAddition, Hit, HitAddition, Dodge, DodgeAddition, Cri, CriAddition); SetFighting(fighting); }