public override bool Exec(Actor _actor) { if (target == null) { return(true); } if (target.isDummy) { return(false); } if (GameCenter.curGameStage == null || !GameCenter.sceneMng.EnterSucceed) { return(false); } Vector3 targetPos = target.transform.position; Vector3 diff = _actor.transform.position - targetPos; if (diff.sqrMagnitude <= minDistance * minDistance) { GameCenter.curMainPlayer.CurTarget = target; target.InteractionSound(); switch (target.typeID) { case ObjectType.Unknown: break; case ObjectType.Player: break; case ObjectType.PreviewPlayer: break; case ObjectType.Mount: break; case ObjectType.MOB: break; case ObjectType.NPC: if (GameCenter.uIMng.HaveBigWnd()) { return(true); } List <NPC> npcs = GameCenter.curGameStage.GetNPCs(); for (int i = 0; i < npcs.Count; i++) { npcs[i].CancelBubble(); } NPC npc = target as NPC; if (npc != null) { npc.BeClick(); } NPCTypeRef npcType = ConfigMng.Instance.GetNPCTypeRef(npc.id); if (npcType.function1 != 0) { NewFunctionRef newFunction = ConfigMng.Instance.GetNewFunctionRef(npcType.function1); if (GameCenter.mainPlayerMng.FunctionIsOpen((FunctionType)newFunction.Function_type)) { if (newFunction.NPC_UI_type == 1) { GameCenter.uIMng.SwitchToUI((GUIType)Enum.Parse(typeof(GUIType), newFunction.NPC_UI_name)); } else if (newFunction.NPC_UI_type == 2) { GameCenter.uIMng.SwitchToSubUI((SubGUIType)Enum.Parse(typeof(SubGUIType), newFunction.NPC_UI_name)); } } else { GameCenter.uIMng.SwitchToUI(GUIType.NPCDIALOGUE); } } else if (npcType.function2 != 0) { NewFunctionRef newFunction = ConfigMng.Instance.GetNewFunctionRef(npcType.function2); if (GameCenter.mainPlayerMng.FunctionIsOpen((FunctionType)newFunction.Function_type)) { if (newFunction.NPC_UI_type == 1) { GameCenter.uIMng.SwitchToUI((GUIType)Enum.Parse(typeof(GUIType), newFunction.NPC_UI_name)); } else if (newFunction.NPC_UI_type == 2) { GameCenter.uIMng.SwitchToSubUI((SubGUIType)Enum.Parse(typeof(SubGUIType), newFunction.NPC_UI_name)); } } else { GameCenter.uIMng.SwitchToUI(GUIType.NPCDIALOGUE); } } else { GameCenter.uIMng.SwitchToUI(GUIType.NPCDIALOGUE); //走到NPC身边,打开NPC对话UI } break; case ObjectType.SceneItem: SceneItem sceneitem = target as SceneItem; if (sceneitem != null && sceneitem.IsTouchType == TouchType.TOUCH) { if (GameCenter.mainPlayerMng.MainPlayerInfo.CurMountInfo != null && GameCenter.mainPlayerMng.MainPlayerInfo.CurMountInfo.IsRiding) //下坐骑 { GameCenter.newMountMng.C2S_ReqRideMount(ChangeMount.DOWNRIDE, GameCenter.mainPlayerMng.MainPlayerInfo.CurMountInfo.ConfigID, MountReqRideType.AUTO); } } if (GameCenter.mainPlayerMng.MainPlayerInfo.CurSceneUiType == SceneUiType.RAIDERARK) { if (GameCenter.activityMng.rewardId != 0) //已携带宝珠错误提示 { GameCenter.messageMng.AddClientMsg(456); return(true); } if (Time.time > 15 && Time.time - GameCenter.activityMng.coldGetTime < 15) { MessageST msg = new MessageST(); msg.messID = 459; msg.words = new string[1] { (15 - (int)(Time.time - GameCenter.activityMng.coldGetTime)).ToString() }; GameCenter.messageMng.AddClientMsg(msg); return(true); } } if (sceneitem != null) { sceneitem.BeClicked(); } GameCenter.mainPlayerMng.C2S_TouchSceneItem(target.id); break; case ObjectType.Entourage: break; case ObjectType.DropItem: break; case ObjectType.FlyPoint: break; case ObjectType.CGObject: break; case ObjectType.Trap: break; case ObjectType.Model: //Model model = target as Model; // if (model.Camp == GameCenter.mainPlayerMng.MainPlayerInfo.Camp)//走到雕像 如果阵营相同 请求能否膜拜并开窗 // GameCenter.campMng.C2S_CanWorship(); GameCenter.uIMng.SwitchToUI(GUIType.NPCMORSHIP); break; default: break; } return(true); } return(false); }