Ir para conteúdo
  • 0

[ Pedido ] Math.ramdon em uma script de sound ambient.


Developer Berg

Pergunta

olá gente, estou usando o Advanced Sound do Vyctor17 para soltar sons em certas posições, mais ou menos que nem o Rc-Sound, e queria pedir para alguém experiente fazer um Math.ramdon nessa script para tocar dois ou mais sons na mesma área sendo que aleatório os sons, e se vc entrar e sair dessa área, ela troca de musica aleatória também, que nem o pxg, ou padventures que os sistemas de sons lá é assim.

 

Script

 

 

 

require('advsound')
require('ex')

SOUNDS_CONFIG = {
	folder = 'mods/Advanced Sound/Sounds/',
	loop=false,
	start_paused=false,
	checkInterval = 500,
}



local UPDATESOUND_OPCODE = 85
local PAUSESOUND_OPCODE = 81

SOUNDS = {--area sounds
	{fromPos = {x = 000, y = 000, z = 0}, toPos = {x = 000, y = 000, z = 0}, sound = "Musica.mp3"},
}
local toggleSoundEvent
local e
local audio = nil
local window = nil
local volume = 100
local str
function init()
	connect(g_game, { onGameEnd = terminate })
	window = modules.client_options.audioPanel
	str = string.explode(window:getChildById('musicSoundVolumeLabel'):getText(), ":")
	volume = tonumber(str[2])
	ProtocolGame.registerExtendedOpcode(UPDATESOUND_OPCODE, getSound)
	ProtocolGame.registerExtendedOpcode(PAUSESOUND_OPCODE, pauseSound)
	e = cycleEvent(iniciar, SOUNDS_CONFIG.checkInterval)
end
function iniciar()
	if (g_game.isOnline()) then
		removeEvent(e)
		toggleSoundEvent = addEvent(startAsound, SOUNDS_CONFIG.checkInterval)
	end
end

local m 
function startAsound()
	local player = g_game.getLocalPlayer()
	if not player then return end
	
	local pos = player:getPosition()
	for i = 1, #SOUNDS do
		if(isInPos(pos, SOUNDS[i].fromPos, SOUNDS[i].toPos)) then
			if audio == nil then
				m = advsound.playMusic(SOUNDS_CONFIG.folder..SOUNDS[i].sound, true, SOUNDS_CONFIG.start_paused)
				str = string.explode(window:getChildById('musicSoundVolumeLabel'):getText(), ":")
				volume = tonumber(str[2])
				advsound.setVolume(m, volume/100)
				audio = true
			end
		else
			audio = nil
			advsound.setPaused(m, true)
			removeEvent(toggleSoundEvent)
		end
	end
	toggleSoundEvent = scheduleEvent(startAsound, SOUNDS_CONFIG.checkInterval)
end

local music
function getSound(protocol, opcode, buffer)
	local cof = string.explode(buffer, "|")
	local conff = {
		["true"] = true, 
		["false"] = false,
	}
	music = advsound.playMusic(SOUNDS_CONFIG.folder..cof[1],  conff[cof[2]], SOUNDS_CONFIG.start_paused)
	str = string.explode(window:getChildById('musicSoundVolumeLabel'):getText(), ":")
	volume = tonumber(str[2])
	advsound.setVolume(music, volume/100)
end


function pauseSound(protocol, opcode, buffer)
	if opcode == 81 then
		advsound.pauseAll()
	end
end

function terminate()
	disconnect(g_game, { onGameEnd = terminate })
	e = cycleEvent(iniciar, SOUNDS_CONFIG.checkInterval)
	audio = nil
	advsound.pauseAll()
end

function isInPos(pos, fromPos, toPos)
	return
		pos.x>=fromPos.x and
		pos.y>=fromPos.y and
		pos.z>=fromPos.z and
		pos.x<=toPos.x and
		pos.y<=toPos.y and
		pos.z<=toPos.z
end

 

 


up


Up


Up


up


up

Editado por ricardoberg
Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Cara nao precisa saber como por som, basta saber ler o script. E facil fazer essa mudança, você quer que seja aleatório ppr área?

 

To no celular, mas basicamente:

 

SOUNDS = {--area sounds

{fromPos = {x = 000, y = 000, z = 0}, toPos = {x = 000, y = 000, z = 0}, sound = "Musica.mp3"},

}

 

Troque sound="musica.mp3"},

 

Por

