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

FREE NoRestore : 1.0.2 1.0.2

Нет прав для скачивания
C#:
using Oxide.Core.Plugins;
using System.Collections.Generic;
using Newtonsoft.Json;

#region Changelogs and ToDo
/**********************************************************************
 * 
 * v1.0.1   :   Info fix & Plugin is now free 
 * v1.0.0   :   Initial release (MeinRust) | (helped by Krungh Crow) 
 *
 **********************************************************************/
#endregion

namespace Oxide.Plugins
{
    [Info("NoRestore", "MeinRust", "1.0.2")]
    [Description("(Addon)Prevents the Restore Upon Death plugin from restoring player inventory in certain zones.")]
    class NoRestore : RustPlugin
    {	
		#region References
        [PluginReference] Plugin ZoneManager;
		#endregion
		
		#region Variables
        const string bypass_perm = "NoRestore.bypass"; //added bypass so players/admins with this perm get their stuff restored
		const string nonotify_perm = "NoRestore.nonotify"; //added nonotify so players/admins with this permission no longer get a message.
		ulong ChatIcon;
		string prefix;
		bool notification = true;
		public HashSet<object> ZoneID;
        #endregion
		
		#region Configuration
		void Init()
        {
            if (!LoadConfigVariables())
            {
            Puts("Config file issue detected. Please delete file, or check syntax and fix.");
            return;
            }

            permission.RegisterPermission(bypass_perm, this);
			permission.RegisterPermission(nonotify_perm, this);
			
            ZoneID = new HashSet<object>(configData.ZoneCFG.ZoneID);
            prefix = configData.ChatCFG.Prefix;
			ChatIcon = configData.ChatCFG.ChatIcon;
			notification = configData.ChatCFG.notification;
        }
		
		private ConfigData configData;
		
		class ConfigData
        {
            [JsonProperty(PropertyName = "Chat Settings")]
            public SettingsChat ChatCFG = new SettingsChat();
            [JsonProperty(PropertyName = "Zone Settings")]
            public SettingsZone ZoneCFG = new SettingsZone();
			
        }
		
		class SettingsChat
        {
            [JsonProperty(PropertyName = "Chat Prefix")]
            public string Prefix = "<size=12><color=#AE3624>SERVERNAME</color> <size=16>|</size> <color=#738D45>NoRestore</color>\n";
			[JsonProperty(PropertyName = "Notification In Chat")]
            public bool notification = true;
			[JsonProperty(PropertyName = "ChatIcon (SteamID)")]
            public ulong ChatIcon = 0;
			
        }
		
		class SettingsZone
        {
			[JsonProperty(PropertyName = "List ZoneIDs")]
			public List<object> ZoneID = new List<object>{};
			
        }
		
		private bool LoadConfigVariables()
        {
            try
            {
            configData = Config.ReadObject<ConfigData>();
            }
            catch
            {
            return false;
            }
            SaveConf();
            return true;
        }

        protected override void LoadDefaultConfig()
        {
            Puts("Fresh install detected Creating a new config file.");
            configData = new ConfigData();
            SaveConf();
        }

        void SaveConf() => Config.WriteObject(configData, true);
        #endregion

        #region Restore
        //This hook is called from Restore Upon Death.
        private bool? OnRestoreUponDeath(BasePlayer player)
        {
			if(ZoneManager != null)
			{
				if((string[])ZoneManager.Call("GetPlayerZoneIDs", player) != null)
				{
                    if (permission.UserHasPermission(player.UserIDString, bypass_perm)) return null;
                    foreach (var zoneID in ZoneID)
					{
					    if((bool)ZoneManager.Call("isPlayerInZone", zoneID, player)) return false;
					}
					return null;
				}
			}
            return null;
        }
		
		void OnPlayerDeath(BasePlayer player, HitInfo info)
        {
			if (player == null) return;
			if (permission.UserHasPermission(player.UserIDString, bypass_perm) || permission.UserHasPermission(player.UserIDString, nonotify_perm)) return;
			foreach (var zoneID in ZoneID)
			{	
				if((bool)ZoneManager.Call("isPlayerInZone", zoneID, player))
				{
				if (notification) Player.Message(player, prefix + string.Format(msg("NoRestorCM", player.UserIDString)), ChatIcon);
				}
			}
        }
		#endregion
		
		#region Language
        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["NoRestorCM"] = "Inventory was not restored!"
				 
																					   
					 
									
					 
						
					 
																								  
																
						 
															
							 
																													  
								 
            }, this);
            lang.RegisterMessages(new Dictionary<string, string>
											 
							 
						 
									
					 
				 
					
				 
								
				 
			 
				
            {
                ["NoRestorCM"] = "Inventar wurde nicht wiederhergestellt!"
            }, this, "de");
			 
        }
        #endregion
		
		#region msg helper
		private string msg(string key, string id = null) => lang.GetMessage(key, this, id);
		#endregion
		
    }
}

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