• Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта 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)
 
Главная Регистрация
Назад
Сверху