private void NoMinicopter(BasePlayer player, string command, string[] args) { if (!permission.UserHasPermission(player.UserIDString, _noMini)) { player.ChatMessage(lang.GetMessage("mini_perm", this, player.UserIDString)); return; } if (!_data.playerMini.ContainsKey(player.UserIDString)) { player.ChatMessage(lang.GetMessage("mini_notcurrent", this, player.UserIDString)); return; } MiniCopter mini = BaseNetworkable.serverEntities.Find(_data.playerMini[player.UserIDString]) as MiniCopter; if (mini == null) { return; } if (mini.AnyMounted() && (!_config.canDespawnWhileOccupied || player.GetMountedVehicle() == mini)) { player.ChatMessage(lang.GetMessage("mini_mounted", this, player.UserIDString)); return; } if (IsMiniBeyondMaxDistance(player, mini)) { player.ChatMessage(lang.GetMessage("mini_current_distance", this, player.UserIDString)); return; } BaseNetworkable.serverEntities.Find(_data.playerMini[player.UserIDString])?.Kill(); }
private void FetchMinicopter(BasePlayer player, string command, string[] args) { if (!permission.UserHasPermission(player.UserIDString, _fetchMini)) { player.ChatMessage(lang.GetMessage("mini_perm", this, player.UserIDString)); } else { if (!_data.playerMini.ContainsKey(player.UserIDString)) { player.ChatMessage(lang.GetMessage("mini_notcurrent", this, player.UserIDString)); } else if (_data.playerMini.ContainsKey(player.UserIDString)) { MiniCopter mini = BaseNetworkable.serverEntities.Find(_data.playerMini[player.UserIDString]) as MiniCopter; if (mini == null) { return; } if (!mini.AnyMounted() && GetDistance(player, mini) < _config.noMiniDistance) { Puts(GetDistance(player, mini).ToString()); Vector3 destination = new Vector3(player.transform.position.x, player.transform.position.y + 3.5f, player.transform.position.z + 2); mini.transform.position = destination; } else if (GetDistance(player, mini) > _config.noMiniDistance) { player.ChatMessage(lang.GetMessage("mini_distance", this, player.UserIDString)); } else if (mini.AnyMounted()) { player.ChatMessage(lang.GetMessage("mini_mounted", this, player.UserIDString)); } } } }
private void NoMinicopter(BasePlayer player, string command, string[] args) { if (!permission.UserHasPermission(player.UserIDString, _noMini)) { player.ChatMessage(lang.GetMessage("mini_perm", this, player.UserIDString)); } else { if (!_data.playerMini.ContainsKey(player.UserIDString)) { player.ChatMessage(lang.GetMessage("mini_notcurrent", this, player.UserIDString)); } else if (_data.playerMini.ContainsKey(player.UserIDString)) { MiniCopter mini = BaseNetworkable.serverEntities.Find(_data.playerMini[player.UserIDString]) as MiniCopter; if (mini == null) { return; } if (!mini.AnyMounted() && GetDistance(player, mini) < _config.noMiniDistance) { BaseNetworkable.serverEntities.Find(_data.playerMini[player.UserIDString])?.Kill(); } else if (GetDistance(player, mini) > _config.noMiniDistance) { player.ChatMessage(lang.GetMessage("mini_distance", this, player.UserIDString)); } else if (mini.AnyMounted()) { player.ChatMessage(lang.GetMessage("mini_mounted", this, player.UserIDString)); } } } }
private void FetchMinicopter(BasePlayer player, string command, string[] args) { if (!permission.UserHasPermission(player.UserIDString, _fetchMini)) { player.ChatMessage(lang.GetMessage("mini_perm", this, player.UserIDString)); return; } if (!_data.playerMini.ContainsKey(player.UserIDString)) { player.ChatMessage(lang.GetMessage("mini_notcurrent", this, player.UserIDString)); return; } MiniCopter mini = BaseNetworkable.serverEntities.Find(_data.playerMini[player.UserIDString]) as MiniCopter; if (mini == null) { return; } bool isMounted = mini.AnyMounted(); if (isMounted && (!_config.canFetchWhileOccupied || player.GetMountedVehicle() == mini)) { player.ChatMessage(lang.GetMessage("mini_mounted", this, player.UserIDString)); return; } if (IsMiniBeyondMaxDistance(player, mini)) { player.ChatMessage(lang.GetMessage("mini_current_distance", this, player.UserIDString)); return; } if (isMounted) { // mini.DismountAllPlayers() doesn't work so we have to enumerate the mount points foreach (var mountPoint in mini.mountPoints) { mountPoint.mountable?.DismountAllPlayers(); } } mini.transform.SetPositionAndRotation(GetIdealFixedPositionForPlayer(player), GetIdealRotationForPlayer(player)); }
private void GiveMinicopter(BasePlayer player, string command, string[] args) { if (!permission.UserHasPermission(player.UserIDString, _spawnMini)) { player.ChatMessage(lang.GetMessage("mini_perm", this, player.UserIDString)); return; } if (_data.playerMini.ContainsKey(player.UserIDString)) { // Fix a potential data file desync where the mini doesn't exist anymore // Desyncs should be rare but are not possible to 100% prevent // They can happen if the mini is destroyed while the plugin is unloaded // Or if someone edits the data file manually if (BaseNetworkable.serverEntities.Find(_data.playerMini[player.UserIDString]) == null) { _data.playerMini.Remove(player.UserIDString); } else { //player.ChatMessage(lang.GetMessage("mini_current", this, player.UserIDString)); //return; } } if (_data.cooldown.ContainsKey(player.UserIDString) && !permission.UserHasPermission(player.UserIDString, _noCooldown)) { DateTime lastSpawned = _data.cooldown[player.UserIDString]; TimeSpan timeRemaining = CeilingTimeSpan(lastSpawned.AddSeconds(GetPlayerCooldownSeconds(player)) - DateTime.Now); if (timeRemaining.TotalSeconds > 0) { player.ChatMessage(string.Format(lang.GetMessage("mini_timeleft_new", this, player.UserIDString), timeRemaining.ToString("g"))); return; } _data.cooldown.Remove(player.UserIDString); } if (!_data.playerMini.ContainsKey(player.UserIDString)) // If player doesn't have heli { SpawnMinicopter(player); //Spawn one return; //Done } else //Player has a heli already { MiniCopter mini = BaseNetworkable.serverEntities.Find(_data.playerMini[player.UserIDString]) as MiniCopter; if (mini == null) { return; } if (mini.AnyMounted() && (!_config.canDespawnWhileOccupied || player.GetMountedVehicle() == mini)) //Make Sure it's not mounted { player.ChatMessage(lang.GetMessage("mini_mounted", this, player.UserIDString)); //Message if it is return; //Done } if (IsMiniBeyondMaxDistance(player, mini)) //Make Sure it's witin range { player.ChatMessage(lang.GetMessage("mini_current_distance", this, player.UserIDString)); //Msg if not return; //Done } mini.transform.SetPositionAndRotation(GetIdealFixedPositionForPlayer(player), GetIdealRotationForPlayer(player)); //BaseNetworkable.serverEntities.Find(_data.playerMini[player.UserIDString])?.Kill();//Remove it //SpawnMinicopter(player); //Spawn New } }