Собрал в этой теме все самое важное с этих, чтобы все было в одном месте:
- Добавить "говорилку" в автодонат
- https://forum.gm-donate.net/t/govorilka-v-donat-dlya-vashego-servera/166
- Говорилка SAM admin, DarkRP
- Говорилка
Эта тема является WIKI темой и ее может редактировать каждый. Если у вас есть какие-то предложения или правки - можете вносить прямо в это сообщение
Вариант 1 - от @Riky
Когда игрок с купленным предметом “govorilka” пишет что-то в чат, это воспроизводится у всех. Работает только на DarkRP из-за хука PostPlayerSay
Сам скрипт установить сюда:
addons/igs-modification/lua/autorun/sh_govorilka.lua
if SERVER then
util.AddNetworkString("SayTTS")
hook.Add("PostPlayerSay", "TTSFTW", function(ply, text, team, dead)
if ply:HasPurchase("govorilka") and not dead then
net.Start("SayTTS")
net.WriteString(text)
net.WriteEntity(ply)
net.Broadcast()
end
end)
else
local char_to_hex = function(c) return string.format("%%%02X", string.byte(c)) end
local function urlencode(url)
return url:gsub("\n", "\r\n")
:gsub("([^%w ])", char_to_hex)
:gsub(" ", "+")
end
net.Receive("SayTTS", function()
local text = net.ReadString()
local ply = net.ReadEntity()
if LocalPlayer():GetPos():Distance(ply:GetPos()) > 1000 then return end
sound.PlayURL("https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=" .. urlencode(text) .. "&tl=ru", "3d", function(snd)
if IsValid(snd) and IsValid(ply) then
snd:SetPos(ply:GetPos())
snd:SetVolume(1)
snd:Play()
snd:Set3DFadeDistance(200, 1000)
ply.tts_snd = snd
end
end)
end)
hook.Add("Think", "FollowPlayerSound", function()
for _, ply in pairs(player.GetAll()) do
if IsValid(ply.tts_snd) then
ply.tts_snd:SetPos( ply:GetPos() )
end
end
end)
end
В IGS создать предмет govorilka:
addons\igs-modification\lua\igs\settings\sh_additems.lua
IGS("Говорилка", "govorilka")
:SetPrice(400)
:SetTerm(30)
Вариант 2 от меня без гарантий
Для тех, кто “на опыте” предоставляю как есть свою “говорилку”, которую в свое время писал для своего проекта
tts.zip (2.2 КБ)
Если вариант сверху не работает, а он конечно и не будет работать, если его не подогнать под ваш проект, то есть еще такой вариант от @Helix_Drew: tts.zip (2.0 КБ), но за работоспособность тоже не отвечаю
Инструкции по установке не даю, как и не оказываю поддержку по ней, так как она требует некоторых зависимостей
Если кто-то портирует этот модуль, чтобы он работал на любом проекте, то сразу получит медаль “Моддер” и попадет в группу LEADERS
P.S. Продавал вот так:
IGS("Синтез речи","tts", 1499):SetDiscountedFrom(2000)
:SetPerma()
:SetCategory(IGS_CAT_FUN)
:SetDescription(
"С этой херней все ваши сообщения будут воспроизведены компьютером, словно в терминаторе!" ..
"\n\nДорого? Да нихуя! Я мог бы сделать эту хрень дешевле, но тогда бы ваши уши начали кровоточить от обилия войс месседжей на сервере." ..
"\n\nПосле покупки напишите нам в ВК и мы расскажем одну интересную байду"
)
:SetIcon("http://i.imgur.com/mUWW0U1.png")
Может пригодиться
function string:URLEncode()
return string.gsub(string.gsub(self, '\n', '\r\n'), '([^%w.])', function(c)
return string.format('%%%02X', string.byte(c))
end)
end
Вариант 3, не помню откуда, но вроде работает
googlespeech.zip (9.1 КБ) Закинуть в addons
В sh_additems.lua добавить вот такое:
IGS("Говорилка на 30 дней", "govorilka")
:SetPrice(100)
:SetTerm(30)
:SetDescription("Если хочешь чтобы твой текст озвучивался, то эта штука для тебя")
:SetNetworked(true)
Бонус. Yandex вместо Google
Гугл ссылки подменить на подобную:
https://tts.voicetech.yandex.net/tts?speaker=alyss&text=Привет-мир