Anuncios Google

Como poner un selector de arma (Luadev) (Solucionado)

Edito:

Por fin solucionado...

 

¿Como?

 

Asi:

function arma()
Armas={"Magnum","Rifle","Metralleta","Lanzamisiles"} -- Son 5 String que contienen el nombre de las armas.
var=1;
 while true do
 controls.read()
if controls.press("left") then var=var-1 elseif controls.press("right") then var=var+1 end
if var>4 then var=1 elseif var<1 then var=4 end
screen.print(13,30,"<--- "..Armas[var].." --->",1,color.new(255,0,0),0x0);
if controls.press("cross") then multijugador() end
screen.flip()
end
end

 

function multijugador()
if var==1 then "caracteristicas1" end
while true do
--etc
end

 

Habia que ponerlo dentro de la funcion y fuera del bucle

 

GRACIAS!!


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.


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 NauTiluS1

Con tus imágenes ya Puestas

Con tus imágenes ya Puestas etc
Selector = {arma=ninguna}
Current = 1
Activar = false
Mp40 = image.load
while true do
Controls.read()
ir current == 1 then
Arma1
If controls.press("cross") then
Selector.arma = mp40
Activar = true
End
End
Y así con las otras...
If activar == true then
Image.blit(selector.arma,x,y)
End

Si quieres ve el code de spacecraft el primer script donde tengo un selector.
End


Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP

Imagen de barney77

