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

FREE HungerGames : 0.1 0.1

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

namespace Oxide.Plugins
{
    [Info("HungerGames", "open_mailbox", "0.1")]
    [Description("A Hunger Games simulator.")]
    public class HungerGames : RustPlugin
    {
        #region definitions
        private const string START_ZONE = "hungergames.start";
        private const string SAFE_ZONE = "hungergames.safe";

        private static readonly List<string> baseZoneOptions = new List<string> {
            "name",     START_ZONE,
            "nobuild",  "true",
            "nocup",    "true",
            "nodeploy", "true"
        };

        private bool registrationOpen = false;
        private List<BasePlayer> tributes;

        [PluginReference] Plugin Spawns;
        [PluginReference] Plugin ZoneManager;
        #endregion

        #region setup
        void Loaded()
        {
            permission.RegisterPermission("hungergames.admin", this);
        }

        protected override void LoadDefaultConfig()
        {
            Puts("Creating a new configuration file for HungerGames.");
            Config.Clear();
            SaveConfig();
        }

        void OnServerInitialized()
        {
            if (ZoneManager == null)
            {
                PrintWarning("Plugin 'ZoneManager' was not found! Hunger Games plugin will not function.");
            }
        }
        #endregion

        #region commands
        [ChatCommand("hgjoin")]
        void CommandJoin(BasePlayer player, string command, string[] args)
        {
            if (tributes.Contains(player))
            {
                player.IPlayer.Reply("You are already registered for the Hunger Games!");
                return;
            }

            tributes.Add(player);
            player.IPlayer.Reply("You have registered for the Hunger Games!");
            Puts(player.IPlayer.Name + " has registered for the Hunger Games.");
        }

        [ChatCommand("hgprepare")]
        void CommandPrepare(BasePlayer player, string command, string[] args)
        {
            if (!permission.UserHasPermission(player.UserIDString, "hungergames.admin")) return;
            if (registrationOpen)
            {
                player.IPlayer.Reply("Hunger Games registration is already open.");
                return;
            }

            object zone = (string)ZoneManager?.Call("GetZoneName", START_ZONE);

            if (zone == null)
            {
                player.IPlayer.Reply("Start zone must be set before preparing Hunger Games.");
                return;
            }

            tributes = new List<BasePlayer>();
            registrationOpen = true;

            // TODO: Global chat message + GUI 
            Puts(player.IPlayer.Name + " has opened registration for Hunger Games.");
            player.IPlayer.Reply("Hunger Games registration opened.");
        }

        [ChatCommand("hgzone")]
        void CommandZone(BasePlayer player, string command, string[] args)
        {
            if (!permission.UserHasPermission(player.UserIDString, "hungergames.admin")) return;

            var zoneArgs    = new List<string>(baseZoneOptions);
            string zoneName = null;

            switch (args[0])
            {
                case "start":
                    zoneArgs.AddRange(new List<string> { "permission", "hungergames.tribute" });
                    zoneName = START_ZONE;
                    break;
                case "safe":
                    zoneArgs.AddRange(new List<string> { "pvegod", "true", "pvpgod", "true" });
                    zoneName = SAFE_ZONE;
                    break;
                default:
                    player.IPlayer.Reply("Invalid choice.Must be one of 'start' or 'safe'.");
                    return;
            }

            var result = (bool)ZoneManager?.Call("CreateOrUpdateZone", zoneName, zoneArgs.ToArray(), player.transform.position);

            var msg = "Setting Hunger Games " + args[0] + " zone to " + player.transform.position;
            Puts(msg);
            player.IPlayer.Reply(msg);
        }
        #endregion
    }
}

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