//用第一次创建 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); }
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); }
//装备技能 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); }