Anuncios Google

[LuaDEV] Reproducir sonido a base de una condición [Solucionado]

Hola, iré al grano.

Mi debilidad es que no logro hacer que reprodusca un sonido dando una condición. Sólo necesito un ejemplo de ello o agregar una línea de ello pero no se por donde empezar.

Aquí les dejo el code, todo funciona. Exepto que no he agregado la línea donde haga la condición para que al momento de que se detecte que la bateria ha sido coenctada a una fuente externa reprodusca el sonido.

 

-------|Bateria|-------
Bateria = {
x=440,
y=7,
x2=442,
y2=9,
 
	---|Colores|---
VerdeB=color.new(0,115,0),
RojoB=color.new(244,7,8),
Transparente=color.new(0,0,0,255),
	-----|IMG|-----
BateriaI=image.load("IMG/Bateria.png"),
BateriaC=image.load("IMG/BateriaCargando.png"),
SinBateria=image.load("IMG/SinBateria.png"),
	-----|SND|-----
BateriaCSND=sound.load("SND/BateriaCargando.wav"),
 
Batt = function()
Porcentaje=batt.percent()
	if Porcentaje >= 21 and Porcentaje <= 100 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,VerdeB,Porcentaje,100) end
	if Porcentaje <= 20 and Porcentaje >=0 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,RojoB,Porcentaje,100) end
	if not batt.exists() then Bateria.SinBateria:blit(Bateria.x,Bateria.y) end
	Bateria.BateriaI:blit(Bateria.x,Bateria.y)
	if batt.chargingstatus() == 1 then Bateria.BateriaC:blit(Bateria.x,Bateria.y) end
end	
}

 

Saludos. 


--[NO EXISTEN LOS LIMITES =D]--


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Jepte

para que se vuelva a

para que se vuelva a reprodusir ,solo mete este codigo dentro del bucle,

if batt.charging()==false then 
llave=1
end

no lo puse antes por que se me acabo el tiempo.

Imagen de Andres_Ne

No es por nada pero me parece

No es por nada pero me parece muy mal que den este tipo de code ya resuelto eh visto como regañan a personas por opreguntas mucho mas complejas que esta y aun asi no las ayudan del todo, pero el pide como hacer un sonido a base de una condicion y se la da como si nada,digo yo, entonces porque no ayudan de la misma manera a los demas?,con respecto a lo del post me parece muy facil hacer algo asi , solo es usar la cabeza y leer la documentacion... solo es algo asi

if controls.press("cross") or variable == true then 
--se repoduce el sonido
end

No tomen a mal este comentario,solo doy a dar mi opinion de que me parece injusto que ayuden a algunos y a otros no.


 

 

Imagen de gdljjrod

Cierto

Cierto que casi el código se lo han hecho todo de algo simple, y por lo menos yo he visto que a muchos se les ayuda por igual, a unos tal vez se les explica mejor y a otros no tanto, y yo he visto a muchos que inician en la programación y postean a cada rato pregunta sobre pregunta de lo que van leyendo en los tutoriales (como todo principiante por lo gral) y la clave como tú mismo lo dijiste es leerse la documentación (comprender que es lo que hacen las funciones y no solo aprenderse de memoria los nombres de las funciones) y practicar sobre practicar y ahh al último resulta que esa persona ya es todo o al menos quiere o pretende ser un gran coder.

Yo estoy aprendiendo C para PSP y en lo que voy leyendo y buscando en los foros (más de inglés) nada casi nada he levantado un post para que se me ayude en algo, es cierto que hay personas que ya saben y que me explican como mejorar o cambiar una parte del Code, pero creo que la mejor forma de aprender es prueba y error.


 

Imagen de PerezRE

By PerezRE

Hola andres. Es totalmente respetable tu opinión. Y tienes razón, este code es demasiado sencillo o fácil para los más avanzados (Hasta para mi es simple, y no es que me crea avanzado, si no todo lo contrario). Pero también he tratado varias modificaciones antes de postear aquí, no posteó sólo por que me "atore" sin intentar. 

Saludos.


--[NO EXISTEN LOS LIMITES =D]--

Imagen de Andres_Ne

Ok , me alegro que te metas

Ok , me alegro que te metas en la programacion jeje lastima que yo la deje ,, pero ahora voi a comprar de nuevo mi psp y meterme otra ves a programar  :)


 

 

Comprar de nuevo?

Comprar de nuevo? La vendiste???

 

