add sborka

This commit is contained in:
2026-03-31 10:27:04 +03:00
commit f5e5f56c84
2345 changed files with 382127 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
{
"title": "Говорилка - Google Ver.",
"type": "tool",
"tags": [
"fun",
"roleplay",
"realism"
],
"ignore": [
"*.code-workspace"
]
}

View File

@@ -0,0 +1,126 @@
print("loading govorilka by sekta")
if SERVER then util.AddNetworkString("govorilka-tts") end
--sv convars
govorilkaenable = CreateConVar("sv_govorilka_enabled","1",FCVAR_ARCHIVE)
govorilkalang = CreateConVar("sv_govorilka_lang","ru",FCVAR_ARCHIVE)
govorilkaglobal = CreateConVar("sv_govorilka_global","0",FCVAR_ARCHIVE)
govorilkaenablechattts = CreateConVar("sv_govorilka_chattts_enabled","1",FCVAR_ARCHIVE)
--cl convars
clgovorilkaenable = CreateClientConVar("cl_govorilka_enabled","1",FCVAR_ARCHIVE)
clgovorilkaenablechattts = CreateClientConVar("cl_govorilka_chattts_enabled","1",FCVAR_ARCHIVE)
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
-- _g - Google ver.
-- _y - Yandex ver.
sektattsbase_g = {}
if SERVER then
function sektattsbase_g.TTS(text)
net.Start("govorilka-tts")
net.WriteFloat(1)
net.WriteString(text)
net.Broadcast()
end
local meta = FindMetaTable("Player")
function meta:TTS(text)
net.Start("govorilka-tts")
net.WriteFloat(1)
net.WriteString(text)
net.Send(self)
end
function sektattsbase_g.LocalTTS(text,pos)
net.Start("govorilka-tts")
net.WriteFloat(2)
net.WriteString(text)
net.WriteVector(pos)
net.SendPAS(pos)
end
function sektattsbase_g.EntTTS(text,ent)
net.Start("govorilka-tts")
net.WriteFloat(3)
net.WriteString(text)
net.WriteEntity(ent)
net.Broadcast()
end
hook.Add("PlayerSay","govorilka.chat",function(ply,text,team)
if !team and (govorilkaenablechattts:GetString()=="1" or clgovorilkaenablechattts:GetString()=="1") then
if ply.HasPurchase and not ply:HasPurchase("govorilka") then return end
if govorilkaglobal:GetString()=="1" then
sektattsbase_g.TTS(text)
else
sektattsbase_g.EntTTS(text,ply)
end
end
end)
end
if CLIENT then
function sektattsbase_g.TTS(text)
sound.PlayURL("http://translate.googleapis.com/translate_tts?client=gtx&ie=UTF-8&tl="..govorilkalang:GetString().."&q="..urlencode(text), "mono", function(station,err,errcode)
if IsValid(station) then
station:Play()
else
print("[Govorilka] Ошибка воспроизведения TTS: ", errcode, err)
end
end)
end
function sektattsbase_g.LocalTTS(text,pos)
sound.PlayURL("http://translate.googleapis.com/translate_tts?client=gtx&ie=UTF-8&tl="..govorilkalang:GetString().."&q="..urlencode(text), "3d", function(station,err,errcode)
if IsValid(station) then
station:SetPos(pos)
station:Play()
else
print("[Govorilka] Ошибка воспроизведения LocalTTS: ", errcode, err)
end
end)
end
function sektattsbase_g.EntTTS(text,ent)
if IsValid(ent) then
sound.PlayURL("http://translate.googleapis.com/translate_tts?client=gtx&ie=UTF-8&tl="..govorilkalang:GetString().."&q="..urlencode(text), "3d", function(station,err,errcode)
if IsValid(station) then
station:SetPos(ent:GetPos())
station:Play()
local id = "tts_ent."..math.random(1,10000000)
hook.Add("Think",id,function()
if IsValid(ent) then station:SetPos(ent:GetPos()) end
if !IsValid(station) then hook.Remove("Think",id) end
end)
else
print("[Govorilka] Ошибка воспроизведения EntTTS: ", errcode, err)
end
end)
end
end
net.Receive("govorilka-tts",function()
if clgovorilkaenable:GetString()=="0" or govorilkaenable:GetString()=="0" then return end
local mode = net.ReadFloat()
local text = net.ReadString()
if mode==1 then
sektattsbase_g.TTS(text)
elseif mode==2 then
local pos = net.ReadVector()
sektattsbase_g.LocalTTS(text,pos)
elseif mode==3 then
local ent = net.ReadEntity()
sektattsbase_g.EntTTS(text,ent)
end
end)
end
-- coded by sekta