Exemplo n.º 1
0
        BehaveResult Tick(Tree sender)
        {
            if (!Enemy.IsNullOrInvalid(attackEnemy))
            {
                return(BehaveResult.Failure);
            }

            //吃到了合适的属性值或者没有合适的药品时停止
            if (!NpcEatDb.IsContinueEat(entity, out mEatItem))
            {
                return(BehaveResult.Failure);
            }

            if (GetCdByProtoId(mEatItem.protoId) >= PETools.PEMath.Epsilon)
            {
                return(BehaveResult.Failure);
            }

            if (mEatItem != null)
            {
                UseItem(mEatItem);

                if (CanDoAction(PEActionType.Eat) && !IsActionRunning(PEActionType.Eat))
                {
                    PEActionParamS param = PEActionParamS.param;
                    param.str = m_Data.eatAnim;
                    DoAction(PEActionType.Eat, param);
                }
            }

            return(BehaveResult.Running);
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
    private void RPC_SKDAS(uLink.BitStream stream, uLink.NetworkMessageInfo info)
    {
        PEActionType   proType = stream.Read <PEActionType> ();
        PEActionParamS param   = PEActionParamS.param;

        param.str = stream.Read <string> ();
        if (MtCmpt != null)
        {
            MtCmpt.DoActionImmediately((PEActionType)proType, param);
        }
    }
Exemplo n.º 4
0
    public override void Do()
    {
        if ("0" == effAnim || null == entity || null == entity.motionMgr)
        {
            return;
        }
        PEActionParamS param = PEActionParamS.param;

        param.str = effAnim;
        if (0 == actionType)
        {
            entity.motionMgr.DoAction(PEActionType.Leisure, param);
        }
        else
        {
            entity.motionMgr.DoAction(PEActionType.Abnormal, param);
        }
        nextRetryTime = Time.time + Random.Range(60f, 90f);
    }
Exemplo n.º 5
0
    private void SendSKDATalk(PEActionType type, PEActionParam obj)
    {
        PEActionParamS param = obj as PEActionParamS;

        RPCServer(EPacketType.PT_InGame_SKDAS, type, param.str);
    }