/* * /// <summary> * /// * /// </summary> * /// <param name="exp"></param> * /// <param name="money">文钱</param> * /// <param name="gold">金币</param> * /// <param name="itemIds"></param> * /// <param name="itemNums"></param> * private void SetNormalReward(uint exp,uint money,uint gold,List<uint> itemIds,List<uint> itemNums) * { * * UIItemShow itemShow = null; * int index = 0; * if (exp > 0) * { * itemShow = index >= m_lstItem.Count ? GetItem() : m_lstItem[index]; * itemShow.gameObject.SetActive(true); * itemShow.ShowWithItemIdNum(MainPlayerHelper.ExpID, exp); * itemShow.transform.localPosition = new UnityEngine.Vector3(index * 90, 0, 0); * index++; * } * if (money > 0)//文钱 * { * itemShow = index >= m_lstItem.Count ? GetItem() : m_lstItem[index]; * itemShow.gameObject.SetActive(true); * itemShow.ShowWithItemIdNum(MainPlayerHelper.MoneyTicketID, money); * itemShow.transform.localPosition = new UnityEngine.Vector3(index * 90, 0, 0); * index++; * } * if (gold > 0)//金币 * { * itemShow = index >= m_lstItem.Count ? GetItem() : m_lstItem[index]; * itemShow.gameObject.SetActive(true); * itemShow.ShowWithItemIdNum(MainPlayerHelper.GoldID, gold); * itemShow.transform.localPosition = new UnityEngine.Vector3(index * 90, 0, 0); * index++; * } * * for (int i = 0; i < itemIds.Count && i < itemNums.Count; ++i) * { * uint itembaseid = itemIds[i]; * uint itemNum = itemNums[i]; * * itemShow = index >= m_lstItem.Count ? GetItem() : m_lstItem[index]; * itemShow.gameObject.SetActive(true); * * itemShow.ShowWithItemIdNum(itembaseid, itemNum); * itemShow.transform.localPosition = new UnityEngine.Vector3(index * 90, 0, 0); * index++; * } * * for (int i = index; i < m_lstItem.Count; i++) * { * m_lstItem[i].gameObject.SetActive(false); * } * m_trans_itemRoot.parent.GetComponent<UIScrollView>().ResetPosition(); * } */ private void SetTargetLabel(QuestTraceInfo taskInfo, ref table.QuestDataBase quest, ref UILabel targetLable) { if (taskInfo != null) { if (taskInfo.taskSubType == TaskSubType.Collection || taskInfo.taskSubType == TaskSubType.KillMonster || taskInfo.taskSubType == TaskSubType.KillMonsterCollect || taskInfo.taskSubType == TaskSubType.DeliverItem) { GameCmd.TaskProcess process = taskInfo.GetTaskProcess(); if (process == TaskProcess.TaskProcess_CanDone) { targetLable.text = string.Format("{0}[00ff00]({1}/{2})", quest.dwStrTarget, taskInfo.operate, taskInfo.state); } else if (process == TaskProcess.TaskProcess_Doing) { targetLable.text = string.Format("{0}[ff0000]({1}/{2})", quest.dwStrTarget, taskInfo.operate, taskInfo.state); } else { targetLable.text = quest.dwStrTarget; } } else { targetLable.text = quest.dwStrTarget; } } else { targetLable.text = quest.dwStrTarget; } }
public void Init(RewardMisssionInfo rInfo) { m_missionInfo = rInfo; if (m_spriteIcon != null) { m_spriteIcon.spriteName = rInfo.strIcon; } if (m_labelName != null) { m_labelName.text = rInfo.strName; } if (m_labelExp != null) { table.QuestDataBase taskdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(rInfo.ntaskid); if (taskdb != null) { m_labelExp.text = taskdb.dwRewardExp.ToString(); } } if (m_goGet != null) { m_goGet.gameObject.SetActive(rInfo.nstate == (int)GameCmd.TokenTaskState.TOKEN_STATE_FINISH); } if (m_goDone != null) { m_goDone.SetActive(rInfo.nstate == (int)GameCmd.TokenTaskState.TOKEN_STATE_ACCEPT); } if (m_goProcessing != null) { m_goProcessing.SetActive(rInfo.nstate == (int)GameCmd.TokenTaskState.TOKEN_STATE_PUBLISH); } }
// void ClearItems() // { // foreach (UIItemShow item in m_lstItem) // { // item.Release(); // } // m_lstItem.Clear(); // } void ShowUI() { table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(m_nTaskid); if (quest == null) { return; } m_widget_demonTask.alpha = (TaskType)quest.dwType == TaskType.TaskType_Demons ? 1f : 0f; m_widget_normalTask.alpha = (TaskType)quest.dwType == TaskType.TaskType_Demons ? 0f : 1f; m_label_title.text = quest.strName; QuestTraceInfo taskInfo = QuestTranceManager.GetInstance().GetQuestTraceInfo(m_nTaskid); if (quest.dwType != (uint)GameCmd.TaskType.TaskType_Demons) { ShowNormalTaskUI(quest, taskInfo); } else { ShowDemonsTaskUI(quest, taskInfo); } }
public void DeleteTaskByTaskID(uint taskid) { if (CompleteTask.ContainsKey(taskid)) { CompleteTask.Remove(taskid); } QuestTranceManager.Instance.RemoveTaskTrack(taskid); UpdateTaskTraceUI(taskid); table.QuestDataBase qtable = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(taskid); if (qtable != null) { if (qtable.dwType == (int)GameCmd.TaskType.TaskType_Token) { m_RewardMisssionMgr.DeleteTask(taskid); } } Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.TASK_DELETE, taskid); //TODO 刷新UI if (DataManager.Manager <UIPanelManager>().IsShowPanel(PanelID.MissionPanel)) { DataManager.Manager <UIPanelManager>().SendMsg(PanelID.MissionPanel, UIMsgID.eDeleteTask, taskid); } }
public void Init(table.AcceptTokenDataBase database, int index, RewardPanel panel) { m_PublicTokenDataBase = null; m_AcceptTokenDataBase = database; m_parent = panel; m_nIndex = index; if (m_labelName != null) { m_labelName.text = database.title; } if (m_textureIcon != null) { //m_spriteIcon.spriteName = database.icon; UIManager.GetTextureAsyn(database.bgId, ref m_iuiIconSeed, () => { if (m_textureIcon != null) { m_textureIcon.mainTexture = null; } }, m_textureIcon); } int level = MainPlayerHelper.GetPlayerLevel(); if (m_goOpen != null) { m_goOpen.gameObject.SetActive(level >= database.openLvele); } if (level >= database.openLvele) { m_labelOpenLevel.text = ""; SetBottomUI(); } else { m_labelOpenLevel.text = string.Format("{0}级开启", database.openLvele); } //exp if (m_lblExp != null) { table.QuestDataBase taskdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(database.taskid); if (taskdb != null) { List <table.RandomTargetDataBase> randomlist = GameTableManager.Instance.GetTableList <table.RandomTargetDataBase>(); for (int i = 0, imax = randomlist.Count; i < imax; i++) { if (randomlist[i].activity_type == 1 && taskdb.target_group == randomlist[i].group && randomlist[i].level == MainPlayerHelper.GetPlayerLevel()) { m_lblExp.text = string.Format("{0}", randomlist[i].level * randomlist[i].exp_ratio); break; } } } } }
public QuestTraceInfo(table.QuestDataBase questdb, uint nState, uint nOperate, bool bReceived) { m_clienDB = questdb; state = nState; operate = nOperate; this.time = UnityEngine.Time.realtimeSinceStartup; Received = bReceived; dynamicTranceUpdate = false; FormatXmlName(); }
/// <summary> /// 通过[任务编号]二分快速查表 /// </summary> /// <param name="dwID">任务编号</param> /// <returns></returns> public static QuestDataBase Query(this List <QuestDataBase> sorted, uint dwID) { var key = new QuestDataBase() { dwID = dwID }; var comparer = new Comparer1(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(QuestDataBase)); }
public void Init(table.PublicTokenDataBase database, int index, RewardPanel panel) { m_AcceptTokenDataBase = null; m_PublicTokenDataBase = database; m_parent = panel; m_nIndex = index; if (m_labelName != null) { m_labelName.text = database.title; } if (m_textureIcon != null) { // m_textureIcon.spriteName = database.icon; UIManager.GetTextureAsyn(database.bgId, ref m_iuiIconSeed, () => { if (m_textureIcon != null) { m_textureIcon.mainTexture = null; } }, m_textureIcon); } int level = MainPlayerHelper.GetPlayerLevel(); if (m_goOpen != null) { m_goOpen.gameObject.SetActive(level >= database.openLvele); } if (level >= database.openLvele) { m_labelOpenLevel.text = ""; SetBottomUI(); } else { m_labelOpenLevel.text = string.Format("{0}级开启", database.openLvele); } //exp if (m_lblExp != null) { table.QuestDataBase taskdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(database.taskid); if (taskdb != null) { m_lblExp.text = taskdb.dwRewardExp.ToString(); } } }
void ShowNormalTaskUI(table.QuestDataBase quest, QuestTraceInfo taskInfo) { if (quest == null) { return; } SetTaskDesc(ref quest); SetTargetLabel(taskInfo, ref quest, ref m_label_normaltargetLabel); if (taskInfo != null) { SetBottomBtnLable(taskInfo); if (taskInfo.exp == 0) { //请求任务奖励 NetService.Instance.Send(new GameCmd.stRequestTaskRewardScriptUserCmd_C() { task_id = m_nTaskid }); } else { m_lstRewardItemInfo = GetRewardInfoList(taskInfo.exp, taskInfo.money, taskInfo.gold, taskInfo.Items, taskInfo.ItemNum); m_rewardItemGridCreator.CreateGrids(m_lstRewardItemInfo != null ? m_lstRewardItemInfo.Count : 0); //SetNormalReward(taskInfo.exp,taskInfo.money,taskInfo.gold,taskInfo.Items,taskInfo.ItemNum); return; } if (taskInfo.state != 0) { m_trans_DemonFresh.gameObject.SetActive(taskInfo.state != taskInfo.operate); } else { m_trans_DemonFresh.gameObject.SetActive(true); } } else { NetService.Instance.Send(new GameCmd.stRequestTaskRewardScriptUserCmd_C() { task_id = m_nTaskid }); m_label_btn_bottom_Label.text = "接取"; m_trans_DemonFresh.gameObject.SetActive(true); } }
/// <summary> /// 刷新npc任务状态表示 /// </summary> /// <param name="taskId"></param> private void OnUpdateNpcTaskStatus(uint taskId, Client.GameEventID eventID) { long uid = 0; string icon = ""; bool enable = false; switch (eventID) { case GameEventID.TASK_ACCEPT: case GameEventID.TASK_CANACCEPT: case GameEventID.TASK_DONING: case GameEventID.TASK_CANSUBMIT: { enable = RoleStateBarManager.TryGetQuestStatusIcon(taskId, out uid, out icon); if (eventID == GameEventID.TASK_ACCEPT) { table.QuestDataBase questDB = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(taskId); if (questDB != null && questDB.dwBeginNpc != questDB.dwEndNpc) { //交接任务不在同一个npc移除任务标示 Client.INPC npc = RoleStateBarManager.GetNPCByBaseID(questDB.dwBeginNpc); if (null != npc) { UpdateNpcTaskStatus(npc.GetUID(), false); } } } } break; case GameEventID.TASK_DELETE: case GameEventID.TASK_DONE: { table.QuestDataBase questDB = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(taskId); if (questDB == null) { return; } Client.INPC npc = RoleStateBarManager.GetNPCByBaseID(questDB.dwEndNpc); if (null != npc) { uid = npc.GetUID(); } } break; } if (uid != 0) { UpdateNpcTaskStatus(uid, enable, icon); } }
private void SetType1UI(table.Trailerdatabase data, bool isOpen) { m_trans_Type1.gameObject.SetActive(true); m_trans_Type2.gameObject.SetActive(false); if (data == null) { return; } UISprite spriteIcon = m_trans_Type1.Find("Icon").GetComponent <UISprite>(); if (spriteIcon != null) { spriteIcon.spriteName = data.strIcon; //策划要求不适用完美比例 //spriteIcon.MakePixelPerfect(); } //m_trans_Type1.Find("effect").gameObject.SetActive(isOpen); PlayEffect(m_trans_Type1.Find("effect"), isOpen); UILabel labelDesc = m_trans_Type1.Find("desc").GetComponent <UILabel>(); if (labelDesc != null) { if (isOpen)//可以领奖 { labelDesc.text = string.Format(DataManager.Manager <TextManager>().GetLocalText(LocalTextType.Local_Txt_Trailer_3), DataManager.Manager <TextManager>().GetLocalText(LocalTextType.Local_Txt_Trailer_4)); } else { //labelDesc.color = new Color(62 / 255.0f, 71 / 255.0f, 90 / 255.0f); int level = MainPlayerHelper.GetPlayerLevel(); if (level < data.level) { labelDesc.text = string.Format(DataManager.Manager <TextManager>().GetLocalFormatText(LocalTextType.Local_TXT_FM_Trailer_Level, data.level)); } else if (data.task != 0) { if (DataManager.Manager <TaskDataManager>().CheckTaskFinished(data.task) == false) { table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(data.task); if (quest != null) { labelDesc.text = string.Format(DataManager.Manager <TextManager>().GetLocalFormatText(LocalTextType.Local_TXT_FM_Trailer_Task, quest.strName)); } } } } } }
/// <summary> /// 移除特效 /// </summary> /// <param name="nTaskID"></param> void DeleteEffectByTaskID(uint nTaskID) { table.QuestDataBase questDB = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(nTaskID); if (questDB == null) { return; } Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); if (es == null) { Engine.Utility.Log.Error("实体系统为null"); return; } Client.INPC npc = es.FindNPCByBaseId((int)questDB.dwEndNpc); DeleteEffectByNpc(npc); }
public T GetTableItem <T>(uint itemIndex, TableName name, int childID = 0) { if (name == TableName.QuestDataBase) { table.QuestDataBase item = Table.Query <table.QuestDataBase>().FirstOrDefault(i => i.dwID == itemIndex); return((T)(object)item); } else if (name == TableName.GameGlobalConfig) { table.GameGlobalConfig item = Table.Query <table.GameGlobalConfig>().FirstOrDefault(i => i.TableID == itemIndex); return((T)(object)item); } else { Log.Info("表格" + name.ToString() + "未找到索引 " + itemIndex.ToString()); } return(default(T)); }
//----------------------------------------------------------------------------------------------- /// <summary> /// 添加接受的任务 /// </summary> /// <param name="taskid"></param> /// <param name="state"></param> /// <param name="operate"></param> public QuestTraceInfo AddReceivedTask(uint taskid, uint state, uint operate, bool bUpdateCanReceive = true) { table.QuestDataBase questdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(taskid); if (questdb == null) { Engine.Utility.Log.Error(" get quest null {0}", taskid); return(null); } for (int k = 0; k < m_lstCanReceive.Count; k++) { if (m_lstCanReceive[k].taskId == taskid) { m_lstCanReceive.RemoveAt(k); break; } } QuestTraceInfo cri = new QuestTraceInfo(questdb, state, operate, true); if (cri.dynamicTrance) { Protocol.Instance.RequestTaskTip(taskid); } else { cri.UpdateDesc(); } //请求任务奖励 Protocol.Instance.RequestTaskReward(taskid); Engine.Utility.Log.LogGroup("LCY", "添加的 taskId ={0}", taskid); m_lstReceivedTask.Add(cri); if (bUpdateCanReceive) { UpdateCanReceiveTask(); } return(cri); }
/// <summary> /// 移除npc身上特效(采集完成可提交时) /// </summary> /// <param name="taskId"></param> public void RemoveCollectNpcEffectByTaskId(uint taskId) { table.QuestDataBase taskInfo = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(taskId); if (taskInfo == null) { return; } if (taskInfo.dwSubType != (uint)TaskSubType.Collection) { return; } Dictionary <uint, List <int> > .Enumerator etr = m_dicCollectNpcEffectLinkId.GetEnumerator(); while (etr.MoveNext()) { RemoveCollectNpcEffectByNpcId(etr.Current.Key); } CleanCollectNpcEffectData(); }
void onClick_BtnGiveUp_Btn(GameObject caster) { Action OK = delegate { if (m_currquest == null) { return; } Engine.Utility.Log.Trace("删除任务:{0}", m_currquest.taskId); table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(m_currquest.taskId); if (quest != null) { if (quest.dwType == (uint)GameCmd.TaskType.TaskType_Token) { if (DataManager.Manager <TaskDataManager>().RewardMisssionData.receiveReward != null) { NetService.Instance.Send(new GameCmd.stAcceptTokenTaskGiveupScriptUserCmd_C() { tokentaskid = DataManager.Manager <TaskDataManager>().RewardMisssionData.receiveReward.id, //userid = Client.ClientGlobal.Instance().MainPlayer.GetID(), }); } } else { NetService.Instance.Send(new GameCmd.stDelRoleTaskScriptUserCmd_CS() { dwTaskID = m_currquest.taskId }); } } }; Action Cancel = delegate { }; string des = "放弃任务?"; TipsManager.Instance.ShowTipWindow(0, 10, Client.TipWindowType.CancelOk, des, OK, Cancel); }
private void DoAcceptTask(QuestTraceInfo taskInfo) { table.QuestDataBase questDB = taskInfo.QuestTable; if (questDB == null) { Engine.Utility.Log.Error("QuestTable is null"); return; } if (taskInfo.taskType == GameCmd.TaskType.TaskType_Token) { PanelID pid; int tab = 0; int copyID; /* if (taskInfo.IsOpenUI(out pid, out tab,out copyID)) * { * // DataManager.Manager<UIPanelManager>().ShowPanel(pid); * // UIFrameManager.Instance.OnCilckTogglePanel(pid, UIPanelBase.FisrstTabsIndex, tab); * DataManager.Manager<UIPanelManager>().ShowPanel(pid, jumpData: new UIPanelBase.PanelJumpData() { Tabs = new int[] { tab } }); * * }*/ uint jumpId; if (taskInfo.IsOpenUI(out jumpId)) { ItemManager.DoJump(jumpId); } } if (taskInfo.taskSubType == TaskSubType.Guild) { Protocol.Instance.RequestAcceptTask(taskInfo.taskId); } else { DataManager.Manager <RideManager>().TryUsingRide(delegate(object o) { VisitNpc(questDB.dwHelpGoto, questDB.acceptMapID, questDB.dwBeginNpc, questDB.dwID); }, null); } }
public void OnReceiveTokenTask(uint nTokenTaskID) { RewardMisssionInfo missioninfo = new RewardMisssionInfo(); table.AcceptTokenDataBase reward = GameTableManager.Instance.GetTableItem <table.AcceptTokenDataBase>(nTokenTaskID); if (reward != null) { missioninfo.id = reward.id; missioninfo.strIcon = reward.icon; missioninfo.strName = reward.title; missioninfo.nType = 2; missioninfo.ntaskid = reward.taskid; table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(reward.taskid); if (quest != null) { missioninfo.nExp = quest.dwRewardExp; missioninfo.nleftTime = quest.dwLimitTime * 60 * 60.0f; } missioninfo.nstate = (int)TokenTaskState.TOKEN_STATE_ACCEPT; m_RewardMisssionMgr.receiveReward = missioninfo; m_RewardMisssionMgr.RewardAcceptTimes++; //直接去做悬赏任务 //GoToDoTokenTask(); //延时去做悬赏任务(服务器的悬赏任务数据有可能还没下发) TimerAxis.Instance().KillTimer(TOKENTASK_TIMERID, this); TimerAxis.Instance().SetTimer(TOKENTASK_TIMERID, 200, this); } if (DataManager.Manager <UIPanelManager>().IsShowPanel(PanelID.RewardPanel)) { //DataManager.Manager<UIPanelManager>().SendMsg(PanelID.RewardPanel, UIMsgID.eRewardTaskListRefresh, (int)nTokenTaskID); //策划要求直接关掉悬赏界面 DataManager.Manager <UIPanelManager>().HidePanel(PanelID.RewardPanel); } //悬赏任务更新当前显示环数 UpdateQuestTraceItemInfoByType(GameCmd.TaskType.TaskType_Token); }
void ShowDemonsTaskUI(table.QuestDataBase quest, QuestTraceInfo taskInfo) { if (quest == null) { return; } SetTaskDesc(ref quest); SetTargetLabel(taskInfo, ref quest, ref m_label_demontargetLabel); SetDemonsStar(); if (taskInfo != null) { SetBottomBtnLable(taskInfo); if (taskInfo.exp == 0) { //请求任务奖励 NetService.Instance.Send(new GameCmd.stRequestTaskRewardScriptUserCmd_C() { task_id = m_nTaskid }); } else { m_label_labledemonexp.text = taskInfo.exp.ToString(); } } else { NetService.Instance.Send(new GameCmd.stRequestTaskRewardScriptUserCmd_C() { task_id = m_nTaskid }); m_label_btn_bottom_Label.text = "接取"; } }
/// <summary> /// 日环任务对话npc /// </summary> /// <param name="npcId"></param> /// <returns></returns> static bool GetNpcIdForDaliyRingTask(out uint npcId) { npcId = 0; uint doingTaskId = DataManager.Manager <TaskDataManager>().DoingTaskID; table.QuestDataBase qdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(doingTaskId); if (qdb == null) { return(false); } if (qdb.dwType == (uint)GameCmd.TaskType.TaskType_Loop) { if (qdb.dwSubType == (uint)TaskSubType.Talk) { npcId = qdb.dwEndNpc; return(true); } } return(false); }
[Execute]//发布令牌任务 public void Excute(stPublicTokenTaskScriptUserCmd_CS cmd) { TaskDataManager taskMgr = DataManager.Manager <TaskDataManager>(); RewardMisssionInfo missioninfo = new RewardMisssionInfo(); table.PublicTokenDataBase reward = GameTableManager.Instance.GetTableItem <table.PublicTokenDataBase>(cmd.tokentaskid, 1); if (reward != null) { missioninfo.strIcon = reward.smallicon; missioninfo.strName = reward.title; missioninfo.nType = 1; missioninfo.ntaskid = reward.taskid; missioninfo.id = reward.id; table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(reward.taskid); if (quest != null) { missioninfo.nExp = quest.dwRewardExp; missioninfo.nleftTime = quest.dwLimitTime * 60 * 60; } missioninfo.nstate = (int)TokenTaskState.TOKEN_STATE_PUBLISH; taskMgr.RewardMisssionData.ReleaseRewardList.Add(missioninfo); } }
/// <summary> /// 服务器下发数据初始化 /// </summary> /// <param name="data"></param> /// <param name="acceptTaskRemain"></param> /// <param name="publicTaskRemain"></param> public void InitTask(List <GameCmd.TokenTaskInfo> data, uint acceptTaskRemain, uint publicTaskRemain) { RewardAcceptTimes = acceptTaskRemain;//这里应当是已经接受的次数 下面也是 RewardReleaseTimes = publicTaskRemain; ReleaseRewardList.Clear(); receiveReward = null; RewardMisssionInfo missioninfo = null; for (int i = 0; i < data.Count; ++i) { missioninfo = new RewardMisssionInfo(); //接受任务 if (data[i].state > (int)GameCmd.TokenTaskState.TOKEN_STATE_FINISH) { table.AcceptTokenDataBase acceptData = GameTableManager.Instance.GetTableItem <table.AcceptTokenDataBase>(data[i].tokentaskid); if (acceptData != null) { missioninfo.id = acceptData.id; missioninfo.strIcon = acceptData.icon; missioninfo.strName = acceptData.title; missioninfo.nType = 2; missioninfo.ntaskid = acceptData.taskid; table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(acceptData.taskid); if (quest != null) { missioninfo.nExp = quest.dwRewardExp; long lpasstime = DateTimeHelper.Instance.Now - data[i].time; missioninfo.nleftTime = quest.dwLimitTime * 60 * 60 - lpasstime; } missioninfo.nstate = (int)data[i].state; QuestTraceInfo squest = QuestTranceManager.Instance.GetQuestTraceInfo(missioninfo.ntaskid); if (squest != null) { missioninfo.nstate = squest.operate == squest.state ? (int)GameCmd.TokenTaskState.TOKEN_STATE_FINISH : (int)GameCmd.TokenTaskState.TOKEN_STATE_ACCEPT; } receiveReward = missioninfo; } continue; } table.PublicTokenDataBase reward = GameTableManager.Instance.GetTableItem <table.PublicTokenDataBase>(data[i].tokentaskid); if (reward != null) { missioninfo.id = reward.id; missioninfo.strIcon = reward.smallicon; missioninfo.strName = reward.title; missioninfo.nType = 1; missioninfo.ntaskid = reward.taskid; Engine.Utility.Log.LogGroup("ZCX", "id :" + data[i].tokentaskid); table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(reward.taskid); if (quest != null) { missioninfo.nExp = quest.dwRewardExp; long lpasstime = DateTimeHelper.Instance.Now - data[i].time; missioninfo.nleftTime = quest.dwLimitTime * 60 * 60 - lpasstime; } missioninfo.nstate = (int)data[i].state; ReleaseRewardList.Add(missioninfo); } } if (DataManager.Manager <UIPanelManager>().IsShowPanel(PanelID.RewardPanel)) { DataManager.Manager <UIPanelManager>().SendMsg(PanelID.RewardPanel, UIMsgID.eRewardTaskListRefresh, null); } else { for (int i = 0; i < ReleaseRewardList.Count; i++) { if (ReleaseRewardList[i].nstate == (int)GameCmd.TokenTaskState.TOKEN_STATE_FINISH && true == DataManager.Manager <TaskDataManager>().FirstLoginSuccess) { DataManager.Manager <FunctionPushManager>().AddSysMsg(new PushMsg() { msgType = PushMsg.MsgType.TokenTaskReward, senderId = Client.ClientGlobal.Instance().MainPlayer.GetID(), //m_leaderId, //senderId = cmd.dwAnswerUserID, //name = cmd.byTeamName, //sendName = cmd.byAnswerName, sendTime = UnityEngine.Time.realtimeSinceStartup, cd = 100000, }); } } } if (DataManager.Manager <UIPanelManager>().IsShowPanel(PanelID.RewardMissionPanel)) { DataManager.Manager <UIPanelManager>().SendMsg(PanelID.RewardMissionPanel, UIMsgID.eRewardTaskListRefresh, null); } //悬赏任务更新当前显示环数 UpdateQuestTraceItemInfoByType(GameCmd.TaskType.TaskType_Token); }
private void SetTaskDesc(ref table.QuestDataBase quest) { m_label_RichText.text = quest.dwDesc; }
private void OnCommitTask(QuestTraceInfo taskInfo) { table.QuestDataBase questDB = taskInfo.QuestTable; if (questDB == null) { Engine.Utility.Log.Error("QuestTable is null"); return; } if (taskInfo.taskSubType == TaskSubType.Guild) { DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.MissionMessagePanel, data: taskInfo.taskId); return; } PanelID pid; int tab = 0; int copyId = 0; uint jumpId; if (taskInfo.IsOpenUI(out jumpId)) { ItemManager.DoJump(jumpId); return; } else if (taskInfo.IsChangeBodyTask()) { //bool isChange = (bool)Client.ClientGlobal.Instance().MainPlayer.SendMessage(Client.EntityMessage.EntityCommand_IsChange, null); //if (!isChange) //{ // m_nDoingTaskID = taskInfo.taskId; // if (m_bAddChangeListener) // { // return; // } // m_bAddChangeListener = true; // Engine.Utility.Log.Info("{0}CanDone 等待.......变身回来 执行任务{1}", TAG, m_nDoingTaskID); // Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.ENTITYSYSTEM_CHANGE, OnEvent); // return; //} m_nDoingTaskID = taskInfo.taskId; if (false == m_bAddChangeListener && false == MainPlayerIsChangeBody()) { m_bAddChangeListener = true; Engine.Utility.Log.Info("{0}CanDone 等待.......变身回来 执行任务{1}", TAG, m_nDoingTaskID); Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.ENTITYSYSTEM_CHANGE, OnEvent); } VisitNpc(questDB.dwHelpCommit, questDB.submitMapID, questDB.dwEndNpc, questDB.dwID); return; } uint npcid = 0; if (taskInfo.IsKillMonster(out npcid)) { Client.ISkillPart skillPart = Client.ClientGlobal.Instance().MainPlayer.GetPart(Client.EntityPart.Skill) as Client.ISkillPart; if (skillPart != null) { if (skillPart.GetCurSkillState() != (int)Client.SkillState.None) { m_nDoingTaskID = taskInfo.taskId; Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.SKILLNONESTATE_ENTER, OnEvent); Engine.Utility.Log.Info("等待.......技能播放完毕 执行任务{0}", m_nDoingTaskID); return; } } } //令牌悬赏无交任务npc if (taskInfo.taskType != GameCmd.TaskType.TaskType_Token) { DataManager.Manager <RideManager>().TryUsingRide(delegate(object o) { VisitNpc(questDB.dwHelpCommit, questDB.submitMapID, questDB.dwEndNpc, questDB.dwID); }, null); } }
//***********************************************// public Quest(table.QuestDataBase config) { tableInfo = config; }
private void OnDoingTask(QuestTraceInfo taskInfo) { DataManager.Manager <TaskDataManager>().DoingTaskID = taskInfo.taskId; Client.IController controller = Client.ClientGlobal.Instance().GetControllerSystem().GetActiveCtrl(); if (controller == null) { Engine.Utility.Log.Error("IController is null"); return; } table.QuestDataBase questDB = taskInfo.QuestTable; if (questDB == null) { Engine.Utility.Log.Error("QuestTable is null"); return; } UnityEngine.Vector2 pos; uint npcid = 0; PanelID pid; int copyID; int tab = 0; uint jumpId; //背包满了 无法执行任务 if (false == taskInfo.TaskItemCanPutInKanpsack()) { TipsManager.Instance.ShowTips(LocalTextType.Task_Commond_3); return; } if (MainPlayerIsChangeBody()) { return; } else if (taskInfo.taskSubType == TaskSubType.SubmitLimit) //断档任务 { if (taskInfo.IsOpenUI(out jumpId)) { ItemManager.DoJump(jumpId); } else { string des = string.Format("将等级提升到{0}级继续主线任务", taskInfo.finishLevel); TipsManager.Instance.ShowTips(des); } return; } else if (taskInfo.IsDynamicCommitItem) //动态道具递交(蚩尤乱世除外) { taskInfo.DoJump(); return; } else if (DataManager.Manager <ComBatCopyDataManager>().IsEnterCopy == false && taskInfo.IsOpenUI(out jumpId)) { ItemManager.DoJump(jumpId); return; } else if (taskInfo.IsMoveToTargetPos(out pos)) { //if (DataManager.Manager<TaskDataManager>().IsShowSlider) if (DataManager.Manager <SliderDataManager>().IsReadingSlider) { return; } Client.IControllerSystem cs = Client.ClientGlobal.Instance().GetControllerSystem(); if (cs == null) { return; } if (!m_bAddStopMoveListener) { m_bAddStopMoveListener = true; Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.ENTITYSYSTEM_ENTITYSTOPMOVE, OnEvent); } if (EqualsMapID(questDB.destMapID)) { cs.GetCombatRobot().Stop(); DataManager.Manager <RideManager>().TryUsingRide(delegate(object o) { //if (!m_bAddStopMoveListener) //{ // m_bAddStopMoveListener = true; // Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.ENTITYSYSTEM_ENTITYSTOPMOVE, OnEvent); //} m_nDoingTaskID = taskInfo.taskId; controller.GotoMap(questDB.destMapID, new Vector3(pos.x, 0, -pos.y)); }, null); return; } else { DataManager.Manager <RideManager>().TryUsingRide(delegate(object o) { if (questDB.dwHelpDoing) { m_nDoingTaskID = taskInfo.taskId; //下载地图检查 if (!KHttpDown.Instance().SceneFileExists(questDB.destMapID)) { //打开下载界面 DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel); return; } controller.GotoMapDirectly(questDB.destMapID, new Vector3(pos.x, 0, -pos.y), questDB.dwID); } }, null); } } else if (taskInfo.IsVisitCollectNpc(out npcid) || taskInfo.IsDeleverItem(out npcid)) { AddCollectNpcEffect(taskInfo); DataManager.Manager <RideManager>().TryUsingRide(delegate(object o) { VisitNpc(questDB.dwHelpDoing, questDB.destMapID, npcid, questDB.dwID); }, null); } else if (taskInfo.IsDirectlyVisitCopy(taskInfo.copyId) && false == EqualsMapID(questDB.destMapID)) { //直接跳副本 VisitCopy(taskInfo.copyId); } else if (taskInfo.IsKillMonster(out npcid)) { Client.ICombatRobot robot = Client.ClientGlobal.Instance().GetControllerSystem().GetCombatRobot(); if (robot == null) { Engine.Utility.Log.Error("robotis null"); return; } if (robot.Status == Client.CombatRobotStatus.RUNNING && robot.TargetId == npcid) { Engine.Utility.Log.Info("已经在挂机杀怪{0}", npcid); return; } //TODO 优化 bool getPos = false; if (EqualsMapID(questDB.destMapID)) { Client.IMapSystem ms = Client.ClientGlobal.Instance().GetMapSystem(); if (ms.GetClienNpcPos((int)npcid, out pos)) { getPos = true; Vector3 mainPos = Client.ClientGlobal.Instance().MainPlayer.GetPos(); if ((mainPos - new Vector3(pos.x, mainPos.y, -pos.y)).sqrMagnitude < 5) { Client.IControllerSystem cs = Client.ClientGlobal.Instance().GetControllerSystem(); if (cs != null) { cs.GetCombatRobot().StartWithTarget((int)npcid); Engine.Utility.Log.LogGroup("ZCX", "挂机杀怪物{0}", npcid); return; } } } } DataManager.Manager <RideManager>().TryUsingRide(delegate(object o) { if (!m_bAddStopMoveListener) { m_bAddStopMoveListener = true; Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.ENTITYSYSTEM_ENTITYSTOPMOVE, OnEvent); } m_nDoingTaskID = taskInfo.taskId; if (getPos) { controller.MoveToTarget(new Vector3(pos.x, 0, -pos.y), null, true); } else if (EqualsMapID(questDB.destMapID)) { Client.IMapSystem ms = Client.ClientGlobal.Instance().GetMapSystem(); if (ms.GetClienNpcPos((int)npcid, out pos)) { controller.MoveToTarget(new Vector3(pos.x, 0, -pos.y), null, true); } } else { VisitNpc(questDB.dwHelpDoing, questDB.destMapID, npcid, questDB.dwID); } }, null); } }
public void OnClickCard(RewardCard card) { if (UnityEngine.Time.realtimeSinceStartup - m_fClickCardTime < 0.3f) { return; } if (m_nLastIndex == card.Index) { m_fClickCardTime = UnityEngine.Time.realtimeSinceStartup; for (int i = m_nLastIndex + 1 < m_lstRewardCard.Count ? m_nLastIndex + 1 : 0; i < m_lstRewardCard.Count; i++) { Vector3 pos = m_lstRewardCard[i].transform.localPosition; pos.x = m_nLastIndex + 1 < m_lstRewardCard.Count ? pos.x - OFFSETX : pos.x + OFFSETX; TweenPosition tp = TweenPosition.Begin(m_lstRewardCard[i].gameObject, 0.25f, pos); } if (m_nLastIndex + 1 < m_lstRewardCard.Count) { TweenPosition.Begin(m_widget_rewardInfo.gameObject, 0.15f, new UnityEngine.Vector3(-OFFSETX, 0, 0)); } else { TweenPosition.Begin(m_widget_rewardInfo.gameObject, 0.15f, new UnityEngine.Vector3(OFFSETX, 0, 0)); } m_nLastIndex = -1; return; } if (m_nLastIndex >= 0 && m_trans_PanelInfo.gameObject.activeSelf) { for (int i = m_nLastIndex + 1 < m_lstRewardCard.Count ? m_nLastIndex + 1 : 0; i < m_lstRewardCard.Count; i++) { Vector3 pos = m_lstRewardCard[i].transform.localPosition; pos.x = m_nLastIndex + 1 < m_lstRewardCard.Count ? pos.x - OFFSETX : pos.x + OFFSETX; m_lstRewardCard[i].transform.localPosition = pos; } m_widget_rewardInfo.transform.localPosition = new UnityEngine.Vector3(-OFFSETX, 0, 0); } m_nLastIndex = card.Index; for (int i = card.Index + 1 < m_lstRewardCard.Count ? card.Index + 1 : 0; i < m_lstRewardCard.Count; i++) { Vector3 pos = m_lstRewardCard[i].transform.localPosition; pos.x = card.Index + 1 < m_lstRewardCard.Count ? pos.x + OFFSETX : pos.x - OFFSETX; TweenPosition tp = TweenPosition.Begin(m_lstRewardCard[i].gameObject, 0.15f, pos); } m_label_release_Label.enabled = card.TaskType == 1; m_label_take_Label.enabled = card.TaskType == 2; m_widget_rewardInfo.transform.Find("Sprite/release_tips").gameObject.SetActive(card.TaskType == 1); m_widget_rewardInfo.transform.Find("Sprite/take_tips").gameObject.SetActive(card.TaskType == 2); if (card.TaskType == 1) { table.QuestDataBase taskdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(card.TaskId); //if (taskdb != null) //{ // m_label_infoexpNum.text = taskdb.dwRewardExp.ToString(); //} //m_label_receiveCost.transform.parent.gameObject.SetActive(false); //m_label_acceptExp.text = ""; } else if (card.TaskType == 2) { //m_label_receiveCost.transform.parent.gameObject.SetActive(true); //m_label_infoexpNum.text = ""; //m_label_receiveCost.text = card.CostMoney.ToString(); table.QuestDataBase taskdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(card.TaskId); if (taskdb != null) { List <table.RandomTargetDataBase> randomlist = GameTableManager.Instance.GetTableList <table.RandomTargetDataBase>(); for (int i = 0, imax = randomlist.Count; i < imax; i++) { if (randomlist[i].activity_type == 1 && taskdb.target_group == randomlist[i].group && randomlist[i].level == MainPlayerHelper.GetPlayerLevel()) { m_label_acceptExp.text = string.Format("{0}", randomlist[i].level * randomlist[i].exp_ratio); break; } } } } m_trans_PanelInfo.transform.parent = m_trans_gridroot; m_trans_PanelInfo.transform.localPosition = card.transform.localPosition; m_trans_PanelInfo.gameObject.SetActive(true); if (card.Index + 1 < m_lstRewardCard.Count) { m_trans_PanelInfo.transform.localPosition = card.transform.localPosition + new Vector3(OFFSETX, 0, 0); m_widget_rewardInfo.transform.localPosition = new UnityEngine.Vector3(-OFFSETX, 0, 0); TweenPosition tp = TweenPosition.Begin(m_widget_rewardInfo.gameObject, 0.15f, Vector3.zero); } else { m_widget_rewardInfo.transform.localPosition = new UnityEngine.Vector3(OFFSETX, 0, 0); TweenPosition tp = TweenPosition.Begin(m_widget_rewardInfo.gameObject, 0.15f, Vector3.zero); } m_fClickCardTime = UnityEngine.Time.realtimeSinceStartup; }
public bool RemoveTaskTrack(uint nTaskID) { if (m_lstReceivedTask == null) { return(false); } for (int i = 0; i < m_lstReceivedTask.Count; i++) { if (m_lstReceivedTask[i].taskId == nTaskID) { m_lstReceivedTask.RemoveAt(i); UpdateCanReceiveTask(); break; } } //检查魔族急袭可接任务 table.QuestDataBase qDb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(nTaskID); if (qDb != null) { if (qDb.dwType == (uint)GameCmd.TaskType.TaskType_Demons) { Dictionary <uint, uint> completeTaskDic = DataManager.Manager <TaskDataManager>().CompleteTask; Dictionary <uint, uint> .Enumerator etr = completeTaskDic.GetEnumerator(); uint count = 0; while (etr.MoveNext()) { table.QuestDataBase tempDb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(etr.Current.Key); if (tempDb.dwType == (uint)GameCmd.TaskType.TaskType_Demons) { count++; } } if (count == 0) { m_lstCanReceive.RemoveAll((d) => { return(d.taskType == GameCmd.TaskType.TaskType_Demons); }); UpdateCanReceiveTask(); return(true); } // 2、 List <QuestTraceInfo> list = m_lstCanReceive.FindAll((data) => { return(data.taskType == GameCmd.TaskType.TaskType_Demons); }); for (int i = list.Count - 1; i >= 0; i--) { //前置任务没完成 从可接任务中删除 if (false == DataManager.Manager <TaskDataManager>().CheckTaskFinished(list[i].PreTask)) { Engine.Utility.Log.LogGroup("LCY", "手动删除可接任务的 taskId ={0}", list[i].taskId); m_lstCanReceive.Remove(list[i]); UpdateCanReceiveTask(); } } } } return(true); }
/// <summary> /// 升级 删除 或者接取任务的时候刷新可以接取任务 /// </summary> public void UpdateCanReceiveTask() { if (m_lstCanReceive == null) { m_lstCanReceive = new List <QuestTraceInfo>(); } //m_lstCanReceive.Clear(); if (Client.ClientGlobal.Instance().MainPlayer == null) { return; } int playerLevel = Client.ClientGlobal.Instance().MainPlayer.GetProp((int)Client.CreatureProp.Level); int job = Client.ClientGlobal.Instance().MainPlayer.GetProp((int)Client.PlayerProp.Job); List <table.QuestDataBase> allTableQuest = GameTableManager.Instance.GetTableList <table.QuestDataBase>(); table.QuestDataBase stTask = null; TaskDataManager taskMgr = DataManager.Manager <TaskDataManager>(); for (int i = 0, imax = allTableQuest.Count; i < allTableQuest.Count; i++) { stTask = allTableQuest[i]; bool contain = false; for (int k = 0; k < m_lstCanReceive.Count; k++) { if (m_lstCanReceive[k].taskId == stTask.dwID) { contain = true; break; } } if (contain) { continue; } if (taskMgr.CheckTaskFinished(stTask.dwID)) { continue; } //职业限制 if (stTask.job != 0 && stTask.job != job) { continue; } //不能接的任务 if (playerLevel < stTask.dwMinLevel || playerLevel > stTask.dwMaxLevel) { continue; } //前置任务没完成直接跳过 if (!string.IsNullOrEmpty(stTask.dwPreTask)) { if (stTask.Type != GameCmd.TaskType.TaskType_Loop && !taskMgr.CheckTaskFinished(stTask.dwPreTask)) { continue; } } //环任务不主动添加,由服务器下发 if (stTask.Type == GameCmd.TaskType.TaskType_Loop) { continue; } //已经接了 if (CheckTaskAccepted(stTask.dwID)) { continue; } if (stTask.dwMinLevel > playerLevel) { continue; } if (taskMgr.CheckTaskFinished(stTask.dwID)) //完成过的任务 { continue; } QuestTraceInfo questTranceInfo = new QuestTraceInfo(stTask, 0, 0, false); questTranceInfo.UpdateDesc(); m_lstCanReceive.Add(questTranceInfo); if (DataManager.Manager <TaskDataManager>().FirstLoginSuccess) { Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.TASK_CANACCEPT, stTask.dwID); } //引导任务 if (stTask.dwSubType == (uint)TaskSubType.Guild) { if (stTask.startStatus == 2)//主动接取 { Protocol.Instance.RequestAcceptTask(stTask.dwID); } } } }
void ExecuteGoto(DailyDataBase dailyData) { if (null == dailyData) { return; } if (dailyData.isClosePanel == 1) { HideSelf(); } if (dailyData.taskID > 0) { table.QuestDataBase questDb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(dailyData.taskID); if (questDb != null) { //如果是魔族任务 找当前在做的魔族任务执行 否则直接执行当前配置任务id if (questDb.dwType == (uint)GameCmd.TaskType.TaskType_Demons) { List <QuestTraceInfo> lstdata = null; DataManager.Manager <TaskDataManager>().GetAllQuestTraceInfo(out lstdata); for (int i = 0; i < lstdata.Count; i++) { if (lstdata[i].taskType != TaskType.TaskType_Demons) { continue; } Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.TASK_DONING, new Client.stDoingTask() { taskid = lstdata[i].taskId }); return; } } Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.TASK_DONING, new Client.stDoingTask() { taskid = dailyData.taskID }); } } else if (dailyData.puGuaID > 0) { List <QuestTraceInfo> lstdata = new List <QuestTraceInfo>(); DataManager.Manager <TaskDataManager>().GetAllQuestTraceInfo(out lstdata); for (int i = 0; i < lstdata.Count; i++) { if (lstdata[i].taskType != TaskType.TaskType_Loop) { continue; } Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.TASK_DONING, new Client.stDoingTask() { taskid = lstdata[i].taskId }); return; } if (dailyData.jumpID > 0) { ItemManager.DoJump(dailyData.jumpID); } } else if (dailyData.jumpID > 0) { ItemManager.DoJump(dailyData.jumpID); } }