Vamos..Armas={"Arma1","Arma2

Vamos..

Armas={"Arma1","Arma2","Arma3","Arma4","Arma5"} -- Y así con todas tus armas.
var=1;
 
if controls.press("boton") then var=var+1 elseif controls.press("otroboton") then var=var-1 end
if var>5 then var=1 elseif var<1 then var=5 end -- Aqui si var es mayor a 5 sera igual a1 y si var es menor a 1 sera igual a 5
screen.print(100,100,Armas[var],color); -- Printea la Arma de acuerdo a var
end

Espero te sirva, cualquier duda, dime,

Imagen de jorge_97

By jorge_97

No entiendo eso... Ya que no me sirve...

Imagen de barney77

Sirvio o no?....Es

Sirvio o no?....

Es facilisimo de entender y si que te sirve, te lo reescribo para que se vea mejor.

Armas={"Arma1","Arma2","Arma3","Arma4","Arma5"} -- Son 5 String que contienen el nombre de las armas.
var=1;
 
if controls.press("left") then var=var-1 elseif controls.press("right") then var=var+1
if var>5 then var=1 elseif var<1 then var=5 end
screen.print(X,Y,"<--- "..Armas[var].." --->",1,color,0x0);

En la tabla armas van tus armas en string, y ya por ejemplo, una condicion:

if var==1 then os.message("El arma actual es Arma1, la cual es el primer parametro de la tabla armas") end

Entendiste o todavia no?, es facil y creo es la mejor forma.

Imagen de jorge_97

By jorge_97

xddd si va pero no lo entiendo...

Imagen de jorge_97

By jorge_97

Espera probare ese... xDDD

Imagen de barney77

Ok viendo tu code de arriba,

Ok viendo tu code de arriba, hiciste un bucle aparte, entonces lo que te di, iria así:

function selectordearmas()
Armas={"Arma1","Arma2","Arma3","Arma4","Arma5"} -- Son 5 String que contienen el nombre de las armas.
var=1;
 
while true do controls.read();
if controls.press("left") then var=var-1 elseif controls.press("right") then var=var+1 end
if var>5 then var=1 elseif var<1 then var=5 end
screen.print(X,Y,"<--- "..Armas[var].." --->",1,color,0x0);
screen.flip();
end
end

Saludos.

Imagen de jorge_97

By jorge_97

POR FAVOR

 

Lo que necesito es lo siguiente:

Si pulso X y la elegida es magnum que al entran en juego() me salga ese arma...

No necesito un menu,

Gracias


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de barney77

Ok, sigue siendo facil

Ok, sigue siendo facil xDD..

Imaginemos que ese selector esta no se en X parte de la pantalla, var(que viene siendo nuestra arma actual) es 3, y 3 es "Magnum".

Entonces, en juego, tendrias que poner comparaciones.

if var==3 then image.blit o lo que tengas que hacer end

 

Imagen de Dioni0396

y porque

trabajas con inis, no seria mejor con variables?

Imagen de jorge_97

By jorge_97

Explicate...

Imagen de Dioni0396

...

function opciones()
while true do
controls.read()
if selec==1 then screen.print(80,50, "--> ", rojo) end
if selec==2 then screen.print(75,90," -->  ",  rojo) end
if selec==3 then screen.print(80,130, "--> " ,rojo) end
if selec==4 then screen.print(80,170,"--> " ,rojo) end
if selec==5 then selec=1 elseif selec==0 then selec=4 end
 
screen.print(80,20, "Elige arma para jugador 1", verde)
screen.print(100,50, "Magnum ",rojo )
screen.print(100,90, "Rifle" ,rojo )
screen.print(100,130, "Metralleta ",rojo )
screen.print(100,170, "Lanzamisiles ",rojo)
 
 
if controls.press("down") then selec=selec+1 end
if controls.press("up") then selec=selec-1 end
if controls.start() then broke() end
if controls.cross() and selec==1 then arma = lo que quieras end
 
screen.flip()
 
 
end
end

Imagen de jorge_97

By jorge_97

No... me dice (con eboot de GDP) weapon.lib.lua:68: attempt to compare nil with number

 

:(

Imagen de Dioni0396

pon de nuevo

todo el codigo.

Imagen de jorge_97

By jorge_97

 

arma=1

 

function opciones()
while true do
controls.read()
if arma==5 then arma=1 elseif arma==0 then arma=4 end
screen.print(80,20, "Elige arma para jugador 1", verde)
if controls.start() then broke() end
if controls.press("right") then arma = arma+1 end
if arma==1 then screen.print(100,50, "Magnum ",rojo ) end
if arma==2 then screen.print(100,50, "Rifle ",rojo ) end
if arma==3 then screen.print(100,50, "Metralleta ",rojo ) end
if arma==4 then screen.print(100,50, "Lanzamisiles ",rojo ) end
if controls.cross() then multijugador() end
 
screen.flip()
 
 
end
end

 

function multijugador()
while true do
controls.read()
juga1.oldx=juga1.x
juga1.oldy=juga1.y
juga2.oldx=juga2.x
juga2.oldy=juga2.y
 
if arma==1 then balas1=20 tiempo1=500 daño1=8 movi1=4 end
 
if arma==2 then balas1=15 tiempo1=1000 daño1=15 movi1=2.5 end
 
if arma==3 then
balas1=50
tiempo1=100
daño1=6
movi1=2
end
if arma==lanzamisiles
balas1=5
tiempo1=1500
daño1=50
movi1=1.5
end
 
... etc etc
end


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de Dioni0396

preferiria

mejor la linea 68, es decir la que da error.

Imagen de jorge_97

By jorge_97

Esa linea se refiere a la LIBRERIA "Weapon Lib" de Xerpi...

Imagen de Dioni0396

un code

vale mas que mil palabras.

Imagen de jorge_97

By jorge_97

No queria hacerlo... pero

 

--funciones
function menu()
while true do
 
controls.read()
screen.print(380,260, "By Jorge_97", verde)
screen.print(230, 20, "Shootzone", tam , azul , negro ) 
screen.print(400,20,"V 1.0",rojo)
 
screen.print(30,62,"Campaña",amarillo)
screen.print(30,127,"Multijugador",amarillo)
screen.print(30,192,"Opciones",amarillo)
 
 
if elegida==1 then screen.print(30,62,"Campaña",rojo) end
if elegida==2 then screen.print(30,127,"Multijugador",rojo) end
if elegida==3 then screen.print(30,192,"Opciones",rojo) end
 
 
if controls.press("up") then elegida=elegida-1  elseif controls.press("down") then  elegida=elegida+1 end
 
if controls.cross() and elegida==1 then juego() end
if controls.cross() and elegida==2 then opciones() end
--if controls.cross() and elegida==3 then opciones() end
 
if elegida==0 then 
elegida=3
elseif elegida==4 then  
elegida=1
end
if controls.start() then
broke()
end
 
screen.flip()
 
end
end
 
function opciones()
while true do
controls.read()
if arma==5 then arma=1 elseif arma==0 then arma=4 end
screen.print(80,20, "Elige arma para jugador 1", verde)
if controls.start() then broke() end
if controls.press("right") then arma = arma+1 end
if arma==1 then screen.print(100,50, "Magnum ",rojo ) end
if arma==2 then screen.print(100,50, "Rifle ",rojo ) end
if arma==3 then screen.print(100,50, "Metralleta ",rojo ) end
if arma==4 then screen.print(100,50, "Lanzamisiles ",rojo ) end
if controls.cross() then multijugador() end
 
screen.flip()
 
 
end
end
 
 
function colision(obj1, obj2) 
	if obj1.x+obj1.w>obj2.x 
	and obj1.x<obj2.x+obj2.w 
	and obj1.y+obj1.h>obj2.y 
	and obj1.y<obj2.y+obj2.h then 
		return true 
	end
return false 
end
 
 
function disparo_jugador()
if controls.cross() then
	if controls.square() then
		weapon.shoot(pers.arma,pers.x+pers.w/2,pers.y+pers.h/2,6,135)
	elseif controls.circle() then
		weapon.shoot(pers.arma,pers.x+pers.w/2,pers.y+pers.h/2,6,45)
	else
		weapon.shoot(pers.arma,pers.x+pers.w/2,pers.y+pers.h/2,6,90)
	end
end
if controls.square() then
	if controls.triangle() then
		weapon.shoot(pers.arma,pers.x+pers.w/2,pers.y+pers.h/2,6,235)
	else
		weapon.shoot(pers.arma,pers.x+pers.w/2,pers.y+pers.h/2,6,180)
	end
end
if controls.triangle() then
	if controls.circle() then
		weapon.shoot(pers.arma,pers.x+pers.w/2,pers.y+pers.h/2,6,310)
	else
		weapon.shoot(pers.arma,pers.x+pers.w/2,pers.y+pers.h/2,6,270)
	end
end
if controls.circle() then
	weapon.shoot(pers.arma,pers.x+pers.w/2,pers.y+pers.h/2,6,0)
end
 
end
 
function mover_jugador()
if controls.up() then
	pers.y = pers.y -3
end
if controls.down() then
	pers.y = pers.y +3
end
if controls.left() then
	pers.x = pers.x -3
end
if controls.right() then
	pers.x = pers.x +3
end
if pers.x <= 0 then pers.x = 0 end
if pers.x + pers.w >= 480 then pers.x = 480-pers.w end
if pers.y<= 0 then pers.y = 0 end
if pers.y + pers.h >= 272 then pers.y = 272-pers.h end
end
 
function vida_jugador()
	--La vida
	draw.fillrect(5,5,math.max(0,pers.vida),10,color.new(255,0,0))
	draw.rect(4,4,101,11,color.new(255,255,255))
 
end
 
 
function juego()
	weapon.action(pers.arma,"start")
 
	while true do 
	controls.read()
 
	weapon.blit(pers.arma)
	pers.img:blit(pers.x,pers.y)
	mover_jugador()
	disparo_jugador()
 
	--Bliteamos los enemigos
	for i = 1 , n_enemigos do
		if enemie[i].time:time() >= enemie[i].max_time then
			if math.random(1,100) <=  50 then
				ang =math.atan2(enemie[i].y-pers.y,enemie[i].x-pers.x)
				weapon.shoot(enemie[i].arma,enemie[i].x+enemie[i].w/2,enemie[i].y+enemie[i].h/2,9,180+math.deg(ang))
				ang=0
			end
		enemie[i].time:reset()
		end
		weapon.blit(enemie[i].arma)
		if weapon.collision(enemie[i].arma,pers.x,pers.y,pers.w,pers.h,pers.ang,true) then
			pers.vida = pers.vida -5 		
		end
		enemie[i].img:blit(enemie[i].x,enemie[i].y)
	end
 
	vida_jugador()
 
	if controls.start() then menu_principal() end
	if controls.select() then a() end
	screen.flip()
	end
end
 
 
function multijugador()
while true do
controls.read()
juga1.oldx=juga1.x
juga1.oldy=juga1.y
juga2.oldx=juga2.x
juga2.oldy=juga2.y
 
if arma==1 then balas1=20 tiempo1=500 daño1=8 movi1=4 end
 
if arma==2 then balas1=15 tiempo1=1000 daño1=15 movi1=2.5 end
 
if arma==3 then
balas1=50
tiempo1=100
daño1=6
movi1=2
end
--if arma==lanzamisiles
--balas1=5
--tiempo1=1500
--daño1=50
--movi1=1.5
--end
 
 
if controls.triangle() then actual =J1 juga2.y=juga2.y-2 
elseif controls.cross() then actual =J3 juga2.y=juga2.y+2 
elseif controls.circle() then actual =J2 juga2.x=juga2.x+2 
elseif controls.square() then actual =J4 juga2.x=juga2.x-2 end
 
if controls.press("r") and actual==J1 and balas2>0 then balas2=balas2-1 weapon.shoot(disparo2,juga2.x+10,juga2.y,"up") end
if controls.press("r") and actual==J2 and balas2>0 then balas2=balas2-1 weapon.shoot(disparo2,juga2.x+25,juga2.y+10,"right") end
if controls.press("r") and actual==J3 and balas2>0 then balas2=balas2-1 weapon.shoot(disparo2,juga2.x+10,juga2.y+25,"down") end
if controls.press("r") and actual==J4 and balas2>0 then balas2=balas2-1 weapon.shoot(disparo2,juga2.x,juga2.y+10,"left") end
 
if controls.press("l") and current==P1 and balas1>0 then balas1=balas1-1 weapon.shoot(disparo1,juga1.x+10,juga1.y,"up") end
if controls.press("l") and current==P2 and balas1>0 then balas1=balas1-1 weapon.shoot(disparo1,juga1.x+25,juga1.y+10,"right") end
if controls.press("l") and current==P3 and balas1>0 then balas1=balas1-1 weapon.shoot(disparo1,juga1.x+10,juga1.y+25,"down") end
if controls.press("l") and current==P4 and balas1>0 then balas1=balas1-1 weapon.shoot(disparo1,juga1.x,juga1.y+10,"left") end
 
if controls.up() then current =P1 juga1.y=juga1.y-movi1 
elseif controls.down() then current =P3 juga1.y=juga1.y+movi1 
elseif controls.right() then current =P2 juga1.x=juga1.x+movi1
elseif controls.left() then current =P4 juga1.x=juga1.x-movi1 end
 
--Mostrando personajes
current:blit( juga1.x,juga1.y)
actual:blit(juga2.x,juga2.y)
 
--Mostrando la informacion sobre los jugadores
screen.print(80,10, "Jugador 1:",rojo)
screen.print(10,30, "Balas: " .. balas1, verde)
screen.print(100,30, "Vida:",verde)
screen.print(300,10, "Jugador 2 : ",rojo)
screen.print(260,30, "Balas: " .. balas2, verde)
screen.print(360,30, "Vida : ",verde)
draw.fillrect(150,30,math.max(0,vida1),10,rojo)
draw.rect(150,30,51,11,color.new(255,255,255))
draw.fillrect(410,30,math.max(0,vida2),10,rojo)
draw.rect(410,30,51,11,color.new(255,255,255))
 
--Los limites de la pantalla
draw.fillrect(0,50,480,4,color.new(255,255,255))
draw.fillrect(0,50,4,222,color.new(255,255,255))
draw.fillrect(476,50,4,222,color.new(255,255,255))
draw.fillrect(0,268,480,4,color.new(255,255,255))
 
--Los muros
draw.fillrect(350,130,4,100,color.new(255,255,255))
draw.fillrect(350,130,100,4,color.new(255,255,255))
draw.fillrect(60,120,4,40,color.new(255,255,255))
draw.fillrect(60,160,60,4,color.new(255,255,255))
draw.fillrect(120,160,4,120,color.new(255,255,255))
 
--Mostramos las balas
weapon.blit(disparo1)
weapon.blit(disparo2)
 
 
 
 
 
--Las colisiones:
 
--/De las balas del jugador 1
 
weapon.collision(disparo1,0,50,480,4,true)
weapon.collision(disparo1,350,130,4,100,true)
weapon.collision(disparo1,350,130,100,4,true)
weapon.collision(disparo1,60,120,4,40,true)
weapon.collision(disparo1,60,160,60,4,true)
weapon.collision(disparo1,120,160,4,120,true)
--weapon.collision(disparo1,muro7,true)
if weapon.collision(disparo1,juga2.x,juga2.y,32,32,true) then vida2=vida2-daño1 end
 
--/De las balas del jugador 2
weapon.collision(disparo2,0,50,480,4,true)
weapon.collision(disparo2,350,130,4,100,true)
weapon.collision(disparo2,350,130,100,4,true)
weapon.collision(disparo2,60,120,4,40,true)
weapon.collision(disparo2,60,160,60,4,true)
weapon.collision(disparo2,120,160,4,120,true)
--weapon.collision(disparo2,muro10,true)
if weapon.collision(disparo2,juga1.x,juga1.y,32,32,true) then vida1=vida1-10 end
 
 
 
 
if vida2<0 then screen.print(200,150, "Jugador 1 ha ganado") end
if vida1<0 then screen.print(200,150, "Jugador 2 ha ganado") end
 
--/De los jugadores
if colision(juga1,muro1) then juga1.y=juga1.oldy juga1.x=juga1.oldx end
if colision(juga1,muro2) then juga1.x=juga1.oldx juga1.y=juga1.oldy end
if colision(juga1,muro3) then juga1.y=juga1.oldy juga1.x=juga1.oldx end
if colision(juga1,muro4) then juga1.x=juga1.oldx juga1.y=juga1.oldy end
if colision(juga1,muro5) then juga1.y=juga1.oldy juga1.x=juga1.oldx end
if colision(juga1,muro6) then juga1.x=juga1.oldx juga1.y=juga1.oldy end
if colision(juga1,muro7) then juga1.x=juga1.oldx juga1.y=juga1.oldy end
if colision(juga1,muro8) then juga1.x=juga1.oldx juga1.y=juga1.oldy end
if colision(juga1,muro9) then juga1.x=juga1.oldx juga1.y=juga1.oldy end
--if colision(juga1,muro10) then juga1.x=juga1.oldx juga1.y=juga1.oldy end
 
if colision(juga2,muro1) then juga2.y=juga2.oldy juga2.x=juga2.oldx end
if colision(juga2,muro2) then juga2.x=juga2.oldx juga2.y=juga2.oldy end
if colision(juga2,muro3) then juga2.y=juga2.oldy juga2.x=juga2.oldx end
if colision(juga2,muro4) then juga2.x=juga2.oldx juga2.y=juga2.oldy end
if colision(juga2,muro5) then juga2.y=juga2.oldy juga2.x=juga2.oldx end
if colision(juga2,muro6) then juga2.x=juga2.oldx juga2.y=juga2.oldy end
if colision(juga2,muro7) then juga2.y=juga2.oldy juga2.x=juga2.oldx end
if colision(juga2,muro8) then juga2.x=juga2.oldx juga2.y=juga2.oldy end
if colision(juga2,muro9) then juga2.y=juga2.oldy juga2.x=juga2.oldx end
--if colision(juga2,muro10) then juga2.x=juga2.oldx juga2.y=juga2.oldy end
 
if controls.start() then broke() end
screen.flip()
end
end


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de Dioni0396

espera un momento

a que examine el codigo.

PD: en la linea 68 hay un end, seguro que el problema es el end?

Imagen de jorge_97

By jorge_97

Probe algo parecido a eso pero no me iba xDDD

Pero ese tiene buena pinta xDDD...

Luego lo pruebo es que ahora me tengo que ir muchas gracias a todos sois unos maquinas!!!

Saludos y gracias de nuevo!!


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de cam-maker

en el ini

en el ini veo que pones en la primera opcion: "arma"

en la segunda: "arma:"

los dos puntos no influyen?

PD. nunca he usado inis .__. por eso pregunto.


"Las cosas brillantes siempre salen de repente, como la geometría de una flor"


Imagen de jorge_97

By jorge_97

Si influyen... no me habia dado cuenta voy a cambiarlo y a ver si me funciona xDDD gracias

Imagen de Dioni0396

en ningun momento

veo declara o mostrada la variable

selec
Imagen de jorge_97

By jorge_97

Ok no la he puesto aqui en el codigo pero en verdad si esta... el problema no es el menu...

Imagen de cam-maker

podrias

podrias revisar este tutorial :D con esto eso se te va facil ;)

Imagen de jorge_97

By jorge_97

¿...?

Que??? O sea he puesto todo eso y lo que me mandas es un tuto para hacer un menu...

 

Pero te has llegado  leer mi problema???

 

Lo que quiero es saber como hacer para que al iniciar un juego se cargue un arma seleccionada...

 

...

Me quedo muerto


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de cam-maker

bueno xD

bueno tu pusiste

"Haber os explico tengo un juego y quiero que antes de iniciarlo te salga un selector de arma es mas o menos esto:"

"un selector"pordrias tomarlo como un menu, pense que eso querias x'D pero si es otra cosa andale, pregunta quizas te puedo ayudar ^^


"Las cosas brillantes siempre salen de repente, como la geometría de una flor"


Imagen de Dioni0396

Que problema tienes?

porque no lo veo.

Imagen de jorge_97

By jorge_97

Cuando elijo cualquier arma siempre me sale la magnum... (La que esta en variables o me sale error pero no me dice cual...)

No uso el eboot de Gdp este pesa 1,3 mb es el de lua...


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

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.