[DarkRP] Звук смерти и ранения для MPF/OTA

Делаю сборку HL2RP и мне нужно чтобы при смерти профессии издавали определённые звуки

local combineDeathSounds = {
    "npc/combine_soldier/die1.wav",
    "npc/combine_soldier/die2.wav",
    "npc/combine_soldier/die3.wav"
}

local dispatcherSounds = {
    "npc/overwatch/radiovoice/lostbiosignalforunit.wav",
    "npc/overwatch/radiovoice/unitdownat.wav"
}

hook.Add("PlayerDeath", "PlayDeathSoundForCP", function(victim, inflictor, attacker)
    if victim:isCP() then
        local deathSound = table.Random(combineDeathSounds)
        local dispatcherSound = table.Random(dispatcherSounds)
        
        victim:EmitSound(deathSound, 75, 100, 1, CHAN_AUTO)

        timer.Simple(0.5, function()
            for _, ply in ipairs(ents.FindInSphere(victim:GetPos(), 250)) do
                if ply:IsPlayer() then
                    ply:EmitSound(dispatcherSound, 75, 100, 1, CHAN_AUTO)
                end
            end
        end)
    end
end)

Добавляй свои звуки. Закидывай в любую sv-часть.
Не помню откуда достал это, но тем не менее оно есть.
if victim:isCP(), isCP замени на свою мету ГОшников и ОТА

1 лайк

Спасибо ! Сейчас буду проверять

Я чайник по части кодинга, как создать мету ?

в sh части добавляешь, условно sh_meta.lua. Туда пишешь:

hook.Add("PostGamemodeLoaded", "MetaLoad", function()
local player = FindMetaTable("Player")
local tableMPF = {
    [TEAM_CP7] = true,
    [TEAM_CP6] = true,
    [TEAM_CP5] = true,
    [TEAM_CP4] = true,
    [TEAM_CP3] = true,
    [TEAM_CP2] = true,
    [TEAM_CP1] = true,
    [TEAM_CP0] = true,
}

function player:isMPF()
    if not IsValid(self) then return end
    return tableMPF[self:Team()]
end

end)

с метой ОТА так же, только просто MPF замени на OTA

1 лайк

Всё, понял спс

Приветствую! Я чайник в кодинге и создании аддонов, можете пожалуйста сказать куда и в какие файлы добавлять эти два кода? :slight_smile:

мета - lua/autorun/
файл - lua/autorun/server
попробуй это

1 лайк

Не получилось :frowning:
Я сделал всё как вы сказали, в скриптах нечего не менял (кроме профессий и звуков с путями к ним), но как я уже и сказал нечего не поменялось, звуки попросту не воспроизводятся после смерти у определённых профессий…

ошибок никаких нет в серверной/клиентской консоли?

Неа, ни в серверной, ни в клиентской. Может нужно было в sh_meta заменить isMPF на isCP, я хз просто

попробуй это и скажи, что выводит

hook.Add("PostGamemodeLoaded", "MetaLoad", function()
    print("Хук PostGamemodeLoaded сработал")

    local player = FindMetaTable("Player")
    print("Метатаблица Player найдена:", player)

    local tableMPF = {
        [TEAM_CP7] = true,
        [TEAM_CP6] = true,
        [TEAM_CP5] = true,
        [TEAM_CP4] = true,
        [TEAM_CP3] = true,
        [TEAM_CP2] = true,
        [TEAM_CP1] = true,
        [TEAM_CP0] = true,
    }
    
    print("Загружена таблица MPF:", tableMPF)

    function player:isMPF()
        if not IsValid(self) then
            print("Игрок не валиден.")
            return
        end
        local teamCheck = self:Team()
        print("Команда игрока:", teamCheck)

        local result = tableMPF[teamCheck]
        print("Является ли команда MPF?", result)
        return result
    end
end)

UPD: Еще это закинь

local combineDeathSounds = {
    "npc/combine_soldier/die1.wav",
    "npc/combine_soldier/die2.wav",
    "npc/combine_soldier/die3.wav"
}

local dispatcherSounds = {
    "npc/overwatch/radiovoice/lostbiosignalforunit.wav",
    "npc/overwatch/radiovoice/unitdownat.wav"
}

hook.Add("PlayerDeath", "PlayDeathSoundForCP", function(victim, inflictor, attacker)
    if victim:isMPF() then
        local deathSound = table.Random(combineDeathSounds)
        local dispatcherSound = table.Random(dispatcherSounds)
        
        print("Игрок " .. victim:Nick() .. " умер. Играет звук смерти: " .. deathSound)
        victim:EmitSound(deathSound, 75, 100, 1, CHAN_AUTO)

        timer.Simple(0.5, function()
            for _, ply in ipairs(ents.FindInSphere(victim:GetPos(), 250)) do
                if ply:IsPlayer() then
                    print("Игрок " .. ply:Nick() .. " находится в радиусе 250, играет звук диспетчера: " .. dispatcherSound)
                    ply:EmitSound(dispatcherSound, 75, 100, 1, CHAN_AUTO)
                end
            end
        end)
    end
end)

Появилась в консоли ошибка “Failed to load sound “cp\death1.wav”, file probably missing from disk/repository”
Звук смерти death1.wav находиться по пути sound\cp\death1.wav, поэтому я не понимаю, почему он не находит этот звук?

попробуй sound/cp/death1.wav

Ошибка Серверная или Клиенская?
Звук есть на Сервере и Клиенте?

Failed to load sound “sound\cp\death5.wav”, file probably missing from disk/repository

слэши в другую сторону попробуй в коде вписать

Поменял ошибка в консоли пропала, но звуки также не воспроизводятся

что насчёт принтов? что-то выводит в консоли?