Anuncios Google

Menu Habilidades

A ver, yo no se si es que me estoy volviendo estupido o algo asi, que no consigo hacer aparecer un menú emergente cuando selecciono una opción de un menú. Lo que deseo es que el menú se quede fijo, y solo consigo una leve aparición de un microsegundo lol.

Agradeceria algo de ayudita, y a ser posible alguna manera de contactar con coders, que cuando se les necesita no se como contactar con ellos! \o/ 

 

Aqui os dejo el code, probadlo vosotros mismos ^^ 

menubatalla = {"Ataque básico","Habilidad","Objeto","A correr"}
habilidades = {"Habilidad 1"}
personaje = {x=410,y=135,w=30,h=30,vida=9,habilidad=1,defensa=4,ataque=10,imagen = image.create(10,10,color.new(255,0,0))}
enemigo = {x=70, y=135, w=0, h=0,vida=9,habilidad=1,defensa=5,ataque=6,imagen=image.create(10,10,color.new(0,255,0))}
dado = image.load("res/dadomenu.png"); 
colores = {rojo=color.new(255,0,0)};
selmenu = 1;
selmenuhab=1;
 function battleMenu(selected)
  local y=135;
	for i=1,#menubatalla do
		if selected == i then
		screen.print(240,y,menubatalla[i],0.5,colores.rojo,color.new(0,0,0));
		else
		screen.print(240,y,menubatalla[i],0.5,color.new(255,255,255),color.new(0,0,0));
		end
 
		y=y+20;
	end
 
end 
 
function habilityMenu(selected) 
	local y=155;
	for i=1,#habilidades do
		if selected == i then
		screen.print(310,y,habilidades[i],0.5,colores.rojo,color.new(0,0,0));
		else
		screen.print(310,y,habilidades[i],0.5,color.new(255,255,255),color.new(0,0,0));
		end
		y=y+20;
	end
 
end 
 
while true do
     controls.read()
     personaje.imagen:blit(personaje.x,personaje.y)
      enemigo.imagen:blit(enemigo.x,enemigo.y)
 
       screen.print(personaje.x,personaje.y-20,personaje.vida);
       screen.print(enemigo.x,enemigo.y-20,enemigo.vida);
 
 
      if controls.press("up") and selmenu > 1 then selmenu = selmenu - 1 end 
      if controls.press("down") and selmenu < #menubatalla then selmenu = selmenu + 1 end 
 
      battleMenu(selmenu);
 
      if (selmenu == 1 and controls.press("cross")) then
	enemigo.vida= enemigo.vida - (personaje.ataque-enemigo.defensa)
 
       elseif selmenu == 2 and controls.press("cross") then habilityMenu(selmenuhab)
        end
screen.flip()
 
end


En un par de proyectos:

Current: Fantasymind  [||                  ] PROGRESS: 10%

Next: FAR STARS


Twitter: @Cere_Ender


 


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 arielnmz

Yo te recomiendo que todas

Yo te recomiendo que todas esas strings las cargues desde un .ini o un .xml. Si alguna vez tienes que traducir tu homebrew sólo necesitas agregar ini's y no cambiar el código de tu juego (o usar un editor hex).

Imagen de Cere_Ender

De hecho eso quisiera hacer,

De hecho eso quisiera hacer, pero no tengo ni idea de como manejar las strings almacenadas en un ini y llamarlas desde lua.

Habia pensado en escribirlas directamente en un .lua.

Aunque lo que hay escrito ahi es solo juegos de prueba para desarrollar el engine de batalla que tendrá mi HB.


En un par de proyectos:

Current: Fantasymind  [||                  ] PROGRESS: 10%

Next: FAR STARS


Twitter: @Cere_Ender


 

Imagen de arielnmz

no se la verdad mucho del lua

no se la verdad mucho del lua que se usa en psp pero con un "ini parser" (cargador de inis) se puede. Aunque también es una buena opción usar otro script con las constantes.

Imagen de AdriGV

No hace falta usar XML o INI

Podeis usar TXT o LUA, y guardar el idioma en tablas, ejemplo:

language.txt o languaje.lua

language = {}
 
language["ESP"] = {}
language["ING"] = {}
 
language["ESP"][1] = "Jugar"
language["ING"][1] = "Play"

 script.lua

dofile("language.txt")
 
idioma = ""
 
while true do
	controls.read()
 
	if controls.press("cross") then
		idioma = "ESP"
		break
	end
 
	if controls.press("circle") then
		idioma = "ING"
		break
	end
 
	screen.print(10,10,"Elija su Idioma:")
	screen.print(10,25,"Español -> Pulsa X")
	screen.print(10,40,"Ingles -> Pulsa O")
 
	screen.flip()
end
 
while true do
 
	screen.print(10, 272/2, language[idioma][1] )
 
	screen.flip()
 
end

 

Saludos.


Programador en C++ y Lua.

