BASS.lua

Статус
В этой теме нельзя размещать новые ответы.

itsLegend

Фонд борьбы за жуков 🐞
Автор темы
Администратор
2,696
1,468
Обычный переведенный bass.h под FFI.
Теперь можете использовать стандартные функции библиотеки bass в игре через Moonloader.
Некоторые части удалил, т.к. они нигде не применялись (по крайней мере я не нашел).
Документацию можно найти на оф. сайте bass: http://www.un4seen.com/doc/#bass/bass.html.

Пример использования:

Lua:
script_name("bass library test")

function main()
    if not isSampLoaded() then return end

    while not isSampAvailable() do
        wait(0)
    end

    local bass = require "lib.bass" -- загружаем модуль

    local radio = bass.BASS_StreamCreateURL("http://air.radiorecord.ru:8102/trap_320", 0, 0, nil, nil)
    bass.BASS_ChannelSetAttribute(radio, BASS_ATTRIB_VOL, 0.1) -- громкость
    bass.BASS_ChannelPlay(radio, false) -- воспроизвести

    wait(-1)
end
Lua:
script_name("bass library test")

function main()
    if not isSampLoaded() then return end

    while not isSampAvailable() do
        wait(0)
    end

    local bass = require "lib.bass" -- загружаем модуль

    local radio = bass.BASS_StreamCreateFile(false, "moonloader/music.mp3", 0, 0, 0)
    bass.BASS_ChannelSetAttribute(radio, BASS_ATTRIB_VOL, 0.1) -- громкость
    bass.BASS_ChannelPlay(radio, false) -- воспроизвести

    wait(-1)
end

Установка:
Копируем содержимое архива в папку moonloader.
bassExample.lua содержит пример выше.

По возможности добавлю больше примеров, а лучше, если кидать будете их Вы :pardon:
 

Вложения

  • bassModule.zip
    10.1 KB · Просмотры: 3,217
Последнее редактирование:

im0rg

Известный
Друг
587
216
Ура. Переведу свой iRadio на луа

Не могу понять почему BASS_ChannelGetTags не хочет возвращать meta теги. В ответе приходит cdata<const char *>: 0x09658b80 что в итоге Stre.
Код:
ffi.string(ffi.cast("const char*", meta), ffi.sizeof(meta))

А BASS_ErrorGetCode() дает 0, тобишь все в порядке, что не так?
 
Последнее редактирование модератором:

itsLegend

Фонд борьбы за жуков 🐞
Автор темы
Администратор
2,696
1,468
Ура. Переведу свой iRadio на луа

Не могу понять почему BASS_ChannelGetTags не хочет возвращать meta теги. В ответе приходит cdata<const char *>: 0x09658b80 что в итоге Stre.
Код:
ffi.string(ffi.cast("const char*", meta), ffi.sizeof(meta))

А BASS_ErrorGetCode() дает 0, тобишь все в порядке, что не так?
Пример музыки с тегами плиз и сама функция BASS_ChannelGetTags
 

itsLegend

Фонд борьбы за жуков 🐞
Автор темы
Администратор
2,696
1,468
https://www.blast.hk/threads/1066/
Хз.
Насчет StreamUrl сказать ничего не могу, но StreamTitle возвращает:
Lua:
local ffi = require "ffi"

function main()
    if not isSampLoaded() then return end

    while not isSampAvailable() do
        wait(0)
    end

    bass = require "lib.bass"
    if bass ~= nil then
        radio = bass.BASS_StreamCreateURL("http://online.radiorecord.ru:8102/club_64", 0, bassFlagsOrOperation({BASS_STREAM_BLOCK, BASS_STREAM_STATUS, BASS_STREAM_AUTOFREE}), nil, nil)
       bass.BASS_ChannelSetAttribute(radio, BASS_ATTRIB_VOL, 0.1)
       bass.BASS_ChannelPlay(radio, false)

        local tag_meta = bass.BASS_ChannelGetTags(radio, BASS_TAG_META) -- StreamTitle='xxx';StreamUrl='xxx';
        if tag_meta ~= nil then
            tag_meta = ffi.string(tag_meta)
            print(tag_meta)

            local streamTitle = tag_meta:match("StreamTitle='([%w%s%p]+)'")
            local streamUrl = tag_meta:match("StreamUrl='([%w%s%p]+)'")

            if streamTitle ~= nil then print("Title: " .. streamTitle) end
            if streamUrl ~= nil then print("Url: " .. streamUrl) end
        else
            print("Error on get a meta-tags of the stream: " .. bass.BASS_ErrorGetCode())
        end
    end

    wait(-1)
end

function onExitScript()
    if radio ~= nil then
        bass.BASS_StreamFree(radio)
    end
end

function bassFlagsOrOperation(flags)
    local result = 0
    for i, v in pairs(flags) do
        result = bit.bor(result, v)
    end
    return result
end
 

im0rg

Известный
Друг
587
216
Хз.
Насчет StreamUrl сказать ничего не могу, но StreamTitle возвращает:
Lua:
local ffi = require "ffi"

function main()
    if not isSampLoaded() then return end

    while not isSampAvailable() do
        wait(0)
    end

    bass = require "lib.bass"
    if bass ~= nil then
        radio = bass.BASS_StreamCreateURL("http://online.radiorecord.ru:8102/club_64", 0, bassFlagsOrOperation({BASS_STREAM_BLOCK, BASS_STREAM_STATUS, BASS_STREAM_AUTOFREE}), nil, nil)
       bass.BASS_ChannelSetAttribute(radio, BASS_ATTRIB_VOL, 0.1)
       bass.BASS_ChannelPlay(radio, false)

        local tag_meta = bass.BASS_ChannelGetTags(radio, BASS_TAG_META) -- StreamTitle='xxx';StreamUrl='xxx';
        if tag_meta ~= nil then
            tag_meta = ffi.string(tag_meta)
            print(tag_meta)

            local streamTitle = tag_meta:match("StreamTitle='([%w%s%p]+)'")
            local streamUrl = tag_meta:match("StreamUrl='([%w%s%p]+)'")

            if streamTitle ~= nil then print("Title: " .. streamTitle) end
            if streamUrl ~= nil then print("Url: " .. streamUrl) end
        else
            print("Error on get a meta-tags of the stream: " .. bass.BASS_ErrorGetCode())
        end
    end

    wait(-1)
end

function onExitScript()
    if radio ~= nil then
        bass.BASS_StreamFree(radio)
    end
end

function bassFlagsOrOperation(flags)
    local result = 0
    for i, v in pairs(flags) do
        result = bit.bor(result, v)
    end
    return result
end
спасибо. Нашел свой косяк
 
Статус
В этой теме нельзя размещать новые ответы.