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

FREE Developer : 0.1.0 0.1.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
// For development use only!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text.RegularExpressions;
using Oxide.Core.Libraries.Covalence;

namespace Oxide.Plugins
{
    [Info("Developer", "Wulf/lukespragg", "0.1.0", ResourceId = 0)]
    [Description("Adds Steam group members to the Rust developers list")]

    class Developer : CovalencePlugin
    {
        // Do NOT edit this file, instead edit Developer.json in oxide/config

        #region Configuration

        List<object> groups;

        protected override void LoadDefaultConfig()
        {
            Config["Groups"] = groups = GetConfig("Groups", new List<object> { "OxideMod" });
            SaveConfig();
        }

        #endregion

        #region Developers List

        readonly FieldInfo developers = typeof(DeveloperList).GetField("developerIDs", BindingFlags.NonPublic | BindingFlags.Static);
        ulong[] developerIds;
        List<ulong> list;

        void OnServerInitialized()
        {
            #if !RUST
            throw new NotSupportedException("This plugin does not support this game");
            #endif

            LoadDefaultConfig();

            timer.Once(3f, () =>
            {
                // Get developer list
                developerIds = (ulong[])developers.GetValue(null);
                list = developerIds.ToList();
                Puts($"{list.Count} developers listed");

                // Add group members
                timer.Once(1f, AddDevelopers);
            });

        }

        static readonly Regex Members = new Regex(@"<steamID64>(?<id>.+)</steamID64>");

        void AddDevelopers()
        {
            foreach (var group in groups)
            {
                // Get Steam group members
                webrequest.EnqueueGet($"http://steamcommunity.com/groups/{group}/memberslistxml/?xml=1", (code, response) =>
                {
                    if (code != 200 || response == null)
                    {
                        Puts("Checking for Steam group members failed! (" + code + ")");
                        Puts("Retrying in 5 seconds...");
                        timer.Once(5f, AddDevelopers);
                        return;
                    }

                    if (Members.Matches(response).Count == 0) timer.Once(10f, AddDevelopers);

                    foreach (Match match in Members.Matches(response))
                    {
                        // Convert Steam ID to ulong format
                        var id = ulong.Parse(match.Groups["id"].ToString());

                        // Check if list contains Steam ID
                        if (developerIds.Contains(id)) continue;

                        // Add Steam ID to list
                        Puts($"Added {id} to developers list");
                        list.Add(id);
                        developers.SetValue(null, list.ToArray());
                        Puts($"{list.Count.ToString()} developers listed");
                    }
                }, this);
            }
        }

        #endregion

        #region Chat/Console Command

        static readonly Regex Persona = new Regex(@"<steamID><!\[CDATA\[(.*)\]\]></steamID>");

        [Command("developers", "global.developers")]
        void ListDevelopers(IPlayer player, string command, string[] args)
        {
            if (list == null || list.Count == 0)
            {
                player.Reply("No developers listed!");
                return;
            }

            foreach (var developer in list)
            {
                // Get Steam username from ID
                webrequest.EnqueueGet($"http://steamcommunity.com/profiles/{developer}?xml=1", (code, response) =>
                {
                    if (code != 200 || response == null)
                    {
                        player.Reply("Checking for Steam username failed! (" + code + ")");
                        return;
                    }

                    // Show the developer info
                    player.Reply($"{developer.ToString()} ({Persona.Match(response).Groups[1]})");
                }, this);
            }

            player.Reply($"{list.Count} developers listed");
        }

        #endregion

        #region Helpers

        T GetConfig<T>(string name, T value) => Config[name] == null ? value : (T)Convert.ChangeType(Config[name], typeof(T));

        #endregion
    }
}

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