sound = {"Musica.mp3", "Musica2.mp3}},

 

Onde tiver SOUNDS.sound troque por SOUNDS.sound[math.random(#SOUNDS.sound)].

Link para o comentário
Compartilhar em outros sites

  • 0

Cara nao precisa saber como por som, basta saber ler o script. E facil fazer essa mudança, você quer que seja aleatório ppr área?

 

To no celular, mas basicamente:

 

SOUNDS = {--area sounds

{fromPos = {x = 000, y = 000, z = 0}, toPos = {x = 000, y = 000, z = 0}, sound = "Musica.mp3"},

}

 

Troque sound="musica.mp3"},

 

Por

sound = {"Musica.mp3", "Musica2.mp3}},

 

Onde tiver SOUNDS.sound troque por SOUNDS.sound[math.random(#SOUNDS.sound)].

ae cara valeu kk, n sou bom em script, consigo ler as scripts mas n sei como fazer kk :hehe: só mais uma ajudinha, como eu poderia colocar sons em mais áreas com essa script ? já tentei assim na tabela mais n vai, se eu colocar assim, só fica tocando a primeira área da tabela, e as vezes até mesmo n toca nem uma das duas.

SOUNDS = {--area sounds
{fromPos = {x = 000, y = 000, z = 0}, toPos = {x = 000, y = 000, z = 0}, sound = {"Saffron.mp3"}},
{fromPos = {x = 000, y = 000, z = 0}, toPos = {x = 000, y = 000, z = 0}, sound = {"Cerulean.mp3"}},
}

como eu poderia colocar sons em mais áreas ? pq desse jeito ai que mostrei na tabela n funciona :/

Link para o comentário
Compartilhar em outros sites

  • 0

SOUNDS = {--area sounds

{fromPos = {x = x1, y = y1, z = z1}, toPos = {x = x2, y = y2, z = z2}, sound = {"Saffron.mp3"}},

{fromPos = {x = x3, y = y3, z = z3}, toPos = {x = x4, y = y4, z = z4}, sound = {"Cerulean.mp3"}},

}

 

Me manda o que você colocou ai pra eu ver

Link para o comentário
Compartilhar em outros sites

  • 0

SOUNDS = {--area sounds

{fromPos = {x = x1, y = y1, z = z1}, toPos = {x = x2, y = y2, z = z2}, sound = {"Saffron.mp3"}},

{fromPos = {x = x3, y = y3, z = z3}, toPos = {x = x4, y = y4, z = z4}, sound = {"Cerulean.mp3"}},

}

 

Me manda o que você colocou ai pra eu ver

skulls, eu coloquei assim.

SOUNDS = {--area sounds
	{fromPos = {x = 1045, y = 1042, z = 7}, toPos = {x = 1065, y = 1055, z = 7}, sound = {"Saffron.mp3", "Saffron2.mp3"}},
	{fromPos = {x = 1045, y = 1091, z = 7}, toPos = {x = 1057, y = 1103, z = 7}, sound = {"Cerulean.mp3", "Cerulean2.mp3"}},

mas se eu colocar assim, as duas áreas ai que está configuradas nas 2 tags n está funcionando, as 2 param de funcionar, mas se eu deixar assim.

SOUNDS = {--area sounds
	{fromPos = {x = 1045, y = 1042, z = 7}, toPos = {x = 1065, y = 1055, z = 7}, sound = {"Saffron.mp3", "Saffron2.mp3"}},

ela funciona normalmente, ela n funciona se eu adicionar mais de uma área na script.

Link para o comentário
Compartilhar em outros sites

  • 0

Posta os erros, por favor. Me ajude a te ajudar, coloca o maximo de informações que tiver, xD

kk n tem erros pow, não aparece erros no terminal, se aparecesse iria facilitar mesmo kk, é pq esse n é o Rc-sound que todos usam, essa é uma script feita pelo Vytor17, tipo, se eu configurar a script só com essa tag na tabela.

{fromPos = {x = 1045, y = 1042, z = 7}, toPos = {x = 1065, y = 1055, z = 7}, sound = {"Saffron.mp3", "Saffron2.mp3"}},

pega normal, vai ficar tocando as musicas normalmente rs, mas se eu adicionar outra tag na tabela sem apagar essa que já tinha, no caso ficando as duas tags na tabela, tipo assim

{fromPos = {x = 1045, y = 1042, z = 7}, toPos = {x = 1065, y = 1055, z = 7}, sound = {"Saffron.mp3", "Saffron2.mp3"}},
{fromPos = {x = 1045, y = 1091, z = 7}, toPos = {x = 1057, y = 1103, z = 7}, sound = {"Cerulean.mp3", "Cerulean2.mp3"}},

ela para de funcionar, n pega mais som em nem uma área, nem na primeira, e nem na segunda tag que adicionei :/ e como falei, não aparece nem um erro no terminal :/

Link para o comentário
Compartilhar em outros sites

  • 0

Posta a ultima versaobai por favor.

olha ai.

 

 

 

require('advsound')
require('ex')

SOUNDS_CONFIG = {
	folder = 'mods/Advanced Sound/Sounds/',
	loop=false,
	start_paused=false,
	checkInterval = 500,
}



local UPDATESOUND_OPCODE = 85
local PAUSESOUND_OPCODE = 81

SOUNDS = {--area sounds
	{fromPos = {x = 1045, y = 1042, z = 7}, toPos = {x = 1065, y = 1055, z = 7}, sound = {"Saffron.mp3", "Saffron2.mp3"}},
	{fromPos = {x = 1045, y = 1091, z = 7}, toPos = {x = 1057, y = 1103, z = 7}, sound = {"Cerulean.mp3", "Cerulean2.mp3"}},
}
local toggleSoundEvent
local e
local audio = nil
local window = nil
local volume = 100
local str
function init()
	connect(g_game, { onGameEnd = terminate })
	window = modules.client_options.audioPanel
	str = string.explode(window:getChildById('musicSoundVolumeLabel'):getText(), ":")
	volume = tonumber(str[2])
	ProtocolGame.registerExtendedOpcode(UPDATESOUND_OPCODE, getSound)
	ProtocolGame.registerExtendedOpcode(PAUSESOUND_OPCODE, pauseSound)
	e = cycleEvent(iniciar, SOUNDS_CONFIG.checkInterval)
end
function iniciar()
	if (g_game.isOnline()) then
		removeEvent(e)
		toggleSoundEvent = addEvent(startAsound, SOUNDS_CONFIG.checkInterval)
	end
end

local m 
function startAsound()
	local player = g_game.getLocalPlayer()
	if not player then return end
	
	local pos = player:getPosition()
	for i = 1, #SOUNDS do
		if(isInPos(pos, SOUNDS[i].fromPos, SOUNDS[i].toPos)) then
			if audio == nil then
				m = advsound.playMusic(SOUNDS_CONFIG.folder..SOUNDS[i].sound[math.random(#SOUNDS[i].sound)], true, SOUNDS_CONFIG.start_paused)
				str = string.explode(window:getChildById('musicSoundVolumeLabel'):getText(), ":")
				volume = tonumber(str[2])
				advsound.setVolume(m, volume/100)
				audio = true
			end
		else
			audio = nil
			advsound.setPaused(m, true)
			removeEvent(toggleSoundEvent)
		end
	end
	toggleSoundEvent = scheduleEvent(startAsound, SOUNDS_CONFIG.checkInterval)
end

local music
function getSound(protocol, opcode, buffer)
	local cof = string.explode(buffer, "|")
	local conff = {
		["true"] = true, 
		["false"] = false,
	}
	music = advsound.playMusic(SOUNDS_CONFIG.folder..cof[1],  conff[cof[2]], SOUNDS_CONFIG.start_paused)
	str = string.explode(window:getChildById('musicSoundVolumeLabel'):getText(), ":")
	volume = tonumber(str[2])
	advsound.setVolume(music, volume/100)
end


function pauseSound(protocol, opcode, buffer)
	if opcode == 81 then
		advsound.pauseAll()
	end
end

function terminate()
	disconnect(g_game, { onGameEnd = terminate })
	e = cycleEvent(iniciar, SOUNDS_CONFIG.checkInterval)
	audio = nil
	advsound.pauseAll()
end

function isInPos(pos, fromPos, toPos)
	return
		pos.x>=fromPos.x and
		pos.y>=fromPos.y and
		pos.z>=fromPos.z and
		pos.x<=toPos.x and
		pos.y<=toPos.y and
		pos.z<=toPos.z
end

function Play(sound, loop, vol)
    music = advsound.playMusic('data/sounds/'..sound, loop, false) -- Play("Nome Da Musica.mp3", true, 0.5) --
    advsound.setVolume(music, vol)
    return true
end

 

 

up

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...