Salu2!

Imagen de Andres_Ne

Jejeje si creo que fue mala

Jejeje si creo que fue mala elecion no?

Ya

Yo tengo 2 PSPs y no me atrevo a vender ni una, porqué una está a punto de morir...

 

Saludos!

Imagen de NEKERAFA

Mmm...

Vamos a ver, primero dejame que ordene un poco el código, corrija los errores y lo adapte un poquito a mi forma de programar...

-------|Bateria|-------
bateria = {
	x=440,
	y=7,
	x2=442,
	y2=9,
		---|Colores|---
	verde=color.new(0, 115, 0),
	rojo=color.new(244, 7, 8),
	transparente=color.new(0,0,0,0),
		-----|IMG|-----
	borde=image.load("IMG/Bateria.png"),
	carga=image.load("IMG/BateriaCargando.png"),
	sin=image.load("IMG/SinBateria.png"),
		-----|SND|-----
	sonido=sound.load("SND/BateriaCargando.wav"),
 
	mostrar = function()
		if batt.percent() > 20 and batt.percent() <= 100 then draw.pbar(bateria.x2, bateria.y2, 17, 5, transparente, bateria.verde, batt.percent(), 100)
		elseif Porcentaje <= 20 and Porcentaje > 0 then draw.pbar(bateria.x2, bateria.y2, 17, 5, transparente, bateria.rojo, batt.percent(), 100) end
		if not batt.exists() then bateria.sin:blit(bateria.x, bateria.y) end
		bateria.borde:blit(bateria.x, bateria.y)
		if batt.charging() then bateria.carga:blit(bateria.x, bateria.y) end
	end	
}

Primero, el valor alfa va de 0 a 255, siendo 0 activado totalmente (transparente) y 255 desactivado totalmente (opaco)

Puse como la segunda imagen como borde (No se como es la imagen, pero para que se entienda mejor).

Puedes utilizar la propia función batt.percent() sin tener que utilizan más variables, así como poner que si es mayor que 20 haga una cosa y si es menor o igual que 20 haga otra cosa.

Si quieres utilizar una variable que esta dentro de un array, necesitas poner un punto, a menos que la función donde la utilices este dentro del mismo array, que puedes utilizar self, sobre todo si estas haciendo un módulo.

Puedes utilizar mejor batt.charging() que batt.chargingstatus() .

 

Bueno, ahora a hacer tu trabajo. Primero cito:

PerezRE dijo:
[...]"la condición para que al momento de que se detecte que la bateria ha sido coenctada a una fuente externa reprodusca el sonido."

Ok, la propia función batt.charging() devuelve true si esta conectado al cargador, por lo que sería algo así:

-------|Bateria|-------
bateria = {
	x=440,
	y=7,
	x2=442,
	y2=9,
		---|Colores|---
	verde=color.new(0, 115, 0),
	rojo=color.new(244, 7, 8),
	transparente=color.new(0,0,0,0),
		-----|IMG|-----
	borde=image.load("IMG/Bateria.png"),
	carga=image.load("IMG/BateriaCargando.png"),
	sin=image.load("IMG/SinBateria.png"),
		-----|SND|-----
	sonido=sound.load("SND/BateriaCargando.wav"),
 
	mostrar = function()
		if batt.percent() > 20 and batt.percent() <= 100 then draw.pbar(bateria.x2, bateria.y2, 17, 5, transparente, bateria.verde, batt.percent(), 100)
		elseif Porcentaje <= 20 and Porcentaje > 0 then draw.pbar(bateria.x2, bateria.y2, 17, 5, transparente, bateria.rojo, batt.percent(), 100) end
		if not batt.exists() then bateria.sin:blit(bateria.x, bateria.y) end
		bateria.borde:blit(bateria.x, bateria.y)
		if batt.charging() then
			bateria.carga:blit(bateria.x, bateria.y)
			if not bateria.sonido:playing() then bateria.sonido:play() end
		end
	end	
}

Ale, copiarlo a tu código. Un salido ^-^.

EDITO: Y si quieres que se reproduzca una vez:

