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

FREE FClanDeathChat : 1.0.0 1.0.0

Нет прав для скачивания
C#:
using Oxide.Core.Plugins;

namespace Oxide.Plugins;

[Info("FClanDeathChat", "fufeldev", "1.0.0")]
public class FClanDeathChat : RustPlugin
{
    [PluginReference] private Plugin SClan;

    private const string Color1 = "#9cd579";
    private const string Color2 = "#a8e6cf";
    private const string Color3 = "#5dade2";

    private void OnPlayerDeath(BasePlayer player, HitInfo info)
    {
        if (player == null) return;
        BasePlayer attacker = info?.InitiatorPlayer;
        if (attacker != null && attacker == player) attacker = null;
        foreach (BasePlayer viewer in BasePlayer.activePlayerList)
        {
            if (viewer == null || !viewer.IsConnected || viewer.IsNpc || !viewer.userID.IsSteamId()) continue;
            if (!CanSeeDeath(viewer, player, attacker)) continue;
            string message = attacker == null
                ? $"{FormatName(viewer, player)} умер"
                : $"{FormatName(viewer, attacker)} убил {FormatName(viewer, player)}";
            viewer.ChatMessage(message);
        }
    }

    private string FormatName(BasePlayer viewer, BasePlayer target)
    {
        string color = GetColor(viewer, target);
        return $"<color={color}>{target.displayName}</color>";
    }

    private string GetColor(BasePlayer viewer, BasePlayer target)
    {
        if (target == null || target.IsNpc || !target.userID.IsSteamId()) return Color3;
        if (viewer.userID == target.userID) return Color1;
        return IsTeammate(viewer.userID, target.userID) ? Color2 : Color3;
    }

    private bool CanSeeDeath(BasePlayer viewer, BasePlayer victim, BasePlayer attacker)
    {
        if (IsRelatedPlayer(viewer, victim)) return true;
        return IsRelatedPlayer(viewer, attacker);
    }

    private bool IsRelatedPlayer(BasePlayer viewer, BasePlayer target)
    {
        if (viewer == null || target == null || target.IsNpc || !target.userID.IsSteamId()) return false;
        return IsTeammate(viewer.userID, target.userID);
    }

    private bool IsTeammate(ulong first, ulong second)
    {
        if (!first.IsSteamId() || !second.IsSteamId()) return false;
        if (first == second) return true;
        object result = SClan?.Call("IsTeammate", first, second);
        if (result is bool teammate && teammate) return true;
        RelationshipManager.PlayerTeam team = RelationshipManager.ServerInstance?.FindPlayersTeam(first);
        return team != null && team.members != null && team.members.Contains(second);
    }
}

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