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

FREE MyCaravan : 1.0.0 1.0.0

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

namespace Oxide.Plugins
{
    [Info("MyCaravan", "jerkypaisen", "1.0.0")]
    [Description("This is My Caravan.")]
    class MyCaravan : RustPlugin
    {
        #region [Fields]
        private const string PrefabSockets4 = "assets/content/vehicles/modularcar/4module_car_spawned.entity.prefab";
        private const string PermissionGiveCar = "mycaravan.givecar";
        #endregion

        #region [Oxide Hooks]
        private void Init()
        {
            permission.RegisterPermission(PermissionGiveCar, this);
            AddCovalenceCommand("mycaravan", "SpawnCarServerCommand");
        }
        #endregion

        #region Commands
        [Command("mycaravan")]
        private void SpawnCarServerCommand(IPlayer iplayer, string cmd, string[] args)
        {
            var player = iplayer.Object as BasePlayer;
            if (!iplayer.IsServer && !VerifyPermissionAny(iplayer, PermissionGiveCar))
                return;

            if (player == null)
            {
                ReplyToPlayer(iplayer, "Command.Give.Error.PlayerNotFound");
                return;
            }
            Vector3 spawnPosition = GetFixedCarPosition(player);
            Quaternion rotation = GetRelativeCarRotation(player);

            SpawnCar(player, spawnPosition, rotation);
        }
        #endregion

        #region [method]
        private void SpawnCar(BasePlayer player, Vector3 spawnPosition, Quaternion rotation)
        {
            var car = GameManager.server.CreateEntity(PrefabSockets4, spawnPosition, rotation) as ModularCar;
            car.enableSaving = false;
            car.spawnSettings.useSpawnSettings = false;

            if (player != null)
                car.OwnerID = player.userID;

            car.Spawn();
            var moduleItem = ItemManager.CreateByItemID(-1040518150);
            var moduleItem2 = ItemManager.CreateByItemID(-1040518150);
            if (moduleItem != null)
            { 
                car.TryAddModule(moduleItem, 0);
                car.TryAddModule(moduleItem2, 2);
            }
        }
        private static Vector3 GetPlayerForwardPosition(BasePlayer player)
        {
            Vector3 forward = player.GetNetworkRotation() * Vector3.forward;
            forward.y = 0;
            return forward.normalized;
        }

        private static Vector3 GetFixedCarPosition(BasePlayer player)
        {
            Vector3 forward = GetPlayerForwardPosition(player);
            Vector3 position = player.transform.position + forward * 3f;
            position.y = player.transform.position.y + 1f;
            return position;
        }
        private static Quaternion GetRelativeCarRotation(BasePlayer player) =>
            Quaternion.Euler(0, player.GetNetworkRotation().eulerAngles.y - 90, 0);

        private bool VerifyPermissionAny(IPlayer player, params string[] permissionNames)
        {
            foreach (var perm in permissionNames)
            {
                if (!permission.UserHasPermission(player.Id, perm))
                {
                    ReplyToPlayer(player, "Generic.Error.NoPermission");
                    return false;
                }
            }
            return true;
        }

        private void ReplyToPlayer(IPlayer player, string messageName, params object[] args) =>
            player.Reply(string.Format(GetMessage(player, messageName), args));
        
        private string GetMessage(IPlayer player, string messageName, params object[] args)
        {
            var message = lang.GetMessage(messageName, this, player.Id);
            return args.Length > 0 ? string.Format(message, args) : message;
        }

        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["Generic.Error.NoPermission"] = "You don't have permission to use this command.",
            }, this);
        }
        #endregion
    }
}

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