/// <summary> /// 非经过我同意禁用本接口 by吴江 /// </summary> /// <param name="_info"></param> /// <param name="_callBack"></param> /// <returns></returns> public bool TryPreviewSingelNPC(int _npcTypeID, System.Action <PreviewNPC> _callBack) { NPCTypeRef refData = ConfigMng.Instance.GetNPCTypeRef(_npcTypeID); if (refData != null) { PreviewNPC pp = PreviewNPC.CreateDummy(refData); pp.mutualExclusion = false; pp.StartAsyncCreate(_callBack); return(true); } return(false); }
public NPCInfo(NPCTypeRef _refData) { serverData = new NpcData(); serverData.serverInstanceID = -1; serverData.prof = _refData.id; serverData.startPosX = -10000; serverData.startPosY = -10000; serverData.startPosZ = -10000; serverData.dir = 0; serverData.camp = 0; ProcessServerData(serverData); }
public bool TryPreviewSingelNPC(int _npcTypeID, UITexture _showLabel, PreviewConfigType _previewType) { curShowLabel = _showLabel; CancelAllDownLoad(); NPCTypeRef refData = ConfigMng.Instance.GetNPCTypeRef(_npcTypeID); if (refData != null) { PreviewNPC pp = PreviewNPC.CreateDummy(refData); pp.previewConfigType = _previewType; pp.StartAsyncCreate(CreateNPCCallBack); return(true); } return(false); }
/// <summary> /// 创建NPC的净数据对象 by吴江 /// </summary> /// <param name="_info"></param> /// <returns></returns> public static PreviewNPC CreateDummy(NPCTypeRef _refData) { GameObject newGO = null; NPCInfo info = new NPCInfo(_refData); if (GameCenter.instance.dummyMobPrefab != null) { newGO = Instantiate(GameCenter.instance.dummyNpcPrefab) as GameObject; newGO.name = "Dummy Preview NPC [" + info.ServerInstanceID + "]"; } else { newGO = new GameObject("Dummy Preview NPC[" + info.ServerInstanceID + "]"); } newGO.tag = "NPC"; PreviewNPC npc = newGO.AddComponent <PreviewNPC>(); npc.actorInfo = info; npc.isDummy_ = true; return(npc); }
//public static void UnloadRace(int _id) //{ // PlayerConfig playerConfig = ConfigMng.Instance.GetPlayerConfig(_id); // if (playerConfig != null) // { // AssetMng.instance.UnloadUrl(AssetMng.GetPathWithExtension("Player/" + playerConfig.res_name, (AssetPathType)playerConfig.path_type)); // } //} public static AssetMng.DownloadID GetNPC(int _id, System.Action <GameObject, EResult> _onComplete) { NPCTypeRef npcRef = ConfigMng.Instance.GetNPCTypeRef(_id); if (npcRef != null) { string[] strs = npcRef.res_name.Split('/'); string resName = strs[strs.Length - 1]; AssetMng.DownloadID downloadID = AssetMng.instance.LoadAsset <GameObject>(AssetMng.GetPathWithExtension(npcRef.res_name, (AssetPathType)npcRef.path_type), resName, _onComplete, true); return(downloadID); } else { GameSys.LogError("Unknown type " + _id); _onComplete(null, EResult.NotFound); return(null); } }
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); }
public override bool Exec(Actor _actor) { if (firstTime) { if (targetScene == 0) { GameCenter.mainPlayerMng.C2S_Fly_Pint(GameCenter.mainPlayerMng.MainPlayerInfo.SceneID, (int)targetPos.x, (int)targetPos.z); } else { GameCenter.mainPlayerMng.C2S_Fly_Pint(targetScene, (int)targetPos.x, (int)targetPos.z); } firstTime = false; } if (targetScene != 0 && targetScene != GameCenter.mainPlayerMng.MainPlayerInfo.SceneID) { return(false); } if ((targetScene != 0 && targetScene == GameCenter.mainPlayerMng.MainPlayerInfo.SceneID && GameCenter.sceneMng.EnterSucceed) || targetScene == 0) { Vector3 delta = targetPos - _actor.transform.position; delta.y = 0f; if (targetID == 0) { if (delta.sqrMagnitude < minDistance * minDistance) { GameCenter.curMainPlayer.PlayFlyOverEffect(); return(true); } } else { if (delta.sqrMagnitude < minDistance * minDistance) { InteractiveObject obj = GameCenter.curGameStage.GetInterActiveObj(targetID); if (obj != null && !obj.isDummy) { switch (obj.typeID) { case ObjectType.NPC: NPC npc = obj as NPC; GameCenter.curMainPlayer.CurTarget = 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; } GameCenter.curMainPlayer.PlayFlyOverEffect(); return(true); } } } } return(false); }