Пример #1
0
        //用第一次创建
        public DBSkill InitByBase(SkillData _this, CharacterController character, int characterTableId)
        {
            _this.mCharacter = character;
            var dbData = new DBSkill();

            _this.mDbData = dbData;
            var tbcr = Table.GetCharacterBase(characterTableId);

            foreach (var i in tbcr.InitSkill)
            {
                if (i < 0)
                {
                    continue;
                }
                var tbskill = Table.GetSkill(i);
                if (tbskill.Type == 0) //普攻
                {
                    _this.mDbData.Skills[i] = 1;
                }
                else if (tbskill.Type == 1) //技能
                {
                    _this.mDbData.Skills[i] = 0;
                }
                else if (tbskill.Type == 3) //xp技能
                {
                    _this.mDbData.Skills[i] = 0;
                }
                else
                {
                    Logger.Warn("Skill InitByBase Type is Error!! ID={0}", i);
                }
            }

            //被动技能
            {
                //if (!string.IsNullOrEmpty(tbcr.PassiveSkillGroup))
                //{
                //    var passiveSkillGroup = tbcr.PassiveSkillGroup.Split('|');
                //    foreach (var passive in passiveSkillGroup)
                //    {
                //        var skillId = -1;
                //        if (int.TryParse(passive, out skillId))
                //        {
                //            if (skillId < 0)
                //            {
                //                continue;
                //            }
                //            var tbSkill = Table.GetSkill(skillId);
                //            if (tbSkill != null)
                //            {
                //                _this.mDbData.Skills[skillId] = 0;
                //            }
                //        }
                //        else
                //        {
                //            Logger.Warn("Skill InitByBase Type is Error!! ID={0}", skillId);
                //        }
                //    }
                //}
            }


            var maxEquipCount = Table.GetServerConfig(700).ToInt();


            for (var i = 0; i < maxEquipCount; i++)
            {
                _this.mDbData.EquipSkills.Add(-1);
                //_this.mDbData.EquipSkills_Passive.Add(-1);
            }


            //switch (characterTableId)
            //{
            //    case 0:
            //    {
            //        mDbData.EquipSkills.Add(4);
            //        mDbData.EquipSkills.Add(5);
            //        mDbData.EquipSkills.Add(6);
            //        mDbData.EquipSkills.Add(8);
            //    }
            //    break;
            //    case 1:
            //    {
            //        mDbData.EquipSkills.Add(105);
            //        mDbData.EquipSkills.Add(106);
            //        mDbData.EquipSkills.Add(108);
            //        mDbData.EquipSkills.Add(110);
            //    }
            //    break;
            //    case 2:
            //    {
            //        mDbData.EquipSkills.Add(204);
            //        mDbData.EquipSkills.Add(206);
            //        mDbData.EquipSkills.Add(205);
            //        mDbData.EquipSkills.Add(208);
            //    }
            //    break;
            //}

            _this.mFlag = true;
            _this.MarkDirty();
            return(dbData);
        }
Пример #2
0
        public ErrorCodes UpgradeSkill(SkillData _this, int nId, ref int result)
        {
            int nOldLevel;

            if (!_this.mDbData.Skills.TryGetValue(nId, out nOldLevel))
            {
                Logger.Warn("UpgradeSkill={0} not find !", nId);
                return(ErrorCodes.Error_NotHaveSkill);
            }
            if (nOldLevel * 5 > _this.mCharacter.GetLevel())
            {
                return(ErrorCodes.Error_SkillLevelMax);
            }
            //int maxLevel = mCharacter.GetLevel()/5 + 10;  //todo
            //if (nOldLevel >= maxLevel)
            //{
            //    return ErrorCodes.Error_SkillLevelMax;
            //}
            var tbSkill = Table.GetSkill(nId);

            if (tbSkill == null)
            {
                return(ErrorCodes.Error_SkillID);
            }
            if (tbSkill.NeedMoney == -1)//表中需要改此数值
            {
                return(ErrorCodes.Error_SkillNoTUpgrade);
            }
            var tbUpgrade     = Table.GetSkillUpgrading(tbSkill.NeedMoney);
            var needValue     = tbUpgrade.GetSkillUpgradingValue(nOldLevel - 1);
            var tbUpgradeTyp  = Table.GetSkillUpgrading(999);
            var needValueType = tbUpgradeTyp.GetSkillUpgradingValue(nOldLevel - 1);

            if (needValue < 1)
            {
                return(ErrorCodes.Error_SkillNoTUpgrade);
            }
            if (_this.mCharacter.mBag.GetItemCount(needValueType) < needValue)
            {
                return(ErrorCodes.Error_ResNoEnough);
            }
            _this.mCharacter.mBag.DeleteItem(needValueType, needValue, eDeleteItemType.UpgradeSkill);
            LevelUpSkill(_this, nId, nOldLevel + 1);
            var e = new UpgradeSkillEvent(_this.mCharacter, nId);

            EventDispatcher.Instance.DispatchEvent(e);
            _this.mCharacter.AddExData((int)eExdataDefine.e89, 1);

            try
            {
                var klog = string.Format("upgradeskill#{0}|{1}|{2}|{3}|{4}|{5}",
                                         _this.mCharacter.mGuid,
                                         _this.mCharacter.GetLevel(),
                                         _this.mCharacter.serverId,
                                         nId,
                                         nOldLevel,
                                         DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                PlayerLog.Kafka(klog, 2);
            }
            catch (Exception exception)
            {
                Logger.Error(exception.Message);
            }

            return(ErrorCodes.OK);
        }
Пример #3
0
        //装备技能
        public ErrorCodes EquipSkills(SkillData _this, List <int> skills)
        {
            var index           = 0;
            var OldSkills       = new Int32Array();
            var TempEquipSkills = OldSkills.Items;

            TempEquipSkills.AddRange(_this.mDbData.EquipSkills);
            var maxEquipCount = Table.GetServerConfig(700).ToInt();

            foreach (var i in skills)
            {
                if (i != -1)
                {
                    if (GetSkillLevel(_this, i) == 0)
                    {
                        return(ErrorCodes.Error_NotHaveSkill);
                    }
                }
                if (index > maxEquipCount)
                {
                    return(ErrorCodes.Error_DataOverflow);
                }
                if (i != -1 && skills.GetValueCount(i) > 1)
                {
                    Logger.Error("EquipSkills ={0}", skills.GetDataString());
                    return(ErrorCodes.Unknow);
                }
                index++;
            }
            index = 0;
            foreach (var i in skills)
            {
                _this.mDbData.EquipSkills[index] = i;
                index++;
            }
            //news
            var newSkills   = new Int32Array();
            var skillLevels = new Int32Array();

            foreach (var i in _this.mDbData.EquipSkills)
            {
                newSkills.Items.Add(i);
                skillLevels.Items.Add(GetSkillLevel(_this, i));
            }
            _this.mCharacter.EquipSkillChange(OldSkills, newSkills, skillLevels);
            //foreach (int skillId in TempEquipSkills)
            //{
            //    if(skillId==-1) continue;
            //    if (!mDbData.EquipSkills.Contains(skillId))
            //    {
            //        mCharacter.SkillChange(0, skillId, 0);
            //    }
            //}
            //foreach (int skillId in mDbData.EquipSkills)
            //{
            //    if (!TempEquipSkills.Contains(skillId))
            //    {
            //        mCharacter.SkillChange(1, skillId, GetSkillLevel(skillId));
            //    }
            //}
            _this.MarkDirty();
            return(ErrorCodes.OK);
        }