C#:
using System;
using System.Collections.Generic;
using Rust;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("AdminLesh", "Mercury", "1.0.0")]
[Description("Дай леща игроку")]
public class AdminLesh : RustPlugin
{
private List<BasePlayer> playersLeshed = new List<BasePlayer>();
private const Single upwardForce = 100f;
private const Single horizontalForce = 50f;
void Unload()
{
playersLeshed.Clear();
playersLeshed = null;
}
private void OnEntityTakeDamage(BasePlayer target, HitInfo hitInfo)
{
if (target == null || hitInfo == null) return;
if (target.IsNpc) return;
DamageType? majorityDamageType = hitInfo?.damageTypes.GetMajorityDamageType();
if (majorityDamageType == DamageType.Fall && playersLeshed.Contains(target))
{
hitInfo.damageTypes.ScaleAll(0f);
playersLeshed.Remove(target);
return;
}
}
[ChatCommand("lesh")]
void GiveToLesh(BasePlayer player, String cmd, String[] args)
{
if (!player.IsAdmin) return;
if (args == null || args.Length == 0)
{
SendReply(player, "Укажите ник или ID игрока");
return;
}
String nameOrID = args[0];
BasePlayer targetPlayer = BasePlayer.Find(nameOrID);
if (targetPlayer == null)
{
SendReply(player, "Игрок не найден");
return;
}
Vector3 viewDirection = targetPlayer.eyes.BodyForward();
viewDirection.y = 0f;
viewDirection.Normalize();
Vector3 velocityOverride = Vector3.up * upwardForce + viewDirection * horizontalForce;
targetPlayer.Ragdoll(velocityOverride);
SendReply(player, $"Игрок {targetPlayer.displayName} получил админского леща");
playersLeshed.Add(targetPlayer);
}
[ConsoleCommand("lesh")]
void GiveToLeshConsole(ConsoleSystem.Arg args)
{
BasePlayer admin = args.Player();
if(admin != null)
if (!admin.IsAdmin)
return;
if (args == null || !args.HasArgs())
{
if (admin != null)
SendReply(admin, "Укажите ник или ID игрока");
else Puts("Укажите ник или ID игрока");
return;
}
String nameOrID = args.Args[0];
BasePlayer targetPlayer = BasePlayer.Find(nameOrID);
if (targetPlayer == null)
{
if (admin != null)
SendReply(admin, "Игрок не найден");
else Puts("Игрок не найден");
return;
}
Vector3 viewDirection = targetPlayer.eyes.BodyForward();
viewDirection.y = 0f;
viewDirection.Normalize();
Vector3 velocityOverride = Vector3.up * upwardForce + viewDirection * horizontalForce;
targetPlayer.Ragdoll(velocityOverride);
if (admin != null)
SendReply(admin, $"Игрок {targetPlayer.displayName} получил админского леща");
else Puts($"Игрок {targetPlayer.displayName} получил админского леща");
playersLeshed.Add(targetPlayer);
}
}
}