using System; using Newtonsoft.Json; using UnityEngine; namespace Oxide.Plugins; [Info("Long Shot", "Michael Keulemans", "1.0.0")] [Description("Announces player kills made from a long way off, with the distance.")] public class LongShot : RustPlugin { private ConfigData _config; private class ConfigData { [JsonProperty("Minimum distance in metres")] public float MinDistance = 150f; [JsonProperty("Message")] public string Message = "{killer} dropped {victim} from {distance}m"; } protected override void LoadDefaultConfig() => _config = new ConfigData(); protected override void LoadConfig() { base.LoadConfig(); try { _config = Config.ReadObject() ?? new ConfigData(); } catch (Exception ex) { Debug.LogException(ex); _config = new ConfigData(); } } protected override void SaveConfig() => Config.WriteObject(_config, true); private void OnPlayerDeath(BasePlayer victim, HitInfo info) { if (victim.IsNpc || info == null) return; var killer = info.InitiatorPlayer; if (killer == null || killer.IsNpc) return; if (info.ProjectileDistance < _config.MinDistance) return; var metres = Mathf.RoundToInt(info.ProjectileDistance).ToString(); var text = _config.Message.Replace("{killer}", killer.displayName); text = text.Replace("{victim}", victim.displayName); text = text.Replace("{distance}", metres); PrintToChat(text); } }