public void OnUseSkill(uint uSkillID) { if (uSkillID == 0) { return; } IControllerSystem cs = ClientGlobal.Instance().GetControllerSystem(); if (cs == null) { Engine.Utility.Log.Error("ExecuteCmd: ControllerSystem is null"); return; } ICombatRobot combot = cs.GetCombatRobot(); if (combot.Status == CombatRobotStatus.RUNNING) { //解除普攻连击 stSkillLongPress longPress = new stSkillLongPress(); longPress.bLongPress = false; EventEngine.Instance().DispatchEvent((int)GameEventID.SKLL_LONGPRESS, longPress); combot.InsertSkill(uSkillID); return; } bool canuse = EventEngine.Instance().DispatchVote((int)GameVoteEventID.SKILL_CANUSE, uSkillID); if (canuse) { table.SkillDatabase db = GameTableManager.Instance.GetTableItem <table.SkillDatabase>(uSkillID, 1); if (db != null) { IControllerSystem ctrl = ClientGlobal.Instance().GetControllerSystem(); if (ctrl != null) { MessageCode code = MessageCode.MessageCode_ButtonX; ctrl.OnMessage(code, uSkillID); } } } else { IPlayer mainPlayer = MainPlayerHelper.GetMainPlayer(); if (mainPlayer != null) { ISkillPart skillPart = mainPlayer.GetPart(EntityPart.Skill) as ISkillPart; if (skillPart != null) { Client.stTipsEvent en = skillPart.GetSkillNotUseReason(uSkillID); if (en.errorID != 0) { EventEngine.Instance().DispatchEvent((int)GameEventID.TIPS_EVENT, en); } } } AddSkillCommond(uSkillID); } }