Beispiel #1
0
        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);
    }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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();
    }