Загрузка файлов LUA

Ancwork

Участник
Автор темы
31
1
Версия MoonLoader
.026-beta
Вопрос следующий, у меня есть данный код, он качает звук arrest.mp3 с сайта и воспроизводит звук по тригеру в чате передаёт преступника, так вот... Как сделать скачивание нескольких звуков и воспроизводить их рандомном порядке?

Код:
local sounds = {
  {
    url='https://domen-domen/arrest.mp3',
    file_name = 'arrest.mp3',
  },
}

local as_action = require('moonloader').audiostream_state
local sampev = require 'lib.samp.events'
local dirMusic = loadAudioStream('moonloader/sounds/arrest.mp3')

function main()
    repeat wait(0) until isSampAvailable()
    sampAddChatMessage(tag .. 'Вы используете Mhelper', -1)

    -- AHK Команды
    sampRegisterChatCommand('mhelp', mhelp)
if not doesDirectoryExist(getWorkingDirectory()..'\\sounds') then
    createDirectory(getWorkingDirectory()..'\\sounds')
  end
  for i, v in ipairs(sounds) do
    sampAddChatMessage('{FFFFFF}Все файлы для работы загружены!', -1 , v['file_name'])
    if not doesFileExist(getWorkingDirectory()..'\\sounds\\'..v['file_name']) then
      downloadUrlToFile(v['url'], getWorkingDirectory()..'\\sounds\\'..v['file_name'])
    end
  end


    while true do
    wait(0)
    if wasKeyPressed(key.VK_F3) then -- активация по нажатию клавиши X
        main_window_state.v = not main_window_state.v -- переключаем статус активности окна, не забываем про .v
    end
    imgui.Process = main_window_state.v -- теперь значение imgui.Process всегда будет задаваться в зависимости от активности основного окна
  end
end

function sampev.onServerMessage(color, text)
    if text:find('передаёт преступника') then
        setAudioStreamState(dirMusic, as_action.PLAY)
        setAudioStreamVolume(dirMusic, 70)
    end
end
 

Неадекватная сова

Известный
Проверенный
237
180
По идеи как то так:

Lua:
local sampev = require 'lib.samp.events'

local soundsData = {
    domain = 'https://domen-domen/%s',

    sounds = {
        {file = 'arrest.mp3', soundHandle = nil},
        {file = 'prikol.mp3', soundHandle = nil},
    },
}

function main()
    repeat wait(0) until isSampAvailable()
    sampAddChatMessage(tag .. 'Вы используете Mhelper', -1)

    sampRegisterChatCommand('mhelp', mhelp)
        if not doesDirectoryExist(getWorkingDirectory()..'\\sounds') then
        createDirectory(getWorkingDirectory()..'\\sounds')
    end

    for index, value in pairs(soundsData.sounds) do
        if not doesFileExist(getWorkingDirectory() .. '\\sounds\\' .. value.file) then
            downloadUrlToFile(string.format(soundsData.domain, value.file), getWorkingDirectory() .. '\\sounds\\' .. value.file)
        end
    end

    while true do
        wait(0)
        if wasKeyPressed(key.VK_F3) then
            main_window_state.v = not main_window_state.v
        end
        imgui.Process = main_window_state.v
    end
end