-------|Bateria|-------
bateria = {
	x=440,
	y=7,
	x2=442,
	y2=9,
	reproducido = false,
		---|Colores|---
	verde=color.new(0, 115, 0),
	rojo=color.new(244, 7, 8),
	transparente=color.new(0,0,0,0),
		-----|IMG|-----
	borde=image.load("IMG/Bateria.png"),
	carga=image.load("IMG/BateriaCargando.png"),
	sin=image.load("IMG/SinBateria.png"),
		-----|SND|-----
	sonido=sound.load("SND/BateriaCargando.wav"),
 
	mostrar = function()
		if batt.percent() > 20 and batt.percent() <= 100 then draw.pbar(bateria.x2, bateria.y2, 17, 5, transparente, bateria.verde, batt.percent(), 100)
		elseif Porcentaje <= 20 and Porcentaje > 0 then draw.pbar(bateria.x2, bateria.y2, 17, 5, transparente, bateria.rojo, batt.percent(), 100) end
		if not batt.exists() then bateria.sin:blit(bateria.x, bateria.y) end
		bateria.borde:blit(bateria.x, bateria.y)
		if batt.charging() then
			bateria.carga:blit(bateria.x, bateria.y)
			if not bateria.sonido:playing() and not bateria.reproducido then bateria.sonido:play(); bateria.reproducido = true end
		elseif not batt.charging() and bateria.reproducido then bateria.reproducido = false end
	end	
}


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de Jepte

la llave es para que se

la llave es para que se reprodusca una sola ves

 

llave=1
 
 
if batt.charging()==true and llave==1 then
 
sound.play(sonido)
 
llave=0
 
end

 

Imagen de PerezRE

No funciono

No funciono u.u

 

te dejo la parte del code resumido.

---{Sonidos, imagenes, valores y tabla previamente cargados}-----
 
llave = 1,
Batt = function()
Porcentaje=batt.percent()
	if Porcentaje >= 21 and Porcentaje <= 100 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,VerdeB,Porcentaje,100) end
	if Porcentaje <= 20 and Porcentaje >= 0 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,RojoB,Porcentaje,100) end
	if not batt.exists() then Bateria.SinBateria:blit(Bateria.x,Bateria.y) end
	Bateria.BateriaI:blit(Bateria.x,Bateria.y)
	if batt.chargingstatus() == 1 then Bateria.BateriaC:blit(Bateria.x,Bateria.y) end
	if batt.charging()==true and Bateria.llave==1 then Bateria.BateriaCSND:play() Bateria.llave=0 end
end	


--[NO EXISTEN LOS LIMITES =D]--

Es que...

Este es tu code:

---{Sonidos, imagenes, valores y tabla previamente cargados}-----
 
llave = 1,
Batt = function()
Porcentaje=batt.percent()
	if Porcentaje >= 21 and Porcentaje <= 100 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,VerdeB,Porcentaje,100) end
	if Porcentaje <= 20 and Porcentaje >= 0 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,RojoB,Porcentaje,100) end
	if not batt.exists() then Bateria.SinBateria:blit(Bateria.x,Bateria.y) end
	Bateria.BateriaI:blit(Bateria.x,Bateria.y)
	if batt.chargingstatus() == 1 then Bateria.BateriaC:blit(Bateria.x,Bateria.y) end
	if batt.charging()==true and Bateria.llave==1 then Bateria.BateriaCSND:play() Bateria.llave=0 end
end	

La cosa es ¿porqué no funciona?, pues sencillamente por 2 más variables que has usado mal, mira:

---{Sonidos, imagenes, valores y tabla previamente cargados}-----
Bateria = {}
Bateria.llave = 1
Batt = function()
Bateria.BateriaCSND = sound.load("elsonido.wav")
Porcentaje=batt.percent()
	if Porcentaje >= 21 and Porcentaje <= 100 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,VerdeB,Porcentaje,100) end
	if Porcentaje <= 20 and Porcentaje >= 0 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,RojoB,Porcentaje,100) end
	if not batt.exists() then Bateria.SinBateria:blit(Bateria.x,Bateria.y) end
	Bateria.BateriaI:blit(Bateria.x,Bateria.y)
	if batt.chargingstatus() == 1 then Bateria.BateriaC:blit(Bateria.x,Bateria.y) end
	if batt.charging()==true and Bateria.llave==1 then Bateria.BateriaCSND:play() Bateria.llave=0 end
end	

Otra posibilidad:

---{Sonidos, imagenes, valores y tabla previamente cargados}-----
 
