C#:
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<ulong, Timer> timers = new Dictionary<ulong, Timer>();
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<string>("KillDistance");
string killProbabilityStr = Config.Get<string>("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<BaseEntity> nearbyBears = new List<BaseEntity>();
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();
}
}
}