public void RemoveForcedServant(NpcCmpt forcedServant) { if (mForcedFollowers.Contains(forcedServant)) { mForcedFollowers.Remove(forcedServant); } else { return; } NpcMissionData missionData = forcedServant.Follwerentity.GetUserData() as NpcMissionData; missionData.mInFollowMission = false; if (forcedServant.GetComponent <PeEntity>() == null) { return; } if (!MissionManager.Instance.m_PlayerMission.followers.Contains(forcedServant)) { StroyManager.Instance.RemoveReq(forcedServant.GetComponent <PeEntity>(), EReqType.FollowTarget); } }
void GetServentCmpt() { if (leaderCmpt != null) { NpcCmpt cmpt = leaderCmpt.GetServant((int)mCurrentIndex); if (cmpt != null && cmpt != npcCmpt) { viewCmpt = cmpt.Entity.biologyViewCmpt; commonCmpt = cmpt.Entity.commonCmpt; packageCmpt = cmpt.GetComponent <NpcPackageCmpt>(); GetNpcPakgeSlotList(); entityInfoCmpt = cmpt.Entity.enityInfoCmpt; // register changeEvent if (equipmentCmpt != null) { equipmentCmpt.changeEventor.Unsubscribe(EquipmentChangeEvent); } equipmentCmpt = cmpt.Entity.equipmentCmpt; equipmentCmpt.changeEventor.Subscribe(EquipmentChangeEvent); } npcCmpt = cmpt; CheckWhtherCanGet(); servant = (npcCmpt != null) ? npcCmpt.Entity : null; } else { npcCmpt = null; CheckWhtherCanGet(); } if (npcCmpt == null) { viewCmpt = null; commonCmpt = null; equipmentCmpt = null; packageCmpt = null; entityInfoCmpt = null; mInteractionPackage = null; mPrivatePakge = null; mSprSex.spriteName = "null"; ClearEqList(); ClearNpcPackage(); } mEqTex.enabled = (npcCmpt != null); }
public void AddForcedServant(NpcCmpt forcedServant, bool isMove = false) { PeEntity npc = forcedServant.GetComponent <PeEntity>(); if (mForcedFollowers.Contains(forcedServant) || npc == null) { return; } mForcedFollowers.Add(forcedServant); if (isMove == true) { StroyManager.Instance.Translate(npc, EntityCreateMgr.Instance.GetPlayerTrans().position); } //StroyManager.Instance.FollowTarget(npc, EntityCreateMgr.Instance.GetPlayerTrans()); StroyManager.Instance.FollowTarget(npc, PeCreature.Instance.mainPlayer.Id, Vector3.zero, 0, 0.0f); }
public bool RemoveServant(NpcCmpt follower) { for (int i = 0; i < mFollowers.Length; i++) { if (follower == mFollowers[i]) { follower.NpcControlCmdId = 1; follower.SetServantLeader(null); PeEntity npc = follower.GetComponent <PeEntity>(); if (UIMissionMgr.Instance != null) { UIMissionMgr.Instance.AddMission(npc); } MissionManager.Instance.m_PlayerMission.UpdateNpcMissionTex(npc); return(RemoveServant(i)); } } return(false); }
void OnEntityDeath(SkEntity entity, SkEntity caster) { CommonCmpt common = entity.GetComponent <CommonCmpt>(); if (common != null) { if (common.entityProto.proto == EEntityProto.Doodad) { DestroyEntity(entity, 30.0f); } if (common.entityProto.proto == EEntityProto.Monster) { MonsterHandbookData.AddMhByKilledMonsterID(common.entityProto.protoId); if (common.GetComponent <TowerCmpt>() == null) { float reviveTime = 10; PeEntity mon = entity.GetComponent <PeEntity>(); if (mon != null) { if (StroyManager.Instance != null) { if (StroyManager.Instance.m_RecordKillMons.Count != 0) { foreach (var item in StroyManager.Instance.m_RecordKillMons.Values) { if (item.type == KillMons.Type.fixedId && SceneEntityCreatorArchiver.Instance.GetEntityByFixedSpId(item.monId) == mon) { reviveTime = (item.reviveTime == 0 ? reviveTime : item.reviveTime); break; } else if (item.type == KillMons.Type.protoTypeId && Vector3.Distance(mon.position, item.center) <= item.radius && (item.monId == -999 ? true : common.entityProto.protoId == item.monId)) { reviveTime = (item.reviveTime == 0 ? reviveTime : item.reviveTime); break; } } } } } DestroyEntity(entity, reviveTime); } } NpcCmpt npc = entity.GetComponent <NpcCmpt>(); if (common.entityProto.proto == EEntityProto.Npc) { if (GameUI.Instance != null) { if (GameUI.Instance.mNpcWnd.IsOpen() && GameUI.Instance.mNpcWnd.m_CurSelNpc.commonCmpt == common) { GameUI.Instance.mNpcWnd.Hide(); } } if (npc != null && npc.Type != ENpcType.Follower && npc.ReviveTime > 0) { ReviveEntity(entity, 10.0f); } if (npc.ReviveTime <= 0) { PeEntity npcentity = npc.GetComponent <PeEntity>(); if (MissionManager.Instance != null && MissionManager.Instance.m_PlayerMission != null) { MissionManager.Instance.m_PlayerMission.SetMissionState(npcentity, NpcMissionState.Max); } NpcMissionData missionData = npcentity.GetUserData() as NpcMissionData; if (missionData != null) { missionData.m_MissionList.Clear(); } } } else if (common.entityProto.proto == EEntityProto.RandomNpc) { if (npc != null && !npc.IsServant) { if (npc.ReviveTime > 0) { if (PeGameMgr.IsMultiStory) { if (entity._net is AiAdNpcNetwork) { int tempid = ((AiAdNpcNetwork)(entity._net)).ExternId; RandomNpcDb.Item item = RandomNpcDb.Get(tempid); if (item != null) { if (item.reviveTime != -1) { ReviveEntity(entity, item.reviveTime); } } } } else { ReviveEntity(entity, npc.ReviveTime); } } } //follower revive // if (npc != null && npc.IsServant) // { // ReviveEntity(entity, npc.ReviveTime + npc.FollowerReviceTime); // } } } }
void UpdateItemGrid() { if (m_InteractionGrids1.Count == 0 || m_InteractionGrids2.Count == 0 || m_PrivateGrids.Count == 0)//格子数量为0 { return; } //先清空格子 for (int i = 0; i < m_Interaction1Count; i++) { m_InteractionGrids1[i].SetItem(null); } for (int i = 0; i < m_Interaction2Count; i++) { m_InteractionGrids2[i].SetItem(null); } for (int i = 0; i < 10; i++) { m_PrivateGrids[i].SetItem(null); } if (m_RefNpc == null)//当传进来的npc为空,则直接返回 { return; } //lz-2016.11.22 错误 #6885 Crush bug if (m_RefNpc != null && null != m_RefNpc.m_Npc) { cmpt = m_RefNpc.m_Npc.GetCmpt <NpcCmpt>(); if (null != cmpt) { packageCmpt = cmpt.GetComponent <NpcPackageCmpt>(); if (null != packageCmpt) { if (mInteractionPackage1 != null) { mInteractionPackage1.eventor.Unsubscribe(InteractionpackageChange); } mInteractionPackage1 = packageCmpt.GetSlotList(); mInteractionPackage1.eventor.Subscribe(InteractionpackageChange); if (mInteractionPackage2 != null) { mInteractionPackage2.eventor.Unsubscribe(Interactionpackage2Change); } mInteractionPackage2 = packageCmpt.GetHandinList(); mInteractionPackage2.eventor.Subscribe(Interactionpackage2Change); if (mPrivatePakge != null) { mPrivatePakge.eventor.Unsubscribe(PrivatepackageChange); } mPrivatePakge = packageCmpt.GetPrivateSlotList(); mPrivatePakge.eventor.Subscribe(PrivatepackageChange); } } } Reflashpackage(); }