// 重置CD [2/17/2012 SUN] public void ResetXinfaCDTime(int nID) { SCLIENT_SKILLCLASS pXinFa = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(nID); if (pXinFa == null) { CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "No xinfa"); return; } //不需重置 if (GetUpLevelXinfaCDTime() == 0) { return; } int resetSpend = GetUpLevelXinfaResetCDSpend(nID); if (resetSpend != -1) { int nMoney = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_Money(); if (resetSpend > nMoney) { CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "Not enough money"); return; } } CGAskClearCDTime msg = (CGAskClearCDTime)NetManager.GetNetManager().CreatePacket((int)PACKET_DEFINE.PACKET_CG_ASKCLEARCDTIME); msg.CoolDownID = (short)nID; NetManager.GetNetManager().SendPacket(msg); }
//------------ //学习(升级)门派心法相关 五行属性 //------------ public void SendStudySkillEvent(int nSkillIDandLEVEL, int NPCID, int HaveUPLevelSkill) { int nXinfaID = nSkillIDandLEVEL; SCLIENT_SKILLCLASS pXinFa = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(nXinfaID); int nXinFaLevel = pXinFa.m_nLevel; int nSelfLevel = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_Level(); CObject_Character pMySelf = CObjectManager.Instance.getPlayerMySelf(); // 判断人物等级是否达到 if (!isUpLevelXinfaRequirement(nXinfaID, nXinFaLevel + HaveUPLevelSkill)) { CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "Role levle Low"); return; } //// 获得升级心法需要的金钱 Spend needSpend = GetUplevelXinfaSpend(nXinfaID, nXinFaLevel + HaveUPLevelSkill); // 获得升级心法需要的经验 [10/13/2011 Ivan edit] int myExp = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_Exp(); if (needSpend.dwSpendExperience > myExp) { CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "Not enough Exp"); return; } ////使用客户端的数据来判断升级的金钱和经验是否够升级 int nCurMoney = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_Money(); if (needSpend.dwSpendMoney != -1) { if (needSpend.dwSpendMoney > nCurMoney) { CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "Not enough money"); //ADDTALKMSG("升级需要的金钱不足"); return; } } if (GetUpLevelXinfaCDTime() > 0) { CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "CD Time"); return; } _STUDYXINFA_INFO studyInfo; CGAskStudyXinfa msg = (CGAskStudyXinfa)NetManager.GetNetManager().CreatePacket((int)PACKET_DEFINE.PACKET_CG_ASKSTUDYXINFA); studyInfo.m_idXinfa = (short)nXinfaID; //技能ID studyInfo.m_NowLevel = (short)nXinFaLevel; //技能等级 studyInfo.m_idMenpai = (short)NPCID; //师父ID msg.UplevelInfo = studyInfo; NetManager.GetNetManager().SendPacket(msg); }
//得到所在容器的索引 // 技能 - 第几个技能 public override int GetPosIndex() { SCLIENT_SKILLCLASS pSkillClass = GetSkillClassImpl(); if (pSkillClass == null) { return(-1); } return(pSkillClass.m_nPosIndex); }
//心法升级需求 public bool isUpLevelXinfaRequirement(int nID, int nLevel) { _DBC_XINFA_REQUIREMENTS require = XinfaRequirementDBC.Search_Index_EQU(nID); SCLIENT_SKILLCLASS pSkillClass = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(nID); if (pSkillClass == null) { return(false); } return(pSkillClass.m_bCanLevelUp); }
//得到解释 public override string GetDesc() { SCLIENT_SKILLCLASS pSkillClass = GetSkillClassImpl(); if (pSkillClass == null) { return("ERROR"); } return(pSkillClass.m_pDefine.pszDesc); }
//得到定义ID public override int GetDefineID() { SCLIENT_SKILLCLASS pSkillClass = GetSkillClassImpl(); if (pSkillClass == null) { return(-1); } return(pSkillClass.m_pDefine.nID); }
//更新数据 public void Update_SkillClass(SCLIENT_SKILLCLASS pXinfaDef) { m_idSkillClass = pXinfaDef.m_pDefine.nID; //名称 m_strName = pXinfaDef.m_pDefine.pszName; //图标 m_strIconName = pXinfaDef.m_pDefine.pszIconName; //通知UI UpdateToRefrence(); }
// 获得玩家想要升级技能所需的人物等级 [3/29/2012 Ivan] internal int GetNextRoleLevel() { SCLIENT_SKILL impl = GetSkillImpl(); SCLIENT_SKILLCLASS pXinfa = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(impl.m_pDefine.m_nSkillClass); if (pXinfa != null) { return(pXinfa.nNeedMyLevel); } return(-1); }
// 得到心法等级 public virtual int GetXinfaLevel() { SCLIENT_SKILLCLASS pXinfa = (SCLIENT_SKILLCLASS)GetSkillClassImpl(); if (pXinfa == null) { return(0); } ; return(pXinfa.m_nLevel); }
// 心法特殊描述 [5/9/2012 SUN] public string GetDesc1() { SCLIENT_SKILL pSkill = GetSkillImpl() as SCLIENT_SKILL; if (pSkill != null) { SCLIENT_SKILLCLASS pXinfa = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(pSkill.m_pDefine.m_nSkillClass); DBC.COMMON_DBC <_DBC_XINFA_SKILL_DATA> dbc = CDataBaseSystem.Instance.GetDataBase <_DBC_XINFA_SKILL_DATA>((int)DataBaseStruct.DBC_XINFA_SKILL_DATA); _DBC_XINFA_SKILL_DATA define = dbc.Search_Index_EQU(pXinfa.m_pDefine.nID); int nMenPai = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_MenPai(); int nStepValue = define.nMenPaiValue[nMenPai] / 100; int curValue = pXinfa.m_nLevel * nStepValue; return(string.Format(pSkill.GetSkillDesc(), nStepValue, curValue)); } return(""); }
public bool IsJingJieSkill() { SCLIENT_SKILL impl = GetSkillImpl(); if (impl == null) { return(false); } SCLIENT_SKILLCLASS pXinfa = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(impl.m_pDefine.m_nSkillClass); if (pXinfa != null && pXinfa.IsJingJie()) { return(true); } return(false); }
public int GetXinfaID() { SCLIENT_SKILL impl = GetSkillImpl(); if (impl == null) { return(-1); } SCLIENT_SKILLCLASS pXinfa = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(impl.m_pDefine.m_nSkillClass); if (pXinfa != null) { return(pXinfa.m_pDefine.nID); } return(-1); }
// 得到技能等级 public virtual int GetSkillLevel() { SCLIENT_SKILL pImpl = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_Skill(m_idSkillImpl); if (pImpl != null) { // [11/4/2010 ivan edit] //return pImpl->m_pDefine->m_nLevelRequirement; //return pImpl->m_nLevel; // 没有技能等级,只有心法等级 [10/13/2011 Ivan edit] SCLIENT_SKILLCLASS pClass = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(pImpl.m_pDefine.m_nSkillClass); if (pClass != null) { return(pClass.m_nLevel); } } return(0); }
public OPERATE_RESULT IsCanUse_CheckLevel(int idUser, int idLevel) { CObject_Character pUser = (CObject_Character)(CObjectManager.Instance.FindObject(idUser)); if (pUser == null) { return(OPERATE_RESULT.OR_ERROR); } int iSkillClass = m_pDefine.m_nSkillClass; int iLevel = m_nLevel - 1; if (iLevel < 0) { iLevel = 0; } // 得到技能对应的心法数据 SCLIENT_SKILLCLASS pSkillClass = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(iSkillClass); if (pSkillClass != null) { // 技能数据id int iSkillData_V1ID = 0; if (iLevel < 12)// 境界心法超过12级 [4/19/2012 SUN] { iSkillData_V1ID = m_pDefine.m_anSkillByLevel[iLevel]; } else if (pSkillClass.IsJingJie()) { iSkillData_V1ID = m_pDefine.m_anSkillByLevel[11]; } //打开数据表 _DBC_SKILLDATA_V1_DEPLETE pSkillData_V1 = CDataBaseSystem.Instance.GetDataBase <_DBC_SKILLDATA_V1_DEPLETE>((int)DataBaseStruct.DBC_SKILLDATA_V1_DEPLETE).Search_Index_EQU(iSkillData_V1ID); //搜索纪录 if (pSkillData_V1 != null) { if (pSkillData_V1.nNeedLevel > pUser.GetCharacterData().Get_Level()) { return(OPERATE_RESULT.OR_NEED_HIGH_LEVEL_XINFA); } } } return(OPERATE_RESULT.OR_OK); }
public string GetUpLevelDesc() { string strDesc = null; SCLIENT_SKILL impl = GetSkillImpl(); if (impl == null) { return(strDesc); } SCLIENT_SKILLCLASS pXinfa = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(impl.m_pDefine.m_nSkillClass); if (pXinfa == null) { return(strDesc); } int needLevel = pXinfa.GetNeedLevel(); if (needLevel > CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_Level()) { strDesc = "#R人物等级 " + needLevel; } else { strDesc = "人物等级 " + "#G" + needLevel; } Spend spend = CDataPool.Instance._StudySkill.GetUplevelXinfaSpend(pXinfa.m_pDefine.nID, pXinfa.m_nLevel + 1); int myExp = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_Exp(); if (spend.dwSpendExperience > myExp) { strDesc += "\n" + "#R历练值 " + spend.dwSpendExperience; } else { strDesc += "\n" + "#W历练值 " + "#G" + spend.dwSpendExperience; } return(strDesc); }
public string GetSkillDesc() // 得到技能的描述 { if (m_pDefine != null) { // 得到技能心法id int iSkillClass = m_pDefine.m_nSkillClass; int iLevel = m_nLevel - 1; if (iLevel < 0) { iLevel = 0; } // 得到技能对应的心法数据 SCLIENT_SKILLCLASS pSkillClass = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(iSkillClass); if (pSkillClass != null) { // 技能数据id if (iLevel > 11) { iLevel = 11;// 境界技能超过12级 [5/9/2012 SUN] } int iSkillData_V1ID = m_pDefine.m_anSkillByLevel[iLevel]; //打开数据表 _DBC_SKILLDATA_V1_DEPLETE pSkillData_V1 = CDataBaseSystem.Instance.GetDataBase <_DBC_SKILLDATA_V1_DEPLETE>((int)DataBaseStruct.DBC_SKILLDATA_V1_DEPLETE).Search_Index_EQU(iSkillData_V1ID); //搜索纪录 if (pSkillData_V1 != null) { // temp fix [7/8/2010 Sun] //return pSkillData_V1->paraPair[11].szDesc; return(pSkillData_V1.szDesc2); } } else { return(m_pDefine.m_pszDesc); } } return(""); }
public OPERATE_RESULT IsCanUse_CheckFightState(int idUser) { if (m_pDefine != null) { if (m_pDefine.m_nMenPai != MacroDefine.INVALID_ID) { SCLIENT_SKILLCLASS pSkillClass = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass( m_pDefine.m_nSkillClass); if (pSkillClass != null && pSkillClass.m_bLeaned) { return(OPERATE_RESULT.OR_OK); } } else { // 没有五行的技能是通用技能,可以直接使用 [10/18/2011 Ivan edit] return(OPERATE_RESULT.OR_OK); } } return(OPERATE_RESULT.OR_CHAR_DO_NOT_KNOW_THIS_SKILL); }
void UpdateSkill() { if (!gameObject.active) { return; } ResetUI(); if (tabMode == TAB_MODE.TAB_SKILL) { int num = CActionSystem.Instance.GetSkillActionNum(); int showIndex = 0; for (int i = 0; i < num; i++) { if (showIndex >= buttons.Count) { break; } CActionItem_Skill skill = CActionSystem.Instance.EnumAction(i, ActionNameType.Skill) as CActionItem_Skill; if (skill != null && skill.GetXinfaID() >= SCLIENT_SKILLCLASS.XINFATYPE_SKILLBENGIN) { //LogManager.LogWarning("Xinfa = " + skill.GetXinfaID() + " skill = " + skill.GetDefineID()); //这里可能有问题 items[showIndex].SetActiveRecursively(true); SCLIENT_SKILL skillData = skill.GetImpl() as SCLIENT_SKILL; buttons[showIndex].UpdateItemFromAction(skill); if (skillData != null && skillData.IsCanUse_CheckLevel(CObjectManager.Instance.getPlayerMySelf().ID, (int)skillData.m_nLevel) == OPERATE_RESULT.OR_OK) { buttons[showIndex].EnableDrag(); txtLevels[showIndex].Text = "等级:" + skill.GetSkillLevel(); } else { buttons[showIndex].DisableDrag(); txtLevels[showIndex].Text = "未学习"; } buttons[showIndex].EnableDoAction = true; //update text txtNames[showIndex].Text = skill.GetName(); SCLIENT_SKILLCLASS skillClass = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(skill.GetXinfaID()); //升级可操作 string error; if (!CDataPool.Instance.isCanSkillLevelUp(skillClass.m_pDefine.nID, skillClass.m_nLevel + 1, out error)) { levelUpBtns[showIndex].Hide(true); //levelUpBtns[showIndex].controlIsEnabled = false; toolText[showIndex] = UIString.Instance.ParserString_Runtime(error); } else { // levelUpBtns[showIndex].controlIsEnabled = true; levelUpBtns[showIndex].Hide(false); toolText[showIndex] = null; } showIndex++; } } } else if (tabMode == TAB_MODE.TAB_JINGJIE) { int num = CActionSystem.Instance.GetSkillActionNum(); int showIndex = 0; for (int i = 0; i < num; i++) { if (showIndex >= buttons.Count) { break; } CActionItem_Skill skill = CActionSystem.Instance.EnumAction(i, ActionNameType.Skill) as CActionItem_Skill; //LogManager.LogWarning("Xinfa = " + skill.GetXinfaID() + " skill = " + skill.GetDefineID()); if (skill != null && (skill.GetXinfaID() >= SCLIENT_SKILLCLASS.XINFATYPE_JINGJIEBEGIN && skill.GetXinfaID() < SCLIENT_SKILLCLASS.XINFATYPE_SKILLBENGIN)) { //这里可能有问题 items[showIndex].SetActiveRecursively(true); buttons[showIndex].UpdateItemFromAction(skill); buttons[showIndex].DisableDrag(); buttons[showIndex].EnableDoAction = false; //update text txtNames[showIndex].Text = skill.GetName(); txtLevels[showIndex].Text = "等级:" + skill.GetSkillLevel(); SCLIENT_SKILLCLASS skillClass = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(skill.GetXinfaID()); //升级可操作 string error; if (!CDataPool.Instance.isCanSkillLevelUp(skillClass.m_pDefine.nID, skillClass.m_nLevel + 1, out error)) { levelUpBtns[showIndex].controlIsEnabled = false; toolText[showIndex] = UIString.Instance.ParserString_Runtime(error); } else { levelUpBtns[showIndex].controlIsEnabled = true; toolText[showIndex] = null; } showIndex++; } } } else if (tabMode == TAB_MODE.TAB_USUALSKILL) { int num = CActionSystem.Instance.GetSkillActionNum(); //LogManager.LogWarning("Skill count = " + num); int showIndex = 0; for (int i = 0; i < num; i++) { CActionItem_Skill skill = CActionSystem.Instance.EnumAction(i, ActionNameType.Skill) as CActionItem_Skill; if (showIndex >= buttons.Count) { break; } //超过51不属于普通技能 if (skill != null && (skill.GetXinfaID() == -1 && skill.GetIDTable() < 51)) { // LogManager.LogWarning("Xinfa = " + skill.GetXinfaID() + "skill = " + skill.GetDefineID() + "index=" + i); //这里可能有问题 items[showIndex].SetActiveRecursively(true); buttons[showIndex].UpdateItemFromAction(skill); buttons[showIndex].EnableDrag(); buttons[showIndex].EnableDoAction = true; //update text txtNames[showIndex].Text = skill.GetName(); txtLevels[showIndex].Text = "等级:" + skill.GetSkillLevel(); levelUpBtns[showIndex].gameObject.SetActiveRecursively(false); showIndex++; } } } }
void UpdateSkill() { if (!gameObject.active) { return; } ResetUI(); if (tabMode == TAB_MODE.TAB_SELFXINFA) { int num = CActionSystem.Instance.GetSkillActionNum(); int nXinfaIndex = -1; IUIListObject listItem = null; for (int i = 0; i < num; i++) { CActionItem_Skill skill = CActionSystem.Instance.EnumAction(i, ActionNameType.Skill) as CActionItem_Skill; if (skill != null && (skill.GetXinfaID() >= SCLIENT_SKILLCLASS.XINFATYPE_JINGJIEBEGIN && skill.GetXinfaID() < SCLIENT_SKILLCLASS.XINFATYPE_SKILLBENGIN)) { nXinfaIndex++; int nOffset = nXinfaIndex % 3; if (nOffset == 0) { listItem = list.CreateItem(itemPrefab); listItem.gameObject.name = "XinfaListItem" + nXinfaIndex; for (int j = 0; j < 3; j++) { listItem.gameObject.transform.FindChild("Item" + j).gameObject.SetActiveRecursively(false); } } GameObject item = listItem.gameObject.transform.FindChild("Item" + nOffset).gameObject; item.SetActiveRecursively(true); ActionButton skillAction = item.GetComponentInChildren <ActionButton>(); if (skillAction != null) { skillAction.SetActionItemByActionId(skill.GetID()); skillAction.DisableDrag(); skillAction.EnableDoAction = false; } UIButton bg = item.transform.FindChild("Bg").gameObject.GetComponent <UIButton>(); if (bg != null) { bg.SetInputDelegate(handlerInput); } SpriteText txt = item.transform.FindChild("NameLabel").gameObject.GetComponent <SpriteText>(); if (txt != null) { txt.Text = skill.GetName() + "\n" + "等级:" + skill.GetSkillLevel(); } UIButton levelBtn = item.transform.FindChild("LevelUp").gameObject.GetComponent <UIButton>(); if (levelBtn != null) { levelBtn.SetInputDelegate(levelUpInputDelegate); //LogManager.LogWarning("Set Delegate : " + levelBtn.gameObject.name); } SCLIENT_SKILLCLASS skillClass = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_SkillClass(skill.GetXinfaID()); //升级可操作 string error; if (!CDataPool.Instance.isCanSkillLevelUp(skillClass.m_pDefine.nID, skillClass.m_nLevel + 1, out error)) { item.transform.FindChild("LevelUp").gameObject.GetComponent <UIButton>().controlIsEnabled = false; //toolText[showIndex] = UIString.Instance.ParserString_Runtime(error); } else { item.transform.FindChild("LevelUp").gameObject.GetComponent <UIButton>().controlIsEnabled = true; //toolText[showIndex] = null; } } } } else if (tabMode == TAB_MODE.TAB_PETXINFA) { //int num = CActionSystem.Instance.GetSkillActionNum(); ////LogManager.LogWarning("Skill count = " + num); //int showIndex = 0; //for (int i = 0; i < num; i++) //{ // CActionItem_Skill skill = CActionSystem.Instance.EnumAction(i, ActionNameType.Skill) as CActionItem_Skill; // if (showIndex >= buttons.Count) break; // //超过51不属于普通技能 // if (skill != null && (skill.GetXinfaID() == -1 && skill.GetIDTable() < 51)) // { // // LogManager.LogWarning("Xinfa = " + skill.GetXinfaID() + "skill = " + skill.GetDefineID() + "index=" + i); // //这里可能有问题 // items[showIndex].SetActiveRecursively(true); // buttons[showIndex].UpdateItemFromAction(skill); // buttons[showIndex].EnableDrag(); // buttons[showIndex].EnableDoAction = true; // //update text // txtNames[showIndex].Text = skill.GetName(); // txtLevels[showIndex].Text = "等级:" + skill.GetSkillLevel(); // levelUpBtns[showIndex].gameObject.SetActiveRecursively(false); // showIndex++; // } //} } if (list.UnviewableArea > 0) { list.slider.Hide(false); } else { list.slider.Hide(true); } }