Ir para conteúdo
  • 0

Ajuda Com Tabela.


Developer Berg

Pergunta

Olá Gente, queria pedir a ajuda de vcs hoje, estou usando o mod Advanced Sound do Vyctor17, mas tem um bug na tabela do mod de sound, tipo assim a tabela é essa.

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

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.

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

alguém me ajuda pfv, queria poder colocar sons em mais áreas da tabela sem parar de funcionar os sons.

 

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 = 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

 

 

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Excelente. Acho que a gnt pode fazer uma gambiarra.

 

Vc vai ter que fazer cópias desse mod pra cada área... Ou seja, vc vai deixar o mod do ejito que ele funciona (o jeito original). Aí pra cada área a mais que vc queira que esse mod funcione, vc vai fazer uma copia do arquivo na pasta mods e acrescentar uma numeração a mais no final do nome do arquivo.

Exemplo:

Suponhamos que o nome do arquivo seja modSound.lua (esse é o arquivo do jeito funcional, arquivo original).
Aí vc vai criar uma cópia dele e nomeá-la para modSound2.lua (aí vc entra nessa copia e põe a nova área).
Aí se vc quiser uma 3° área, copia o arquivo dnv e nomeia pra modSound3.lua, etc, etc, etc.

 

Acho que consegui explicar... Vê se funciona.

Link para o comentário
Compartilhar em outros sites

  • 0

Excelente. Acho que a gnt pode fazer uma gambiarra.

 

Vc vai ter que fazer cópias desse mod pra cada área... Ou seja, vc vai deixar o mod do ejito que ele funciona (o jeito original). Aí pra cada área a mais que vc queira que esse mod funcione, vc vai fazer uma copia do arquivo na pasta mods e acrescentar uma numeração a mais no final do nome do arquivo.

 

Exemplo:

Suponhamos que o nome do arquivo seja modSound.lua (esse é o arquivo do jeito funcional, arquivo original).

Aí vc vai criar uma cópia dele e nomeá-la para modSound2.lua (aí vc entra nessa copia e põe a nova área).

Aí se vc quiser uma 3° área, copia o arquivo dnv e nomeia pra modSound3.lua, etc, etc, etc.

 

Acho que consegui explicar... Vê se funciona.

ok vou tentar aqui, mas poderia ser assim também, n testei ainda, mas vai que aconteça kk, tipo em vez de fazer cópia do arquivo completo, poderia separar a função que toca o som na área da tabela, e criar uma nova script só com essa função e com a tabela, dai eu fazia copias dela se eu quisesse colocar novas áreas, mas vou testar aqui pra ver se vai funcionar desse método.

 

editado.

 

a da primeira área n pegou, no caso o som da script original, mas o da cópia pegou que no caso é a segunda script que criei e coloquei uma posição diferente.

n sei se isso é defeito da script, mas to começando a achar que esse negocio das posições é algo nas dlls que o vyctor17 passou, pq o sistema é via dlls do otc, e uma script no server, e opcode no jogo, o ruim é que n posso passar o sistem todo pq ele n deu permissão :/

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

×
×
  • Criar Novo...