Расширение добавляет предметам 2 новых метода, связанных со звуком:
Добавляет методы:
ITEM:SetSoundURL(url)
– url, указанный по ссылке будет воспроизведен у всех онлайн игроков, когда кто-то купит предметITEM:SetTTSPattern(pattern)
– Включает воспроизведение голосового сообщения с указанным текстом, когда кто-то покупает предмет
--[[-------------------------------------------------------------------------
Расширение добавляет предметам 2 новых метода, связанных со звуком:
# :SetSoundURL(url)
Укажите ссылку на звук и он воспроизведется у всех игроков при покупке кем-то предмета
Рекомендуется размещать звуковые файлы у себя на сайте
# :SetTTSPattern(pattern)
Включает воспроизведение голосового сообщения с указанным текстом (pattern) всем игрокам на сервере о покупке кем-то этого предмета
Пример паттерна: {nick} настолько мажористый, что потратил 50 руб на то, чтобы вы просто услышали этот текст
Файл закинуть по пути /addons/igs-modification/lua/igs/extensions/sound.lua
---------------------------------------------------------------------------]]
local STORE_ITEM = FindMetaTable("IGSItem")
function STORE_ITEM:SetSoundURL(url)
return self:SetMeta("sound_url", url)
end
-- IGS("Кекер", "kek", 10):SetStackable():SetTTSPattern("{nick} купил кекер")
function STORE_ITEM:SetTTSPattern(pattern)
return self:SetMeta("tts_pattern", pattern)
end
if SERVER then
util.AddNetworkString("IGS.PLAYSOUND")
local function phraseToTTSUrl(phrase)
local GOOGLE = "https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=%s&tl=ru"
return GOOGLE:format(phrase:URLEncode())
end
hook.Add("IGS.PlayerPurchasedItem", "IGS.PLAYSOUND", function(pl, ITEM)
local url
local tts_pattern = ITEM:GetMeta("tts_pattern")
if tts_pattern then
local txt = tts_pattern:gsub("{nick}", pl:Nick())
url = phraseToTTSUrl(txt)
else
url = ITEM:GetMeta("sound_url")
end
if url then
net.Start("IGS.PLAYSOUND")
net.WriteString(url)
net.Broadcast()
end
end)
else
local function PlayURL(url)
sound.PlayURL(url, "2d", function(chan)
if chan and chan:IsValid() then
chan:Play()
end
end)
end
net.Receive("IGS.PLAYSOUND", function()
local url = net.ReadString()
PlayURL(url)
end)
end