Ошибка CS1061 указывает на то, что тип
Construction
не содержит определения для метода
Kill
, и не найден метод расширения
Kill
для типа
Construction
. Для исправления этой проблемы нужно убедиться, что правильно обращаемся к методу для удаления объекта. В Rust API может быть другой метод для удаления объектов, необходимо использовать соответствующий метод для каждого типа объекта. В примере ниже я предполагаю, что для удаления объектов Construction, MiningQuarry и PumpJack используется метод
Kill
, но если это не так, замените его на соответствующий метод удаления.
Обновленный код плагина с исправлением ошибки:
C#:
using Oxide.Core;
using System;
using System.Linq;
using UnityEngine;
namespace ConstructionCleanupPlugin
{
[Info("ConstructionCleanup", "YourName", "1.0.0")]
class ConstructionCleanup : RustPlugin
{
private Timer cleanupTimer;
private int countdownTimer;
private void Init()
{
countdownTimer = 600; // Установка начального значения таймера
cleanupTimer = timer.Every(1f, () =>
{
countdownTimer--;
if (countdownTimer == 20)
{
PrintToChat("Через 20 секунд произойдет очистка планов постройки и киянок.");
}
if (countdownTimer <= 0)
{
CleanupConstruction();
countdownTimer = 600; // Сбрасываем таймер обратно на 10 минут
}
});
}
private void CleanupConstruction()
{
var constructions = UnityEngine.Object.FindObjectsOfType<Construction>();
var miningQuarries = UnityEngine.Object.FindObjectsOfType<MiningQuarry>();
var pumpJacks = UnityEngine.Object.FindObjectsOfType<PumpJack>();
foreach (var construction in constructions)
{
if (construction is BaseEntity)
{
(construction as BaseEntity).Kill();
}
}
foreach (var quarry in miningQuarries)
{
if (quarry is BaseEntity)
{
(quarry as BaseEntity).Kill();
}
}
foreach (var pumpJack in pumpJacks)
{
if (pumpJack is BaseEntity)
{
(pumpJack as BaseEntity).Kill();
}
}
PrintToChat("Планы постройки и киянки были очищены.");
}
private void OnPlayerConnected(BasePlayer player)
{
PrintToChat($"Следующая очистка через {countdownTimer} секунд.");
}
private void Unload()
{
cleanupTimer?.Destroy();
}
}
}
В этом коде использовано приведение типов к
BaseEntity
, так как предполагается, что метод
Kill()
доступен для этого базового типа. Поменяйте
BaseEntity
на нужный тип, если метод
Kill()
должен быть вызван для другого типа объектов. Надеюсь, это поможет исправить ошибку CS1061.