llave = 1
Batt = function()
Porcentaje=batt.percent()
	if Porcentaje >= 21 and Porcentaje <= 100 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,VerdeB,Porcentaje,100) end
	if Porcentaje <= 20 and Porcentaje >= 0 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,RojoB,Porcentaje,100) end
	if not batt.exists() then SinBateria:blit(Bateria.x,Bateria.y) end
        BateriaI:blit(Bateria.x,Bateria.y)
	if batt.chargingstatus() == 1 then BateriaC:blit(Bateria.x,Bateria.y) end
	if batt.charging()==true and llave==1 then
 BateriaCSND:play() 
 llave=0 
end
end

Para usar variables del tipo Array.Variable = "Variable" tienes antes que crear una tabla o array, forma correcta:

Array = {}
Array.Variable = 10
Array.OtraVariable = "Hola"

 

Saludos!

 

Imagen de gdljjrod

Pero aún asi

El code solo funcionaría una vez al menos el sonido ya que al desconectar y volver a conectar el cargador no cambian el valor de llave!!!


 

Imagen de AitorDB

By Aitor

Cierto, debería poner un else para que el valor de la variable "llave" volviera a true, quedaría así:

 

---{Sonidos, imagenes, valores y tabla previamente cargados}-----
 
llave = 1
Batt = function()
Porcentaje=batt.percent()
	if Porcentaje >= 21 and Porcentaje <= 100 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,VerdeB,Porcentaje,100) end
	if Porcentaje <= 20 and Porcentaje >= 0 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,RojoB,Porcentaje,100) end
	if not batt.exists() then SinBateria:blit(Bateria.x,Bateria.y) end
        BateriaI:blit(Bateria.x,Bateria.y)
	if batt.chargingstatus() == 1 then BateriaC:blit(Bateria.x,Bateria.y) end
	if batt.charging()==true and llave==1 then
 BateriaCSND:play() 
 llave=0 
        elseif llave == 0 and not batt.charging() then
 llave = 1 --Añadiendo esto se solucionaría ese problema
end
end


Sígueme en Twitter: @Aitor_db

Imagen de PerezRE

No resultó

Siguió sin funcionar =/

Imagen de gdljjrod

Pero

Pero que es lo que no te funciona?

Imagen de PerezRE

Sonido

Que reprodusca el sonido de manera aadecuada. Lo que quiero es que se escuche una sóla véz cuando se conecte el cargador y si se vuelve a conectar, vuelva a sonar.


--[NO EXISTEN LOS LIMITES =D]--

Prueba así

Prueba así:

llave = true
Batt = function()
Porcentaje=batt.percent()
	if Porcentaje >= 21 and Porcentaje <= 100 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,VerdeB,Porcentaje,100) end
	if Porcentaje <= 20 and Porcentaje >= 0 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,RojoB,Porcentaje,100) end
	if not batt.exists() then SinBateria:blit(Bateria.x,Bateria.y) end
        BateriaI:blit(Bateria.x,Bateria.y)
	if batt.chargingstatus() == 1 then BateriaC:blit(Bateria.x,Bateria.y) end
	if batt.charging()==true and llave then
 BateriaCSND:play() 
 llave= not llave
end
if not batt.charging()==true then llave = not llave end

Creo que se me olvido cerrar algún end...

 

Saludos!

Imagen de AitorDB

By Aitor

Aunque en este code exactamente no te va a dar fallos digamos, cuando uses el "not" te recomiendo que la comparación vaya entre parentesis

llave = true
Batt = function()
Porcentaje=batt.percent()
	if Porcentaje >= 21 and Porcentaje <= 100 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,VerdeB,Porcentaje,100) end
	if Porcentaje <= 20 and Porcentaje >= 0 then draw.pbar(Bateria.x2,Bateria.y2,17,5,0,RojoB,Porcentaje,100) end
	if not batt.exists() then SinBateria:blit(Bateria.x,Bateria.y) end
        BateriaI:blit(Bateria.x,Bateria.y)
	if batt.chargingstatus() == 1 then BateriaC:blit(Bateria.x,Bateria.y) end
	if batt.charging()==true and llave then
 BateriaCSND:play() 
 llave= not llave
end
if not (batt.charging()==true) then llave = not llave end --Asi

 

Porque sino me equivoco por ejemplo al hacer esto:

variable = 5
 
if not variable==5 then ....

 

No te daría el resultado que tu quieres, tendrías que ponerlo así:

variable = 5
 
if not (variable==5) then ....

 

Si me equivoco corrijanme, saludos!!


Sígueme en Twitter: @Aitor_db

Imagen de PerezRE

Funcionó!

Gracias a todos por su GRAN ayuda! De verdad muchas gracias.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.