Воспроизведение мелодии в свернутом режиме

Magir

Участник
Автор темы
58
5
Версия MoonLoader
.026-beta
Приветствую! Пишу скрипт, который при определенных обстоятельствах воспроизводит мелодию. Дело в том, что, когда игра включена, он отлично работает, но тогда от него мало толку. Необходимо сделать работу его в свернутом режиме, вот это для меня оказалось проблемой. На чат он, вроде, реагирует (выводит сообщение), однако мелодию не воспроизводит. Помогите, пожалуйста, решить проблему.

код:

Lua:
ACTIVATE = true  --Автовключение (true - да, false - нет)
MODE = false --Режим работы (false - звуковое оповещение, если админ пишет; true - автоответчик администратору)
SOUND_VOLUME = 5.0 --Громкость звука уведомлений

script_dependencies("work_in_pause")
vkey = require("lib.vkeys")
memory = require("memory")

PREFIX = "{FF0000}[AntiAdmin by Magir]:{FFFFFF} "
ACTIVATE_DISC= {"{ffffff} Скрипт {00FF00}Активирован", "{ffffff} Скрипт {FF0000}Отключен"}
MODE_DESC = {"{00FF00}Активирован режим звукового оповещения","{00FF00}Активирован режим автоответчика"}
SETTINGS_DESC = "{ffffff}Для изменения настроек: /aadm (вкл/выкл) /amode (изменение режима) или перейдите в файл скрипта"
require("lib.moonloader")
env = require("lib.samp.events")
au = require("lib.moonloader").audiostream_state
script_name("AntiAdmin")
script_author("Magir")

enter = false

state = false

function main()
    if not isSampLoaded() or not  isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(0) end
    audio =  loadAudioStream("moonloader/signal.mp3")
    if ACTIVATE then
        sampAddChatMessage(PREFIX..ACTIVATE_DISC[1],-1)
        if not MODE then
            sampAddChatMessage(PREFIX..MODE_DESC[1],-1)
        else
            sampAddChatMessage(PREFIX..MODE_DESC[2],-1)
        end
    else
        sampAddChatMessage(PREFIX..ACTIVATE_DISC[2],-1)   
    end
    sampAddChatMessage(PREFIX..SETTINGS_DESC,-1)
    sampRegisterChatCommand("aadm",function()
        ACTIVATE = not ACTIVATE
        if ACTIVATE then
            sampAddChatMessage(PREFIX..ACTIVATE_DISC[1],-1)
        else
            sampAddChatMessage(PREFIX..ACTIVATE_DISC[2],-1)
        end
     end)
    mus = lua_thread.create_suspended(sound)
    mus.work_in_pause=true
    auto = lua_thread.create_suspended(autootv)
    if ACTIVATE then
        memory.setuint8(7634870, 1, false)
        memory.setuint8(7635034, 1, false)
        memory.fill(7623723, 144, 8, false)
        memory.fill(5499528, 144, 6, false)
    else
        memory.setuint8(7634870, 0, false)
        memory.setuint8(7635034, 0, false)
        memory.hex2bin('0F 84 7B 01 00 00', 7623723, 8)
        memory.hex2bin('50 51 FF 15 00 83 85 00', 5499528, 6)
    end
     sampRegisterChatCommand("amode",function()
        MODE = not MODE
        if not MODE then
            sampAddChatMessage(PREFIX..MODE_DESC[1],-1)
        else
            sampAddChatMessage(PREFIX..MODE_DESC[2],-1)
        end
     end)
     sampRegisterChatCommand("aatest",function()
        mus:run()
        sampAddChatMessage(PREFIX.."Проверка началась! Если вы не слышите звук, проверьте настройки радио (необходимо включить) и перезайдите в игру.",-1)
        end)
        wait(-1)
end

function env.onServerMessage(col,txt)
    if txt:find("ENTER") then
        enter=true
        sampAddChatMessage("ЗАПУЩЕНО",-1)
    end
    if txt:find("Отнесите ресурсы к разгрузке") or txt:find("Вы пeренесли ресурсы") then
        enter=false
    end
    
    if ACTIVATE and col == -6732289 then
        if MODE then
            auto:run(text:match("%]:%s*(.+)"))
        else
            mus:run()
        end
    end
    
end



function sound()
        if not state then
            setAudioStreamLooped(audio, true)
            setAudioStreamVolume(audio,SOUND_VOLUME)
            setAudioStreamState(audio,au.PLAY)
            sampAddChatMessage(PREFIX.."{ffffff}Вам написал администратор. Для отключения звука уведомления нажмите {ff00ff} 5",-1)
            state = true
        end
    local off = true
    while off do
        if isKeyDown(vkey.VK_5) then
            off = not off
        end
        wait(0)
    end
    state =false
    setAudioStreamState(audio,au.STOP)
    sampAddChatMessage(PREFIX.."{ffffff}Уведомление принято. Звук отключен",-1)
end

function autootv(txt)
    sampAddChatMessage("Пока недоступно",-1)
end

Спасибо большое!