Иконка ресурса

FREE SkinZoneItems : 1.0.0 1.0.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using System.Collections.Generic;
using Network;
using Newtonsoft.Json;
using Oxide.Core.Plugins;
using UnityEngine;
using System.Linq;

namespace Oxide.Plugins
{
    [Info("Skin Zone Items", "imoke", "1.0.0")]
    [Description("Set skins for specific items in zones")]
    class SkinZoneItems : CovalencePlugin
    {
        #region Variables
        
        [PluginReference]
        private Plugin ZoneManager = null;
        
        #endregion
        
        #region Configuration

        private Configuration _config;

        private class Configuration
	{
	    [JsonProperty(PropertyName = "Zone ID Entity Skin")]
	    public Dictionary<string, List<EntitySkin>> ZoneEntitySkins { get; set; }
	}

	private class EntitySkin 
	{	
	    [JsonProperty(PropertyName = "Entity Name")]
	    public string EntityName { get; set; }
			
	    [JsonProperty(PropertyName = "Skin ID")]
	    public ulong SkinId { get; set; }
	}

        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                _config = Config.ReadObject<Configuration>();
                if (_config == null) throw new Exception();
                SaveConfig();
            }
            catch
            {
                PrintError("Your configuration file contains an error.Using default configuration values.");
                LoadDefaultConfig();
            }
        }

        protected override void SaveConfig() => Config.WriteObject(_config);

        protected override void LoadDefaultConfig() => _config = new Configuration();

        #endregion
        
        #region Hooks

        private void OnServerInitialized()
        {
            LoadSkins();
        }
		
	private void OnServerSave()
	{
	    LoadSkins();
	}
		
	private void LoadSkins()
        {
	    if (ZoneManager != null && ZoneManager.IsLoaded)
            {
                var zones = ZoneManager.Call<string[]>("GetZoneIDs");

		foreach(var zoneKey in _config.ZoneEntitySkins.Keys)
		{
		    _config.ZoneEntitySkins.TryGetValue(zoneKey, out var entitySkins);
		    var zoneEntitySkins = entitySkins ?? new List<EntitySkin>();
		
		    var allZoneEntities = ZoneManager.Call<List<BaseEntity>>("GetEntitiesInZone", zoneKey);
	
		    foreach(var skinEntity in zoneEntitySkins)
		    {
		        var entitiesToUpdate = allZoneEntities.Where(x => x.ShortPrefabName == skinEntity.EntityName).ToList();

                        Puts($"Updating {entitiesToUpdate.Count()} skin/s for entity: {skinEntity.EntityName}");
					  
			foreach(var entityToUpdate in entitiesToUpdate)
			{
			    if (entityToUpdate is BaseEntity entity)
			    {
				entity.skinID = skinEntity.SkinId;
				entity.SendNetworkUpdate();
			    }
		        }
		    }
		}
            }
	}

        #endregion
    }
	
	
}

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху