using System.Collections.Generic; using System.Text.RegularExpressions; using UnityEngine; namespace Oxide.Plugins { [Info("Instant Animal Kill", "CengizhanBucak", "1.0.6")] [Description("Kills animals instantly when attacked.")] public class InstantAnimalKill : RustPlugin { private const string permissionNameBear = "instantanimalkill.bear"; // Permission for bear private const string permissionNameWolf = "instantanimalkill.wolf"; // Permission for wolf private const string permissionNameHorse = "instantanimalkill.horse"; // Permission for horse private const string permissionNameChicken = "instantanimalkill.chicken"; // Permission for chicken private const string permissionNameAll = "instantanimalkill.all"; // Permission for all animals private bool enableMessages; private string killedAnimalMessage; protected override void LoadDefaultConfig() { Config["EnableMessages"] = true; Config["KilledAnimalMessage"] = "You killed %animal%!"; SaveConfig(); } private void Init() { LoadDefaultConfig(); enableMessages = (bool)Config["EnableMessages"]; killedAnimalMessage = (string)Config["KilledAnimalMessage"]; permission.RegisterPermission(permissionNameBear, this); permission.RegisterPermission(permissionNameWolf, this); permission.RegisterPermission(permissionNameHorse, this); permission.RegisterPermission(permissionNameChicken, this); permission.RegisterPermission(permissionNameAll, this); } private void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo hitInfo) { // Only apply to animals if (!(entity is BaseNpc) || !(hitInfo.Initiator is BasePlayer)) { return; } // Check if player has permission to use or kill animals bool hasBearPermission = permission.UserHasPermission((hitInfo.Initiator as BasePlayer).UserIDString, permissionNameBear); bool hasWolfPermission = permission.UserHasPermission((hitInfo.Initiator as BasePlayer).UserIDString, permissionNameWolf); bool hasHorsePermission = permission.UserHasPermission((hitInfo.Initiator as BasePlayer).UserIDString, permissionNameHorse); bool hasChickenPermission = permission.UserHasPermission((hitInfo.Initiator as BasePlayer).UserIDString, permissionNameChicken); bool hasAllPermission = permission.UserHasPermission((hitInfo.Initiator as BasePlayer).UserIDString, permissionNameAll); // comment debug // Debug.Log($"Player has bear permission: {hasBearPermission}"); // Debug.Log($"Entity short prefab name: {entity.ShortPrefabName}"); // Check if the animal is a bear, and if so, check for permissions and kill it instantly if (entity.ShortPrefabName == "bear") { if (hasBearPermission) { entity.Die(); // Send a message to the player if messages are enabled if (enableMessages) { string message = killedAnimalMessage.Replace("%animal%", entity.ShortPrefabName); (hitInfo.Initiator as BasePlayer).ChatMessage(message); } return; } } // Check if the animal is a wolf, and if so, check for permissions and kill it instantly if (entity.ShortPrefabName == "wolf") { if (hasWolfPermission) { entity.Die(); // Send a message to the player if messages are enabled if (enableMessages) { string message = killedAnimalMessage.Replace("%animal%", entity.ShortPrefabName); (hitInfo.Initiator as BasePlayer).ChatMessage(message); } return; } } // Check if the animal is a horse, and if so, check for permissions and kill it instantly if (entity.ShortPrefabName == "horse") { if (hasHorsePermission) { entity.Die(); // Send a message to the player if messages are enabled if (enableMessages) { string message = killedAnimalMessage.Replace("%animal%", entity.ShortPrefabName); (hitInfo.Initiator as BasePlayer).ChatMessage(message); } return; } } // Check if the animal is a chicken, and if so, check for permissions and kill it instantly if (entity.ShortPrefabName == "chicken") { if (hasChickenPermission) { entity.Die(); // Send a message to the player if messages are enabled if (enableMessages) { string message = killedAnimalMessage.Replace("%animal%", entity.ShortPrefabName); (hitInfo.Initiator as BasePlayer).ChatMessage(message); } return; } } // Check if the animal is a chicken, and if so, check for permissions and kill it instantly if (hasAllPermission) { entity.Die(); // Send a message to the player if messages are enabled if (enableMessages) { string message = killedAnimalMessage.Replace("%animal%", entity.ShortPrefabName); (hitInfo.Initiator as BasePlayer).ChatMessage(message); } return; } } } }