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

FREE ProjectileAdditions : 1 1

Нет прав для скачивания
C#:
using System.Collections.Generic;
using JetBrains.Annotations;
using Oxide.Core.Libraries.Covalence;
using Oxide.Plugins.ProjectileAdditionsPlugin.Extentions;

namespace Oxide.Plugins
{
	[Info("Fun.ProjectileAdditions", "pashamaladec", "1")]
	public class ProjectileAdditions : CovalencePlugin
	{
		private readonly Dictionary<ulong, string> _using = new Dictionary<ulong, string>();

		private void Init() => Extentions.Init(players);

		[Command("projectile"), Permission("projectileadditions.entities.use"), UsedImplicitly]
		private void OnProjectileAdditionCommand(IPlayer player, string cmd, string[] args)
		{
			var baseplayer = player.ToBase();
			if (args.Length < 1)
			{
				if (_using.ContainsKey(baseplayer.userID))
				{
					_using.Remove(baseplayer.userID);
					player.Reply("Addition removed");
					return;
				}

				player.Reply("Need entity name (eg. assets/prefabs/ammo/rocket/rocket_basic.prefab)");
				return;
			}

			var prefab = args[0];

			if (GameManager.server.FindPrefab(prefab) == null)
			{
				player.Reply($"Prefab {prefab} doesn't exists");
				return;
			}

			player.Reply($"Selected prefab {prefab}");

			if (_using.ContainsKey(baseplayer.userID))
				_using[baseplayer.userID] = prefab;
			else
				_using.Add(baseplayer.userID, prefab);
		}

		[Command("projectile.selected"), Permission("projectileadditions.entities.use"), UsedImplicitly]
		private void OnProjectileAdditionSelectedCommand(IPlayer player, string cmd, string[] args)
		{
			var baseplayer = player.ToBase();
			if (_using.ContainsKey(baseplayer.userID) == false)
			{
				player.Reply("No prefab selected");
				return;
			}

			player.Reply($"Selected: {_using[baseplayer.userID]}");
		}

		private void OnPlayerAttack(BasePlayer attacker, HitInfo info)
		{
			if (_using.ContainsKey(attacker.userID) == false)
				return;

			var prefab = _using[attacker.userID];

			var entity = GameManager.server.CreateEntity(prefab, info.HitPositionWorld);
			entity.Spawn();
			ServerProjectile projectile;

			if (entity.TryGetComponent(out projectile))
			{
				projectile.radius = 100f;
				projectile.scanRange = 100f;
			}
		}
	}

	namespace ProjectileAdditionsPlugin.Extentions
	{
		public static class Extentions
		{
			private static IPlayerManager _players;
			public static void Init(IPlayerManager manager) => _players = manager;

			public static BasePlayer ToBase(this IPlayer player) => player.Object as BasePlayer;

			public static IPlayer ParseTarget(this string[] commandArgs, IPlayer ifNull = null, int offset = 0)
			{
				if (offset >= commandArgs.Length)
					return ifNull;

				var target = _players.FindPlayer(commandArgs[offset]);

				if (target == null)
					return ifNull;

				return target;
			}
		}
	}
}

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