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

FREE FauxClip : 1.3.6 1.3.6

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

namespace Oxide.Plugins
{
     [Info("FauxClip", "Colon Blow", "1.3.6", ResourceId = 1299)]
     class FauxClip : RustPlugin
     {
	public float GracefulLandingTime => Config.Get<float>("GracefulLandingTime");
	public float BaseNoClipSpeed => Config.Get<float>("BaseNoClipSpeed");
	public float SprintNoClipSpeed => Config.Get<float>("SprintNoClipSpeed");
        public float TurboNoClipSpeed => Config.Get<float>("TurboNoClipSpeed");
	public bool UseFauxClipGodMode => Config.Get<bool>("UseFauxClipGodMode");

        protected override void LoadDefaultConfig()
        {
            	Config["GracefulLandingTime"] = 3;
	    	Config["BaseNoClipSpeed"] =.12;
	    	Config["SprintNoClipSpeed"] =.24;
	    	Config["TurboNoClipSpeed"] = 1;
		Config["UseFauxClipGodMode"] = true;
		
            SaveConfig();
        }

        class PlayerData
        {
             public BasePlayer player;
             public float speed;
             public Vector3 oldPos;
             public InputState input;
        }

        class LandingData
        {
             public BasePlayer player;
        }

        private readonly Dictionary<ulong, PlayerData> _noclip = new Dictionary<ulong, PlayerData>();
	private readonly Dictionary<ulong, LandingData> _landing = new Dictionary<ulong, LandingData>();
        private static readonly FieldInfo ServerInput = typeof(BasePlayer).GetField("serverInput", (BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic));
        public static FieldInfo lastPositionValue;

        void Loaded()
        {
        permission.RegisterPermission("fauxclip.allowed", this);
	permission.RegisterPermission("fauxclip.norestriction", this);
	permission.RegisterPermission("fauxclip.canuseturbo", this);
        lastPositionValue = typeof(BasePlayer).GetField("lastPositionValue", (BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic));
        }

         void OnFrame()
         {

             if (_noclip.Count <= 0) return;
             foreach (var playerData in _noclip.Values)
             {
                var player = playerData.player;
		player.violationLevel = 0;
		if (noBuild(player) & (noAdmin(player) & (!isAllowed(player, "fauxclip.norestriction"))))
		{
                        Restrictedairspace(player);
            		return;
            	}

                if (player.net == null)
            	{
                        Deactivatenoclip(player);
            		return;
            	}
                else
                {          
                     var input = playerData.input;
                     var newPos = playerData.oldPos;
		     var currentRot = Quaternion.Euler(input.current.aimAngles);
                     var speedMult = playerData.speed;

                     if (input.IsDown(BUTTON.SPRINT))
                        speedMult = SprintNoClipSpeed;

                     if (input.IsDown(BUTTON.USE) & (isAllowed(player, "fauxclip.canuseturbo")))
                        speedMult = TurboNoClipSpeed;
  
             	     else if (input.IsDown(BUTTON.RELOAD))
             	     {
                        Deactivatenoclip(player);
            		return;
             	     }  
                     else if (input.IsDown(BUTTON.JUMP))
                     {
                         newPos += (currentRot * Vector3.up * speedMult);
                     }   
                     else if (input.IsDown(BUTTON.FORWARD))
                     {
                         newPos += (currentRot * Vector3.forward * speedMult);
                     }
                     else if (input.IsDown(BUTTON.RIGHT))
                     {
                         newPos += (currentRot * Vector3.right * speedMult);
                     }
                     else if (input.IsDown(BUTTON.LEFT))
                     {
                         newPos += (currentRot * Vector3.left * speedMult);
                     }
                     else if (input.IsDown(BUTTON.BACKWARD))
                     {
                         newPos += (currentRot * Vector3.back * speedMult);
                     }  
                     else if (!input.IsDown(BUTTON.FORWARD))
             	     {
             		ForcePlayerPosition(player, newPos);
                     } 
                     else
                      newPos = player.transform.position;          
                      if (newPos == playerData.oldPos) continue;
                      ForcePlayerPosition(player, newPos);
                      playerData.oldPos = newPos;
                      player.TransformChanged();
                 }
             }
         }

