public override void InitEquipment(PeEntity entity, ItemAsset.ItemObject itemObj) { base.InitEquipment(entity, itemObj); m_MotionEquip = m_Entity.GetCmpt <Motion_Equip>(); m_MotionMgr = m_Entity.GetCmpt <MotionMgrCmpt>(); m_Durability = itemObj.GetCmpt <ItemAsset.Durability>(); }
void Start() { mplayer = PeCreature.Instance.mainPlayer; playerTrans = mplayer.peTrans.trans; anmt = mplayer.GetCmpt <AnimatorCmpt>(); mmc = mplayer.GetCmpt <MotionMgrCmpt>(); }
public static void StartSleep(PESleep peSleep, PeEntity character, float hours = 12) { if (null != character) { SleepController sc = character.GetComponent <SleepController>(); if (sc == null) { sc = character.gameObject.AddComponent <SleepController>(); sc.isMainPlayer = Pathea.PeCreature.Instance.mainPlayer == character; if (sc.isMainPlayer) { MotionMgrCmpt mmc = character.GetCmpt <MotionMgrCmpt>(); Action_Sleep actionSleep = mmc.GetAction <Action_Sleep>(); actionSleep.startSleepEvt += sc.MainPlayerStartSleep; actionSleep.startSleepEvt += (i) => FastTravelMgr.Instance.Add(sc); actionSleep.endSleepEvt += sc.MainPlayerEndSleep; actionSleep.endSleepEvt += (i) => FastTravelMgr.Instance.Remove(sc); } } sc.character = character.GetComponent <OperateCmpt>(); sc.maxSleepTime = hours * 3600f; sc.timeCount = 0; sc.peSleep = peSleep; sc.enabled = true; sc.actionTime = 2f; peSleep.StartOperate(sc.character, EOperationMask.Sleep); // peSleep.Do(sc.character); } }
IEnumerator NpcRevive(SkEntity entity, float delayTime) { if (Pathea.PeGameMgr.IsMulti) { yield break; } PeEntity peentity = entity.GetComponent <PeEntity>(); if (peentity == null) { yield break; } EntityInfoCmpt InfoCmpt = peentity.enityInfoCmpt; InfoCmpt.SetDelaytime(Time.time, delayTime); PESkEntity skentity = peentity.peSkEntity; yield return(new WaitForSeconds(delayTime)); if (entity != null && skentity != null && skentity.isDead) { MotionMgrCmpt motion = entity.GetComponent <MotionMgrCmpt>(); if (motion != null) { while (true) { if (null == peentity || null == motion) { yield break; } //在复活中被任务设置成不能复活 ReviveTime = -1 if (peentity.NpcCmpt.ReviveTime < 0) { break; } PEActionParamB param = PEActionParamB.param; param.b = false; if (motion.DoAction(PEActionType.Revive, param)) { entity.SetAttribute((int)AttribType.Hp, entity.GetAttribute((int)AttribType.HpMax) * 0.8f); break; } else { yield return(new WaitForSeconds(1)); } } } } }
void Start() { if (MaxHP <= 0) { MaxHP = 1; } HP = MaxHP; mplayer = PeCreature.Instance.mainPlayer; anmt = mplayer.animCmpt; mmc = mplayer.motionMgr; af = mmc.GetAction <Action_Fell>(); ht = HolotreeTask.Instance; }
bool DoRevive(bool immediately = false) { MotionMgrCmpt motionMgrCmpt = currentEntity.GetCmpt <MotionMgrCmpt>(); PEActionParamB paramB = PEActionParamB.param; if (immediately) { paramB.b = true; motionMgrCmpt.DoActionImmediately(PEActionType.Revive, paramB); } else { paramB.b = false; motionMgrCmpt.DoAction(PEActionType.Revive, paramB); } return(motionMgrCmpt.IsActionRunning(PEActionType.Revive)); }
public void GetOn() { if (playerPassengerCmpt == null) { return; } var controller = GetComponent <WhiteCat.CarrierController>(); int seatIndex = controller.FindEmptySeatIndex(); if (seatIndex < -1) { return; } if (GameConfig.IsMultiMode) { MotionMgrCmpt mmc = PeCreature.Instance.mainPlayer.GetCmpt <MotionMgrCmpt>(); if (null != mmc) { PEActionParamDrive param = PEActionParamDrive.param; param.controller = controller; param.seatIndex = seatIndex; if (mmc.CanDoAction(PEActionType.Drive, param)) { if (null != mNetlayer && null != PlayerNetwork.mainPlayer && !ForceSetting.Instance.Conflict(mNetlayer.TeamId, PlayerNetwork.mainPlayerId)) { PlayerNetwork.mainPlayer.RPCServer(EPacketType.PT_InGame_GetOnVehicle, mNetlayer.Id); } } } } else { if (null != PeCreature.Instance.mainPlayer) { PassengerCmpt passenger = PeCreature.Instance.mainPlayer.GetCmpt <PassengerCmpt>(); if (null != passenger) { passenger.GetOn(controller, seatIndex, true); } } // controller.GetOn(Pathea.PeCreature.Instance.mainPlayer, seatIndex); } }
void Stun() { if (null != m_Target) { PeEntity entity = m_Target.GetComponentInParent <PeEntity>(); if (null != entity && entity.proto != EEntityProto.Monster) { m_MotionMgr = entity.GetComponent <MotionMgrCmpt>(); if (null != m_MotionMgr) { m_MotionMgr.DoAction(PEActionType.Stuned); return; } } } GameObject.Destroy(gameObject); }
protected override void CheckOperate() { if (null != npc && npc.CanHanded) { if (PeInput.Get(PeInput.LogicFunction.InteractWithItem)) { if (null != PeCreature.Instance && null != PeCreature.Instance.mainPlayer) { MotionMgrCmpt motion = PeCreature.Instance.mainPlayer.GetCmpt <MotionMgrCmpt>(); if (null != motion) { PEActionParamN param = PEActionParamN.param; param.n = npc.Entity.Id; motion.DoAction(PEActionType.Hand, param); } } } } else { base.CheckOperate(); } }
public static void Run() { BeforeLoad(); PeLauncher.Instance.endLaunch = delegate() { if (IsMulti && !NetworkInterface.IsClient) { return(true); } //if (!VFVoxelTerrain.TerrainVoxelComplete) if (!VFVoxelTerrain.TerrainColliderComplete) { return(false); } SceneMan.self.StartWork(); PeEntity mainPlayer = MainPlayer.Instance.entity; if (null == mainPlayer) { return(false); } MotionMgrCmpt motion = mainPlayer.GetCmpt <MotionMgrCmpt>(); if (motion == null) { return(false); } if (motion.freezePhyStateForSystem) { UnityEngine.Vector3 safePos; if (PeGameMgr.IsMulti) { if (PlayerNetwork.mainPlayer != null && PlayerNetwork.mainPlayer._curSceneId == (int)Pathea.SingleGameStory.StoryScene.MainLand) { if (PETools.PE.FindHumanSafePos(mainPlayer.position, out safePos, 10)) { mainPlayer.position = safePos; } else { mainPlayer.position += 10 * UnityEngine.Vector3.up; } } } else { if (PETools.PE.FindHumanSafePos(mainPlayer.position, out safePos, 10)) { mainPlayer.position = safePos; } else { mainPlayer.position += 10 * UnityEngine.Vector3.up; } } return(false); } if (mSceneMode == ESceneMode.Custom) { PeCustom.PeCustomScene.Self.Notify(PeCustom.ESceneNoification.SceneBegin); } PostLoad(); System.GC.Collect(); return(true); }; PlayerTypeLoader scenario = CreatePlayerTypeLoader(); if (scenario == null) { return; } scenario.Load(); SinglePlayerTypeLoader singlePlayerTypeLoader = scenario as SinglePlayerTypeLoader; if (singlePlayerTypeLoader != null) { //the data is from archive in single player mode sceneMode = singlePlayerTypeLoader.sceneMode; yirdName = singlePlayerTypeLoader.yirdName; gameName = singlePlayerTypeLoader.gameName; } else { MultiPlayerTypeLoader multiPlayerTypeLoader = scenario as MultiPlayerTypeLoader; if (multiPlayerTypeLoader != null) { //the data is from archive in single player mode sceneMode = multiPlayerTypeLoader.sceneMode; yirdName = multiPlayerTypeLoader.yirdName; gameName = multiPlayerTypeLoader.gameName; } } //zhujiangbo:bug here if a game switch from edited terrain to random terrain VFVoxelTerrain.RandomMap = randomMap; PeLauncher.Instance.StartLoad(); }
void UpdateCurrentState() { currentState = MouseOpCursor.Null; if (null == MainPlayerCmpt.gMainPlayer) { return; } //if(null != MainPlayerCmpt.gMainPlayer.actionOpCursor) // always true { if (MouseOpCursor.Null != MainPlayerCmpt.gMainPlayer.actionOpCursor) { currentState = MainPlayerCmpt.gMainPlayer.actionOpCursor; return; } } if (null != MousePicker.Instance.curPickObj && !MousePicker.Instance.curPickObj.Equals(null)) { MonoBehaviour mono = MousePicker.Instance.curPickObj as MonoBehaviour; if (MousePicker.Instance.curPickObj is ClickPEentityLootItem) { currentState = MouseOpCursor.LootCorpse; } else if (MousePicker.Instance.curPickObj is MousePickableRandomItem) { currentState = MouseOpCursor.LootCorpse; } else if (MousePicker.Instance.curPickObj is MousePickableNPC) { MousePickableNPC pickableNPC = MousePicker.Instance.curPickObj as MousePickableNPC; if (null != pickableNPC && null != pickableNPC.npc) { if (pickableNPC.npc.CanTalk) { currentState = MouseOpCursor.NPCTalk; } else if (pickableNPC.npc.CanHanded) { currentState = MouseOpCursor.Hand; } } } else if (MousePicker.Instance.curPickObj is DragItemMousePickBed) { currentState = MouseOpCursor.Bed; } else if (MousePicker.Instance.curPickObj is DragItemMousePickDoor) { currentState = MouseOpCursor.Door; } else if (MousePicker.Instance.curPickObj is DragItemMousePickCarrier) { currentState = MouseOpCursor.Carrier; } else if (MousePicker.Instance.curPickObj is DragItemMousePickLadder) { currentState = MouseOpCursor.Ladder; } else if (MousePicker.Instance.curPickObj is OperatableItemPowerPlantSolar) { currentState = MouseOpCursor.PowerPlantSolar; } else if (MousePicker.Instance.curPickObj is WareHouseObject) { currentState = MouseOpCursor.WareHouse; } else if (MousePicker.Instance.curPickObj is OperatableItemRepairMachine) { currentState = MouseOpCursor.RepairMachine; } else if (MousePicker.Instance.curPickObj is DragItemMousePickColony) { currentState = MouseOpCursor.Colony; } else if (MousePicker.Instance.curPickObj is DragItemMousePickPlant) { currentState = MouseOpCursor.Plant; } else if (MousePicker.Instance.curPickObj is DragItemMousePickTower) { currentState = MouseOpCursor.Tower; } else if (MousePicker.Instance.curPickObj is DragItemMousePickKickStarter) { currentState = MouseOpCursor.KickStarter; } else if (MousePicker.Instance.curPickObj is ClickGatherEvent) { currentState = MouseOpCursor.Gather; } else if (MousePicker.Instance.curPickObj is ClickFellEvent) { MotionMgrCmpt mmc = PeCreature.Instance.mainPlayer.motionMgr; Action_Fell af = mmc.GetAction <Action_Fell>(); if (af.m_Axe && mmc.GetMaskState(PEActionMask.EquipmentHold)) { currentState = MouseOpCursor.Fell; } } else if (MousePicker.Instance.curPickObj is MousePickRides) //lz-2047.02.24 指向坐骑改为坐骑指针状态 { currentState = MouseOpCursor.Ride; } else if (null != mono && null != mono.GetComponent <ItemDropMousePickRandomItem>()) { currentState = MouseOpCursor.PickUpItem; } else if (null != mono && null != mono.GetComponent <ItemDropMousePick>()) { currentState = MouseOpCursor.PickUpItem; } } }