Звуковое оповещение и принятие диалога LUA

6y6Jluk

Новичок
Автор темы
11
0
Версия MoonLoader
.026-beta
Здравствуйте. Хочу написать такой скрипт, который при появлении заказа такси автоматически принимает его и делает звуковое оповещение (какая-то музыка). Только вот я недавно начал изучать lua и всё что я смог так это сделать такое... Разные советы по типу "запуск проверки заголовка диалога в потоке, при совпадении заголовка - нажатие enter." до меня не доходят, опыта мало не знаю как реализовать. Было бы отлично если б сразу на примере мне показали :)

Вопрос №1 - как сделать принятие диалога, тоесть надо что б после появления /taxilist скрипт нажал 1 раз ENTER.
Вопрос №2 - как сделать после этого принятия заказа что б был звуковой сигнал какой-то.

Вот мой код:
Lua:
script_name("AutoTaxi")


require "lib.moonloader"
local sampev = require 'lib.samp.events'
local keys = require 'vkeys'

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage('AutoTaxi Load', 0xFFFF00)
  
  
    while true do
    wait(0) 
    end
end


function sampev.onServerMessage(color, text)
    if string.find(text, 'вызывает такси класса {FFFFFF}Бизнес{FFFF42}.Растояние:', 1, true) then
        sampSendChat('/taxilist')
    end
end
 

vegas

Известный
552
442
По его примеру сделай
 

6y6Jluk

Новичок
Автор темы
11
0
По его примеру сделай
не могу по его примеру, как сделать автопринятие диалога я разобрался. Вопрос актуальный про оповещение
 

Basho

Известный
148
52
прикручиваешь events
Lua:
local sampev = require 'lib.samp.events'
создаешь папку, куда закидываешь mp3 звук оповещения
Lua:
if not doesDirectoryExist("moonloader/primer") then
    createDirectory("moonloader/primer")
end
закидываешь туда нужный звук
далее создаешь условие при котором оно должно проигрываться
Код:
if "условие" and doesFileExist("moonloader/primer/primer.mp3") then
        local audio = loadAudioStream('moonloader/primer/primer.mp3')
        setAudioStreamState(audio, 1)
    end
Вот что у меня получилось (при вводе чит-кода "test", если он становится активным, воспроизводит звук):
Lua:
local sampev = require 'lib.samp.events'

if not doesDirectoryExist("moonloader/primer") then
    createDirectory("moonloader/primer")
end
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
while true do
    wait(0)
    if testCheat("test") then
      printStringNow('test+', 1000)
      test = not test
      if not test then
      printStringNow('test-', 1000)
      end
if test and doesFileExist("moonloader/primer/primer.mp3") then
        local audio = loadAudioStream('moonloader/primer/primer.mp3')
        setAudioStreamState(audio, 1)
    end
    end
end
end
Делал по подобию колокола, который скинули выше
@6y6Jluk
 
Последнее редактирование:
  • Нравится
Реакции: 6y6Jluk

Basho

Известный
148
52
кстати, можешь мой код взять, автоматически принимает заказ, если расстояние меньше указанного

Lua:
local ev = require 'lib.samp.events'

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand("taxi", taxx)
    while true do
        wait(0)
        if testt then
            sampAddChatMessage("{f0ff00}ну чет работает", -1)
            sampSendChat("/taxilist")
            lol = sampGetCurrentDialogId()
            sampSendDialogResponse(tonumber(lol), 1, 0, nil)
            wait(200)
            sampCloseCurrentDialogWithButton(1)
            testt = false
            active = false
        end
    end
end

function taxx()
    active = not active
    if active then
        sampAddChatMessage("включиль", -1)
    end
    if not active then
        sampAddChatMessage("выключиль", -1)
        testt = false
    end
end



function ev.onServerMessage(color, text) -- Поиск сообщения в чате
    if active then
        if text:find('^%[TAX%I] {.-}(%a+_%a+){.+} вызывает такси класса {FFFFFF}Бизнес{FFFF42}.Растояние: {.-}(.+) км{FFFF42}') then
            local dist2 = 1.5
            local nick, dist = text:match('^%[TAX%I] {.-}(%a+_%a+){.+} вызывает такси класса {FFFFFF}Бизнес{FFFF42}.Растояние: {.-}(.+) км{FFFF42}')
            if tonumber(dist) <= tonumber(dist2) then
                sampAddChatMessage('{ffffff}[Напоминание] {FFFF42}Расстояние:{ffffff} '..dist..'; {FFFF42}Имя заказчика:{ffffff} '..nick, - 1)
                testt = true
            end
                if tonumber(dist) > tonumber(dist2) then
                sampAddChatMessage('{ffffff}[Внимание] {FFFF42}Заказ '..nick..' не принят, т.к расстояние:{ffffff} '..dist..' больше, чем '..dist2, - 1)
                testt = false
            end
        end
    end
end
 
  • Нравится
Реакции: 6y6Jluk