	bool noAdmin(BasePlayer player)
		{
		if (player.IsAdmin()) return false;
		return true;
		}
	bool noBuild(BasePlayer player)
		{
		if (player.CanBuild()) return false;
		return true;
		}
	void DamageOn(BasePlayer player)
        	{
		player.metabolism.heartrate.min = 0;
                player.metabolism.heartrate.max = 1;
                player.metabolism.temperature.min = -100;
                player.metabolism.temperature.max = 100;
                player.metabolism.radiation_level.min = 0;
                player.metabolism.radiation_level.max = 100;
                player.metabolism.radiation_poison.min = 0;
                player.metabolism.radiation_poison.max = 500;
                player.metabolism.wetness.min = 0;
                player.metabolism.wetness.max = 1;
               	player.metabolism.dirtyness.min = 0;
                player.metabolism.dirtyness.max = 100;
                player.metabolism.oxygen.min = 0;
                player.metabolism.oxygen.max = 1;
		player.metabolism.bleeding.min = 0;
                player.metabolism.bleeding.max = 1;
                player.metabolism.comfort.min = 0;
               	player.metabolism.comfort.max = 1;
		return;
		}
	void DamageOff(BasePlayer player)
		{
			if (!UseFauxClipGodMode) return;

			foreach (var playerData in _noclip.Values)
			{
                	player.metabolism.heartrate.min = 0.5f;
                	player.metabolism.heartrate.max = 0.5f;
                	player.metabolism.temperature.min = 32;
                	player.metabolism.temperature.max = 32;
                	player.metabolism.radiation_level.min = 0;
                	player.metabolism.radiation_level.max = 0;
                	player.metabolism.radiation_poison.max = 0;
                	player.metabolism.wetness.min = 0;
                	player.metabolism.wetness.max = 0;
                	player.metabolism.dirtyness.min = 0;
                	player.metabolism.dirtyness.max = 0;
                	player.metabolism.oxygen.min = 1;
                	player.metabolism.oxygen.max = 1;
                	player.metabolism.bleeding.min = 0;
                	player.metabolism.bleeding.max = 0;
                	player.metabolism.comfort.min = 0;
			player.metabolism.comfort.max = 0;
			return;
			}
		}

        object OnEntityTakeDamage(BaseCombatEntity entity, HitInfo hitInfo)
        	{
			if (!UseFauxClipGodMode) return null;

			if (UseFauxClipGodMode)
			{
				if (entity is BasePlayer)
				{
					var player = (BasePlayer)entity;
					if (_noclip.ContainsKey(player.userID))
					{
                   			return false;
					}
					if (_landing.ContainsKey(player.userID))
					{
                   			return false;
					}
				}
			}
		return null;
        	}

         void Deactivatenoclip(BasePlayer player)
         	{
		_noclip.Remove(player.userID);
		SendReply(player, "NoClip Deactivated");
		_landing.Add(player.userID, new LandingData
		{
		player = player
		});
		LandingCycleDone(player);
         	return;
         	}

         void Restrictedairspace(BasePlayer player)
         	{
     		_noclip.Remove(player.userID);
		SendReply(player, "You cannot noclip while under 'Building Blocked' flag !");
		_landing.Add(player.userID, new LandingData
		{
		player = player
		});
		LandingCycleDone(player);
         	return;
         	}

         void Activatenoclip(BasePlayer player, float speed)
         	{
     		_noclip.Add(player.userID, new PlayerData
        	{
                player = player,
                speed = speed,
                 input = (InputState) ServerInput.GetValue(player),
                 oldPos = player.transform.position
        	});
                SendReply(player, "NoClip Activated, press any key to start");
		DamageOff(player);
		return;
         	}

         void Togglenoclip(BasePlayer player, float speed)
         	{
             	if (_noclip.ContainsKey(player.userID))
                 	Deactivatenoclip(player);
             	if (_landing.ContainsKey(player.userID))
                 	SendReply(player, "Please Wait...");
             	else
                 	Activatenoclip(player, speed);
			return;
         	}

	void LandingCycleDone(BasePlayer player)
		{
		foreach (var playerData in _landing.Values)
			{
			timer.Once(GracefulLandingTime, () => _landing.Remove(player.userID));
			timer.Once(GracefulLandingTime, () => DamageOn(player));
			}
		}

         [ChatCommand("noclip")]
         void cmdChatnolcip(BasePlayer player, string command, string[] args)
         {
        	if (!isAllowed(player, "fauxclip.allowed"))
            		{
                	SendReply(player, "You are not worthy yet!");
                	return;
            		}
		if (isAllowed(player, "fauxclip.allowed"))
        		{
                	var speed = BaseNoClipSpeed;
                	if (args.Length > 0)
                	speed = Convert.ToSingle(args[0]);
                	Togglenoclip(player, speed);
        		}
		else return;
         }

	void OnPlayerRespawned(BasePlayer player)
	{
             	if (_noclip.ContainsKey(player.userID))
                 	_noclip.Remove(player.userID);
             	if (_landing.ContainsKey(player.userID))
                 	_landing.Remove(player.userID);
		else
		return;
	}
	void OnPlayerDisconnected(BasePlayer player, string reason)
	{
             	if (_noclip.ContainsKey(player.userID))
                 	_noclip.Remove(player.userID);
             	if (_landing.ContainsKey(player.userID))
                 	_landing.Remove(player.userID);
		else
		return;
	}

	bool isAllowed(BasePlayer player, string perm) => permission.UserHasPermission(player.UserIDString, perm);
     }
}

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