• Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта NetZONA.org: https://netzona.org/help/public-offer/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами использования Ваших файлов cookie на Проекте NetZONA.org: https://netzona.org/help/cookies/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с Политикой конфиденциальности Проекта NetZONA.org: https://netzona.org/pages/privacy-policy/

  • Ответы на основные вопросы: https://netzona.org/threads/populjarnye-voprosy-i-otvety-na-nix.6122/

  • Приветствуем на сайте, Гость! Приобрести (купить) Информационную услугу (в том числе группу "Проверенный") на Проекте NetZONA.org: https://netzona.org/account/upgrades

Войс чат

  • Автор темы Автор темы Fifanya
  • Дата начала Дата начала

Fifanya

Пользователь
Проверенный
Регистрация
29 Апр 2020
Сообщения
119
Реакции
0
Баллы
28
Как сделать, чтобы войс чат работал в ограниченном радиусе? Например стоишь с челиком разговариваешь, он тебя слышит...а все другие, кто стоит дальше, вас уже не слышат. СЕРВЕР SANDBOX !!!
 
Пуфик сливал.

так же эту функцию можно включить в настройках сервера, если не хочешь в них ковыряться то можно найти их в ulx во вкладке server.
 
Этот код решит задачу. Поместить в lua/autorun/server/filename.lua

Lua:
local vrad = true -- Радиус слышимости включён, если true
local dynv = true -- Игроков не слышно, если они за стеной, если true
local voiceDistance = 550 -- Радиус слышимости
local SandBoxCanHear = {}

for _, ply in pairs(player.GetHumans()) do
    SandBoxCanHear[ply] = {}
end

local function calcPlyCanHearPlayerVoice(listener)
    if not IsValid(listener) then return end
    SandBoxCanHear[listener] = SandBoxCanHear[listener] or {}
    if listener:IsBot() then return end
    local shootPos = listener:GetShootPos()
    for _, talker in ipairs(player.GetHumans()) do
        local talkerShootPos = talker:GetShootPos()
        SandBoxCanHear[listener][talker] = not vrad or
        (shootPos:DistToSqr(talkerShootPos) < voiceDistance and -- Игрока слышно, если он находится в радиусе слышимости
        (not dynv or IsInRoom(shootPos, talkerShootPos, talker))) -- Игрока не слышно, если он находятся за стеной
    end
end

hook.Add("PlayerInitialSpawn", "SandBoxCanHearVoice", function(ply)
    calcPlyCanHearPlayerVoice(ply)
    if ply:IsBot() then return end
    timer.Create(ply:UserID() .. "SandBoxCanHearPlayersVoice", 0.5, 0, fn.Curry(calcPlyCanHearPlayerVoice, 2)(ply))
end)
 
Главная Регистрация
Назад
Сверху