using UnityEngine; using Oxide.Core; using System.Collections.Generic; namespace Oxide.Plugins { [Info("Explosive Bear Trumpet", "Farmer Elias", "1.0.0")] class ExplosiveBearTrumpet : RustPlugin { private Dictionary timers = new Dictionary(); private int killDistance; private int killProbability; private string bearPrefabPath = "assets/rust.ai/agents/bear/bear.prefab"; private string polarbearPrefabPath = "assets/rust.ai/agents/bear/polarbear.prefab"; void Init() { permission.RegisterPermission("explosivebeartrumpet.use", this); if (!Config.Exists()) { LoadDefaultConfig(); } LoadConfigValues(); } void LoadConfigValues() { string killDistanceStr = Config.Get("KillDistance"); string killProbabilityStr = Config.Get("KillProbability"); if (!int.TryParse(killDistanceStr, out killDistance)) { killDistance = 10; // Standardwert } if (!int.TryParse(killProbabilityStr, out killProbability)) { killProbability = 10; // Standardwert } } void OnPlayerInput(BasePlayer player, InputState input) { if (player == null || !player.IsConnected) return; if (!permission.UserHasPermission(player.UserIDString, "explosivebeartrumpet.use")) return; if (input.IsDown(BUTTON.FIRE_SECONDARY) && player.GetActiveItem()?.info.shortname == "fun.trumpet") { if (!timers.ContainsKey(player.userID) || timers[player.userID] == null || timers[player.userID].Destroyed) { timers[player.userID] = timer.Every(1f, () => CheckForBears(player)); } } else { if (timers.ContainsKey(player.userID) && timers[player.userID] != null && !timers[player.userID].Destroyed) { timers[player.userID].Destroy(); } } } void CheckForBears(BasePlayer player) { List nearbyBears = new List(); Vis.Entities(player.transform.position, killDistance, nearbyBears); foreach (var bear in nearbyBears) { if (bear != null && (bear.PrefabName.Equals(bearPrefabPath) || bear.PrefabName.Equals(polarbearPrefabPath))) { int randomNumber = UnityEngine.Random.Range(0, 101); if (randomNumber <= killProbability) { Vector3 bearPosition = bear.transform.position; bearPosition.y += 1f; Effect.server.Run("assets/bundled/prefabs/fx/gas_explosion_small.prefab", bearPosition); Effect.server.Run("assets/prefabs/npc/m2bradley/effects/bradley_explosion.prefab", bearPosition); bear.Kill(); } else { SendReply(player, "[Trumpet] The bear wasn't afraid of your trumpet"); } } } } protected override void LoadDefaultConfig() { Config["KillDistance"] = "10"; Config["KillProbability"] = "10"; SaveConfig(); } } }