- Версия MoonLoader
- .026-beta
При определенном условии ( ловит текст с чата ) воспроизводится звук, но прикол в том, чтобы он заработал после захода в игру, нужно воспользоваться комбинацией Ctrl+R для перезагрузки всех скриптов ( в том числе audio ). После этого все шик. Мб я не очень понимаю в коде, не эксперт(
Код:
require("lib.moonloader")
local sampev = require('lib.samp.events') --[[если в скрипте пользуешься
только одной функцией из евентс,
тогда лучше делай так
require('lib.samp.events').onServerMessage = function(color, text)
]]
local ffi = require('ffi')
local as_action = require('moonloader').audiostream_state -- звук
local sound = loadAudioStream(getWorkingDirectory().."/resource/audio/Otvet.mp3") -- ЗВУК
local soundsms = loadAudioStream(getWorkingDirectory().."/resource/audio/SMS1.mp3") -- ЗВУК
local sounds= loadAudioStream(getWorkingDirectory().."/resource/audio/Вау.mp3") -- ЗВУК
----------- COLOR --------------
local color = 0xFFFFFF
local main_color_text = "{5A90CE}"
local waite_color = "{FFFFFF}"
local red_color = "{FF0000}"
local purple_color = "{FF00FF}"
ffi.cdef [[
typedef int BOOL;
typedef unsigned long HANDLE;
typedef HANDLE HWND;
HWND GetActiveWindow(void);
BOOL ShowWindow(HWND hWnd, int nCmdShow);
]]
-----------------------------------------------------------------------------------------------------------------------
function main()
while not isSampAvailable() do wait(0) end-- запускается скрипт при запуске игры
sampAddChatMessage('{FF0000}[Audio] {FFFFFF}успешно загружен.', 0xFFFFFF)
hwin = ffi.C.GetActiveWindow() -- получает хэндл окна
-----------------------------------------------------------------------------------------------------------------------
--sampRegisterChatCommand
-------------------------------------------------------------------------------------------------------------------
wait(-1) -- если не используешь беск цикл юзай беск поток
end
function sampev.onServerMessage(color,text)
if text:find('text') then -- если найден текст "test" то
ffi.C.ShowWindow(hwin, 1) -- задает статус окну
setAudioStreamVolume(sound, 20) --громкость
setAudioStreamState(sound, 1) -- вкл ЗВУК
elseif text:find('text1') then -- если найден текст "test" то
ffi.C.ShowWindow(hwin, 1) -- задает статус окну
setAudioStreamVolume(sounds, 20) --громкость
setAudioStreamState(sounds, 1) -- вкл ЗВУК
end
if text:find('text2') then -- если найден текст "test" то
ffi.C.ShowWindow(hwin, 1) -- задает статус окну
setAudioStreamVolume(soundsms, 30) --громкость
setAudioStreamState(soundsms, 1) -- вкл ЗВУК
end
if text:find('text3') then -- если найден текст "test" то
ffi.C.ShowWindow(hwin, 1) -- задает статус окну
setAudioStreamVolume(sounds, 20) --громкость
setAudioStreamState(sounds, 1) -- вкл ЗВУК
end
end