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

Ancwork

Участник
Автор темы
32
2
Версия SA-MP
  1. Любая
Вопрос следующий, у меня есть данный код, он качает звук arrest.mp3 с сайта и воспроизводит звук по тригеру в чате передаёт преступника, так вот... Как сделать скачивание нескольких звуков и воспроизводить их рандомном порядке?

Lua:
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
 
Решение
Вопрос следующий, у меня есть данный код, он качает звук arrest.mp3 с сайта и воспроизводит звук по тригеру в чате передаёт преступника, так вот... Как сделать скачивание нескольких звуков и воспроизводить их рандомном порядке?

Lua:
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...

James Fenrir

Участник
26
6
Вопрос следующий, у меня есть данный код, он качает звук arrest.mp3 с сайта и воспроизводит звук по тригеру в чате передаёт преступника, так вот... Как сделать скачивание нескольких звуков и воспроизводить их рандомном порядке?

Lua:
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
актуально?

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

Lua:
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
Давай покажу код:
Lua:
local sounds = {
    {
        url = 'https://domen-domen/arrest1.mp3',
        file_name = 'arrest1.mp3',
    },
    {
        url = 'https://domen-domen/arrest2.mp3',
        file_name = 'arrest2.mp3',
    },
    {
        url = 'https://domen-domen/arrest3.mp3',
        file_name = 'arrest3.mp3',
    },
}

local as_action = require('moonloader').audiostream_state
local sampev = require 'lib.samp.events'

local sound_streams = {} -- Таблица для хранения потоков звука

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

    -- Проверяем и создаем папку, если она не существует
    if not doesDirectoryExist(getWorkingDirectory()..'\\sounds') then
        createDirectory(getWorkingDirectory()..'\\sounds')
    end

    -- Загружаем звуки
    for i, v in ipairs(sounds) do
        if not doesFileExist(getWorkingDirectory()..'\\sounds\\'..v['file_name']) then
            sampAddChatMessage('Загружаю: ' .. v['file_name'], -1)
            downloadUrlToFile(v['url'], getWorkingDirectory()..'\\sounds\\'..v['file_name'])
        end

        -- Загружаем аудиопоток после скачивания
        local stream = loadAudioStream(getWorkingDirectory()..'\\sounds\\'..v['file_name'])
        if stream then
            table.insert(sound_streams, stream) -- Сохраняем поток в таблице
        end
    end

    while true do
        wait(0)
    end
end

