- 1
- 0
- Версия MoonLoader
- Другое
Пытался написать скрипт через чат ГПТ. Суть: воспроизводит аудио файл при начале скрипта и при сообщении "Успешный вход. Приятной игры на сервере 🙂" Должен был завершать аудиофайл. Что имеем: есть рабочая версия скрипта,которая сама запускает аудио,но не может его остановить (остановка/плей отдельно через 2 клавиши). Есть НЕ РАБОЧАЯ версия,которую видимо сломал чат гпт. Он не может найти (или сработать на него) тригер сообщение для завершения аудиофайла.
1 версия:
2 версия СЛОМАННАЯ.
Сам в луа не шарю вообще. поэтому пытался через чат ГПТ. Если кто шарит и сможет помочь - спасибо. Если скрипт сможет сам подрубаться (при запуске) и офаться через тригер-сообщение -- Фунции с активациями по клавишам можно тупо убрать
Вроде бы работает,перед спавном аудио отключается,но строчка "sampAddChatMessage("{FF0000}[Waiting script by praysDEAD]: Sound OFF " .. i, 0xFF0000) -- Красный текст " не отображается. +в консоле сампфункса такой варнинг
[ML] (error) test.lua: ...s\Arizona Games Launcher\bin\arizona\moonloader\test.lua:30: attempt to call global 'sampGetCharHandle' (a nil value)
stack traceback:
...s\Arizona Games Launcher\bin\arizona\moonloader\test.lua: in function 'monitorPlayerSpawn'
...s\Arizona Games Launcher\bin\arizona\moonloader\test.lua:23: in function <...s\Arizona Games Launcher\bin\arizona\moonloader\test.lua:6>
[ML] (error) test.lua: Script died due to an error. (19DD9684)
Так же хотелось бы,чтобы при отключении от сервера скрипт повторно тригерился (как при попытки зайти на вайсити)[/CODE]
1 версия:
Lua:
require "lib.moonloader"
require "lib.sampfuncs"
local audioEffect
local isPlaying = false
function main()
repeat wait(2000) until isSampLoaded() -- Ждем, пока SA-MP загрузится
audioEffect = loadAudioStream("moonloader/music/sound.mp3") -- Убедитесь, что путь правильный
if audioEffect == -1 then
print("Ошибка: не удалось загрузить аудиофайл.")
return
end
setAudioStreamVolume(audioEffect, 0.2) -- Установка громкости на 20%
-- Выводим системное сообщение о том, что скрипт загружен
sendSystemMessage("{00FFFF}[Waiting script]: loaded successfully! [by praysdead]{FFFFFF}")
sendSystemMessage(' {00FFFF}[Waiting script]: To activate: "[" - ON | "]" - OFF"') -- Добавляется вторым абзацем
-- Автоматически запускаем аудиопоток при загрузке
setAudioStreamState(audioEffect, 1)
isPlaying = true
sendSystemMessage("Waiting script: Sound ON") -- Уведомление в чат
while true do
wait(0)
handleKeyPress() -- Вызов функции обработки нажатий клавиш
end
end
function handleKeyPress()
if not sampIsChatInputActive() then -- Проверка, активен ли ввод чата
if isKeyDown(0xDB) and not isPlaying then -- Проверка нажатия [ для воспроизведения
setAudioStreamState(audioEffect, 1) -- Воспроизводим звуковой поток
isPlaying = true
sendSystemMessage("Waiting script: Sound ON") -- Уведомление в чат
elseif isKeyDown(0xDD) and isPlaying then -- Проверка нажатия ] для остановки
setAudioStreamState(audioEffect, 0) -- Останавливаем звуковой поток
isPlaying = false
sendSystemMessage("Waiting script: Sound OFF") -- Уведомление в чат
end
end
end
function sendSystemMessage(message)
local color = isPlaying and 0x00FF00 or 0xFF0000 -- Зелёный, если звук включен, красный, если выключен
sampAddChatMessage(message, color) -- Отправляет системное сообщение
end
Lua:
require "lib.moonloader"
require "lib.sampfuncs"
local audioEffect
local isPlaying = false
function main()
repeat wait(2000) until isSampLoaded()
audioEffect = loadAudioStream("moonloader/music/sound.mp3")
if audioEffect == -1 then
print("Ошибка: не удалось загрузить аудиофайл.")
return
else
print("Аудиофайл загружен успешно.")
end
setAudioStreamVolume(audioEffect, 0.2)
sendSystemMessage("Script loaded successfully! Press [ to play sound | ] to stop sound")
while true do
wait(0)
handleKeyPress()
end
end
function sendSystemMessage(message)
local color = isPlaying and 0x00FF00 or 0xFF0000
sampAddChatMessage(message, color)
end
sampAddChatMessage = function(color, text)
if text:match('Успешный вход') and isPlaying then
setAudioStreamState(audioEffect, 0) -- Останавливаем звук
isPlaying = false
sendSystemMessage("Sound OFF due to server message")
print("Звук остановлен из-за сообщения 'Успешный вход'")
end
if text:match('Приятной игры') and isPlaying then
setAudioStreamState(audioEffect, 0) -- Останавливаем звук
isPlaying = false
sendSystemMessage("Sound OFF due to server message")
print("Звук остановлен из-за сообщения 'Приятной игры'")
end
end
function handleKeyPress()
if isKeyDown(0xDB) and not isPlaying then -- "[" для включения звука
setAudioStreamState(audioEffect, 1)
isPlaying = true
sendSystemMessage("Sound ON")
print("Звук включен")
elseif isKeyDown(0xDD) and isPlaying then -- "]" для отключения звука
setAudioStreamState(audioEffect, 0)
isPlaying = false
sendSystemMessage("Sound OFF")
print("Звук выключен")
end
end
Lua:
require "lib.moonloader"
require "lib.sampfuncs"
local audio
function main()
-- Ждем, пока SAMP полностью загрузится
repeat wait(2000) until isSampLoaded()
-- Загружаем аудиофайл
audio = loadAudioStream("moonloader/music/sound.mp3")
if audio == -1 then
sampAddChatMessage("{FF0000}Ошибка: не удалось загрузить аудиофайл.", 0xFF0000)
return
end
setAudioStreamVolume(audio, 0.2)
setAudioStreamState(audio, 1) -- Запускаем аудиопоток
sampAddChatMessage("{00FFFF}[Waiting script by prayDEAD]: Sound ON!", -1) -- Голубой текст
while true do
wait(2000)
monitorPlayerSpawn()
end
end
function monitorPlayerSpawn()
for i = 0, 1000 do -- Бежим по всем игрокам (максимально возможное количество)
if sampIsPlayerConnected(i) then
local playerPed = sampGetCharHandle(i) -- Получаем индекс педа игрока
if playerPed > 0 then
-- Если игрок есть в игре, проверяем его статус
if isPlayerSpawned(i) then
setAudioStreamState(audio, 0) -- Останавливаем аудиопоток
sampAddChatMessage("{FF0000}[Waiting script by praysDEAD]: Sound OFF " .. i, 0xFF0000) -- Красный текст
break
end
end
end
end
end
function isPlayerSpawned(playerId)
-- Проверяем, спавнится ли игрок
return sampIsPlayerSpawned(playerId)
end
[ML] (error) test.lua: ...s\Arizona Games Launcher\bin\arizona\moonloader\test.lua:30: attempt to call global 'sampGetCharHandle' (a nil value)
stack traceback:
...s\Arizona Games Launcher\bin\arizona\moonloader\test.lua: in function 'monitorPlayerSpawn'
...s\Arizona Games Launcher\bin\arizona\moonloader\test.lua:23: in function <...s\Arizona Games Launcher\bin\arizona\moonloader\test.lua:6>
[ML] (error) test.lua: Script died due to an error. (19DD9684)
Так же хотелось бы,чтобы при отключении от сервера скрипт повторно тригерился (как при попытки зайти на вайсити)[/CODE]
Последнее редактирование: