public virtual void SpawnSubEntities() { for (int i = 0; i < (int)this.mountPoints.Length; i++) { BaseVehicle.MountPointInfo component = this.mountPoints[i]; Vector3 vector3 = Quaternion.Euler(component.rot) * Vector3.forward; Vector3 vector31 = component.pos; Vector3 vector32 = Vector3.up; if (component.bone != "") { vector31 = this.model.FindBone(component.bone).transform.position + base.transform.TransformDirection(component.pos); vector3 = base.transform.TransformDirection(vector3); vector32 = base.transform.up; } BaseEntity baseEntity = GameManager.server.CreateEntity(component.prefab.resourcePath, vector31, Quaternion.LookRotation(vector3, vector32), true); baseEntity.Spawn(); if (component.bone == "") { baseEntity.SetParent(this, false, false); } else { baseEntity.SetParent(this, component.bone, true, true); } component.mountable = baseEntity.GetComponent <BaseMountable>(); } }
BaseVehicle.MountPointInfo CreateMount(Vector3 vec, BaseVehicle.MountPointInfo exampleSeat, Vector3 rotation) { return(new BaseVehicle.MountPointInfo { pos = vec, rot = rotation != null ? rotation : new Vector3(0, 0, 0), bone = exampleSeat.bone, prefab = exampleSeat.prefab, mountable = exampleSeat.mountable }); }
private void OnPlayerDisconnected(BasePlayer player, string reason) { if (!killOnSleep) { return; } if (player == null) { return; } if (storedData.playerminiID.ContainsKey(player.userID) == true) { uint deluint; storedData.playerminiID.TryGetValue(player.userID, out deluint); BaseNetworkable tokill = BaseNetworkable.serverEntities.Find(deluint); if (tokill == null) { return; // Didn't find it } // Check for mounted players BaseVehicle copter = tokill as BaseVehicle; List <BaseVehicle.MountPointInfo> mountpoints = copter.mountPoints; for (int i = 0; i < (int)mountpoints.Count; i++) { // error CS0029: Cannot implicitly convert type `System.Collections.Generic.List<BaseVehicle.MountPointInfo>' to `BaseVehicle.MountPointInfo[]' BaseVehicle.MountPointInfo mountPointInfo = mountpoints[i]; if (mountPointInfo.mountable != null) { BasePlayer mounted = mountPointInfo.mountable.GetMounted(); if (mounted) { #if DEBUG Puts("Copter owner sleeping but another one is mounted - cannot destroy copter"); #endif return; } } } #if DEBUG Puts("Copter owner sleeping - destroying copter"); #endif tokill.Kill(); storedData.playerminiID.Remove(player.userID); var myKey = currentMounts.FirstOrDefault(x => x.Value == player.userID).Key; currentMounts.Remove(myKey); if (storedData.playercounter.ContainsKey(player.userID) & !useCooldown) { storedData.playercounter.Remove(player.userID); } SaveData(); } }
public void Setup(BaseVehicle vehicle) { BaseVehicle.MountPointInfo pilot = vehicle.mountPoints[0]; BaseVehicle.MountPointInfo passenger = vehicle.mountPoints[1]; vehicle.mountPoints.Add(MakeMount(vehicle, new Vector3(0.6f, 0.2f, -0.3f))); vehicle.mountPoints.Add(MakeMount(vehicle, new Vector3(-0.6f, 0.2f, -0.3f))); MakeSeat(vehicle, new Vector3(0.6f, 0.2f, -0.5f)); MakeSeat(vehicle, new Vector3(-0.6f, 0.2f, -0.5f)); }
public override void DismountAllPlayers() { BaseVehicle.MountPointInfo[] mountPointInfoArray = this.mountPoints; for (int i = 0; i < (int)mountPointInfoArray.Length; i++) { BaseVehicle.MountPointInfo mountPointInfo = mountPointInfoArray[i]; if (mountPointInfo.mountable != null) { mountPointInfo.mountable.DismountAllPlayers(); } } }
public virtual void SpawnSubEntities() { for (int index = 0; index < this.mountPoints.Length; ++index) { BaseVehicle.MountPointInfo mountPoint = this.mountPoints[index]; Vector3 vector3 = Quaternion.op_Multiply(Quaternion.Euler(mountPoint.rot), Vector3.get_forward()); BaseEntity entity = GameManager.server.CreateEntity(mountPoint.prefab.resourcePath, mountPoint.pos, Quaternion.LookRotation(vector3, Vector3.get_up()), true); entity.Spawn(); entity.SetParent((BaseEntity)this, false, false); mountPoint.mountable = (BaseMountable)((Component)entity).GetComponent <BaseMountable>(); } }
public BasePlayer GetDriver() { if (!this.HasMountPoints()) { return(this._mounted); } BaseVehicle.MountPointInfo mountPointInfo = this.mountPoints[0]; if (mountPointInfo == null || mountPointInfo.mountable == null) { return(null); } return(mountPointInfo.mountable.GetMounted()); }
public bool HasAnyPassengers() { BaseVehicle.MountPointInfo[] mountPointInfoArray = this.mountPoints; for (int i = 0; i < (int)mountPointInfoArray.Length; i++) { BaseVehicle.MountPointInfo mountPointInfo = mountPointInfoArray[i]; if (mountPointInfo.mountable != null && mountPointInfo.mountable.GetMounted()) { return(true); } } return(false); }
public bool HasDriver() { if (!this.HasMountPoints()) { return(this.IsMounted()); } BaseVehicle.MountPointInfo mountPointInfo = this.mountPoints[0]; if (mountPointInfo == null || mountPointInfo.mountable == null) { return(false); } return(mountPointInfo.mountable.IsMounted()); }
public bool HasDriver() { if (!this.HasMountPoints()) { return(this.IsMounted()); } BaseVehicle.MountPointInfo mountPoint = this.mountPoints[0]; if (mountPoint == null || Object.op_Equality((Object)mountPoint.mountable, (Object)null)) { return(false); } return(mountPoint.mountable.IsMounted()); }
public int GetPlayerSeat(BasePlayer player) { if (!this.HasMountPoints() && Object.op_Equality((Object)this.GetMounted(), (Object)player)) { return(0); } for (int index = 0; index < this.mountPoints.Length; ++index) { BaseVehicle.MountPointInfo mountPoint = this.mountPoints[index]; if (Object.op_Inequality((Object)mountPoint.mountable, (Object)null) && Object.op_Equality((Object)mountPoint.mountable.GetMounted(), (Object)player)) { return(index); } } return(-1); }
public int GetPlayerSeat(BasePlayer player) { if (!this.HasMountPoints() && base.GetMounted() == player) { return(0); } for (int i = 0; i < (int)this.mountPoints.Length; i++) { BaseVehicle.MountPointInfo mountPointInfo = this.mountPoints[i]; if (mountPointInfo.mountable != null && mountPointInfo.mountable.GetMounted() == player) { return(i); } } return(-1); }
public override void DismountAllPlayers() { BaseVehicle.MountPointInfo[] mountPointInfoArray = this.mountPoints; for (int i = 0; i < (int)mountPointInfoArray.Length; i++) { BaseVehicle.MountPointInfo mountPointInfo = mountPointInfoArray[i]; if (mountPointInfo.mountable != null) { BasePlayer mounted = mountPointInfo.mountable.GetMounted(); if (mounted) { mounted.Hurt(10000f, DamageType.Explosion, this, false); } } } }
public void DelayedKill() { BaseVehicle.MountPointInfo[] mountPointInfoArray = this.mountPoints; for (int i = 0; i < (int)mountPointInfoArray.Length; i++) { BaseVehicle.MountPointInfo mountPointInfo = mountPointInfoArray[i]; if (mountPointInfo.mountable != null) { BasePlayer mounted = mountPointInfo.mountable.GetMounted(); if (mounted && mounted.transform != null && !mounted.IsDestroyed && !mounted.IsDead() && mounted.IsNpc) { mounted.Kill(BaseNetworkable.DestroyMode.None); } } } base.Kill(BaseNetworkable.DestroyMode.None); }
public void SwapSeats(BasePlayer player, int targetSeat = 0) { if (!this.HasMountPoints()) { return; } int playerSeat = this.GetPlayerSeat(player); if (playerSeat == -1) { return; } BaseMountable baseMountable = this.mountPoints[playerSeat].mountable; int num = playerSeat; BaseMountable baseMountable1 = null; if (baseMountable1 == null) { int num1 = 0; while (num1 < (int)this.mountPoints.Length) { num++; if (num >= (int)this.mountPoints.Length) { num = 0; } BaseVehicle.MountPointInfo mountPointInfo = this.mountPoints[num]; if (!(mountPointInfo.mountable != null) || mountPointInfo.mountable.IsMounted() || this.IsSeatClipping(mountPointInfo.mountable, 1218511105) || !this.IsSeatVisible(mountPointInfo.mountable, player.eyes.position, 1218511105)) { num1++; } else { baseMountable1 = mountPointInfo.mountable; break; } } } if (baseMountable1 != null && baseMountable1 != baseMountable) { baseMountable.DismountPlayer(player, true); baseMountable1.MountPlayer(player); player.MarkSwapSeat(); } }
public void SwapSeats(BasePlayer player, int targetSeat = 0) { if (!this.HasMountPoints()) { return; } int playerSeat = this.GetPlayerSeat(player); if (playerSeat == -1) { return; } BaseMountable mountable = this.mountPoints[playerSeat].mountable; int index1 = playerSeat; BaseMountable baseMountable = (BaseMountable)null; if (Object.op_Equality((Object)baseMountable, (Object)null)) { for (int index2 = 0; index2 < this.mountPoints.Length; ++index2) { ++index1; if (index1 >= this.mountPoints.Length) { index1 = 0; } BaseVehicle.MountPointInfo mountPoint = this.mountPoints[index1]; if (Object.op_Inequality((Object)mountPoint.mountable, (Object)null) && !mountPoint.mountable.IsMounted() && (!this.IsSeatClipping(mountPoint.mountable, 1218511105) && this.IsSeatVisible(mountPoint.mountable, player.eyes.position, 1218511105))) { baseMountable = mountPoint.mountable; break; } } } if (!Object.op_Inequality((Object)baseMountable, (Object)null) || !Object.op_Inequality((Object)baseMountable, (Object)mountable)) { return; } mountable.DismountPlayer(player, true); baseMountable.MountPlayer(player); player.MarkSwapSeat(); }
public void UnHostile() { BaseVehicle.MountPointInfo[] mountPointInfoArray = this.mountPoints; for (int i = 0; i < (int)mountPointInfoArray.Length; i++) { BaseVehicle.MountPointInfo mountPointInfo = mountPointInfoArray[i]; if (mountPointInfo.mountable != null) { BasePlayer mounted = mountPointInfo.mountable.GetMounted(); if (mounted) { NPCPlayerApex nPCPlayerApex = mounted as NPCPlayerApex; if (nPCPlayerApex) { nPCPlayerApex.Stats.Hostility = 0f; nPCPlayerApex.Stats.Defensiveness = 0f; } } } } }
public int NumMounted() { if (!this.HasMountPoints()) { if (!this.IsMounted()) { return(0); } return(1); } int num = 0; for (int i = 0; i < (int)this.mountPoints.Length; i++) { BaseVehicle.MountPointInfo mountPointInfo = this.mountPoints[i]; if (mountPointInfo.mountable != null && mountPointInfo.mountable.GetMounted() != null) { num++; } } return(num); }
public BaseMountable GetIdealMountPoint(Vector3 pos) { if (!this.HasMountPoints()) { return(this); } BaseMountable baseMountable = null; float single = Single.PositiveInfinity; BaseVehicle.MountPointInfo[] mountPointInfoArray = this.mountPoints; for (int i = 0; i < (int)mountPointInfoArray.Length; i++) { BaseVehicle.MountPointInfo mountPointInfo = mountPointInfoArray[i]; float single1 = Vector3.Distance(mountPointInfo.mountable.mountAnchor.position, pos); if (single1 < single && !mountPointInfo.mountable.IsMounted() && !this.IsSeatClipping(mountPointInfo.mountable, 1218511105) && this.IsSeatVisible(mountPointInfo.mountable, pos, 1218511105)) { baseMountable = mountPointInfo.mountable; single = single1; } } return(baseMountable); }
public void InitiateAnger() { base.CancelInvoke(new Action(this.UnHostile)); base.Invoke(new Action(this.UnHostile), 120f); BaseVehicle.MountPointInfo[] mountPointInfoArray = this.mountPoints; for (int i = 0; i < (int)mountPointInfoArray.Length; i++) { BaseVehicle.MountPointInfo mountPointInfo = mountPointInfoArray[i]; if (mountPointInfo.mountable != null) { BasePlayer mounted = mountPointInfo.mountable.GetMounted(); if (mounted) { NPCPlayerApex nPCPlayerApex = mounted as NPCPlayerApex; if (nPCPlayerApex) { nPCPlayerApex.Stats.Hostility = 1f; nPCPlayerApex.Stats.Defensiveness = 1f; } } } } }
void Awake() { entity = GetComponent <BaseVehicle>(); bool isMini = entity is MiniCopter; bool isHorse = entity is RidableHorse; Vector3 emptyVector = new Vector3(0, 0, 0); if (isMini) { _instance.LogDebug("Minicopter detected"); } if (isHorse) { _instance.LogDebug("Horse detected"); } if (entity == null) { Destroy(this); return; } BaseVehicle.MountPointInfo pilot = entity.mountPoints[0]; //entity.mountPoints.Clear(); if (entity is RidableHorse) { _instance.LogDebug("Adding passenger seat"); Vector3 horseVector = new Vector3(0f, -0.32f, -0.5f); BaseVehicle.MountPointInfo horseBack = _instance.CreateMount(horseVector, pilot, emptyVector); //entity.mountPoints.Add(pilot); entity.mountPoints.Add(horseBack); entity.SendNetworkUpdateImmediate(); } if (entity is MiniCopter) { BaseVehicle.MountPointInfo pFront = entity.mountPoints[1]; Vector3 leftVector = new Vector3(0.6f, 0.2f, -0.2f); Vector3 rightVector = new Vector3(-0.6f, 0.2f, -0.2f); Vector3 backVector = new Vector3(0.0f, 0.4f, -1.2f); Vector3 backVector2 = new Vector3(0.0f, 0.4f, -1.45f); Vector3 playerOffsetVector = new Vector3(0f, 0f, -0.25f); Quaternion backQuaternion = Quaternion.Euler(0f, 180f, 0f); if (_instance.config.EnableMiniSideSeats) { _instance.LogDebug("Adding side seats"); BaseVehicle.MountPointInfo pLeftSide = _instance.CreateMount(leftVector, pFront, emptyVector); BaseVehicle.MountPointInfo pRightSide = _instance.CreateMount(rightVector, pFront, emptyVector); entity.mountPoints.Add(pLeftSide); entity.mountPoints.Add(pRightSide); _instance.AddSeat(entity, leftVector + playerOffsetVector, new Quaternion()); _instance.AddSeat(entity, rightVector + playerOffsetVector, new Quaternion()); } if (_instance.config.EnableMiniBackSeat) { _instance.LogDebug("Adding back/rotor seat"); BaseVehicle.MountPointInfo pBackReverse = _instance.CreateMount(backVector2, pFront, new Vector3(0f, 180f, 0f)); entity.mountPoints.Add(pBackReverse); _instance.AddSeat(entity, backVector, backQuaternion); } } }
private void GetMyMiniMyCopterChatCommand(BasePlayer player, string command, string[] args) { if (player.IsBuildingBlocked() & !allowWhenBlocked) { PrintMsgL(player, "BlockedMsg"); return; } bool canspawn = permission.UserHasPermission(player.UserIDString, MinicopterSpawn); bool canfetch = permission.UserHasPermission(player.UserIDString, MinicopterFetch); if (!(canspawn & canfetch)) { PrintMsgL(player, "NoPermMsg"); return; } if (storedData.playerminiID.ContainsKey(player.userID) == true) { uint findme; storedData.playerminiID.TryGetValue(player.userID, out findme); var foundit = BaseNetworkable.serverEntities.Find(findme); if (foundit != null) { var ent = BaseNetworkable.serverEntities.Find(findme); // Distance check if (gminidistance > 0f) { if (Vector3.Distance(player.transform.position, ent.transform.position) > gminidistance) { PrintMsgL(player, "DistanceMsg", gminidistance); return; } } // Check for and dismount all players before moving the copter var copter = ent as BaseVehicle; List <BaseVehicle.MountPointInfo> mountpoints = copter.mountPoints; for (int i = 0; i < (int)mountpoints.Count; i++) { BaseVehicle.MountPointInfo mountPointInfo = mountpoints[i]; if (mountPointInfo.mountable != null) { BasePlayer mounted = mountPointInfo.mountable.GetMounted(); if (mounted) { Vector3 player_pos = mounted.transform.position + new Vector3(1, 0, 1); mounted.DismountObject(); mounted.MovePosition(player_pos); mounted.SendNetworkUpdateImmediate(false); mounted.ClientRPCPlayer(null, player, "ForcePositionTo", player_pos); mountPointInfo.mountable._mounted = null; } } } var newLoc = new Vector3((float)(player.transform.position.x + 2f), player.transform.position.y + 2f, (float)(player.transform.position.z + 2f)); foundit.transform.position = newLoc; PrintMsgL(player, "FoundMsg", newLoc); } return; } else { PrintMsgL(player, "NoFoundMsg"); return; } }
public override void StateThink(float delta) { bool flag; Vector3 entity = this.brain.GetEntity().transform.position; CH47LandingZone closest = CH47LandingZone.GetClosest(this.brain.GetEntity().landingTarget); if (!closest) { return; } float single = this.brain.GetEntity().rigidBody.velocity.magnitude; Vector3.Distance(closest.transform.position, entity); float single1 = Vector3Ex.Distance2D(closest.transform.position, entity); Mathf.InverseLerp(1f, 20f, single1); bool flag1 = single1 < 100f; bool flag2 = (single1 <= 15f ? false : entity.y < closest.transform.position.y + 10f); this.brain.GetEntity().EnableFacingOverride(flag1); this.brain.GetEntity().SetAltitudeProtection(flag2); flag = (Mathf.Abs(closest.transform.position.y - entity.y) >= 3f || single1 > 5f ? false : single < 1f); if (flag) { this.landedForSeconds += delta; if (this.lastLandtime == 0f) { this.lastLandtime = Time.time; } } float single2 = 1f - Mathf.InverseLerp(0f, 7f, single1); this.landingHeight = this.landingHeight - 4f * single2 * Time.deltaTime; if (this.landingHeight < -5f) { this.landingHeight = -5f; } this.brain.GetEntity().SetAimDirection(closest.transform.forward); this.brain.GetEntity().SetMoveTarget(this.brain.mainInterestPoint + new Vector3(0f, this.landingHeight, 0f)); if (flag) { if (this.landedForSeconds > 1f && Time.time > this.nextDismountTime) { BaseVehicle.MountPointInfo[] mountPointInfoArray = this.brain.GetEntity().mountPoints; int num = 0; while (num < (int)mountPointInfoArray.Length) { BaseVehicle.MountPointInfo mountPointInfo = mountPointInfoArray[num]; if (!mountPointInfo.mountable || !mountPointInfo.mountable.IsMounted()) { num++; } else { this.nextDismountTime = Time.time + 0.5f; mountPointInfo.mountable.DismountAllPlayers(); break; } } } if (this.landedForSeconds > 8f) { this.brain.GetComponent <CH47AIBrain>().age = Single.PositiveInfinity; } } }