public void Reset() { ClearAllTasks(); SelectedTaskId = 0; BountyTaskInfo = null; IsNavigatingAcceptBountyTask = false; FinishBountyTaskNoConfirm = false; BountyTaskCoinReward = 0; DoNotAutoRunBountyTaskNextTime = false; DoNotAutoRunGuildTaskNextTime = false; IsNavigatingAcceptGuildTask = false; IsNavigatingAcceptEscortTask = false; FinishGuildTaskNoConfirm = false; GuildTaskCtbReward = 0; TaskNet.IsFirstReceiveTaskInfo = true; TaskNet.IsFirstReceiveBountyTaskInfo = true; TaskNet.IsFirstReceiveGuildTaskInfo = true; TaskNet.HaveReceivedTaskInfo = false; TaskDefine.ClearCache(); }
public static string FillTemplateByContentList(string template, string[] param_list) { if (param_list.Length <= 0) { return(template); } if (string.IsNullOrEmpty(template)) { return(string.Empty); } int index = 0; return(mNoticeRegex.Replace(template, new MatchEvaluator( delegate(Match match) { string ret = string.Empty; if (index >= param_list.Length) { return ret; } string content = param_list [index]; string target = match.ToString(); if (target.Length >= 3) { target = target.Substring(1, target.Length - 2); EFillType contentType = (EFillType)(int.Parse(target)); uint contentNum = 0xffffffff; try { contentNum = Convert.ToUInt32(content); } catch { // Do nothing. } switch (contentType) { // 怪物名字是后端未经过翻译就发过来的,要翻译一下 case EFillType.MONSTER_NAME: ret = xc.TextHelper.GetTranslateText(content); break; // 玩法场景名字是后端未经过翻译就发过来的,要翻译一下 case EFillType.ACTIVITY_SCENE_NAME: ret = xc.TextHelper.GetTranslateText(content); break; case EFillType.COLOR_TYPE: ret = GoodsHelper.GetGoodsColor(contentNum); break; case EFillType.CHAT_GOODS_TYPELINK: // 物品超链接 { if (param_list.Length >= 3) { uint playerId = Convert.ToUInt32(param_list[index - 2]); uint goods_gid = Convert.ToUInt32(param_list[index - 1]); ulong goods_oid = Convert.ToUInt64(content); uint color_type = GoodsHelper.GetGoodsColorTypeByTypeId(goods_gid); string color_str = GoodsHelper.GetGoodsColor(color_type); string goods_name = GoodsHelper.GetGoodsOriginalNameByTypeId(goods_gid); uint goodsType = GoodsHelper.GetGoodsType(goods_gid); if (goodsType == GameConst.GIVE_TYPE_EQUIP || // 装备 goodsType == GameConst.GIVE_TYPE_RIDE_EQUIP || // 坐骑装备 goodsType == GameConst.GIVE_TYPE_MAGIC_EQUIP || // 法宝装备 goodsType == GameConst.GIVE_TYPE_DECORATE || // 饰品 goodsType == GameConst.GIVE_TYPE_ELEMENT_EP || // 元素装备 goodsType == GameConst.GIVE_TYPE_GOD_EQUIP || // 神兵 goodsType == GameConst.GIVE_TYPE_ARTIFACT_EP || // 神器装备 goodsType == GameConst.GIVE_TYPE_FIVE_ELEM) // 五行战印 { ret = string.Format(xc.TextHelper.GetConstText("CODE_TEXT_LOCALIZATION_20"), color_str, goods_name); ret = ret + "{" + playerId + "," + goods_oid + "," + goods_gid + "})"; } else { ret = string.Format(xc.TextHelper.GetConstText("CODE_TEXT_LOCALIZATION_21"), color_str, goods_name); ret = ret + "{" + playerId + "," + goods_gid + "})"; } } else { ret = content; } } break; case EFillType.CLIENT_GOODS_TYPELINK: // 客户端物品超链接 { uint goods_gid = Convert.ToUInt32(param_list[index - 1]); uint goods_oid = contentNum; uint color_type = GoodsHelper.GetGoodsColorTypeByTypeId(goods_gid); string color_str = GoodsHelper.GetGoodsColor(color_type); string goods_name = GoodsHelper.GetGoodsOriginalNameByTypeId(goods_gid); ret = string.Format(xc.TextHelper.GetConstText("CODE_TEXT_LOCALIZATION_22"), color_str, goods_name); ret = ret + "{" + content + "})"; } break; case EFillType.GOODS_GID: ret = string.Empty; break; case EFillType.HIDE_PLAYER_ID: ret = string.Empty; break; case EFillType.GOODS_GID_NEW: { if (param_list.Length >= 2) { uint playerId = Convert.ToUInt32(param_list[index - 1]); uint goods_gid = Convert.ToUInt32(param_list[index]); uint color_type = GoodsHelper.GetGoodsColorTypeByTypeId(goods_gid); string color_str = GoodsHelper.GetGoodsColor(color_type); string goods_name = GoodsHelper.GetGoodsOriginalNameByTypeId(goods_gid); ret = string.Format(xc.TextHelper.GetConstText("CODE_TEXT_LOCALIZATION_21"), color_str, goods_name); ret = ret + "{" + playerId + "," + goods_gid + "})"; } else { ret = content; } break; } case EFillType.PET_ID: // 守护ID(显示带守护品质颜色的守护名字) { uint pet_id = Convert.ToUInt32(content); var pet_info = DBManager.Instance.GetDB <DBPet>().GetOnePetInfo(pet_id); if (pet_info != null) { string color_str = GoodsHelper.GetGoodsColor(pet_info.Quality + 1); //守护品质颜色和物品相差1 string actor_name = ActorHelper.GetActorName(pet_info.Actor_id); ret = string.Format("{0}{1}</color>", color_str, actor_name); } else { ret = content; } } break; case EFillType.TITLE_ID: { uint title_id = Convert.ToUInt32(content); var title_info = DBManager.Instance.GetDB <DBHonor>().GetData(title_id); if (title_info != null) { string color_str = GoodsHelper.GetGoodsColor(title_info.Quality); string title_name = title_info.Name; ret = string.Format("{0}{1}</color>", color_str, title_name); } else { ret = content; } } break; case EFillType.QUAL_WORD: { uint qual = Convert.ToUInt32(content); string color_str_name = GoodsHelper.GetGoodsColorName(qual); string color_str = GoodsHelper.GetGoodsColor(qual); ret = string.Format("{0}{1}</color>", color_str, color_str_name); } break; case EFillType.TRANSFER_LV: { if (param_list.Length >= 2) { uint init_vocation = Convert.ToUInt32(param_list[index]); uint transfer_lv = Convert.ToUInt32(param_list[index - 1]); object[] param = { transfer_lv, init_vocation }; System.Type[] returnType = { typeof(string) }; object[] objs = LuaScriptMgr.Instance.CallLuaFunction_return(LuaScriptMgr.Instance.Lua.Global, "TransferMgr_GetVocationName", param, returnType); if (objs != null && objs.Length > 0 && objs[0] != null) { ret = (string)objs[0]; } else { ret = content; } } else { ret = content; } } break; case EFillType.InitVocation: ret = string.Empty; break; case EFillType.SHOW_TYPE_TO_NAME: //外显系统ID =>外显系统名字 { uint show_type = Convert.ToUInt32(param_list[index]); object[] param = { show_type }; System.Type[] returnType = { typeof(string) }; object[] objs = LuaScriptMgr.Instance.CallLuaFunction_return(LuaScriptMgr.Instance.Lua.Global, "ShowManager_GetShowName", param, returnType); if (objs != null && objs.Length > 0 && objs[0] != null) { ret = (string)objs[0]; } else { ret = content; } } break; case EFillType.SHOW_TYPE_TO_PARAM: //外显系统ID => 与25一起使用,组成外显系统的外观名字 { ret = string.Empty; } break; case EFillType.SHOW_TYPE_TO_FACADE_ID: { if (param_list.Length >= 2) { uint facade_id = Convert.ToUInt32(param_list[index]); uint show_type = Convert.ToUInt32(param_list[index - 1]); object[] param = { show_type, facade_id }; System.Type[] returnType = { typeof(string) }; object[] objs = LuaScriptMgr.Instance.CallLuaFunction_return(LuaScriptMgr.Instance.Lua.Global, "ShowManager_GetFacadeName", param, returnType); if (objs != null && objs.Length > 0 && objs[0] != null) { ret = (string)objs[0]; } else { ret = content; } } else { ret = content; } } break; case EFillType.SHOW_TYPE_TO_SYS_ID: //外显系统ID =>外显系统ID { uint show_type = Convert.ToUInt32(param_list[index]); object[] param = { show_type }; System.Type[] returnType = { typeof(string) }; object[] objs = LuaScriptMgr.Instance.CallLuaFunction_return(LuaScriptMgr.Instance.Lua.Global, "ShowManager_GetSysIdStr", param, returnType); if (objs != null && objs.Length > 0 && objs[0] != null) { ret = (string)objs[0]; } else { ret = content; } } break; case EFillType.FASHION_NAME: //时装 { uint fashionId = Convert.ToUInt32(param_list[index]); object[] param = { fashionId }; System.Type[] returnType = { typeof(string) }; object[] objs = LuaScriptMgr.Instance.CallLuaFunction_return(LuaScriptMgr.Instance.Lua.Global, "FashionManager_GetFashionNameWithColor", param, returnType); if (objs != null && objs.Length > 0 && objs[0] != null) { ret = (string)objs[0]; } else { ret = content; } } break; case EFillType.MALL_NAME: //商城名字 { uint mall_id = Convert.ToUInt32(param_list[index]); var mall_tmpl = xc.DBManager.Instance.GetDB <DBMallType>().GetOneItem(mall_id); if (mall_tmpl != null) { //string color_str = GoodsHelper.GetGoodsColor(mall_tmpl); string tmall_name = mall_tmpl.Name; //ret = string.Format("{0}{1}</color>", color_str, tmall_name); ret = tmall_name; } else { ret = content; } } break; case EFillType.ESCORT_TASK_ID: //护送任务的id { uint taskId = Convert.ToUInt32(param_list[index]); TaskDefine taskDefine = TaskDefine.MakeDefine(taskId); if (taskDefine != null) { ret = taskDefine.GetFollowNpcName(0); } else { ret = content; } } break; case EFillType.INSTANCE_ID: //副本id { uint instanceId = Convert.ToUInt32(param_list[index]); DBInstance.InstanceInfo instanceInfo = DBInstance.Instance.GetInstanceInfo(instanceId); if (instanceInfo != null) { ret = instanceInfo.mName; } else { ret = content; } } break; case EFillType.GODWARE_ID: //神器id { uint god_ware_id = Convert.ToUInt32(param_list[index]); object[] param = { god_ware_id }; System.Type[] returnType = { typeof(string) }; object[] objs = LuaScriptMgr.Instance.CallLuaFunction_return(LuaScriptMgr.Instance.Lua.Global, "GodWareManager_GetGodWareName", param, returnType); if (objs != null && objs.Length > 0 && objs[0] != null) { ret = (string)objs[0]; } else { ret = content; } } break; case EFillType.TIMEFORMAT: int time = Convert.ToInt32(param_list[index]); string strShowTime = CommonTool.SecondsToStr_2(time); ret = strShowTime; break; case EFillType.BIG_PACKET: uint bigNum = Convert.ToUInt32(param_list[index]); if (bigNum != 0) { //ret = string.Format("{0}个大红包,", bigNum); ret = string.Format(xc.DBConstText.GetText("RAIN_RED_PACKET_BIG"), bigNum); } else { ret = ""; } break; case EFillType.SMALL_PACKET: uint smallNum = Convert.ToUInt32(param_list[index]); if (smallNum != 0) { //ret = string.Format("{0}个小红包,", smallNum); ret = string.Format(xc.DBConstText.GetText("RAIN_RED_PACKET_SMALL"), smallNum); } else { ret = ""; } break; case EFillType.MARKET_ID: { uint goods_gid = Convert.ToUInt32(param_list[index - 1]); uint goods_oid = contentNum; uint color_type = GoodsHelper.GetGoodsColorTypeByTypeId(goods_gid); string color_str = GoodsHelper.GetGoodsColor(color_type); string goods_name = GoodsHelper.GetGoodsOriginalNameByTypeId(goods_gid); // 【click={0}[{1}]</color>】(marketGoodsTips= ret = string.Format(xc.TextHelper.GetConstText("GAME_CHAT_CLICK_MARKET_GOODS"), color_str, goods_name); ret = ret + "{" + content + "})"; } break; case EFillType.CONTROL_ID: var id = Convert.ToInt32(param_list[index]); ret = SpanServerManager.Instance.GetServerNameByControlServerId((uint)id); break; case EFillType.CHANNEL_ID: ret = ChannelHelper.GetChannelName(param_list[index]); break; default: ret = xc.TextHelper.GetTranslateText(content); break; } } index++; return ret; } ))); }
private ushort GetTaskType(uint task_id) { return(TaskDefine.GetTaskType(task_id)); }
TaskDefine ReadReader(SqliteDataReader reader) { ushort taskType = DBTextResource.ParseUS_s(GetReaderString(reader, "type"), 0); TaskDefine define = new TaskDefine(); define.Id = DBTextResource.ParseUI_s(GetReaderString(reader, "id"), 0); define.DescriptionBytes = GetReaderBytes(reader, "description"); define.NameBytes = GetReaderBytes(reader, "name"); define.Type = taskType; define.SubType = DBTextResource.ParseUI_s(GetReaderString(reader, "sub_type"), 0); define.RequestLevelMin = DBTextResource.ParseI_s(GetReaderString(reader, "lv_min"), 0); define.PreviousId = DBTextResource.ParseUI_s(GetReaderString(reader, "pre_id"), 0); define.NextId = DBTextResource.ParseUI_s(GetReaderString(reader, "next_id"), 0); define.NextId = DBTextResource.ParseUI_s(GetReaderString(reader, "next_id"), 0); string serverStepRawsString = GetReaderString(reader, "goals"); string clientStepRawsString = GetReaderString(reader, "steps"); string navigationPointsRawsString = GetReaderString(reader, "navigation_points"); define.Steps = TaskDefine.TaskStep.CreateStepsByRawString(serverStepRawsString, clientStepRawsString, navigationPointsRawsString); if (define.Steps == null || define.Steps.Count == 0) { GameDebug.LogError("Parse task " + define.Id + " error, step is empty!!!"); } define.RewardIds = DBTextResource.ParseArrayUint(GetReaderString(reader, "reward_ids"), ","); define.GetSkills = DBTextResource.ParseArrayUint(GetReaderString(reader, "get_skills"), ","); define.IsShowGetSkillProgress = DBTextResource.ParseI_s(GetReaderString(reader, "is_show_get_skill_progress"), 0) == 0 ? false : true; define.ReceiveDialogId = DBTextResource.ParseUI_s(GetReaderString(reader, "receive_dialog_id"), 0); define.SubmitDialogId = DBTextResource.ParseUI_s(GetReaderString(reader, "submit_dialog_id"), 0); define.ReceiveNpc = NpcScenePosition.Make(GetReaderString(reader, "receive_npc")); define.SubmitNpc = NpcScenePosition.Make(GetReaderString(reader, "submit_npc")); define.AutoRunType = (TaskDefine.EAutoRunType)DBTextResource.ParseBT_s(GetReaderString(reader, "auto_run"), 0); define.ShowPriority = DBManager.Instance.GetDB <DBTaskPriority>().GetTaskPriority((int)taskType); define.ShowPriority2 = DBManager.Instance.GetDB <DBTaskPriority>().GetTaskPriority2((int)taskType); string raw = GetReaderString(reader, "is_temporary_on_top"); if (string.IsNullOrEmpty(raw) == true || raw == "0") { define.IsTemporaryOnTop = false; } else { define.IsTemporaryOnTop = true; } string npcsRawString = GetReaderString(reader, "create_npcs_when_received"); define.CreateNpcsWhenReceived = TaskDefine.MakeNpcScenePositions(npcsRawString); npcsRawString = GetReaderString(reader, "delete_npcs_when_received"); define.DeleteNpcsWhenReceived = TaskDefine.MakeNpcScenePositions(npcsRawString); npcsRawString = GetReaderString(reader, "create_npcs_when_done"); define.CreateNpcsWhenDone = TaskDefine.MakeNpcScenePositions(npcsRawString); npcsRawString = GetReaderString(reader, "delete_npcs_when_done"); define.DeleteNpcsWhenDone = TaskDefine.MakeNpcScenePositions(npcsRawString); define.FollowNpcs = TaskDefine.MakeNpcScenePositions(GetReaderString(reader, "follow_npcs")); define.CanUseBoots = (DBTextResource.ParseI_s(GetReaderString(reader, "can_use_boots"), 0) > 0); define.ReceivedTimelineId = DBTextResource.ParseUI_s(GetReaderString(reader, "received_timeline_id"), 0); define.SubmitedTimelineId = DBTextResource.ParseUI_s(GetReaderString(reader, "submited_timeline_id"), 0); raw = GetReaderString(reader, "cost"); if (string.IsNullOrEmpty(raw) == false) { define.Costs = DBTextResource.ParseArrayStringString(raw); } raw = GetReaderString(reader, "show_reward_goods_id"); List <List <uint> > showRewardGoodsIdConfigs = DBTextResource.ParseArrayUintUint(raw); define.ShowRewardGoodsIds = new Dictionary <uint, uint>(); define.ShowRewardGoodsIds.Clear(); define.ShowRewardGoodsNums = new Dictionary <uint, uint>(); define.ShowRewardGoodsNums.Clear(); define.ShowRewardGoodsIsBinds = new Dictionary <uint, byte>(); define.ShowRewardGoodsIsBinds.Clear(); uint index = 1; foreach (List <uint> showRewardGoodsIdConfig in showRewardGoodsIdConfigs) { define.ShowRewardGoodsIds[index] = showRewardGoodsIdConfig[0]; define.ShowRewardGoodsNums[index] = showRewardGoodsIdConfig[1]; define.ShowRewardGoodsIsBinds[index] = (byte)showRewardGoodsIdConfig[2]; ++index; } mTasksData.Add(define.Id, define); if (mTasksDataByType.ContainsKey(define.Type) == true) { mTasksDataByType[define.Type].Add(define.Id, define); } else { Dictionary <uint, TaskDefine> taskDefines = new Dictionary <uint, TaskDefine>(); taskDefines.Clear(); taskDefines.Add(define.Id, define); mTasksDataByType.Add(define.Type, taskDefines); } return(define); }
public static void HandleServerData(ushort protocol, byte[] data) { switch (protocol) { case NetMsg.MSG_TASK_INFO: { S2CTaskInfo pack = S2CPackBase.DeserializePack <S2CTaskInfo>(data); // 首先所有任务的置顶取消 foreach (Task task in TaskManager.Instance.AllTasks) { task.IsOnTop = false; } IsFirstReceiveTaskInfo = !Game.Instance.AllSystemInited; List <Task> newTasks = new List <Task>(); newTasks.Clear(); List <Task> finishedTasks = new List <Task>(); finishedTasks.Clear(); List <Task> newAcceptTasks = new List <Task>(); newAcceptTasks.Clear(); List <Task> doneTasks = new List <Task>(); doneTasks.Clear(); List <Task> tasksToGuide = new List <Task>(); tasksToGuide.Clear(); bool isTitleTaskChanged = false; // 头衔任务是否改变 bool isEscortTaskChanged = false; // 护送任务是否改变 foreach (PkgTaskInfo taskInfo in pack.tasks) { bool isNewTask = false; if (TaskManager.Instance.HasTask(taskInfo.id)) { TaskManager.Instance.DeleteTask(taskInfo.id); } else { isNewTask = true; } var dbTask = TaskDefine.MakeDefine(taskInfo.id); if (dbTask == null) { GameDebug.LogError("Error!!! Can not find task data in db by id " + taskInfo.id); continue; } Task task = new Task(dbTask); uint index = 1; foreach (var step in dbTask.Steps) { Task.StepProgress stepProgress = new Task.StepProgress(); stepProgress.StepId = index; if (taskInfo.value.Count > 0) { stepProgress.CurrentValue = taskInfo.value[0]; } else { stepProgress.CurrentValue = 0; } task.StepProgresss.Add(stepProgress); ++index; } task.StepProgresss.Sort(); task.State = taskInfo.state; task.StartTime = taskInfo.start_time; if (taskInfo.step > 0) { task.CurrentStepIndex = taskInfo.step - 1; } else { task.CurrentStepIndex = 0; } // 提高任务显示优先级 if (IsFirstReceiveTaskInfo == false) { // 头衔任务不受动态排序规则影响 if (task.Define.Type != GameConst.QUEST_TITLE) { Task.IncreaseCurDynamicShowPriority(); task.DynamicShowPriority = Task.CurDynamicShowPriority; } } TaskManager.Instance.AddTask(task); if (task.State == GameConst.QUEST_STATE_DONE) { Task.StepProgress stepProgress = task.CurrentStepProgress; TaskDefine.TaskStep curStep = task.CurrentStep; if (stepProgress != null && curStep != null) { stepProgress.CurrentValue = curStep.ExpectResult; } } // 是否是新接取的任务 if (IsFirstReceiveTaskInfo == false && task.State == GameConst.QUEST_STATE_DOING) { if (task.CurrentStepProgress != null && task.CurrentStepProgress.CurrentValue == 0) { newAcceptTasks.Add(task); } } // 是否自动执行,进入游戏首次收到这个消息不执行副本状态下不执行,新任务不执行,不是在追踪状态的任务不执行 if (IsFirstReceiveTaskInfo == false && SceneHelp.Instance.IsInNormalWild() == true && task.Define.AutoRunType != TaskDefine.EAutoRunType.None) { // 不可接或者失效的任务不可自动执行 if (taskInfo.state != GameConst.QUEST_STATE_UNACCEPT && taskInfo.state != GameConst.QUEST_STATE_INVALID) { if ((task.Define.AutoRunType == TaskDefine.EAutoRunType.AutoRun && InstanceManager.Instance.IsOnHook == false) || task.Define.AutoRunType == TaskDefine.EAutoRunType.ForceAutoRun) { // 如果当前正在导航的任务的自动执行是ForceAutoRun2,则其他任务的自动执行不会打断它 Task navigatingTask = TaskManager.Instance.NavigatingTask; if (navigatingTask == null || navigatingTask.Define.AutoRunType != TaskDefine.EAutoRunType.ForceAutoRun2) { if (taskInfo.state == GameConst.QUEST_STATE_DOING || taskInfo.state == GameConst.QUEST_STATE_DONE) { tasksToGuide.Add(task); } } } else if (task.Define.AutoRunType == TaskDefine.EAutoRunType.ForceAutoRun2) { tasksToGuide.Add(task); } } } if (IsFirstReceiveTaskInfo == false) { if (taskInfo.state == GameConst.QUEST_STATE_FIN) { finishedTasks.Add(task); } } if (IsFirstReceiveTaskInfo == false) { if (taskInfo.state == GameConst.QUEST_STATE_DONE) { doneTasks.Add(task); } } // 任务进度飘字 if (isNewTask == false && taskInfo.state == GameConst.QUEST_STATE_DONE) { TaskHelper.ShowTaskProgressTips(task); } if (IsFirstReceiveTaskInfo == false && isNewTask == true) { newTasks.Add(task); } if (task.Define.Type == GameConst.QUEST_TITLE) { isTitleTaskChanged = true; } if (task.Define.Type == GameConst.QUEST_ESCORT) { isEscortTaskChanged = true; } } //TaskManager.Instance.SortTaskList(); //ClientEventMgr.Instance.FireEvent((int)ClientEvent.TASK_CHANGED, null); StartTaskChangedCoroutine(); if (isTitleTaskChanged == true) { ClientEventMgr.Instance.FireEvent((int)ClientEvent.TITLE_TASK_CHANGED, null); } if (isEscortTaskChanged == true) { ClientEventMgr.Instance.FireEvent((int)ClientEvent.ESCORT_TASK_CHANGED, null); } if (finishedTasks.Count > 0) { ClientEventMgr.Instance.FireEvent((int)ClientEvent.TASK_FINISHED, new CEventBaseArgs(finishedTasks[0].Define.Id)); if (finishedTasks[0].Define.SubmitedTimelineId > 0) { // 是否是婚宴剧情动画 if (finishedTasks[0].Define.SubmitedTimelineId == GameConstHelper.GetUint("GAME_WEDDING_DRAMA_TIMELINE_ID_1")) { TimelineManager.Instance.PlayWeddingChapelTimeline(); } else { TimelineManager.Instance.Play(finishedTasks[0].Define.SubmitedTimelineId); } } } if (newAcceptTasks.Count > 0) { ClientEventMgr.Instance.FireEvent((int)ClientEvent.TASK_NEW_ACCEPTED, new CEventBaseArgs(newAcceptTasks[0].Define.Id)); if (newAcceptTasks[0].Define.ReceivedTimelineId > 0) { // 是否是婚宴剧情动画 if (newAcceptTasks[0].Define.ReceivedTimelineId == GameConstHelper.GetUint("GAME_WEDDING_DRAMA_TIMELINE_ID_1")) { TimelineManager.Instance.PlayWeddingChapelTimeline(); } else { TimelineManager.Instance.Play(newAcceptTasks[0].Define.ReceivedTimelineId); } } // 如果在副本里面接受了AutoRun的赏金任务或者帮派任务,则Post一个TASK_GUIDE的event,等退出副本再次导航这个任务 if (SceneHelp.Instance.IsInInstance == true) { if ((newAcceptTasks[0].Define.AutoRunType == TaskDefine.EAutoRunType.AutoRun && InstanceManager.Instance.IsOnHook == false) || newAcceptTasks[0].Define.AutoRunType == TaskDefine.EAutoRunType.ForceAutoRun || newAcceptTasks[0].Define.AutoRunType == TaskDefine.EAutoRunType.ForceAutoRun2) { BountyTaskInfo bountyTaskInfo = TaskManager.Instance.BountyTaskInfo; GuildTaskInfo guildTaskInfo = TaskManager.Instance.GuildTaskInfo; // bountyTaskInfo.id == 0即首次接取赏金任务时不自动执行 if (newAcceptTasks[0].Define.Type == GameConst.QUEST_SG && !(bountyTaskInfo != null && bountyTaskInfo.id == 0)) { ClientEventMgr.GetInstance().PostEvent((int)ClientEvent.TASK_GUIDE, new CEventBaseArgs(newAcceptTasks[0].Define.Id)); } // guildTaskInfo.id == 0即首次接取帮派任务时不自动执行 else if (newAcceptTasks[0].Define.Type == GameConst.QUEST_GUILD && !(guildTaskInfo != null && guildTaskInfo.id == 0)) { ClientEventMgr.GetInstance().PostEvent((int)ClientEvent.TASK_GUIDE, new CEventBaseArgs(newAcceptTasks[0].Define.Id)); } } } } if (doneTasks.Count > 0) { ClientEventMgr.Instance.FireEvent((int)ClientEvent.TASK_CAN_SUBMIT, new CEventBaseArgs(doneTasks)); } if (SceneHelp.Instance.IsInNormalWild() == true) { if (tasksToGuide.Count > 0) { BountyTaskInfo bountyTaskInfo = TaskManager.Instance.BountyTaskInfo; GuildTaskInfo guildTaskInfo = TaskManager.Instance.GuildTaskInfo; // DoNotAutoRunBountyTaskNextTime为true不自动执行,bountyTaskInfo.id == 0即首次接取赏金任务时不自动执行 if (tasksToGuide[0].Define.Type == GameConst.QUEST_SG && (TaskManager.Instance.DoNotAutoRunBountyTaskNextTime == true || (bountyTaskInfo != null && bountyTaskInfo.id == 0))) { TaskManager.Instance.DoNotAutoRunBountyTaskNextTime = false; } // DoNotAutoRunGuildTaskNextTime为true不自动执行,guildTaskInfo.id == 0即首次接取帮派任务时不自动执行 else if (tasksToGuide[0].Define.Type == GameConst.QUEST_GUILD && (TaskManager.Instance.DoNotAutoRunGuildTaskNextTime == true || (guildTaskInfo != null && guildTaskInfo.id == 0))) { TaskManager.Instance.DoNotAutoRunGuildTaskNextTime = false; } else { // 正在主线任务导航的时候,则不能自动执行其他类型的任务 if ((TaskManager.Instance.IsNavigatingMainTask == false && TaskHelper.MainTaskIsInGuideCoroutine == false) || tasksToGuide[0].Define.Type == GameConst.QUEST_MAIN) { if (tasksToGuide[0].State != GameConst.QUEST_STATE_UNACCEPT && tasksToGuide[0].State != GameConst.QUEST_STATE_FIN && tasksToGuide[0].State != GameConst.QUEST_STATE_INVALID) { if ((TaskManager.Instance.NavigatingTaskType == GameConst.QUEST_NONE || TaskManager.Instance.NavigatingTaskType == tasksToGuide[0].Define.Type) && (TaskHelper.TaskTypeInGuideCoroutine == GameConst.QUEST_NONE || TaskHelper.TaskTypeInGuideCoroutine == tasksToGuide[0].Define.Type)) { // 如果需要自动寻路的任务是第三级别的自动执行,则需要先停止其他的任务寻路 if (tasksToGuide[0].Define.AutoRunType == TaskDefine.EAutoRunType.ForceAutoRun2) { TargetPathManager.Instance.StopPlayerAndReset(); } TaskHelper.TaskGuide(tasksToGuide[0]); } } } } } } if (newTasks.Count > 0) { ClientEventMgr.Instance.FireEvent((int)ClientEvent.TASK_ADDED, new CEventBaseArgs(newTasks[0].Define.Id)); } TaskNet.HaveReceivedTaskInfo = true; break; } case NetMsg.MSG_TASK_DELETE: { S2CTaskDelete pack = S2CPackBase.DeserializePack <S2CTaskDelete>(data); Task navigatingTask = TaskManager.Instance.NavigatingTask; if (navigatingTask != null && navigatingTask.Define.Id == pack.id) { TaskManager.Instance.NavigatingTask = null; TargetPathManager.Instance.StopPlayerAndReset(false); } TaskManager.Instance.DeleteTask(pack.id); //ClientEventMgr.Instance.FireEvent((int)ClientEvent.TASK_CHANGED, null); StartTaskChangedCoroutine(); break; } case NetMsg.MSG_TASK_VALUE: { S2CTaskValue pack = S2CPackBase.DeserializePack <S2CTaskValue>(data); // 其它所有任务的置顶取消 foreach (Task tempTask in TaskManager.Instance.AllTasks) { if (tempTask.Define.Id != pack.id) { tempTask.IsOnTop = false; } } bool isDone = false; uint value = 0; if (pack.value.Count > 0) { isDone = TaskManager.Instance.ChangeTaskCurStepValue(pack.id, pack.value[0]); value = pack.value[0]; } else { isDone = TaskManager.Instance.ChangeTaskCurStepValue(pack.id, 0); } Task task = TaskManager.Instance.GetTask(pack.id); // 提高任务显示优先级,头衔任务不受动态排序规则影响 if (task != null && task.Define.Type != GameConst.QUEST_TITLE) { Task.IncreaseCurDynamicShowPriority(); task.DynamicShowPriority = Task.CurDynamicShowPriority; } //TaskManager.Instance.SortTaskList(); if (SceneHelp.Instance.IsInNormalWild() == true) { if ((isDone == true || InstanceManager.Instance.IsAutoFighting == false) && task != null && task.Define.AutoRunType != TaskDefine.EAutoRunType.None) { if ((task.Define.AutoRunType == TaskDefine.EAutoRunType.AutoRun && InstanceManager.Instance.IsOnHook == false) || task.Define.AutoRunType == TaskDefine.EAutoRunType.ForceAutoRun || task.Define.AutoRunType == TaskDefine.EAutoRunType.ForceAutoRun2) { // 正在主线任务导航的时候,则不能自动执行其他类型的任务 if ((TaskManager.Instance.IsNavigatingMainTask == false && TaskHelper.MainTaskIsInGuideCoroutine == false) || task.Define.Type == GameConst.QUEST_MAIN) { // 进度大于0才自动执行 if (value > 0) { if ((TaskManager.Instance.NavigatingTaskType == GameConst.QUEST_NONE || TaskManager.Instance.NavigatingTaskType == task.Define.Type) && (TaskHelper.TaskTypeInGuideCoroutine == GameConst.QUEST_NONE || TaskHelper.TaskTypeInGuideCoroutine == task.Define.Type)) { TaskHelper.TaskGuide(task); } } } } } } ClientEventMgr.Instance.FireEvent((int)ClientEvent.TASK_PROGRESS_CHANGED, new CEventBaseArgs(pack.id)); break; } case NetMsg.MSG_TASK_SG_INFO: { S2CTaskSgInfo pack = S2CPackBase.DeserializePack <S2CTaskSgInfo>(data); TaskManager.Instance.BountyTaskInfo = new BountyTaskInfo(pack.id, pack.num, pack.is_reward); if (TaskManager.Instance.BountyTaskInfo.id > 0 || TaskManager.Instance.BountyTaskInfo.is_reward == 0) { TaskManager.Instance.BountyTaskCoinReward = 0; } ClientEventMgr.Instance.FireEvent((int)ClientEvent.BOUNTY_TASK_CHANGED, null); if (IsFirstReceiveBountyTaskInfo == false) { if (TaskManager.Instance.BountyTaskInfo.num >= TaskHelper.GetBountyTaskMaxTimes() && TaskManager.Instance.BountyTaskInfo.is_reward == 0) { if (SceneHelp.Instance.IsInWildInstance() == true) { xc.ui.ugui.UIManager.Instance.ShowSysWindow("UITaskWindow", xc.GameConst.QUEST_SG, null); } else { ClientEventMgr.GetInstance().PostEvent((int)ClientEvent.OPEN_TASK_WINDOW, new CEventBaseArgs(xc.GameConst.QUEST_SG)); } } } IsFirstReceiveBountyTaskInfo = false; xc.ui.ugui.UIManager.Instance.ShowWaitScreen(false); break; } case NetMsg.MSG_TASK_REWARD_SG: { S2CTaskRewardSg pack = S2CPackBase.DeserializePack <S2CTaskRewardSg>(data); TaskManager.Instance.BountyTaskCoinReward = pack.coin; ClientEventMgr.Instance.FireEvent((int)ClientEvent.BOUNTY_TASK_CHANGED, null); break; } case NetMsg.MSG_TASK_GUILD_INFO: { S2CTaskGuildInfo pack = S2CPackBase.DeserializePack <S2CTaskGuildInfo>(data); TaskManager.Instance.GuildTaskInfo = new GuildTaskInfo(pack.id, pack.num, pack.reward_state); //if (TaskManager.Instance.GuildTaskInfo.id > 0 || TaskManager.Instance.GuildTaskInfo.reward_state == 1) //{ // TaskManager.Instance.GuildTaskCtbReward = 0; //} ClientEventMgr.Instance.FireEvent((int)ClientEvent.GUILD_TASK_CHANGED, null); if (IsFirstReceiveGuildTaskInfo == false && TaskManager.Instance.GuildTaskInfo.reward_state == 1) { if (TaskManager.Instance.GuildTaskInfo.num >= GameConstHelper.GetInt("GAME_QUEST_GUILD_PRE_NUM")) { if (SceneHelp.Instance.IsInWildInstance() == true) { xc.ui.ugui.UIManager.Instance.ShowSysWindow("UITaskWindow", xc.GameConst.QUEST_GUILD, null); } else { ClientEventMgr.GetInstance().PostEvent((int)ClientEvent.OPEN_TASK_WINDOW, new CEventBaseArgs(xc.GameConst.QUEST_GUILD)); } } } IsFirstReceiveGuildTaskInfo = false; xc.ui.ugui.UIManager.Instance.ShowWaitScreen(false); break; } case NetMsg.MSG_TASK_REWARD_GUILD: { S2CTaskRewardGuild pack = S2CPackBase.DeserializePack <S2CTaskRewardGuild>(data); TaskManager.Instance.GuildTaskCtbReward = pack.ctb; ClientEventMgr.Instance.FireEvent((int)ClientEvent.GUILD_TASK_CHANGED, null); //UINotice.Instance.ShowMessage(string.Format(DBConstText.GetText("BAG_GET_GUILD_CTB"), pack.ctb)); break; } case NetMsg.MSG_TASK_TRANSFER_INFO: { S2CTaskTransferInfo pack = S2CPackBase.DeserializePack <S2CTaskTransferInfo>(data); TaskManager.Instance.TransferTaskInfo = pack; ClientEventMgr.Instance.FireEvent((int)ClientEvent.TRANSFER_TASK_CHANGED, null); break; } case NetMsg.MSG_TASK_REWARD_TRANSFER: { //暂时没有用到 break; } default: break; } }
/// <summary> /// 飞鞋 /// </summary> public static bool TravelBootsJump(Vector3 pos, uint instanceId = 0, bool isFree = false, uint line = 1, bool isAutoFighting = false) { if (instanceId == 0) { instanceId = SceneHelp.Instance.CurSceneID; } if (PKModeManagerEx.Instance.TryToOtherDungeonScene() == false) { return(false); } DBInstance.InstanceInfo instanceInfo = DBInstance.Instance.GetInstanceInfo(instanceId); if (instanceInfo == null) { GameDebug.LogError("Travel boots ump to scene " + instanceId + " error, can not find instance info!!!"); return(false); } // 本地玩家处于护送状态不能用飞鞋 if (CheckLocalPlayerEscortTaskState() == false) { return(false); } // 检查道具 if (isFree == false) { if (VipHelper.GetIsFlyFree() == false) { uint need_goods = GameConstHelper.GetUint("GAME_ITEM_TRAVEL_BOOTS"); if (need_goods > 0) { var num = ItemManager.Instance.GetGoodsNumForBagByTypeId(need_goods); if (num <= 0) { UINotice.Instance.ShowMessage(DBConstText.GetText("ITME_NUM_NOTENOUGH")); return(false); } } } } bool isInstance = false; if (instanceInfo.mWarType == GameConst.WAR_TYPE_DUNGEON) { isInstance = true; } // 检查是否达到等级 uint needLv = InstanceHelper.GetInstanceNeedRoleLevel(instanceId); if (LocalPlayerManager.Instance.LocalActorAttribute.Level < needLv) { // 巅峰等级 uint peakLv = 0; bool isPeak = TransferHelper.IsPeak(needLv, out peakLv); string levelStr = ""; if (isPeak) { levelStr = string.Format(DBConstText.GetText("UI_PLAYER_PEAK_LEVEL_FORMAT_2"), peakLv); // 巅峰{0} } else { levelStr = peakLv.ToString(); // {0} } if (isInstance == true) { UINotice.Instance.ShowMessage(string.Format(DBConstText.GetText("INSTANCE_IS_NOT_UNLOCK_NEED_LEVEL"), levelStr)); } else { UINotice.Instance.ShowMessage(string.Format(DBConstText.GetText("WILD_INSTANCE_IS_NOT_UNLOCK_NEED_LEVEL"), levelStr)); } return(false); } // 检查是否通关某主线任务 uint needTaskId = instanceInfo.mNeedTaskId; if (needTaskId > 0) { if (TaskHelper.MainTaskIsPassed(needTaskId) == false) { TaskDefine needTaskDefine = TaskDefine.MakeDefine(needTaskId); if (needTaskDefine != null) { // 巅峰等级 uint peakLv = 0; bool isPeak = TransferHelper.IsPeak((uint)needTaskDefine.RequestLevelMin, out peakLv); string levelStr = ""; if (isPeak) { levelStr = string.Format(DBConstText.GetText("UI_PLAYER_PEAK_LEVEL_FORMAT_2"), peakLv); // 巅峰{0} } else { levelStr = peakLv.ToString(); // {0} } if (isInstance == true) { UINotice.Instance.ShowMessage(string.Format(DBConstText.GetText("INSTANCE_IS_NOT_UNLOCK_NEED_TASK"), levelStr, needTaskDefine.Name, instanceInfo.mName)); } else { UINotice.Instance.ShowMessage(string.Format(DBConstText.GetText("WILD_INSTANCE_IS_NOT_UNLOCK_NEED_TASK"), levelStr, needTaskDefine.Name, instanceInfo.mName)); } } return(false); } } // 判断是否可到达 if (instanceId == SceneHelp.Instance.CurSceneID) { if (InstanceHelper.CanWalkTo(pos) == false) { UINotice.Instance.ShowMessage(DBConstText.GetText("MAP_POS_CAN_NOT_REACH")); return(false); } } // 跳往不同的场景需要加个转圈,防止同时多次跳转 if (instanceId != SceneHelp.Instance.CurSceneID) { ui.ugui.UIManager.GetInstance().ShowWaitScreen(true); } C2STravelBootsJump data = new C2STravelBootsJump(); data.dungeon_id = instanceId; data.line = line; PkgNwarPos pkgNwarPos = new PkgNwarPos(); pkgNwarPos.px = (int)(pos.x / GlobalConst.UnitScale); pkgNwarPos.py = (int)(pos.z / GlobalConst.UnitScale); data.pos = pkgNwarPos; if (isFree == true) { data.is_free = 1; } else { data.is_free = 0; } NetClient.BaseClient.SendData <C2STravelBootsJump>(NetMsg.MSG_TRAVEL_BOOTS_JUMP, data); SceneHelp.Instance.IsAutoFightingAfterSwitchInstance = isAutoFighting; InstanceManager.Instance.IsAutoFighting = false; return(true); }
public Task(TaskDefine task) { mDefine = task; IsOnTop = mDefine.IsTemporaryOnTop; }