C#:
using System.Collections.Generic;
using UnityEngine;
using Oxide.Core.Plugins;
using Rust;
namespace Oxide.Plugins
{
[Info("BarricadeLimit", "sdapro", "1.0.0")]
//YouTube https://www.youtube.com/channel/UCaatLYzqycP6He7TEbK-IDA
//https://t.me/+jb13FvJyK4o5MTli
class BarricadeLimit : RustPlugin
{
private Dictionary<ulong, List<BaseEntity>> barricades = new Dictionary<ulong, List<BaseEntity>>();
private Dictionary<string, int> barricadeLimits = new Dictionary<string, int>()
{
{ "assets/prefabs/deployable/barricades/barricade.cover.wood.prefab", 4 },
{ "assets/prefabs/misc/xmas/icewalls/icewall.prefab", 2 },
{ "assets/prefabs/deployable/drone/drone.deployed.prefab", 1 },
{ "assets/prefabs/deployable/barricades/barricade.stone.prefab", 2 },
{ "assets/prefabs/deployable/barricades/barricade.sandbags.prefab", 2 },
{ "assets/prefabs/building/wall.external.high.wood/wall.external.high.wood.prefab", 50 },
{ "assets/prefabs/building/wall.external.high.stone/wall.external.high.stone.prefab", 50 },
{ "assets/prefabs/misc/xmas/icewalls/wall.external.high.ice.prefab", 50 },
{ "assets/prefabs/building/gates.external.high/gates.external.high.stone/gates.external.high.stone.prefab", 2 },
{ "assets/prefabs/building/gates.external.high/gates.external.high.wood/gates.external.high.wood.prefab", 2 }
};
private int GetBarricadeLimit(string prefabName)
{
if (barricadeLimits.ContainsKey(prefabName))
return barricadeLimits[prefabName];
else
return 0;
}
void OnEntityBuilt(Planner planner, GameObject gameObject)
{
if (planner == null || gameObject == null)
return;
BasePlayer player = planner.GetOwnerPlayer();
if (player == null)
return;
string prefabName = gameObject.name;
int prefabLimit = GetBarricadeLimit(prefabName);
if (prefabLimit <= 0)
return;
ulong playerId = player.userID;
if (!barricades.ContainsKey(playerId))
barricades[playerId] = new List<BaseEntity>();
List<BaseEntity> playerBarricades = barricades[playerId];
if (playerBarricades.Count >= prefabLimit)
{
BaseEntity oldBarricade = playerBarricades[0];
oldBarricade.Kill();
playerBarricades.RemoveAt(0);
}
BaseEntity newBarricade = gameObject.ToBaseEntity();
playerBarricades.Add(newBarricade);
}
}
}