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

FREE PlayMovieButtons : 1.0.0 1.0.0

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


namespace Oxide.Plugins {
    [Info("PlayMovieButtons", "jerkypaisen", "1.0.0")]
    [Description("You can create a button to play an MP4 URL.")]
    // BaseMod; https://umod.org/plugins/toll-buttons by KajWithAJ
    class PlayMovieButtons : RustPlugin {
        private const string PermissionAdmin = "PlayMovieButtons.admin";

        private StoredData storedData = new StoredData();

        private void Init() {
            permission.RegisterPermission(PermissionAdmin, this);
        }

        private void OnServerInitialized() {
            LoadData();
        }

        private void Unload()
        {
            SaveData();
        }

        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["ButtonNotFound"] = "No button found",
                ["NoPermission"] = "You do not have permission to use this command.",
                ["NoButtonOwnership"] = "This button is not yours.",
                ["PlayMovieUrlSet"] = "A PlayMovieUrl of {0} was set for this button.",
                ["EmptyButton"] = "This button has no URL set.",
                ["InvalidUrl"] = "Provide a valid URL."
            }, this);
        }

        [ChatCommand("pmb")]
        private void ChatCmdCheckButton(BasePlayer player, string command, string[] args)
        {
            RaycastHit hit;
            var raycast = Physics.Raycast(player.eyes.HeadRay(), out hit, 2f, 2097409);
            BaseEntity button = raycast ? hit.GetEntity() : null;
            if (button == null || button as PressButton == null)
            {
                string message = lang.GetMessage("ButtonNotFound", this, player.UserIDString);
                player.ChatMessage(string.Format(message));
                return;
            }

            if (args.Length >= 1)
            {
                if (!permission.UserHasPermission(player.UserIDString, PermissionAdmin))
                {
                    string message = lang.GetMessage("NoPermission", this, player.UserIDString);
                    player.ChatMessage(string.Format(message));
                    return;
                }

                if (button.OwnerID != player.userID)
                {
                    player.ChatMessage(string.Format(lang.GetMessage("NoButtonOwnership", this, player.UserIDString)));
                    return;
                }
                string url = args[0];
                //if (!(url.EndsWith(".mp4") || url.EndsWith(".Mp4") || url.EndsWith(".MP4")))
                //{
                //    player.ChatMessage(string.Format(lang.GetMessage("InvalidUrl", this, player.UserIDString)));
                //    return;
                //}

                if (!storedData.PlayMovieButtons.ContainsKey(button.net.ID.Value))
                {
                    ButtonData buttonData = new ButtonData();
                    buttonData.movieURL = url;
                    buttonData.ownerID = player.UserIDString;
                    storedData.PlayMovieButtons.Add(button.net.ID.Value, buttonData);
                }
                else
                {
                    storedData.PlayMovieButtons[button.net.ID.Value].movieURL = url;
                }

                player.ChatMessage(string.Format(lang.GetMessage("PlayMovieUrlSet", this, player.UserIDString), url));
            }
            else
            {
                string url = CheckButtonUrl(button as PressButton);
                if (url.Length >= 1)
                {
                    player.ChatMessage(string.Format(lang.GetMessage("PlayMovieUrlSet", this, player.UserIDString), url));
                }
                else
                {
                    player.ChatMessage(string.Format(lang.GetMessage("EmptyButton", this, player.UserIDString)));
                }
            }
        }

        private object OnButtonPress(PressButton button, BasePlayer player)
        {
            if (button.OwnerID == 0) return null;

            string url = CheckButtonUrl(button);

            if (url.Length > 0) {
                player.Command("client.playvideo", url);
                return null;
            } else {
                return null;
            }
        }

        private string CheckButtonUrl(PressButton button) {
            if (!storedData.PlayMovieButtons.ContainsKey(button.net.ID.Value)) {
                return "";
            } else {
                return storedData.PlayMovieButtons[button.net.ID.Value].movieURL;
            }
        }


        private class StoredData
        {
            public readonly Dictionary<ulong, ButtonData> PlayMovieButtons = new Dictionary<ulong, ButtonData>();
        }

        private class ButtonData
        {
            public string ownerID = "";
            public string movieURL = "";
        }

        private void LoadData() => storedData = Interface.GetMod().DataFileSystem.ReadObject<StoredData>(this.Name);

        private void SaveData() => Interface.GetMod().DataFileSystem.WriteObject(this.Name, storedData);

        private void OnServerSave() => SaveData();

        private void OnNewSave(string name)
        {
            PrintWarning("Map wipe detected - clearing PlayMovieButtons...");

            storedData.PlayMovieButtons.Clear();
            SaveData();
        }
    }
}

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