"Говорилка" в донат для вашего сервера

Что бы установить на сервер “говорилку” и она звучала когда что-то пишешь в чат только когда куплен донат “говорилка”
надо добавить этот код к sh файлам с названием sh_govorilka.lua
путь

addons/igs-modification/lua/autorun/sh_govorilka.lua

if SERVER then
    util.AddNetworkString("SayTTS")

    hook.Add("PlayerSay", "TTSFTW", function(ply, text, team)
        if not team then
            if ply:HasPurchase("govorilka") and string.sub(text, 1, 1) ~= "/" and string.sub(text, 1, 1) ~= "!" and string.sub(text, 1, 1) ~= "@" and not ply:FAdmin_GetGlobal("FAdmin_chatmuted") and ply:Alive() then
                net.Start("SayTTS")
                net.WriteString(text)
                net.WriteEntity(ply)
                net.Broadcast()
            end
        end
    end)
else
    local char_to_hex = function(c) return string.format("%%%02X", string.byte(c)) end

    local function urlencode(url)
        if url == nil then return end
        url = url:gsub("\n", "\r\n")
        url = url:gsub("([^%w ])", char_to_hex)
        url = url:gsub(" ", "+")

        return url
    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.sound = snd
            end
        end)
    end)

    hook.Add("Think", "FollowPlayerSound", function()
        for k, v in pairs(player.GetAll()) do
            if IsValid(v.sound) then
                v.sound:SetPos(v:GetPos())
            end
        end
    end)
end

а в

addons\module_igsmodification\lua\igs\settings\additems.lua

вписать

IGS("Говорилка", "govorilka")
	:SetPrice(400) -- 3000
	:SetTerm(30) -- навсегда

а к каким sh файлам добавить код нужно?

addons/igs-modification/lua/autorun/sh_govorilka.lua

1 симпатия

@Riky, а что здесь не так?

Не заработало у меня, скинул более простой, вдруг кому нужен)

1 симпатия

можешь в дискорд обьяснить что и как видимо криворукий :smiley:

у меня б админ и я хз у меня ошибку выдает в консоли сервера Lua 6 строка чтото там связанно с Fadmin

Riky#7587 добавляй в дс

Так скинь 6 строку, и саму ошибку тоже

Напишите тут, как разберетесь

Цитата из этой темы: Добавить "говорилку" в автодонат - #7 от пользователя pako

Если у тебя DarkRP, то hook.Add("PlayerSay" замени на hook.Add("PostPlayerSay, а часть and string.sub(text, 1, 1) ~= "/" and string.sub(text, 1, 1) ~= "!" and string.sub(text, 1, 1) ~= "@" and not ply:FAdmin_GetGlobal("FAdmin_chatmuted") удали

Для тех, кто “на опыте” предоставляю как есть свою “говорилку”, которую в свое время писал для своего проекта

tts.zip (2.2 КБ)

Инструкции по установке не даю, как и не оказываю поддержку по ней, так как она требует некоторых зависимостей

Если кто-то портирует этот модуль, чтобы он работал на любом проекте, то сразу получит медаль “Моддер” и попадет в группу 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