C#:
using System.Collections.Generic;
namespace Oxide.Plugins
{
// Creation date: 26-09-2020
// Last update date: UPDATE_DATE
[Info("Cupboard On Map", "Orange", "1.0.0")]
[Description("https://rustworkshop.space/resources/cupboard-on-map.224/")]
public class CupboardOnMap : RustPlugin
{
#region Vars
private Dictionary<BaseEntity, VendingMachineMapMarker> markerByEntity = new Dictionary<BaseEntity, VendingMachineMapMarker>();
private const string prefab = "assets/prefabs/deployable/vendingmachine/vending_mapmarker.prefab";
#endregion
#region Oxide Hooks
private void Init()
{
Unsubscribe(nameof(OnEntitySpawned));
}
private void OnServerInitialized()
{
Subscribe(nameof(OnEntitySpawned));
foreach (var entity in UnityEngine.Object.FindObjectsOfType<BuildingPrivlidge>())
{
OnEntitySpawned(entity);
}
}
private void Unload()
{
foreach (var entity in markerByEntity.Values)
{
if (entity.IsValid() && entity.IsDestroyed == false)
{
entity.Kill();
}
}
}
private void OnEntitySpawned(BuildingPrivlidge entity)
{
var marker = GameManager.server.CreateEntity(prefab, entity.transform.position) as VendingMachineMapMarker;
marker.enableSaving = false;
var player = BasePlayer.FindByID(entity.OwnerID);
if (player != null)
{
marker.markerShopName = player.Team?.teamName ?? player.displayName;
}
marker.SetFlag(BaseEntity.Flags.Busy, true);
marker.Spawn();
markerByEntity.TryAdd(entity, marker);
}
private void OnEntityDeath(BaseCombatEntity entity, HitInfo info)
{
var marker = (VendingMachineMapMarker) null;
if (markerByEntity.TryGetValue(entity, out marker) == false)
{
return;
}
marker.SetFlag(BaseEntity.Flags.Busy, false);
marker.SendNetworkUpdate();
}
#endregion
}
}