Мне нужно вести подсчет собранных растений , диких или же выращенных на грядке, вот пример хуков , но они почему то не работают, что нужно исправить в коде
Код:
using Oxide.Core.Plugins;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("PlantHarvestNotifier", "YourName", "1.0.3")]
[Description("Уведомляет игрока в чате о сборе диких растений с кустов, таких как тыквы, конопля, грибы и кукуруза.")]
public class PlantHarvestNotifier : RustPlugin
{
void Init()
{
Puts("Плагин PlantHarvestNotifier успешно загружен!");
}
// Хук при нанесении урона сущности (для диагностики)
void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info)
{
if (entity == null || info == null || info.Initiator == null) return;
BasePlayer player = info.Initiator as BasePlayer;
if (player == null || !player.IsConnected)
{
Puts("Ошибка: Недействительный игрок в OnEntityTakeDamage.");
return;
}
string prefabName = entity.PrefabName.ToLower();
Puts($"OnEntityTakeDamage: Игрок {player.displayName} (ID: {player.userID}) нанёс урон {prefabName}");
// Проверка префабов кустов
if (prefabName.Contains("pumpkin-collectable") || prefabName.Contains("pumpkin.entity"))
{
rust.SendChatMessage(player, "Вы сорвали тыквенный куст и получили тыкву и семя тыквы.");
}
else if (prefabName.Contains("hemp-collectable") || prefabName.Contains("hemp.entity"))
{
rust.SendChatMessage(player, "Вы сорвали куст конопли и получили 10 ткани и семя конопли.");
}
else if (prefabName.Contains("corn-collectable") || prefabName.Contains("corn.entity"))
{
rust.SendChatMessage(player, "Вы сорвали куст кукурузы и получили кукурузу и семя кукурузы.");
}
else if (prefabName.Contains("mushroom-cluster") || prefabName.Contains("mushroom.entity"))
{
rust.SendChatMessage(player, "Вы сорвали гриб с куста грибов.");
}
}
// Хук при уничтожении сущности (для диагностики)
void OnEntityDeath(BaseCombatEntity entity, HitInfo info)
{
if (entity == null || info == null || info.Initiator == null) return;
BasePlayer player = info.Initiator as BasePlayer;
if (player == null || !player.IsConnected)
{
Puts("Ошибка: Недействительный игрок в OnEntityDeath.");
return;
}
string prefabName = entity.PrefabName.ToLower();
Puts($"OnEntityDeath: Игрок {player.displayName} (ID: {player.userID}) уничтожил {prefabName}");
// Проверка префабов кустов
if (prefabName.Contains("pumpkin-collectable") || prefabName.Contains("pumpkin.entity"))
{
rust.SendChatMessage(player, "Вы сорвали тыквенный куст и получили тыкву и семя тыквы.");
}
else if (prefabName.Contains("hemp-collectable") || prefabName.Contains("hemp.entity"))
{
rust.SendChatMessage(player, "Вы сорвали куст конопли и получили 10 ткани и семя конопли.");
}
else if (prefabName.Contains("corn-collectable") || prefabName.Contains("corn.entity"))
{
rust.SendChatMessage(player, "Вы сорвали куст кукурузы и получили кукурузу и семя кукурузы.");
}
else if (prefabName.Contains("mushroom-cluster") || prefabName.Contains("mushroom.entity"))
{
rust.SendChatMessage(player, "Вы сорвали гриб с куста грибов.");
}
}
// Хук для сбора выращиваемых растений (на случай, если сработает)
void OnGrowableGather(GrowableEntity entity, BasePlayer player)
{
if (entity == null || player == null || !player.IsConnected)
{
Puts("Ошибка: Недействительный игрок или сущность в OnGrowableGather.");
return;
}
string prefabName = entity.PrefabName.ToLower();
Puts($"OnGrowableGather: Игрок {player.displayName} (ID: {player.userID}) собрал растение: {prefabName}");
if (prefabName.Contains("pumpkin-collectable") || prefabName.Contains("pumpkin.entity"))
{
rust.SendChatMessage(player, "Вы сорвали тыквенный куст и получили тыкву и семя тыквы.");
}
else if (prefabName.Contains("hemp-collectable") || prefabName.Contains("hemp.entity"))
{
rust.SendChatMessage(player, "Вы сорвали куст конопли и получили 10 ткани и семя конопли.");
}
else if (prefabName.Contains("corn-collectable") || prefabName.Contains("corn.entity"))
{
rust.SendChatMessage(player, "Вы сорвали куст кукурузы и получили кукурузу и семя кукурузы.");
}
}
// Хук для сбора коллекционных объектов (грибы)
void OnCollectiblePickup(Item item, BasePlayer player, CollectibleEntity entity)
{
if (item == null || player == null || entity == null || !player.IsConnected)
{
Puts("Ошибка: Недействительный игрок, предмет или сущность в OnCollectiblePickup.");
return;
}
string itemName = item.info.shortname.ToLower();
string prefabName = entity.PrefabName.ToLower();
Puts($"OnCollectiblePickup: Игрок {player.displayName} (ID: {player.userID}) собрал {itemName} с {prefabName}");
if (itemName == "mushroom" && (prefabName.Contains("mushroom-cluster") || prefabName.Contains("mushroom.entity")))
{
rust.SendChatMessage(player, "Вы сорвали гриб с куста грибов.");
}
}
}
}