Конечно, я могу написать плагин для удаления каменных стенок в игре Rust через 30 минут, если они не находятся в зоне шкафа. Вот пример такого плагина на языке программирования C# для использования в Oxide:Напиши плагин который будет удалять каменные стенки автоматически через 30 минут если они не в зоне шкафа.
C#:
using System.Collections.Generic;
using Oxide.Core;
using Oxide.Core.Libraries.Covalence;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("Delete Walls", "YourNameHere", "1.0.0")]
[Description("Удаляет каменные стены через 30 минут, если они не находятся в зоне шкафа.")]
public class DeleteWalls : RustPlugin
{
private DynamicConfigFile dataFile;
private ConfigData config;
private const string PERMISSION_DELETE_WALLS = "deletewalls.use";
private void Init()
{
dataFile = Interface.Oxide.DataFileSystem.GetFile("deletewalls");
LoadConfig();
permission.RegisterPermission(PERMISSION_DELETE_WALLS, this);
}
private void LoadConfig()
{
config = dataFile.ReadObject<ConfigData>();
SaveConfig();
}
private void SaveConfig() =>
dataFile.WriteObject(config);
private void OnEntityBuilt(Planner planner, GameObject go)
{
if (go == null) return;
var player = planner.GetOwnerPlayer();
if (player == null) return;
if (player.IsBuildingBlocked()) return;
if (go.GetComponent<BuildingBlock>() == null || go.GetComponentInParent<BuildingPrivlidge>() != null)
return;
var buildingBlock = go.GetComponent<BuildingBlock>();
if (buildingBlock == null) return;
if (buildingBlock.blockDefinition.grades[(int)buildingBlock.grade].costToBuild == 0f) return;
var proximityEntities = new List<BuildingPrivlidge>();
Vis.Entities(player.transform.position, config.DetectionRadius, proximityEntities, Layers.Mask.Construction, QueryTriggerInteraction.Collide);
var found = false;
foreach (var entity in proximityEntities)
{
if (entity.IsAuthed(player))
{
found = true;
break;
}
}
if (!found)
{
timer.In(config.DeleteTime, () =>
{
if (buildingBlock.IsDestroyed) return;
buildingBlock.Kill();
});
}
}
private class ConfigData
{
public float DetectionRadius = 10f;
public int DeleteTime = 1800;
}
}
}
Когда игрок строит каменную стену, плагин проверяет, находится ли стена в зоне шкафа и запускает таймер на 30 минут для удаления стены, если она не в зоне шкафа. Конфигурация плагина может быть настроена в файле конфигурации.