void MissionNodeOnDelete(object sender) { UIMissionNode node = sender as UIMissionNode; if (node == null) { return; } delView = node.mData as UIMissionMgr.MissionView; if (delView == null) { return; } MissionCommonData data = MissionManager.GetMissionCommonData(delView.mMissionID); if (data == null) { return; } //else // MissionManager.Instance.m_PlayerMission.FailureMission(delView.mMissionID); if (!data.m_bGiveUp) { new PeTipMsg(PELocalization.GetString(8000174), PeTipMsg.EMsgLevel.Warning); return; } MessageBox_N.ShowYNBox(PELocalization.GetString(8000066), DeleteMissionOk); }
public void GetMutexID(int curMisID, ref List <int> idlist) { idlist.Clear(); GameUI.Instance.mNPCTalk.m_selectMissionSource = curMisID; MissionCommonData data = MissionManager.GetMissionCommonData(curMisID); if (data == null) { return; } //判断条件 if (data.m_GuanLianList.Count == 0) { return; } for (int m = 0; m < data.m_GuanLianList.Count; m++) { //!MissionManager.Instance.HadCompleteMission(data.m_GuanLianList[m]) && !MissionManager.Instance.HasMission(data.m_GuanLianList[m]) if (MissionManager.Instance.m_PlayerMission.IsGetTakeMission(data.m_GuanLianList[m], false)) { idlist.Add(data.m_GuanLianList[m]); } } return; }
public static List <PeEntity> NPCBeKilled(int npcNum) { List <PeEntity> npcs = new List <PeEntity>(); if (npcNum == 25001 && ServantLeaderCmpt.Instance.GetServant(0) != null) { npcs.Add(ServantLeaderCmpt.Instance.GetServant(0).GetComponent <PeEntity>()); } else if (npcNum == 25002 && ServantLeaderCmpt.Instance.GetServant(1) != null) { npcs.Add(ServantLeaderCmpt.Instance.GetServant(1).GetComponent <PeEntity>()); } else if (npcNum == 25010) { if (ServantLeaderCmpt.Instance.GetServant(0) != null) { npcs.Add(ServantLeaderCmpt.Instance.GetServant(0).GetComponent <PeEntity>()); } if (ServantLeaderCmpt.Instance.GetServant(1) != null) { npcs.Add(ServantLeaderCmpt.Instance.GetServant(1).GetComponent <PeEntity>()); } } else { npcs.Add(EntityMgr.Instance.Get(npcNum)); } foreach (var item in npcs) { if (item == null) { continue; } CSMain.RemoveNpc(item); item.SetAttribute(AttribType.Hp, 0, false); List <int> failureMission = new List <int>(); foreach (var item1 in MissionManager.Instance.m_PlayerMission.m_MissionInfo.Keys) { MissionCommonData data = MissionManager.GetMissionCommonData(item1); if (data.m_iReplyNpc == item.Id) { failureMission.Add(item1); } } foreach (var item2 in failureMission) { MissionManager.Instance.FailureMission(item2); } if (!MissionManager.Instance.m_PlayerMission.recordNpcName.ContainsKey(item.Id)) { MissionManager.Instance.m_PlayerMission.recordNpcName.Add(item.Id, item.name.Substring(0, item.name.Length - 1 - System.Convert.ToString(item.Id).Length)); } } return(npcs); }
//删除任务 public void ReplyDeleteMission(int nMissionID) { MissionCommonData data = MissionManager.GetMissionCommonData(nMissionID); if (null == data) { return; } PlayerNetwork.mainPlayer.RPCServer(EPacketType.PT_InGame_DeleteMission, nMissionID); }
bool CheckAddMissionReplyID(int id) { MissionCommonData data = MissionManager.GetMissionCommonData(id); if (data == null) { return(false); } if (id == 9137 || id == 9138) { if (data.m_iReplyNpc != m_CurSelNpc.Id) { return(false); } } //如果不是谈话任务,那么未接取或已完成的不能交 if (!data.IsTalkMission()) { if (!MissionManager.Instance.HasMission(id) || MissionManager.Instance.HadCompleteMission(id)) { return(false); } } if (MissionRepository.IsAutoReplyMission(id)) { return(false); } if (MissionRepository.GetMissionNpcListName(id, true) == "") { if (PeGameMgr.IsMulti) { MissionManager.Instance.RequestCompleteMission(id); } else { MissionManager.Instance.CompleteMission(id); MissionCommonData mcd = MissionManager.GetMissionCommonData(id); if (mcd != null && mcd.m_Type != 0) { canShow = false; } } return(false); } return(true); }
protected override void OnHit() { if (MissionManager.Instance.m_PlayerMission.IsGetTakeMission(10046)) { MissionCommonData data = MissionManager.GetMissionCommonData(10046); if (data == null) { return; } PeEntity npc = EntityMgr.Instance.Get(data.m_iNpc); MissionManager.Instance.SetGetTakeMission(10046, npc, MissionManager.TakeMissionType.TakeMissionType_Get); } }
void ReFlashMissionContent(UIMissionNode node) { if (mTargetScroll != null) { mTargetScroll.scrollValue = 0; } ClearMissionContent(); UIMissionMgr.MissionView view = node.mData as UIMissionMgr.MissionView; if (view == null) { return; } mDesLabel.text = view.mMissionDesc; int missionId = view.mMissionID; MissionCommonData mcd = MissionManager.GetMissionCommonData(missionId); if (mcd != null) { if (mcd.addSpValue > 0) { mSPLabel.text = "SP" + " " + "+" + " " + "[ffff00]" + mcd.addSpValue + "[-]"; } } SetGiver(view.mMissionStartNpc.mNpcIcoStr, view.mMissionStartNpc.mName); SetSubmit(view.mMissionReplyNpc.mNpcIcoStr, view.mMissionReplyNpc.mName); for (int i = 0; i < view.mTargetList.Count; i++) { AddTarget(view.mTargetList[i]); } mTargetGrid.Reposition(); //if (mTargetScroll != null) // mTargetScroll.scrollValue = 0; for (int i = 0; i < view.mRewardsList.Count; i++) { AddRewards(view.mRewardsList[i]); } mRewardsGrid.Reposition(); if (mRewardsScroll != null) { mRewardsScroll.scrollValue = 0; } }
void CreateMission(int nMissionID, int idx, int rewardIdx) { MissionCommonData data = MissionManager.GetMissionCommonData(nMissionID); if (data == null) { return; } if (PeGameMgr.IsMultiStory) { RMRepository.CreateRandomMission(nMissionID, idx, rewardIdx); } else { AdRMRepository.CreateRandomMission(nMissionID, idx, rewardIdx); } }
public static void CreateRandomMission(int id, int idx = -1, int rewardIdx = -1) { if (MissionManager.Instance.HasMission(id)) { return; } MissionCommonData data = GetRandomMission(id); if (data == null) { return; } RandomField rf; if (!m_RandomFieldMap.ContainsKey(id)) { return; } rf = m_RandomFieldMap[id]; if (idx < 0 || idx >= rf.TargetIDMap.Count) { idx = UnityEngine.Random.Range(0, rf.TargetIDMap.Count); } //idx = 0; TargetListInfo tli = rf.TargetIDMap[idx]; data.m_TargetIDList.Clear(); data.m_TalkOP.Clear(); data.m_TalkIN.Clear(); data.m_TalkED.Clear(); data.m_PromptOP.Clear(); data.m_PromptIN.Clear(); data.m_PromptED.Clear(); data.m_Com_RewardItem.Clear(); data.m_Com_RemoveItem.Clear(); int tid; for (int i = 0; i < tli.listid.Count; i++) { tid = tli.listid[i] / 1000; if (tid == 2) { TypeCollectData colData = MissionManager.GetTypeCollectData(tli.listid[i]); if (colData == null) { continue; } MissionIDNum tmp; tmp.id = colData.ItemID; tmp.num = colData.ItemNum; data.m_Com_RemoveItem.Add(tmp); } data.m_TargetIDList.Add(tli.listid[i]); } if (rf.TalkOPMap.Count > idx) { tli = rf.TalkOPMap[idx]; for (int i = 0; i < tli.listid.Count; i++) { data.m_TalkOP.Add(tli.listid[i]); } } if (rf.TalkINMap.Count > idx) { tli = rf.TalkINMap[idx]; for (int i = 0; i < tli.listid.Count; i++) { if (tli.listid[i] == 0) { continue; } data.m_TalkIN.Add(tli.listid[i]); } } if (rf.TalkEDMap.Count > idx) { tli = rf.TalkEDMap[idx]; for (int i = 0; i < tli.listid.Count; i++) { data.m_TalkED.Add(tli.listid[i]); } } if (rf.TalkOPSMap.Count > idx) { tli = rf.TalkOPSMap[idx]; for (int i = 0; i < tli.listid.Count; i++) { data.m_PromptOP.Add(tli.listid[i]); } } if (rf.TalkINSMap.Count > idx) { tli = rf.TalkINSMap[idx]; for (int i = 0; i < tli.listid.Count; i++) { data.m_PromptIN.Add(tli.listid[i]); } } if (rf.TalkEDSMap.Count > idx) { tli = rf.TalkEDSMap[idx]; for (int i = 0; i < tli.listid.Count; i++) { data.m_PromptED.Add(tli.listid[i]); } } if (rf.RewardMap.Count > 0) { rewardIdx = rewardIdx == -1 ? UnityEngine.Random.Range(0, rf.RewardMap.Count) : rewardIdx; for (int i = 0; i < rf.RewardMap[rewardIdx].Count; i++) { MissionIDNum idnum = rf.RewardMap[rewardIdx][i]; data.m_Com_RewardItem.Add(idnum); } } foreach (var item in rf.FixedRewardMap) { data.m_Com_RewardItem.Add(item); } }
public static void LoadRandMission() { SqliteDataReader reader = LocalDatabase.Instance.ReadFullTable("RandomQuest_List"); reader.Read(); while (reader.Read()) { MissionCommonData data = new MissionCommonData(); RandomField rf = new RandomField(); int strid; data.m_Type = MissionType.MissionType_Sub; data.m_ID = Convert.ToInt32(reader.GetString(reader.GetOrdinal("ID"))); strid = Convert.ToInt32(reader.GetString(reader.GetOrdinal("MissionName"))); data.m_MissionName = PELocalization.GetString(strid); data.m_MaxNum = Convert.ToInt32(reader.GetString(reader.GetOrdinal("MaxNum"))); string strtmp = reader.GetString(reader.GetOrdinal("TargetIDList")); string[] tmplist = strtmp.Split(';'); string[] tmplist1, tmplist2; for (int i = 0; i < tmplist.Length; i++) { if (tmplist[i] == "0") { continue; } TargetListInfo tli; tli.listid = new List <int>(); tmplist1 = tmplist[i].Split(','); for (int m = 0; m < tmplist1.Length; m++) { tli.listid.Add(Convert.ToInt32(tmplist1[m])); } rf.TargetIDMap.Add(tli); } strtmp = reader.GetString(reader.GetOrdinal("Get_DemandItem")); tmplist = strtmp.Split(','); for (int i = 0; i < tmplist.Length; i++) { if (tmplist[i] == "0") { continue; } tmplist1 = tmplist[i].Split('_'); if (tmplist1.Length != 2) { continue; } MissionIDNum tmp; tmp.id = Convert.ToInt32(tmplist1[0]); tmp.num = Convert.ToInt32(tmplist1[1]); data.m_Get_DemandItem.Add(tmp); } strtmp = reader.GetString(reader.GetOrdinal("Get_DeleteItem")); tmplist = strtmp.Split(','); for (int i = 0; i < tmplist.Length; i++) { if (tmplist[i] == "0") { continue; } tmplist1 = tmplist[i].Split('_'); if (tmplist1.Length != 2) { continue; } MissionIDNum tmp; tmp.id = Convert.ToInt32(tmplist1[0]); tmp.num = Convert.ToInt32(tmplist1[1]); data.m_Get_DeleteItem.Add(tmp); } strtmp = reader.GetString(reader.GetOrdinal("Get_MissionItem")); tmplist = strtmp.Split(','); for (int i = 0; i < tmplist.Length; i++) { if (tmplist[i] == "0") { continue; } tmplist1 = tmplist[i].Split('_'); if (tmplist1.Length != 2) { continue; } MissionIDNum tmp; tmp.id = Convert.ToInt32(tmplist1[0]); tmp.num = Convert.ToInt32(tmplist1[1]); data.m_Get_MissionItem.Add(tmp); } strtmp = reader.GetString(reader.GetOrdinal("CoRewardItem")); tmplist = strtmp.Split(';'); for (int i = 0; i < tmplist.Length; i++) { if (tmplist[i] == "0") { continue; } tmplist1 = tmplist[i].Split(','); List <MissionIDNum> tmp = new List <MissionIDNum>(); for (int j = 0; j < tmplist1.Length; j++) { tmplist2 = tmplist1[j].Split('_'); if (tmplist2.Length != 2) { continue; } MissionIDNum idNum; idNum.id = Convert.ToInt32(tmplist2[0]); idNum.num = Convert.ToInt32(tmplist2[1]); tmp.Add(idNum); } if (tmp.Count == 0) { continue; } rf.RewardMap.Add(tmp); } strtmp = reader.GetString(reader.GetOrdinal("CoRemoveItem")); tmplist = strtmp.Split(','); for (int i = 0; i < tmplist.Length; i++) { if (tmplist[i] == "0") { continue; } tmplist1 = tmplist[i].Split('_'); if (tmplist1.Length != 2) { continue; } MissionIDNum tmp; tmp.id = Convert.ToInt32(tmplist1[0]); tmp.num = Convert.ToInt32(tmplist1[1]); data.m_Com_RemoveItem.Add(tmp); } strid = Convert.ToInt32(reader.GetString(reader.GetOrdinal("Description"))); data.m_Description = PELocalization.GetString(strid); strtmp = reader.GetString(reader.GetOrdinal("player_talk")); tmplist = strtmp.Split(','); if (tmplist.Length == 2) { data.m_PlayerTalk[0] = Convert.ToInt32(tmplist[0]); data.m_PlayerTalk[1] = Convert.ToInt32(tmplist[1]); } else if (tmplist.Length == 1 && tmplist[0] != "0") { data.m_PlayerTalk[0] = Convert.ToInt32(tmplist[0]); data.m_PlayerTalk[1] = 0; } strtmp = reader.GetString(reader.GetOrdinal("TalkOP")); tmplist = strtmp.Split(';'); for (int i = 0; i < tmplist.Length; i++) { if (tmplist[i] == "0") { continue; } TargetListInfo tli; tli.listid = new List <int>(); tmplist1 = tmplist[i].Split(','); for (int m = 0; m < tmplist1.Length; m++) { tli.listid.Add(Convert.ToInt32(tmplist1[m])); } rf.TalkOPMap.Add(tli); } strtmp = reader.GetString(reader.GetOrdinal("TalkIN")); tmplist = strtmp.Split(';'); for (int i = 0; i < tmplist.Length; i++) { //if (tmplist[i] == "0") // continue; TargetListInfo tli; tli.listid = new List <int>(); tmplist1 = tmplist[i].Split(','); for (int m = 0; m < tmplist1.Length; m++) { tli.listid.Add(Convert.ToInt32(tmplist1[m])); } rf.TalkINMap.Add(tli); } strtmp = reader.GetString(reader.GetOrdinal("TalkED")); tmplist = strtmp.Split(';'); for (int i = 0; i < tmplist.Length; i++) { if (tmplist[i] == "0") { continue; } TargetListInfo tli; tli.listid = new List <int>(); tmplist1 = tmplist[i].Split(','); for (int m = 0; m < tmplist1.Length; m++) { tli.listid.Add(Convert.ToInt32(tmplist1[m])); } rf.TalkEDMap.Add(tli); } if (Convert.ToInt32(reader.GetString(reader.GetOrdinal("bGiveUp"))) == 0) { data.m_bGiveUp = false; } else { data.m_bGiveUp = true; } strtmp = reader.GetString(reader.GetOrdinal("TalkOP_SP")); tmplist = strtmp.Split(';'); for (int i = 0; i < tmplist.Length; i++) { if (tmplist[i] == "0") { continue; } TargetListInfo tli; tli.listid = new List <int>(); tmplist1 = tmplist[i].Split(','); for (int m = 0; m < tmplist1.Length; m++) { tli.listid.Add(Convert.ToInt32(tmplist1[m])); } rf.TalkOPSMap.Add(tli); } strtmp = reader.GetString(reader.GetOrdinal("TalkIN_SP")); tmplist = strtmp.Split(';'); for (int i = 0; i < tmplist.Length; i++) { if (tmplist[i] == "0") { continue; } TargetListInfo tli; tli.listid = new List <int>(); tmplist1 = tmplist[i].Split(','); for (int m = 0; m < tmplist1.Length; m++) { tli.listid.Add(Convert.ToInt32(tmplist1[m])); } rf.TalkINSMap.Add(tli); } strtmp = reader.GetString(reader.GetOrdinal("TalkED_SP")); tmplist = strtmp.Split(';'); for (int i = 0; i < tmplist.Length; i++) { if (tmplist[i] == "0") { continue; } TargetListInfo tli; tli.listid = new List <int>(); tmplist1 = tmplist[i].Split(','); for (int m = 0; m < tmplist1.Length; m++) { tli.listid.Add(Convert.ToInt32(tmplist1[m])); } rf.TalkEDSMap.Add(tli); } strtmp = reader.GetString(reader.GetOrdinal("NextQuest")); if (strtmp != "0") { tmplist = strtmp.Split(','); for (int i = 0; i < tmplist.Length; i++) { data.m_EDID.Add(Convert.ToInt32(tmplist[i])); } } m_RandomFieldMap.Add(data.m_ID, rf); m_RandMisMap.Add(data.m_ID, data); } }
public void SetMission(int missionId, UIBaseWidget parent) { mMissionId = missionId; mParentNPCTalk = parent as UINPCTalk; // mParentMissionMain = parent as MissionMainGui_N; mNPCGui = parent as UINpcWnd; mMissionContent.text = MissionRepository.GetMissionNpcListName(mMissionId, false); MissionCommonData data = MissionManager.GetMissionCommonData(missionId); if (data == null) { return; } if (mMissionMarke != null) { if (m_Player != null) { if (MissionManager.Instance.HasMission(missionId)) { if (data.m_Type == MissionType.MissionType_Main /* && !MissionManager.HasRandomMission(missionId)*/) { if (MissionManager.Instance.IsReplyMission(missionId)) { mMissionMarke.spriteName = "MainMissionEnd"; } else { mMissionMarke.spriteName = "MissionNotEnd"; } } else if (data.IsTalkMission()) { mMissionMarke.spriteName = "SubMission"; } else { if (MissionManager.Instance.IsReplyMission(missionId)) { mMissionMarke.spriteName = "SubMissionEnd"; } else { mMissionMarke.spriteName = "MissionNotEnd"; } } } else { if (data.m_Type == MissionType.MissionType_Main) { mMissionMarke.spriteName = "MainMissionGet"; } else if (data.m_Type == MissionType.MissionType_Sub) { mMissionMarke.spriteName = "SubMissionGet"; } else { mMissionMarke.spriteName = "SubMission"; } } } else { mMissionMarke.gameObject.SetActive(false); } mMissionMarke.MakePixelPerfect(); } else { if (MissionManager.Instance.HasMission(missionId)) { if (data.m_Type == MissionType.MissionType_Main && !MissionManager.HasRandomMission(missionId)) { if (MissionManager.Instance.IsReplyMission(missionId)) { mMissionContent.color = Color.yellow; } else { mMissionContent.color = Color.white; } } else if (data.IsTalkMission()) { mMissionContent.color = Color.white; } else { if (MissionManager.Instance.IsReplyMission(missionId)) { mMissionContent.color = Color.yellow; } else { mMissionContent.color = Color.white; } } } else { mMissionContent.color = Color.white; } UIButton button = mMissionContent.GetComponent <UIButton>(); if (button) { button.defaultColor = mMissionContent.color; } } RefreshCollider(); }
public bool Start() { //if (playerMission.GetMissionFlagType(MissionId) == null) return false; if (SceneEntityCreator.self.PlayerTrans == null) { return(false); } //if (!MissionManager.Instance.m_bHadInitMission) //{ // Debug.LogError("[MissionManager]Mission not inited."); // return false; //} MissionCommonData data = MissionManager.GetMissionCommonData(MissionId); for (int i = 0; i < data.m_TargetIDList.Count; i++) { if (data.m_TargetIDList[i] == TargetId) { _idxTarId = i; break; } } if (_idxTarId == -1) { return(false); } _towerData = MissionManager.GetTypeTowerDefendsData(TargetId); if (_towerData == null) { return(false); } if (PeGameMgr.IsSingle) { playerMission.m_TowerUIData.MaxCount = _towerData.m_Count; } else { playerMission.m_TowerUIData.MaxCount = 0; } playerMission.m_TowerUIData.MissionID = MissionId; playerMission.m_TowerUIData.CurCount = 0; if (_towerData.m_TdInfoId != 0) { _entityBcn = EntityMonsterBeacon.CreateMonsterBeaconByTDID(_towerData.m_TdInfoId, SceneEntityCreator.self.PlayerTrans, playerMission.m_TowerUIData, _entityBcnId, _towerData, data.m_iNpc); } else if (_towerData.m_SweepId.Count > 0) { _entityBcn = EntityMonsterBeacon.CreateMonsterBeaconBySweepID(_towerData.m_SweepId, SceneEntityCreator.self.PlayerTrans, playerMission.m_TowerUIData, _towerData.m_Time, _entityBcnId, _towerData, data.m_iNpc); } else { return(false); } if (_towerData.m_tolTime != 0) { MissionManager.Instance.SetTowerMissionStartTime(TargetId); } if (_entityBcn == null) { return(false); } _entityBcnId = _entityBcn.Id; _entityBcn.handlerNewWave += OnNewWave; _entityBcn.handlerOneDeath += OnOneDeath; PeEntity npc = null; for (int m = 0; m < _towerData.m_iNpcList.Count; m++) { npc = EntityMgr.Instance.Get(_towerData.m_iNpcList[m]); if (npc == null) { continue; } npc.SetInvincible(false); } //_leftCntToFin = _towerData.m_Count; //Register all waves into playerMission to avoid complete shortly string value = "0_0_0_0_0"; // just for pass checking in IsReplyTarget: x(spType), num, cnt, created, completeTarget playerMission.ModifyQuestVariable(MissionId, PlayerMission.MissionFlagTDMonster + _idxTarId, value); //MissionManager.mTowerKillNum = "0"; //MissionManager.mTowerMonCount = towerData.m_Count.ToString(); return(true); }
public static void Import(byte[] buffer) { if (buffer.Length == 0) { return; } MemoryStream ms = new MemoryStream(buffer); BinaryReader _in = new BinaryReader(ms); int iSize = _in.ReadInt32(); int count = 0; for (int k = 0; k < iSize; k++) { int id = _in.ReadInt32(); if (!m_RandMisMap.ContainsKey(id)) { return; } MissionCommonData data = m_RandMisMap[id]; if (data == null) { continue; } data.m_TargetIDList.Clear(); data.m_TalkOP.Clear(); data.m_TalkIN.Clear(); data.m_TalkED.Clear(); data.m_PromptOP.Clear(); data.m_PromptIN.Clear(); data.m_PromptED.Clear(); data.m_Com_RewardItem.Clear(); data.m_Com_RemoveItem.Clear(); //lz-2016.08.17 因为开始存储的不是映射,这里读到的数据是上一次语言的数据,所以不对,原本的数据是对的,不用修改 _in.ReadString(); //data.m_MissionName = _in.ReadString(); data.m_iNpc = _in.ReadInt32(); data.m_iReplyNpc = _in.ReadInt32(); NpcMissionDataRepository.AddReplyMission(data.m_iReplyNpc, id); data.m_Type = (MissionType)_in.ReadInt32(); data.m_MaxNum = _in.ReadInt32(); //lz-2016.08.17 因为开始存储的不是映射,这里读到的数据是上一次语言的数据,所以不对,原本的数据是对的,不用修改 _in.ReadString(); //data.m_Description = _in.ReadString(); count = _in.ReadInt32(); for (int i = 0; i < count; i++) { data.m_TargetIDList.Add(Convert.ToInt32(_in.ReadInt32())); } count = _in.ReadInt32(); for (int i = 0; i < count; i++) { data.m_PlayerTalk[i] = Convert.ToInt32(_in.ReadInt32()); } MissionIDNum idnum; count = _in.ReadInt32(); for (int i = 0; i < count; i++) { idnum.id = Convert.ToInt32(_in.ReadInt32()); idnum.num = Convert.ToInt32(_in.ReadInt32()); data.m_Get_DemandItem.Add(idnum); } count = _in.ReadInt32(); for (int i = 0; i < count; i++) { idnum.id = Convert.ToInt32(_in.ReadInt32()); idnum.num = Convert.ToInt32(_in.ReadInt32()); data.m_Get_DeleteItem.Add(idnum); } count = _in.ReadInt32(); for (int i = 0; i < count; i++) { idnum.id = Convert.ToInt32(_in.ReadInt32()); idnum.num = Convert.ToInt32(_in.ReadInt32()); data.m_Get_MissionItem.Add(idnum); } count = _in.ReadInt32(); for (int i = 0; i < count; i++) { idnum.id = Convert.ToInt32(_in.ReadInt32()); idnum.num = Convert.ToInt32(_in.ReadInt32()); data.m_Com_RewardItem.Add(idnum); } count = _in.ReadInt32(); for (int i = 0; i < count; i++) { idnum.id = Convert.ToInt32(_in.ReadInt32()); idnum.num = Convert.ToInt32(_in.ReadInt32()); data.m_Com_SelRewardItem.Add(idnum); } count = _in.ReadInt32(); for (int i = 0; i < count; i++) { idnum.id = Convert.ToInt32(_in.ReadInt32()); idnum.num = Convert.ToInt32(_in.ReadInt32()); data.m_Com_RemoveItem.Add(idnum); } count = _in.ReadInt32(); data.m_TalkOP.Clear(); for (int i = 0; i < count; i++) { data.m_TalkOP.Add(Convert.ToInt32(_in.ReadInt32())); } count = _in.ReadInt32(); data.m_OPID.Clear(); for (int i = 0; i < count; i++) { data.m_OPID.Add(Convert.ToInt32(_in.ReadInt32())); } count = _in.ReadInt32(); data.m_TalkIN.Clear(); for (int i = 0; i < count; i++) { data.m_TalkIN.Add(Convert.ToInt32(_in.ReadInt32())); } count = _in.ReadInt32(); data.m_INID.Clear(); for (int i = 0; i < count; i++) { data.m_INID.Add(Convert.ToInt32(_in.ReadInt32())); } count = _in.ReadInt32(); data.m_TalkED.Clear(); for (int i = 0; i < count; i++) { data.m_TalkED.Add(Convert.ToInt32(_in.ReadInt32())); } count = _in.ReadInt32(); data.m_EDID.Clear(); for (int i = 0; i < count; i++) { data.m_EDID.Add(Convert.ToInt32(_in.ReadInt32())); } } _in.Close(); ms.Close(); }
public bool Start() { MissionCommonData data = MissionManager.GetMissionCommonData(MissionId); for (int i = 0; i < data.m_TargetIDList.Count; i++) { if (data.m_TargetIDList[i] == TargetId) { _idxTarId = i; break; } } if (_idxTarId == -1) { return(false); } _data = MissionManager.GetTypeMonsterData(TargetId); if (_data == null) { return(false); } Vector3 referToPos; switch (_data.m_mr.refertoType) { case ReferToType.None: referToPos = PeCreature.Instance.mainPlayer.position; break; case ReferToType.Player: referToPos = PeCreature.Instance.mainPlayer.position; break; case ReferToType.Town: VArtifactUtil.GetTownPos(_data.m_mr.referToID, out referToPos); break; case ReferToType.Npc: referToPos = EntityMgr.Instance.Get(MissionManager.Instance.m_PlayerMission.adId_entityId[_data.m_mr.referToID]).position; break; default: referToPos = PeCreature.Instance.mainPlayer.position; break; } if (referToPos == Vector3.zero) { return(false); } if (PeGameMgr.IsSingle || PeGameMgr.IsTutorial) { if (_data.type == 2) { DoodadEntityCreator.commonDeathEvent += OnMonsterDeath; } else { MonsterEntityCreator.commonDeathEvent += OnMonsterDeath; } } GenMonsterInMission = !PeGameMgr.IsStory; if (GenMonsterInMission) { #if DbgNearGen Vector2 v2 = Vector2.zero; #else Vector2 v2 = UnityEngine.Random.insideUnitCircle.normalized * _data.m_mr.radius1; #endif Vector3 center = referToPos + new Vector3(v2.x, 0.0f, v2.y); //for (int i = 0; i < _data.m_MonsterList.Count; i++) { // int num = _data.m_MonsterList[i].type; // int protoId = _data.m_MonsterList[i].npcs[UnityEngine.Random.Range(0, _data.m_MonsterList[i].npcs.Count)]; // for (int j = 0; j < num; j++) { // Vector3 pos = AiUtil.GetRandomPosition (center, 0, _data.m_mr.radius2); // pos.y = SceneEntityPosAgent.PosYTBD; // let posagent to set y // SceneEntityPosAgent agent = MonsterEntityCreator.CreateAgent(pos, protoId); // agent.spInfo = new MonsterEntityCreator.AgentInfo(EntityMonsterBeacon.GetSpBeacon4MonsterKillTask()); // _agents.Add (agent); // SceneMan.AddSceneObj (agent); // } //} for (int i = 0; i < _data.m_CreMonList.Count; i++) { for (int j = 0; j < _data.m_CreMonList[i].monNum; j++) { Vector3 pos = AiUtil.GetRandomPosition(center, 0, _data.m_mr.radius2); pos.y = SceneEntityPosAgent.PosYTBD; // let posagent to set y int protoId = _data.m_CreMonList[i].monID; if (_data.m_CreMonList[i].type == 1) { protoId |= EntityProto.IdGrpMask; } SceneEntityPosAgent agent = MonsterEntityCreator.CreateAgent(pos, protoId); agent.spInfo = new MonsterEntityCreator.AgentInfo(EntityMonsterBeacon.GetSpBeacon4MonsterKillTask()); agent.canRide = false; _agents.Add(agent); SceneMan.AddSceneObj(agent); } } } return(true); }
public static void CreateRandomMission(int id) { int type = 1; if (MissionRepository.m_MissionCommonMap.ContainsKey(id)) { MissionCommonData data1 = MissionManager.GetMissionCommonData(id); if (data1 != null) { return; } } MutiPlayMissionRand rand = GetMissRand(id); if (rand == null) { return; } // 0小怪、1BOSS、2收集、3护送、4探索、5塔防 if (GameConfig.IsMultiServer) { type = UnityEngine.Random.Range(1, 3); //随机1 //PlayerFactory.RandIds[0] = type; } else { //type = PlayerFactory.RandIds[0]; } MissionType misstype = MissionType.MissionType_Main; TypeMonsterData monData = null; TypeCollectData colData = null; TypeMessengerData mesData = null; TypeFollowData folData = null; TypeSearchData seaData = null; TypeTowerDefendsData towData = null; //switch (type) //{ // case 0: // monData = new TypeMonsterData(); // break; // case 1: // monData = new TypeMonsterData(); // break; // case 2: // colData = new TypeCollectData(); // break; // case 3: // folData = new TypeFollowData(); // break; // case 4: // seaData = new TypeSearchData(); // break; // case 5: // towData = new TypeTowerDefendsData(); // break; //} int idx = 0; MissionCommonData data = new MissionCommonData(); data.m_ID = id; // string[] listName = { "Monster Hunter", "Boss Hunter", "Gather", "Escort", "Exploration", "Defend" }; //data.m_MissionName = listName[type]; data.m_iNpc = 0; data.m_iReplyNpc = 0; data.m_Type = misstype; data.m_MaxNum = 1; TalkData talkdata = TalkRespository.GetTalkData(911); if (talkdata != null) { data.m_Description = talkdata.m_Content; } if (type == 0 || type == 1) { if (GameConfig.IsMultiServer) { idx = 0; //随机2 //PlayerFactory.RandIds[1] = idx; } else { //idx = PlayerFactory.RandIds[1]; } monData.m_TargetID = 1100; monData.m_MonsterID = rand.m_MulKillID[idx]; monData.m_MonsterNum = rand.m_MulKillNum[idx]; monData.m_Desc = "KillMonster : " + AiDataBlock.GetAIDataName(monData.m_MonsterID); data.m_TargetIDList.Add(monData.m_TargetID); } else if (type == 2) { if (GameConfig.IsMultiServer) { idx = UnityEngine.Random.Range(0, rand.m_MulCollectID.Count); //随机3 //PlayerFactory.RandIds[2] = idx; } else { //idx = PlayerFactory.RandIds[2]; } colData.m_TargetID = 2100; colData.ItemID = rand.m_MulCollectID[idx]; idx = UnityEngine.Random.Range(0, rand.m_MulCollectNum.Count); colData.ItemNum = rand.m_MulCollectNum[idx]; colData.m_Desc = "Gather : " + ItemAsset.ItemProto.GetName(colData.ItemID); data.m_TargetIDList.Add(colData.m_TargetID); } if (type == 5) { towData.m_TargetID = 7100; towData.m_Time = 5; towData.m_Desc = data.m_MissionName; //towData.m_Pos = npcobj.transform.position; //towData.m_NpcList.Add(npcname); if (idx == 1) { towData.m_Count = UnityEngine.Random.Range(3, 6); } else if (idx == 2) { towData.m_Count = UnityEngine.Random.Range(5, 9); } else { towData.m_Count = UnityEngine.Random.Range(8, 13); } //for (int i = 0; i < towData.m_Count; i++) //{ // if (idx == 1) // { // towData.m_TDInfoList.Add(UnityEngine.Random.Range(17, 22)); // } // else if (idx == 2) // { // towData.m_TDInfoList.Add(UnityEngine.Random.Range(22, 26)); // } // else // { // towData.m_TDInfoList.Add(UnityEngine.Random.Range(26, 30)); // } //} data.m_TargetIDList.Add(towData.m_TargetID); } //// 0.小怪、1.BOSS、2.收集、3.护送、4.探索、5.塔防 MissionIDNum idnum = new MissionIDNum(); switch (type) { case 0: case 1: case 2: { if (GameConfig.IsMultiServer) { idx = UnityEngine.Random.Range(0, rand.m_MulRD.Count); //随机4 //PlayerFactory.RandIds[3] = idx; } else { //idx = PlayerFactory.RandIds[3]; } idnum.id = 30000000; //统一奖励货币 idnum.num = rand.m_MulRD[idx]; data.m_Com_RewardItem.Add(idnum); } break; case 3: { if (GameConfig.IsMultiServer) { idx = UnityEngine.Random.Range(0, rand.m_MulEscort.Count); //随机4 //PlayerFactory.RandIds[3] = idx; } else { //idx = PlayerFactory.RandIds[3]; } idnum.id = 30000000; // idnum.num = rand.m_MulEscort[idx]; data.m_Com_RewardItem.Add(idnum); } break; case 4: { if (GameConfig.IsMultiServer) { idx = UnityEngine.Random.Range(0, rand.m_MulExplore.Count); //随机4 //PlayerFactory.RandIds[3] = idx; } else { //idx = PlayerFactory.RandIds[3]; } idnum.id = 30000000; // idnum.num = rand.m_MulExplore[idx]; data.m_Com_RewardItem.Add(idnum); } break; case 5: { if (GameConfig.IsMultiServer) { idx = UnityEngine.Random.Range(0, rand.m_MulTD.Count); //随机4 //PlayerFactory.RandIds[3] = idx; } else { //idx = PlayerFactory.RandIds[3]; } idnum.id = 30000000; // idnum.num = rand.m_MulTD[idx]; data.m_Com_RewardItem.Add(idnum); } break; } if (monData != null) { MissionRepository.AddTypeMonsterData(monData.m_TargetID, monData); } else if (colData != null) { MissionRepository.AddTypeCollectData(colData.m_TargetID, colData); } else if (folData != null) { MissionRepository.AddTypeFollowData(folData.m_TargetID, folData); } else if (seaData != null) { MissionRepository.AddTypeSearchData(seaData.m_TargetID, seaData); } else if (mesData != null) { MissionRepository.AddTypeMessengerData(mesData.m_TargetID, mesData); } else if (towData != null) { MissionRepository.AddTypeTowerDefendsData(towData.m_TargetID, towData); } if (!MissionRepository.m_MissionCommonMap.ContainsKey(data.m_ID)) { MissionRepository.m_MissionCommonMap.Add(data.m_ID, data); } }
public static void Export(BinaryWriter bw) { //if (PlayerFactory.mMainPlayer == null) // return; PlayerMission pm = MissionManager.Instance.m_PlayerMission; List <int> tmpList = new List <int>(); foreach (KeyValuePair <int, Dictionary <string, string> > ite in pm.m_MissionInfo) { if (!m_RandMisMap.ContainsKey(ite.Key)) { continue; } tmpList.Add(ite.Key); } bw.Write(tmpList.Count); for (int i = 0; i < tmpList.Count; i++) { MissionCommonData data = MissionManager.GetMissionCommonData(tmpList[i]); if (data == null) { continue; } bw.Write(data.m_ID); bw.Write(data.m_MissionName); bw.Write(data.m_iNpc); bw.Write(data.m_iReplyNpc); bw.Write((int)data.m_Type); bw.Write(data.m_MaxNum); bw.Write(data.m_Description); bw.Write(data.m_TargetIDList.Count); for (int m = 0; m < data.m_TargetIDList.Count; m++) { bw.Write(data.m_TargetIDList[m]); } bw.Write(data.m_PlayerTalk.Length); for (int m = 0; m < data.m_PlayerTalk.Length; m++) { bw.Write(data.m_PlayerTalk[m]); } bw.Write(data.m_Get_DemandItem.Count); for (int m = 0; m < data.m_Get_DemandItem.Count; m++) { bw.Write(data.m_Get_DemandItem[m].id); bw.Write(data.m_Get_DemandItem[m].num); } bw.Write(data.m_Get_DeleteItem.Count); for (int m = 0; m < data.m_Get_DeleteItem.Count; m++) { bw.Write(data.m_Get_DeleteItem[m].id); bw.Write(data.m_Get_DeleteItem[m].num); } bw.Write(data.m_Get_MissionItem.Count); for (int m = 0; m < data.m_Get_MissionItem.Count; m++) { bw.Write(data.m_Get_MissionItem[m].id); bw.Write(data.m_Get_MissionItem[m].num); } bw.Write(data.m_Com_RewardItem.Count); for (int m = 0; m < data.m_Com_RewardItem.Count; m++) { bw.Write(data.m_Com_RewardItem[m].id); bw.Write(data.m_Com_RewardItem[m].num); } bw.Write(data.m_Com_SelRewardItem.Count); for (int m = 0; m < data.m_Com_SelRewardItem.Count; m++) { bw.Write(data.m_Com_SelRewardItem[m].id); bw.Write(data.m_Com_SelRewardItem[m].num); } bw.Write(data.m_Com_RemoveItem.Count); for (int m = 0; m < data.m_Com_RemoveItem.Count; m++) { bw.Write(data.m_Com_RemoveItem[m].id); bw.Write(data.m_Com_RemoveItem[m].num); } bw.Write(data.m_TalkOP.Count); for (int m = 0; m < data.m_TalkOP.Count; m++) { bw.Write(data.m_TalkOP[m]); } bw.Write(data.m_OPID.Count); for (int m = 0; m < data.m_OPID.Count; m++) { bw.Write(data.m_OPID[m]); } bw.Write(data.m_TalkIN.Count); for (int m = 0; m < data.m_TalkIN.Count; m++) { bw.Write(data.m_TalkIN[m]); } bw.Write(data.m_INID.Count); for (int m = 0; m < data.m_INID.Count; m++) { bw.Write(data.m_INID[m]); } bw.Write(data.m_TalkED.Count); for (int m = 0; m < data.m_TalkED.Count; m++) { bw.Write(data.m_TalkED[m]); } bw.Write(data.m_EDID.Count); for (int m = 0; m < data.m_EDID.Count; m++) { bw.Write(data.m_EDID[m]); } } }
//Adventure版本随机任务 public static void CreateRandomMission() { MutiPlayMissionRand rand = GetMissRand(996); if (rand == null) { return; } int type = UnityEngine.Random.Range(0, 2); string[] listName = { "Monster Hunter", "Gather" }; int idx = 0; MissionCommonData data = new MissionCommonData(); data.m_ID = 996; data.m_MissionName = listName[type]; data.m_iNpc = 0; data.m_iReplyNpc = 0; data.m_Type = MissionType.MissionType_Main; data.m_MaxNum = 1; int talkid = 0; if (type == 0) { TypeMonsterData monData = new TypeMonsterData(); List <int> monidlist = new List <int>(); //for (int i = 0; i < AiManager.Manager.aiObjects.Count; i++) //{ // AiDataObject aiobj = AiManager.Manager.aiObjects[i] as AiDataObject; // if (aiobj == null) // continue; // //NpcCommon_N npc = aiobj.GetComponent<NpcCommon_N>(); // //if (npc != null) // // continue; // if (rand.m_MulKillID.Contains(aiobj.dataId)) // monidlist.Add(aiobj.dataId); //} idx = UnityEngine.Random.Range(0, monidlist.Count); if (monidlist.Count == 0) { //Debug.Log("Aiobject.count = " + AiManager.Manager.aiObjects.Count + '\n'); Debug.Log("idx = " + idx); } monData.m_TargetID = 1100; monData.m_MonsterID = monidlist[idx]; monData.m_Desc = "KillMonster : " + AiDataBlock.GetAIDataName(monData.m_MonsterID); idx = UnityEngine.Random.Range(0, rand.m_MulKillNum.Count); monData.m_MonsterNum = rand.m_MulKillNum[idx]; talkid = 901; MissionRepository.AddTypeMonsterData(monData.m_TargetID, monData); data.m_TargetIDList.Add(monData.m_TargetID); } else { TypeCollectData colData = new TypeCollectData(); idx = UnityEngine.Random.Range(0, rand.m_MulCollectID.Count); colData.m_TargetID = 2100; colData.ItemID = rand.m_MulCollectID[idx]; idx = UnityEngine.Random.Range(0, rand.m_MulCollectNum.Count); colData.ItemNum = rand.m_MulCollectNum[idx]; colData.m_Desc = "Gather : " + ItemAsset.ItemProto.GetName(colData.ItemID); MissionIDNum tmp; tmp.id = colData.ItemID; tmp.num = colData.ItemNum; data.m_Com_RemoveItem.Add(tmp); talkid = 906; MissionRepository.AddTypeCollectData(colData.m_TargetID, colData); data.m_TargetIDList.Add(colData.m_TargetID); } TalkData talkdata = TalkRespository.GetTalkData(talkid); if (talkdata != null) { data.m_Description = talkdata.m_Content; } MissionIDNum idnum; idx = UnityEngine.Random.Range(0, rand.m_MulRD.Count); idnum.id = 30000000; //统一奖励货币 idnum.num = rand.m_MulRD[idx]; data.m_Com_RewardItem.Add(idnum); if (!MissionRepository.m_MissionCommonMap.ContainsKey(data.m_ID)) { MissionRepository.m_MissionCommonMap.Add(data.m_ID, data); } nextRandomMissionID = data.m_ID; }