Creando un Juego con Unity3D para Android.

Deseo poder crear mi propio IDE para C++ y un Motor de Videojuegos.

Imagen de arielnmz

Funciona, pero el problema

Funciona, pero el problema sería cuando cargues diálogos completos. De nuevo, no se si LUA ejecute el script con el proc. "dofile", pero si lo hace y tienes muchas tablas con mucho texto, ahí vendría el problema, lo mejor sería abrir un stream, cargar lo necesario y cerrarlo de nuevo. Pero repito, eso para más textos más largos.

Imagen de Andres_Ne

Ya esta ...

menubatalla = {"Ataque básico","Habilidad","Objeto","A correr"}
habilidades = {"Habilidad 1"}
personaje = {x=410,y=135,w=30,h=30,vida=9,habilidad=1,defensa=4,ataque=10,imagen = image.create(10,10,color.new(255,0,0))}
enemigo = {x=70, y=135, w=0, h=0,vida=9,habilidad=1,defensa=5,ataque=6,imagen=image.create(10,10,color.new(0,255,0))}
--dado = image.load("res/dadomenu.png"); 
colores = {rojo=color.new(255,0,0)};
selmenu = 1;
selmenuhab=1;
mostrar = false;
 
 
 function battleMenu(selected)
 
  local y=135;
	for i=1,#menubatalla do
		if selected == i then
			screen.print(240,y,menubatalla[i],0.5,colores.rojo,color.new(0,0,0));
		else
			screen.print(240,y,menubatalla[i],0.5,color.new(255,255,255),color.new(0,0,0));
		end
		y=y+20;
	end
end 
 
function habilityMenu(selected) 
	local y=155;
		for i=1,#habilidades do
			if selected == i then
				screen.print(310,y,habilidades[i],0.5,colores.rojo,color.new(0,0,0));
			else
			screen.print(310,y,habilidades[i],0.5,color.new(255,255,255),color.new(0,0,0));
			end
			y=y+20;
		end	
end 
 
while true do
 
    controls.read()
 
    personaje.imagen:blit(personaje.x,personaje.y)
    enemigo.imagen:blit(enemigo.x,enemigo.y)
 
    screen.print(personaje.x,personaje.y-20,personaje.vida);
    screen.print(enemigo.x,enemigo.y-20,enemigo.vida);
 
 
    if controls.press("up") and selmenu > 1 then selmenu = selmenu - 1 end 
    if controls.press("down") and selmenu < #menubatalla then selmenu = selmenu + 1 end 
 
    battleMenu(selmenu);
 
    if (selmenu == 1 and controls.cross()) then
		enemigo.vida= enemigo.vida - (personaje.ataque-enemigo.defensa)
	end
 
	if mostrar == true then 
		habilityMenu(selmenuhab)
	end
 
	if selmenu != 2 then
		mostrar = false
	end
 
	if controls.cross() and selmenu == 2 then 
		mostrar = true 
	end 
 
	screen.print(10,10,tostring(mostrar));
 
screen.flip()
 
end

Alli esta tu code listo, mira que utilize una bool y una condicion para que de desaparezca el menu emerguente.

 

PD:  Creo que vienes de C, pero los ( ; )  no son necesarios en este interprete para cerrar la instruccion, talvez sea constumbre. Saludos.


 

 

Imagen de Cere_Ender

En efecto, vengo de C!

En efecto, vengo de C! muchisimas gracias, que tontería mas grande en no caer con una bool

Imagen de gdljjrod

Boolean

Lo que puedes hacer es poner una variable boolean, algo así:

...
...
selmenu = 1;
selmenuhab=false
 
funciones()
 
while true do
   controls.read()
   ...
   ...
  battleMenu(selmenu)
  if selmenuhab then habilityMenu(selmenuhab) end --para mostrar el menu cuando sea true
 
   elseif selmenu == 2 and controls.press("cross") then selmenuhab = not selmenuhab end --Aquí si es false la cambiamos a true o viceversa
screen.flip()
 
end


 

Imagen de Cere_Ender

cuando intento adaptarlo, me

cuando intento adaptarlo, me da error en la  linea del elseif ("nil value"), creo que es porque selmenuhab es un booleano ahora y antes era numerico, me equivoco?


En un par de proyectos:

Current: Fantasymind  [||                  ] PROGRESS: 10%

Next: FAR STARS


Twitter: @Cere_Ender


 

Imagen de Cere_Ender

Muchisimas gracias! Parezco

Muchisimas gracias! Parezco novato, pero es que LUA a veces me desconcierta en algunas cosas...

 

 

Otras es que me hace falta un poco mas de practica. 

Saludines! 

 

 

PD: Alguna manera para contactar con coders por si se necesita ayuda?


En un par de proyectos:

Current: Fantasymind  [||                  ] PROGRESS: 10%

Next: FAR STARS


Twitter: @Cere_Ender


 

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.