-- Функция для воспроизведения случайного звука
function playRandomSound()
    if #sound_streams > 0 then
        local random_index = math.random(1, #sound_streams) -- Выбираем случайный индекс
        local stream = sound_streams[random_index]
        setAudioStreamState(stream, as_action.PLAY) -- Воспроизводим звук
        setAudioStreamVolume(stream, 70) -- Устанавливаем громкость
    else
        sampAddChatMessage('Нет доступных звуков для воспроизведения.', -1)
    end
end

-- Событие на сообщение от сервера
function sampev.onServerMessage(color, text)
    if text:find('передаёт преступника') then
        playRandomSound() -- Воспроизводим случайный звук
    end
end

Массив sounds:
Я добавил несколько звуков с разными URL-адресами.
Загрузка звуков:
Каждый файл из sounds скачивается, если его нет в папке.
После скачивания создаются аудиопотоки, которые сохраняются в таблицу sound_streams.
воспроизведение случайного звука:
Функция "playRandomSound" выбирает случайный звук из таблицы "sound_streams" и воспроизводит его.
Сообщение "передаёт преступника":

При срабатывании триггера вызывается playRandomSound и далее

Как же оно работает:

При запуске аддон проверяет наличие папки и файлов для звуков. Если файла нет, он скачивает его.
после скачивания загружаются аудиопотоки в память.
когда в чате появляется сообщение "передаёт преступника", функция "playRandomSound" выбирает случайный звук и воспроизводит его.
и убедись, что ссылки на звуки (url) доступны и рабочие.
проверяй корректность пути к папке moonloader/sounds.
—————————————
Всё верно?
 
Последнее редактирование:
  • Нравится
Реакции: Ancwork

Ancwork

Участник
Автор темы
32
2
актуально?


Давай покажу кода:
Lua:
local sounds = {
    {
        url = 'https://domen-domen/arrest1.mp3',
        file_name = 'arrest1.mp3',
    },
    {
        url = 'https://domen-domen/arrest2.mp3',
        file_name = 'arrest2.mp3',
    },
    {
        url = 'https://domen-domen/arrest3.mp3',
        file_name = 'arrest3.mp3',
    },
}

local as_action = require('moonloader').audiostream_state
local sampev = require 'lib.samp.events'

local sound_streams = {} -- Таблица для хранения потоков звука

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

    -- Проверяем и создаем папку, если она не существует
    if not doesDirectoryExist(getWorkingDirectory()..'\\sounds') then
        createDirectory(getWorkingDirectory()..'\\sounds')
    end

    -- Загружаем звуки
    for i, v in ipairs(sounds) do
        if not doesFileExist(getWorkingDirectory()..'\\sounds\\'..v['file_name']) then
            sampAddChatMessage('Загружаю: ' .. v['file_name'], -1)
            downloadUrlToFile(v['url'], getWorkingDirectory()..'\\sounds\\'..v['file_name'])
        end

        -- Загружаем аудиопоток после скачивания
        local stream = loadAudioStream(getWorkingDirectory()..'\\sounds\\'..v['file_name'])
        if stream then
            table.insert(sound_streams, stream) -- Сохраняем поток в таблице
        end
    end

    while true do
        wait(0)
    end
end

-- Функция для воспроизведения случайного звука
function playRandomSound()
    if #sound_streams > 0 then
        local random_index = math.random(1, #sound_streams) -- Выбираем случайный индекс
        local stream = sound_streams[random_index]
        setAudioStreamState(stream, as_action.PLAY) -- Воспроизводим звук
        setAudioStreamVolume(stream, 70) -- Устанавливаем громкость
    else
        sampAddChatMessage('Нет доступных звуков для воспроизведения.', -1)
    end
end

-- Событие на сообщение от сервера
function sampev.onServerMessage(color, text)
    if text:find('передаёт преступника') then
        playRandomSound() -- Воспроизводим случайный звук
    end
end

Массив sounds:
Я добавил несколько звуков с разными URL-адресами.
Загрузка звуков:
Каждый файл из sounds скачивается, если его нет в папке.
После скачивания создаются аудиопотоки, которые сохраняются в таблицу sound_streams.
воспроизведение случайного звука:
Функция "playRandomSound" выбирает случайный звук из таблицы "sound_streams" и воспроизводит его.
Сообщение "передаёт преступника":

При срабатывании триггера вызывается playRandomSound и далее

Как же оно работает:

При запуске аддон проверяет наличие папки и файлов для звуков. Если файла нет, он скачивает его.
после скачивания загружаются аудиопотоки в память.
когда в чате появляется сообщение "передаёт преступника", функция "playRandomSound" выбирает случайный звук и воспроизводит его.
и убедись, что ссылки на звуки (url) доступны и рабочие.
проверяй корректность пути к папке moonloader/sounds.
—————————————
Всё верно?
Провтыкал твой ответ,
актуально?


Давай покажу кода:
Lua:
local sounds = {
    {
        url = 'https://domen-domen/arrest1.mp3',
        file_name = 'arrest1.mp3',
    },
    {
        url = 'https://domen-domen/arrest2.mp3',
        file_name = 'arrest2.mp3',
    },
    {
        url = 'https://domen-domen/arrest3.mp3',
        file_name = 'arrest3.mp3',
    },
}

local as_action = require('moonloader').audiostream_state
local sampev = require 'lib.samp.events'

local sound_streams = {} -- Таблица для хранения потоков звука

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

    -- Проверяем и создаем папку, если она не существует
    if not doesDirectoryExist(getWorkingDirectory()..'\\sounds') then
        createDirectory(getWorkingDirectory()..'\\sounds')
    end

    -- Загружаем звуки
    for i, v in ipairs(sounds) do
        if not doesFileExist(getWorkingDirectory()..'\\sounds\\'..v['file_name']) then
            sampAddChatMessage('Загружаю: ' .. v['file_name'], -1)
            downloadUrlToFile(v['url'], getWorkingDirectory()..'\\sounds\\'..v['file_name'])
        end

        -- Загружаем аудиопоток после скачивания
        local stream = loadAudioStream(getWorkingDirectory()..'\\sounds\\'..v['file_name'])
        if stream then
            table.insert(sound_streams, stream) -- Сохраняем поток в таблице
        end
    end

    while true do
        wait(0)
    end
end

-- Функция для воспроизведения случайного звука
function playRandomSound()
    if #sound_streams > 0 then
        local random_index = math.random(1, #sound_streams) -- Выбираем случайный индекс
        local stream = sound_streams[random_index]
        setAudioStreamState(stream, as_action.PLAY) -- Воспроизводим звук
        setAudioStreamVolume(stream, 70) -- Устанавливаем громкость
    else
        sampAddChatMessage('Нет доступных звуков для воспроизведения.', -1)
    end
end

-- Событие на сообщение от сервера
function sampev.onServerMessage(color, text)
    if text:find('передаёт преступника') then
        playRandomSound() -- Воспроизводим случайный звук
    end
end

Массив sounds:
Я добавил несколько звуков с разными URL-адресами.
Загрузка звуков:
Каждый файл из sounds скачивается, если его нет в папке.
После скачивания создаются аудиопотоки, которые сохраняются в таблицу sound_streams.
воспроизведение случайного звука:
Функция "playRandomSound" выбирает случайный звук из таблицы "sound_streams" и воспроизводит его.
Сообщение "передаёт преступника":

При срабатывании триггера вызывается playRandomSound и далее

Как же оно работает:

При запуске аддон проверяет наличие папки и файлов для звуков. Если файла нет, он скачивает его.
после скачивания загружаются аудиопотоки в память.
когда в чате появляется сообщение "передаёт преступника", функция "playRandomSound" выбирает случайный звук и воспроизводит его.
и убедись, что ссылки на звуки (url) доступны и рабочие.
проверяй корректность пути к папке moonloader/sounds.
—————————————
Всё верно?
Бля, как ты выручил, вот серьёзно :) Я месяц если не больше искал ответ подробный
 
  • Нравится
Реакции: James Fenrir