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);
        }
Exemple #3
0
    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);
    }