При заходе в игру не работает скрипт

l-m

Новичок
Автор темы
28
1
Версия 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
 
Решение
попробуй

Lua:
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 -- статус звука
----------- 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...

qdIbp

Автор темы
Проверенный
1,386
1,141
попробуй

Lua:
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 -- статус звука
----------- 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-- запускается скрипт при запуске игры
    
    local sound = loadAudioStream(getWorkingDirectory().."/resource/audio/Otvet.mp3") -- ЗВУК
    local soundsms = loadAudioStream(getWorkingDirectory().."/resource/audio/SMS1.mp3") -- ЗВУК
    local sounds= loadAudioStream(getWorkingDirectory().."/resource/audio/Вау.mp3") -- ЗВУК
    
    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
 
  • Влюблен
Реакции: l-m

l-m

Новичок
Автор темы
28
1
попробуй

Lua:
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 -- статус звука
----------- 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-- запускается скрипт при запуске игры
   
    local sound = loadAudioStream(getWorkingDirectory().."/resource/audio/Otvet.mp3") -- ЗВУК
    local soundsms = loadAudioStream(getWorkingDirectory().."/resource/audio/SMS1.mp3") -- ЗВУК
    local sounds= loadAudioStream(getWorkingDirectory().."/resource/audio/Вау.mp3") -- ЗВУК
   
    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
local sound крашит, убрал local, работает все шикарно. Спасибо огромное!