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); }
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); }
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); } }
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); }
private void SendSKDATalk(PEActionType type, PEActionParam obj) { PEActionParamS param = obj as PEActionParamS; RPCServer(EPacketType.PT_InGame_SKDAS, type, param.str); }