Ir para conteúdo

Featured Replies

Postado
  • Autor
Em 15/02/2016 13:33:27, zangoosedoido disse:

ok, vou da umas olhadas aqui nas sources do otc. poderia me falar como eu faço um math.random ali nas funções do som nos ambientes para tocar musicas aleatórias na mesma área ? tipo, colocaria mais de uma musica para tocar na mesma área da tabela, e essas musicas ficaria tocando aleatoriamente ao entrar e sair da área que ta configurado para tocar as musicas. tipo igual ao pxg se vc conhece.

faz uma tabela com as musicas e roda o math.random nela.

  • 2 weeks later...
  • Respostas 72
  • Visualizações 16.7k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Obrigado aí fera. Lembrei de uma fonte que há diversos sons legais para servidores voltados ao Tibia normal, os programas "RPG Maker". E fora também que esse programa contêm um recurso para extrair

  • não, eu já fiz o sistema e disponibilizei de graça. não sou obrigador a dar suporte é praticamente só jogar as coisas na pasta sabendo o minimo necessário pra se ter um otserv não é pra ter problema a

  • dentro do download, esta tudo separado por pasta, clientside, serverside e suas respectivas pastas sendo que o serverside só tem função para colocar na lib não tem instalação é só jogar as coisas na p

Posted Images

Postado
Em 15/02/2016 06:08:41, vyctor17 disse:

pra sair som nos passos você tem que criar um novo callback creaturescript nas sources, que eu chamei onTryMove, é um callback que é chamado toda vez que alguém tenta andar, e usar isso pra soltar o som, sobre o som ambiente eu me lembro de estar tudo funcionando bem, mas você pode tentar fazer ele pelo servidor ao invés do cliente, usando de referencia oque eu fiz no cliente para passar pro server-side. ou então usar o proprio sistema de som do otclient só para o som ambiente, funcionando de forma separada.

Vyctor conseguir fazer o math.ramdon, eu fiz isso.

 

troquei  sound="musica.mp3"},  por  sound = {"Musica.mp3", "Musica2.mp3}},

e troquei  SOUNDS.sound  por  SOUNDS.sound[math.random(#SOUNDS.sound)]

 

e funcionou normal, mas to com uma duvida que é o seguinte,

 

se eu colocar somente um lugar com som nessa tabela funciona normalmente, mas se eu acrescentar 2 tags na tabela, para adicionar som em outros cantos alem desse canto que ta ai na tabela tipo 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"}},
}

o som n toca, alias, o som das duas áreas n tocam, nem a primeira que no caso é a de saffron, e nem a segunda que é a de cerulean, só funciona quando tem somente uma tag na tabela que nem o primeiro exemplo que mostrei e vou mostrar agr denovo.

 

Citar


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

 

a script ta assim.

 

Spoiler


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

 

  • 2 weeks later...
  • 1 month later...
  • 2 months later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo