예제 #1
0
    void RPC_S2C_GetDeadObjItem(uLink.BitStream stream, uLink.NetworkMessageInfo info)
    {
        int netId  = stream.Read <int>();
        int index  = stream.Read <int>();
        int itemId = stream.Read <int>();

        AiNetwork ai = AiNetwork.Get <AiNetwork>(netId);

        if (null == ai || null == ai.Runner)
        {
            return;
        }

        ItemDropPeEntity dropEntity = ai.Runner.GetComponent <ItemDropPeEntity>();

        if (null == dropEntity)
        {
            return;
        }

        ItemSample item = dropEntity.Get(index);

        if (null == item || item.protoId != itemId)
        {
            return;
        }

        dropEntity.RemoveDroppableItem(item);

        if (null != GameUI.Instance.mItemGet)
        {
            GameUI.Instance.mItemGet.Reflash();
        }
    }
예제 #2
0
    void RPC_S2C_GetDeadObjAllItems(uLink.BitStream stream, uLink.NetworkMessageInfo info)
    {
        int netId = stream.Read <int>();

        AiNetwork ai = AiNetwork.Get <AiNetwork>(netId);

        if (null == ai || null == ai.Runner)
        {
            return;
        }

        ItemDropPeEntity dropEntity = ai.Runner.GetComponent <ItemDropPeEntity>();

        if (null == dropEntity)
        {
            return;
        }

        dropEntity.RemoveDroppableItemAll();

        if (null != GameUI.Instance.mItemGet)
        {
            GameUI.Instance.mItemGet.Reflash();
        }
    }
예제 #3
0
        BehaveResult Tick(Tree sender)
        {
            if (bReached && Time.time - m_Data.startLootTime > m_Data.lootTime)
            {
                mLootEntity = null;
                bReached    = false;
                EndAction(PEActionType.Leisure);
            }

            if (!bReached && mLootEntity == null)
            {
                if (!Enemy.IsNullOrInvalid(attackEnemy))
                {
                    return(BehaveResult.Failure);
                }

                List <PeEntity> entities = LootItemDropPeEntity.GetEntities(position, m_Data.LootRadius);
                if (entities.Count > 0)
                {
                    mLootEntity = LootItemDropPeEntity.GetLootEntity(position, m_Data.LootRadius);
                    mItemDrop   = mLootEntity.GetComponent <ItemDropPeEntity>();
                    if (mItemDrop == null || !mItemDrop.NpcCanFetchAll(entity.NpcCmpt.NpcPackage))
                    {
                        return(BehaveResult.Failure);
                    }

                    LootItemDropPeEntity.RemovePeEntity(mLootEntity);
                }
                else
                {
                    return(BehaveResult.Failure);
                }
            }

            if (!bReached)
            {
                if (IsReached(position, mLootEntity.peTrans.position, false, 1.0f) || Stucking())
                {
                    StopMove();
                    FaceDirection(mLootEntity.peTrans.position - position);

                    PEActionParamS param = PEActionParamS.param;
                    param.str = "Gather";
                    DoAction(PEActionType.Leisure, param);
                    mItemDrop.NpcFetchAll(entity.NpcCmpt.NpcPackage);
                    m_Data.startLootTime = Time.time;
                    bReached             = true;
                }
                else
                {
                    MoveToPosition(mLootEntity.peTrans.position, SpeedState.Run);
                }
            }

            return(BehaveResult.Running);
        }
예제 #4
0
    void InitDeadItems(ItemDropPeEntity dropEntity, ItemSample[] items)
    {
        if (null != dropEntity)
        {
            dropEntity.RemoveDroppableItemAll();

            if (null != items)
            {
                foreach (ItemSample item in items)
                {
                    dropEntity.AddDroppableItem(item);
                }
            }
        }
    }
예제 #5
0
    protected virtual void RPC_S2C_Death(uLink.BitStream stream, uLink.NetworkMessageInfo info)
    {
        /*int casterId = */ stream.Read <int> ();
        death = true;

        if (null == Runner || null == Runner.SkEntityPE)
        {
            return;
        }

        ItemDropPeEntity dropEntity = Runner.SkEntityPE.gameObject.GetComponent <ItemDropPeEntity> ();

        if (null == dropEntity)
        {
            dropEntity = Runner.SkEntityPE.gameObject.AddComponent <ItemDropPeEntity> ();
        }

        InitDeadItems(dropEntity, dropItems);
    }