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

FREE AutoHeals : 1.0.0 1.0.0

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

namespace Oxide.Plugins
{
    [Info("AutoHeals", "sdapro", "1.0.0")]
    class AutoHeals : RustPlugin
    {
        private Dictionary<ulong, HealthData> playerData = new Dictionary<ulong, HealthData>();

        class HealthData
        {
            public float lastHealth;
            public float lastHealTime;
            public float lastHealTick;

            public HealthData(float health, float time, float tick)
            {
                lastHealth = health;
                lastHealTime = time;
                lastHealTick = tick;
            }
        }
        void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info)
        {
            if (entity is BasePlayer)
            {
                var player = entity.ToPlayer();

                if (player == null || info == null)
                {
                    return;
                }

                if (info.damageTypes.GetMajorityDamageType() != DamageType.Suicide)
                {
                    UpdateHealthData(player);
                }
            }
        }

        void OnPlayerSleepEnded(BasePlayer player)
        {
            if (player == null)
            {
                return;
            }

            if (!playerData.ContainsKey(player.userID))
            {
                playerData[player.userID] = new HealthData(player.health, Time.realtimeSinceStartup, 0f);
            }
        }

        void OnPlayerWound(BasePlayer player)
        {
            if (player == null)
            {
                return;
            }

            if (playerData.ContainsKey(player.userID))
            {
                playerData.Remove(player.userID);
            }
        }

        void OnPlayerDisconnected(BasePlayer player, string reason)
        {
            if (player == null)
            {
                return;
            }

            if (playerData.ContainsKey(player.userID))
            {
                playerData.Remove(player.userID);
            }
        }

        void UpdateHealthData(BasePlayer player)
        {
            if (player == null)
            {
                return;
            }

            if (!playerData.ContainsKey(player.userID))
            {
                playerData[player.userID] = new HealthData(player.health, Time.realtimeSinceStartup, 0f);
            }
            else
            {
                playerData[player.userID].lastHealth = player.health;
                playerData[player.userID].lastHealTime = Time.realtimeSinceStartup;
            }
        }

        void OnTick()
        {
            foreach (var player in BasePlayer.activePlayerList)
            {
				
                if (player == null || player.IsDead() || player.IsSleeping() || !player.IsConnected)
                {
                    continue;
                }

                if (playerData.ContainsKey(player.userID))
                {
                    var timeSinceLastDamage = Time.realtimeSinceStartup - playerData[player.userID].lastHealTime;
                    if (timeSinceLastDamage >= 1.3f && player.health < 100f)
                    {
                        if (playerData[player.userID].lastHealTick + 0.2f <= Time.realtimeSinceStartup)
                        {
                            player.health += 2f;
                            playerData[player.userID].lastHealth = player.health;
                            playerData[player.userID].lastHealTick = Time.realtimeSinceStartup;
                        }
                    }
                }
                else
                {
                    playerData[player.userID] = new HealthData(player.health, Time.realtimeSinceStartup, 0f);
                }
            }
        }
    }
}

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