function sampev.onServerMessage(color, text)
    if text:find('передаёт преступника') then
        local randomSound = math.random(1, #soundsData.sounds)
        if getAudioStreamLength(soundsData.sounds[randomSound].soundHandle) <= 0 then
            soundsData.sounds[randomSound].soundHandle = loadAudioStream(getWorkingDirectory() .. '\\sounds\\' .. soundsData.sounds[randomSound].file)
        end
        setAudioStreamState(soundsData.sounds[randomSound].soundHandle, 1)
    end
end
 

Ancwork

Участник
Автор темы
31
1
По идеи как то так:

Lua:
local sampev = require 'lib.samp.events'

local soundsData = {
    domain = 'https://domen-domen/%s',

    sounds = {
        {file = 'arrest.mp3', soundHandle = nil},
        {file = 'prikol.mp3', soundHandle = nil},
    },
}

function main()
    repeat wait(0) until isSampAvailable()
    sampAddChatMessage(tag .. 'Вы используете Mhelper', -1)

    sampRegisterChatCommand('mhelp', mhelp)
        if not doesDirectoryExist(getWorkingDirectory()..'\\sounds') then
        createDirectory(getWorkingDirectory()..'\\sounds')
    end

    for index, value in pairs(soundsData.sounds) do
        if not doesFileExist(getWorkingDirectory() .. '\\sounds\\' .. value.file) then
            downloadUrlToFile(string.format(soundsData.domain, value.file), getWorkingDirectory() .. '\\sounds\\' .. value.file)
        end
    end

    while true do
        wait(0)
        if wasKeyPressed(key.VK_F3) then
            main_window_state.v = not main_window_state.v
        end
        imgui.Process = main_window_state.v
    end
end

function sampev.onServerMessage(color, text)
    if text:find('передаёт преступника') then
        local randomSound = math.random(1, #soundsData.sounds)
        if getAudioStreamLength(soundsData.sounds[randomSound].soundHandle) <= 0 then
            soundsData.sounds[randomSound].soundHandle = loadAudioStream(getWorkingDirectory() .. '\\sounds\\' .. soundsData.sounds[randomSound].file)
        end
        setAudioStreamState(soundsData.sounds[randomSound].soundHandle, 1)
    end
end
Да, оно качает 2 файла, но при тригере "передаёт преступника", тупо крашит игру

Lua:
local sampev = require 'lib.samp.events'

local soundsData = {
    domain = 'https://domen.domen/%s',

    sounds = {
        {file = 'arrest.mp3', soundHandle = nil},
        {file = 'heal.mp3', soundHandle = nil},
    },
}

function main()
    repeat wait(0) until isSampAvailable()
    sampAddChatMessage('Вы используете Mhelper', -1)
        if not doesDirectoryExist(getWorkingDirectory()..'\\sounds') then
        createDirectory(getWorkingDirectory()..'\\sounds')
    end

    for index, value in pairs(soundsData.sounds) do
        if not doesFileExist(getWorkingDirectory() .. '\\sounds\\' .. value.file) then
            downloadUrlToFile(string.format(soundsData.domain, value.file), getWorkingDirectory() .. '\\sounds\\' .. value.file)
        end
    end
    end

function sampev.onServerMessage(color, text)
    if text:find('передаёт преступника') then
        local randomSound = math.random(1, #soundsData.sounds)
        if getAudioStreamLength(soundsData.sounds[randomSound].soundHandle) <= 0 then
            soundsData.sounds[randomSound].soundHandle = loadAudioStream(getWorkingDirectory() .. '\\sounds\\' .. soundsData.sounds[randomSound].file)
        end
        setAudioStreamState(soundsData.sounds[randomSound].soundHandle, 1)
    end
end
 

Неадекватная сова

Известный
Проверенный
237
180
Да, оно качает 2 файла, но при тригере "передаёт преступника", тупо крашит игру

Lua:
local sampev = require 'lib.samp.events'

local soundsData = {
    domain = 'https://domen.domen/%s',

    sounds = {
        {file = 'arrest.mp3', soundHandle = nil},
        {file = 'heal.mp3', soundHandle = nil},
    },
}

function main()
    repeat wait(0) until isSampAvailable()
    sampAddChatMessage('Вы используете Mhelper', -1)
        if not doesDirectoryExist(getWorkingDirectory()..'\\sounds') then
        createDirectory(getWorkingDirectory()..'\\sounds')
    end

    for index, value in pairs(soundsData.sounds) do
        if not doesFileExist(getWorkingDirectory() .. '\\sounds\\' .. value.file) then
            downloadUrlToFile(string.format(soundsData.domain, value.file), getWorkingDirectory() .. '\\sounds\\' .. value.file)
        end
    end
    end

function sampev.onServerMessage(color, text)
    if text:find('передаёт преступника') then
        local randomSound = math.random(1, #soundsData.sounds)
        if getAudioStreamLength(soundsData.sounds[randomSound].soundHandle) <= 0 then
            soundsData.sounds[randomSound].soundHandle = loadAudioStream(getWorkingDirectory() .. '\\sounds\\' .. soundsData.sounds[randomSound].file)
        end
        setAudioStreamState(soundsData.sounds[randomSound].soundHandle, 1)
    end
end
Ну посмотри в логе в какой строчке краш идет