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

FREE PrefabSniffer : 1.1.1 1.1.1

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

namespace Oxide.Plugins
{
	[Info("PrefabSniffer", "Ayrin", "1.1.1", ResourceId = 1938)]
	class PrefabSniffer : RustPlugin
	{
		private static List<string> resourcesList;

        private string argmsg = "Usage: prefabs build/fx";

		[ConsoleCommand("prefabs")]
		void cmdSniffPrefabs(ConsoleSystem.Arg arg)
		{
            if (arg.Args == null || arg.Args.Length == 0)
            {
                SendReply(arg, argmsg);
                return;
            }


            resourcesList = new List<string>();
            var argname = "default";
            var filesraw = GameManifest.Get().pooledStrings;
            var filesField = typeof(FileSystem_AssetBundles).GetField("files", BindingFlags.Instance | BindingFlags.NonPublic);
            var files = (Dictionary<string, AssetBundle>)filesField.GetValue(FileSystem.iface);
            
            switch (arg.Args[0].ToLower())
            {
                case "build":
                    foreach (var str in files.Keys)
                    {
                        if ((str.StartsWith("assets/content/")
                        	|| str.StartsWith("assets/bundled/")
                        	|| str.StartsWith("assets/prefabs/")) && str.EndsWith(".prefab"))
                        {
                            if (str.Contains(".worldmodel.")
                            	|| str.Contains("/fx/")
                            	|| str.Contains("/effects/")
                            	|| str.Contains("/build/skins/")
                            	|| str.Contains("/_unimplemented/")
                            	|| str.Contains("/ui/")
                            	|| str.Contains("/sound/")
                            	|| str.Contains("/world/")
                            	|| str.Contains("/env/")
                            	|| str.Contains("/clothing/")
                            	|| str.Contains("/skins/")
                            	|| str.Contains("/decor/")
                            	|| str.Contains("/monument/")
                            	|| str.Contains("/crystals/")
                            	|| str.Contains("/projectiles/")
                            	|| str.Contains("/meat_")
                            	|| str.EndsWith(".skin.prefab")
                            	|| str.EndsWith(".viewmodel.prefab")
                            	|| str.EndsWith("_test.prefab")
                            	|| str.EndsWith("_collision.prefab")
                            	|| str.EndsWith("_ragdoll.prefab")
                            	|| str.EndsWith("_skin.prefab")
                            	|| str.Contains("/clutter/")) continue;
                            
                            var gmobj = GameManager.server.FindPrefab(str);
                            if (gmobj?.GetComponent<BaseEntity>() != null)
                                resourcesList.Add(str);
                        }
                    }
                    argname = "Build";
                    Puts("Check your ~/oxide/logs folder");
                    break;
                case "fx":
                    foreach (var str in filesraw)
                    {
                        if ((str.str.StartsWith("assets/content/")
                        	|| str.str.StartsWith("assets/bundled/")
                        	|| str.str.StartsWith("assets/prefabs/")) && str.str.EndsWith(".prefab"))
                        {
                            if (!str.str.Contains("/fx/")) continue;

                            resourcesList.Add(str.str.ToString());
                        }
                    }
                    argname = "FX";
                    Puts("Check your ~/oxide/logs folder");
                    break;
                case "all":
                	foreach (var str in filesraw)
                	{
                		resourcesList.Add(str.str.ToString());
                	}
                	argname = "ALL";
                	Puts("Check your ~/oxide/logs folder");
                	break;
                default:
                    SendReply(arg, argmsg);
                    break;
            }
            
            var now = DateTime.Now.ToString("dd-MM-yyyy");
            for (int i = 0; i < resourcesList.Count - 1; i++)
            {
                ConVar.Server.Log("oxide/logs/Prefabs" + argname + "_" + now + ".txt", string.Format("{0} - {1}", i, resourcesList[i]));
            }
		}
	}
}

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