Помогите найти ошибку в скрипте

Diego_Sativa

Известный
Автор темы
575
60
По идее это чудо должно воспроизводить звук по истечении заданного времени, отсчет которого начинается когда в чате появится текст :

Загружено 40000 груза, на сумму 13626 вирт. Скидка: 2374 вирт
Вы заработали 28000 вирт, из которых 14374 вирт будет добавлено к вашей зарплате

притом цифры должны быть не постоянны.

Lua:
local samp = require 'samp.events'
local audio = loadAudioStream("moonloader/pisk.mp3")
local timer = -1

function main()
    while not isSampAvailable() do wait(0) end
        if timer > 0 and os.clock() - timer >= 10 then
            setAudioStreamState(audio, 1)
            timer = -1
        end
    end
end

function samp.onServerMessage(clr, msg)
    timer = msg:find('^Загружено (%d+) груза, на сумму (%d+) вирт. Скидка: (%d+) вирт') and os.clock() or -1
end
 

P U L V I L I Z A T O R

Участник
94
29
Ошибка в том, что пропущен второй цикл, чтобы проверять бесконечно таймер. Замени main на это попробуй.

Example:
function main()
    while not isSampAvailable() do wait(0) end
    while true do
        wait(10)
        if timer > 0 and os.clock() - timer >= 10 then
            setAudioStreamState(audio, 1)
            timer = -1
        end
    end
end
 

Diego_Sativa

Известный
Автор темы
575
60
Ошибка в том, что пропущен второй цикл, чтобы проверять бесконечно таймер. Замени main на это попробуй.

Example:
function main()
    while not isSampAvailable() do wait(0) end
    while true do
        wait(10)
        if timer > 0 and os.clock() - timer >= 10 then
            setAudioStreamState(audio, 1)
            timer = -1
        end
    end
end
й:
local samp = require 'samp.events'

local audio = loadAudioStream("moonloader/pisk.mp3")

local timer = -1



function main()

    while not isSampAvailable() do wait(0) end

    while true do

        wait(10)

        if timer > 0 and os.clock() - timer >= 10 then

            setAudioStreamState(audio, 1)

            timer = -1

        end

    end

end



function samp.onServerMessage(clr, msg)

    timer = msg:find('^Загружено (%d+) груза, на сумму (%d+) вирт. Скидка: (%d+) вирт') and os.clock() or -1

end
Не работает.
 

P U L V I L I Z A T O R

Участник
94
29
й:
local samp = require 'samp.events'

local audio = loadAudioStream("moonloader/pisk.mp3")

local timer = -1



function main()

    while not isSampAvailable() do wait(0) end

    while true do

        wait(10)

        if timer > 0 and os.clock() - timer >= 10 then

            setAudioStreamState(audio, 1)

            timer = -1

        end

    end

end



function samp.onServerMessage(clr, msg)

    timer = msg:find('^Загружено (%d+) груза, на сумму (%d+) вирт. Скидка: (%d+) вирт') and os.clock() or -1

end
Не работает.

У тя файл pisk.mp3 то в папке есть?

Скачал звук с инета, зарегал функцию для теста. Звук проигрался через 10 секунд. Чекнул регулярку и с ней тоже все хорошо. Попробуй вставить print рядом с проигрыванием звука. Если принт выпадет, а звук нет, то у тебя что то со звуком в игре не так или тупо файла нет в папке.
 

Вложения

  • 1708772395092.png
    1708772395092.png
    86.7 KB · Просмотры: 10
Последнее редактирование:

Diego_Sativa

Известный
Автор темы
575
60
У тя файл pisk.mp3 то в папке есть?

Скачал звук с инета, зарегал функцию для теста. Звук проигрался через 10 секунд. Чекнул регулярку и с ней тоже все хорошо. Попробуй вставить print рядом с проигрыванием звука. Если принт выпадет, а звук нет, то у тебя что то со звуком в игре не так или тупо файла нет в папке.
Звук в папке есть, другой скрипт его использует. В логах ошибок нету.
Может неправильно сделан текст? Попробую сейчас переписать твои строки со скриншота и проверить.

Lua:
local samp = require 'samp.events'
local audio = loadAudioStream("moonloader/pisk.mp3")
local timer = -1

function main()
    while not isSampAvailable() do wait(0) end

    sampRegisterChatCommand('test', function() timer = os.clock() end)
    
    while true do
        wait(10)
        if timer > 0 and os.clock() - timer >= 10 then
            setAudioStreamState(audio, 1)
            print("test")
            timer = -1
        end
    end
end

function samp.onServerMessage(clr, msg)
    timer = msg:find('^Загружено (%d+) груза, на сумму (%d+) вирт. Скидка: (%d+) вирт') and os.clock() or -1
end
Перепечатал код со скриншота но не работает, я так понял по команде в чат /test должно писаться чат - test?
Нету даже этого. И звука темболее
 
Последнее редактирование:

P U L V I L I Z A T O R

Участник
94
29
Звук в папке есть, другой скрипт его использует. В логах ошибок нету.
Может неправильно сделан текст? Попробую сейчас переписать твои строки со скриншота и проверить.

Lua:
local samp = require 'samp.events'
local audio = loadAudioStream("moonloader/pisk.mp3")
local timer = -1

function main()
    while not isSampAvailable() do wait(0) end

    sampRegisterChatCommand('test', function() timer = os.clock() end)
   
    while true do
        wait(10)
        if timer > 0 and os.clock() - timer >= 10 then
            setAudioStreamState(audio, 1)
            print("test")
            timer = -1
        end
    end
end

function samp.onServerMessage(clr, msg)
    timer = msg:find('^Загружено (%d+) груза, на сумму (%d+) вирт. Скидка: (%d+) вирт') and os.clock() or -1
end
Перепечатал код со скриншота но не работает, я так понял по команде в чат /test должно писаться чат - test?
Нету даже этого. И звука темболее
Должно писаться в консоль test через 10 секунд, а не в чат.