Buenos dias/noches hoy tengo una gran duda con los arrays, ya he buscado en todos lados pero no los entiendo perfectamente, segun lo que lei se pueden hacer listas.
Trato de hacer un inventario que solo aparescan los objetos que tengo y la cantidad
y otro que solo sean objetos
y solo llegue a la conclusion de esto
Create Event:
Inventario[0] = Amuleto_A
Inventario[1] = Amuleto_B
Inventario[2] = Amuleto_C
Pocion[0][0] = "pocion azul" //nombre
Pocion[0][1] = pac //cantidad de pociones azules
Pocion[1][0] = "pocion roja" //nombre
Pocion[1][1] = prc //cantidad de pociones rojas
Pocion[2][0] = "pocion verde" //nombre
Pocion[2][1] = prc //cantidad de pociones verdes
Step Event:
if keyboard_check_pressed(vk_left)
{
i -= 1
}
if keyboard_check_pressed(vk_right)
{
i += 1
}
if keyboard_check_pressed(ord("A"))
{
o -= 1
}
if keyboard_check_pressed(ord("D"))
{
o += 1
}
Draw Event:
draw_sprite(spriteX,Inventario
,x,y)
draw_sprite(spriteX,Inventario
Vas perfectamente bien, lo que no entiendo es lo que pusiste en el Step y en el Draw:
Step Event:
if keyboard_check_pressed(vk_left)
{
i -= 1
}
if keyboard_check_pressed(vk_right)
{
i += 1
}
if keyboard_check_pressed(ord("A"))
{
o -= 1
}
if keyboard_check_pressed(ord("D"))
{
o += 1
}
Draw Event:
draw_sprite(spriteX,Inventario,x,y)
draw_sprite(spriteX,Inventario
x,y)
Parece que lo del step es algo así como un sistema incompleto de seleccionar objetos del inventario y que lo del Draw también es algo incompleto para debujar el inventario. Supongo que no pegaste todo el código, porque así como lo pegaste no funionará
Tampoco se cual es exactamente el tipo de ayuda que necesitas
PD: Me citaste en la firma, soy famoso XD. Y ahora que me acuerdo vos fuiste el creador de ese sistema de iniciar sesión o algo así que todavía no entendí (http://www.comunidadgm.org/index.php?topic=15255.0)
Cita de: Mgbu en Julio 22, 2013, 03:55:36 PM
Vas perfectamente bien, lo que no entiendo es lo que pusiste en el Step y en el Draw:
Step Event:
if keyboard_check_pressed(vk_left)
{
i -= 1
}
if keyboard_check_pressed(vk_right)
{
i += 1
}
if keyboard_check_pressed(ord("A"))
{
o -= 1
}
if keyboard_check_pressed(ord("D"))
{
o += 1
}
Draw Event:
draw_sprite(spriteX,Inventario,x,y)
draw_sprite(spriteX,Inventario
x,y)
Parece que lo del step es algo así como un sistema incompleto de seleccionar objetos del inventario y que lo del Draw también es algo incompleto para debujar el inventario. Supongo que no pegaste todo el código, porque así como lo pegaste no funionará
Tampoco se cual es exactamente el tipo de ayuda que necesitas
PD: Me citaste en la firma, soy famoso XD. Y ahora que me acuerdo vos fuiste el creador de ese sistema de iniciar sesión o algo así que todavía no entendí (http://www.comunidadgm.org/index.php?topic=15255.0)
De hecho voy a hacer un juego para el Jam usando ese sistema
En tema:
no tengo ni idea de lo que hace el codigo, y eso que yo lo escribi XD pero si esta bien creo que ya entendi :-[
esto es lo que pienso usar para el draw
Draw_Event
draw_sprite(spriteX,Inventario[i],x,y)
draw_sprite(spriteX,Pocion[o][0],x,y)
draw_text(x,y,"X " + Pocion[o][1])
solo necesito ayuda con la parte de "no mostrar objetos que no tengo"
Justamente los últimos días he estado haciéndome líos planeando el inventario de mi proyecto. Y justamente también quiero un inventario donde esté el item y la cantidad y otro solamente el item. Mi objetivo es que sea similar al inventario de Castlevania SOTN / aria of sorrow. Hasta ahora sólo he escrito código en papel, pero más o menos voy sacando algo.
Sobre tus arreglos:
- Estás usando
" Pocion[2][0] ", si lo que quieres es declarar un arreglo de dos dimensiones, la sintaxis correcta es
Pocion[2,0] = algo -
Cita de: Fenix oscuro en Julio 21, 2013, 11:10:30 AM
y solo llegue a la conclusion de esto
Create Event:
Inventario[0] = Amuleto_A
Inventario[1] = Amuleto_B
Inventario[2] = Amuleto_C
Eso esta bien, pero es más cómodo y fácil de entender esto (yo le llamo etiquetar los índices del arreglo, otros le llaman declarar constantes):
Create EVENT:
amuleto_a = 0
amuleto_b = 1
amuleto_c = 2
espada_1 = 3
escudo_2 = 4
Inventario[amuleto_a] = ID del amuleto A
Inventario[amuleto_b] = ID del amuleto B
Inventario[amuleto_c] = ID del amuleto C
Inventario[espada_1] = ID de la espada tipo 1
Inventario[escudo_2] = ID del escudo tipo 2
Obviamente, puedes hacer lo mismo en un arreglo de dos dimensiones, que creo es lo más conveniente, y asi no tienes que preocuparte por saber qué número de casilla corresponde a qué item, o puedes mover los ítems en el arreglo (amuleto_a = el numero que gustes) y la estructura del arreglo se mantiene
-El código que tienes para subir o bajar por el inventario está bien, pero el detalle es que tal como está no puedes ciclar el inventario (si estás en el último item, tienes que navegar por todo el inventario para llegar al primer item)
Si llega a funcionar, postearé mi sistema de inventarios cuando esté completo, aunque falta todavía para que eso suceda :-[
De hecho creo que le falta elaboracion y no me fije lo de las comas XD
Create Event:
Inventario = 0 //0 = nada; 1 = Amuleto A;2 = Amuleto B;Amuleto C
i = 0
o = 0
A1 = 0
A2 = 0
A3 = 0
Pocion[0,0] = "pocion azul" //nombre
Pocion[0,1] = pac //cantidad de pociones azules
Pocion[1,0] = "pocion roja" //nombre
Pocion[1,1] = prc //cantidad de pociones rojas
Pocion[2,0] = "pocion verde" //nombre
Pocion[2,1] = pvc //cantidad de pociones verdes
Step Event
if keyboard_check_pressed(vk_left) {i -= 1}
if keyboard_check_pressed(vk_right) {i += 1}
if keyboard_check_pressed(ord("A")) {o -= 1}
if keyboard_check_pressed(ord("D")) {o += 1}
//Skipper Amuleto
switch (i)
{
case 1:
if not A1 = 1 {i += 1} else {Inventario = 1}
case 2:
if not A2 = 1 {i += 1} else {Inventario = 2}
case 3:
if not A3 = 1 {i += 1} else {Inventario = 3}
}
//Skipper Pocion
switch (o)
{
case 1:
if Pocion[0,1] < 1 {o += 1} else {o = 1}
case 2:
if Pocion[1,1] < 1 {o += 1} else {o = 2}
case 3:
if Pocion[2,1] < 1 {o += 1} else {o = 3}
}
//Ciclo
if i > 3 {i = 0}
else
if i < 0 {i = 3}
else
{exit}
if o > 3 {i = 0}
else
if o < 0 {i = 3}
else
{exit}
Draw Event:
draw_sprite(spriteX,Inventario,x,y)
draw_sprite(spriteX,Pocion[o,0],x,y)
draw_text(x,y,"X " + Pocion[o,1])
Creo que ya lo entendi! :D