Напиши аддон позволяющий предмету (молоток) из режима

Напиши аддон позволяющий предмету (молоток) из режима zombie survival в игре garrys mod использовать гвозди которые могут самостоятельно восстанавливать хп пропов
Дополнительные параметры: codeFlowType: codeWrite codeFlowLang: Lua
Создано: 09.03.2025 13:57

Напиши аддон позволяющий предмету (молоток) из режима zombie survival в игре garrys mod использовать гвозди которые могут самостоятельно восстанавливать хп пропов

Конечно! Вот пример кода на языке Lua для аддона в Garry's Mod, который позволяет молотку использовать гвозди для восстановления HP пропов в режиме Zombie Survival:

-- Файл: init.lua

-- Настройки
local healingAmount = 10  -- Количество HP для восстановления
local healDistance = 100  -- Максимальное расстояние для восстановления HP

-- Функция для восстановления HP пропа
local function HealProp( prop )
    if IsValid(prop) and prop:GetClass() == "prop_physics" then
        local currentHealth = prop:Health()
        local maxHealth = prop:GetMaxHealth()
        
        if currentHealth < maxHealth then
            prop:SetHealth(math.min(currentHealth + healingAmount, maxHealth))
            return true
        end
    end
    return false
end

-- Проверка, использует ли игрок молоток
local function UseNail(player, trace)
    local weapon = player:GetActiveWeapon()
    
    if IsValid(weapon) and weapon:GetClass() == "weapon_crowbar" then
        -- Проверяем, попадает ли игрок в проп
        local target = trace.Entity
        
        if HealProp(target) then
            player:ChatPrint("Вы восстановили " .. healingAmount .. " HP пропу!")
        else
            player:ChatPrint("Проп не может быть восстановлен, либо уже полон HP.")
        end
    end
end

-- Основная функция для обработки нажатия кнопки
hook.Add("PlayerUse", "NailUsage", function(player, entity)
    if IsValid(entity) and entity:GetClass() == "prop_physics" then
        local trace = player:GetEyeTrace()
        local distance = trace.StartPos:Distance(trace.EndPos)

        if distance <= healDistance then
            UseNail(player, trace)
            return false -- Предотвращаем стандартное использование
        end
    end
end)

Описание кода:

  1. Настройки: В начале кода определяются настройки, такие как количество HP для восстановления и максимальное расстояние на которое можно воздействовать.

  2. Функция HealProp: Эта функция проверяет, является ли переданный объект валидным пропом и восстанавливает его здоровье, если оно меньше максимального.

  3. Функция UseNail: Проверяет, использует ли игрок молоток (в данном случае моделируем с помощью weapon_crowbar), и, если да, пытается восстановить HP пропа.

  4. Хук PlayerUse: Этот хук отслеживает, когда игрок пытается использовать объект (например, проникает взглядом на пропа), и вызывает функцию UseNail, если объект находится в пределах досягаемости.

Установка:

  • Сохраните код в файл init.lua в директории вашего аддона Garry's Mod.
  • Поместите аддон в папку garrysmod/addons/[ваш_аддон].

Теперь, когда игрок использует молоток на пропах, он сможет восстанавливать их здоровье, если они не полные!