void ToggleHover(BasePlayer player, MiniCopter minicopter) { if (!helicopterHovering.ContainsKey(minicopter.GetInstanceID())) { helicopterHovering.Add(minicopter.GetInstanceID(), false); } if (!helicopterFuelUseTime.ContainsKey(minicopter.GetInstanceID())) { helicopterFuelUseTime.Add(minicopter.GetInstanceID(), 0f); } if (!helicopterTimers.ContainsKey(minicopter.GetInstanceID())) { helicopterTimers.Add(minicopter.GetInstanceID(), null); } Rigidbody rb = minicopter.GetComponent <Rigidbody>(); if (rb == null) { PrintWarning(lang.GetMessage("RigidbodyNull", this, null)); PrintToChat(player, lang.GetMessage("ErrorFound", this, player.UserIDString)); return; } if (!helicopterHovering[minicopter.GetInstanceID()]) { helicopterHovering[minicopter.GetInstanceID()] = true; rb.constraints = RigidbodyConstraints.FreezePositionY; if (!_config.Hovering.enableRotationOnHover) { rb.freezeRotation = true; } PrintToChat(player, lang.GetMessage("HelicopterEnabled", this, player.UserIDString)); if (_config.Hovering.keepEngineOnHover) { MonoBehaviour monoBehaviour = minicopter.GetComponent <MonoBehaviour>(); monoBehaviour.StartCoroutine(WhileHovering(minicopter, rb)); } } else { helicopterHovering[minicopter.GetInstanceID()] = false; rb.constraints = RigidbodyConstraints.None; rb.freezeRotation = false; PrintToChat(player, lang.GetMessage("HelicopterDisabled", this, player.UserIDString)); } }
void OnEntityDismounted(BaseMountable mount, BasePlayer player) { if (mount.GetParentEntity() != null) { if (_config.Hovering.disableHoverOnDismount && mount.GetParentEntity().ShortPrefabName == "minicopter.entity" || mount.GetParentEntity().ShortPrefabName == "scraptransporthelicopter" && _config.Permission.scrapheliCanHover) { MiniCopter minicopter = mount.GetParentEntity() as MiniCopter; if (minicopter != null && helicopterHovering.ContainsKey(minicopter.GetInstanceID())) { if (helicopterHovering[minicopter.GetInstanceID()] && mount.GetParentEntity() is MiniCopter && !minicopter.HasAnyPassengers() && minicopter != null) { helicopterHovering[minicopter.GetInstanceID()] = false; minicopter.GetComponent <Rigidbody>().constraints = RigidbodyConstraints.None; minicopter.GetComponent <Rigidbody>().freezeRotation = false; } } else { if (minicopter == null) { PrintWarning(lang.GetMessage("HelicopterNull", this, null)); } else if (!helicopterHovering.ContainsKey(minicopter.GetInstanceID())) { return; } } } else if (!_config.Hovering.disableHoverOnDismount && mount.GetParentEntity().ShortPrefabName == "minicopter.entity" || mount.GetParentEntity().ShortPrefabName == "scraptransporthelicopter" && _config.Permission.scrapheliCanHover) { if (_config.Hovering.keepEngineOnHover) { MiniCopter minicopter = mount.GetParentEntity() as MiniCopter; if (minicopter != null && helicopterHovering.ContainsKey(minicopter.GetInstanceID())) { Rigidbody rb = minicopter.GetComponent <Rigidbody>(); minicopter.StartCoroutine(WhileHovering(minicopter, rb)); } } } } }