Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Temas - Zhekken

1
Hola, necesito ayuda con una problema que tengo... estoy haciendo un juego de romper bloques, el tipico brickbreacker y para no estar haciendo que despues de romper el ultimo bloque el jugador pasara a otra room y tener que hacer muchos niveles y demas, preferi optar por la opcion mas comoda que conozco que es hacer que despues de que el ultimo bloque sea destruido, se creen bloques al azar por la room y estos se ajusten a las casillas(cuadriculas) una vez que aparezcan, de esta manera se estarian creando bloques siempre que se rompa el ultimo, utilize este código:

[gml]
if(!instance_exists(obj_bloque))
{
i = 10
repeat(i)
   {
    var posx = random_range(32,416)
    var posy = random_range(32,160)
    instance_create(posx,posy,obj_bloque)
        with (obj_bloque)
        {
            if !place_snapped(32, 8)
            {
                move_snap(32, 8);
            }
        }
   }
}
[/gml]

Tengo algunas preguntas sobre el mismo tema si es que me lo permiten pero la primera pregunta es la mas importante y es el motivo por el que vengo a pedirles ayuda:

1.- ¿Como hago para que aparezcan los bloques sin estar uno encima de otro? pasa que a veces los bloques se crean en las mismas casillas y esto hace que cuando se rompa un bloque pareciera que justo aparece otro en la misma posición y eso se ve algo feo

2.-¿se puede hacer una especie de figura prefabricada para hacerlas aparecer? osea una forma con los cuadritos para que cuando se rompa el ultimo aparezca una de las tantas figuras ya hechas al azar, digamos que haces 20 figuras pues aparecera una de esas tantas al azar

3.- dejare una imagen para que me expliquen como solucionar el ultimo problema, tengo una mini IA(no se si llamarle inteligencia artificial) el caso es que hice que al iniciar el juego si la pelota choque con el jugador (unicamente si choca) se activara el point_direction hacia la direccion del bloque, el problema con esto es que la pelota persigue por orden en que se crearon los bloques y si el bloque 1 esta por encima del bloque 2 se nota como la pelota se dirige al bloque 1, quiero que persiga al bloque mas cercana en la posicion Y de esta manera no se vera tan raro

===

como dije antes, mas me importa que me ayuden con la primera pregunta ya que es el tema principal, de todas maneras si responden las demas preguntas se los agradecería mucho, no creo que hacer varias preguntas del mismo tema incumpla las reglas pero si llega a ser el caso modifico y elimino la 2 y 3

2
Hola, buenas  :)

tratare de ser lo mas corto posible con mi explicación pero suelo escribir mucho... tengo un problema con el cambio de sprites de mi personaje.

Les dejare un Gif del resultado final que quiero conseguir, es de un juego que se llama Dead Maze, recomendado.

apenas ando comenzando con el movimiento del personaje pero me estanque con el cambio de sprites con este codigo:

[gml]
if(keyboard_check(ord("D")))
{
    x += 5
    sprite_index = spr_c_der
    image_speed = 0.5
}
else
{
    sprite_index = spr_der
}
[/gml]

todo funciona bien, pero únicamente para cuando el personaje se mueve hacia la derecha, cambia bien su sprite al de caminar y luego al soltar la tecla D cambia su sprite al sprite parado viendo a la derecha... el problema viene cuando pongo lo mismo pero para la izquierda:

[gml]
if(keyboard_check(ord("D")))
{
    x += 5
    sprite_index = spr_c_der
    image_speed = 0.5
}
else
{
    sprite_index = spr_der
}

if(keyboard_check(ord("A")))
{
    x -= 5
    sprite_index = spr_c_iz
    image_speed = 0.5
}
else
{
    sprite_index = spr_iz
}
[/gml]

como el else del primer if ya dice que si no estoy apretando la tecla D cambiara el sprite al de spr_der (el de mirar a la derecha) entonces tiene conflictos para el segundo else porque pone una condición parecida pero mirando a la izquierda, esto hace que aunque yo apreté la tecla D al no estarse presionando la tecla A el sprite sea el de mirar a la izquierda y lo mismo para cuando apretó la tecla D... se cual es el problema pero no le consigo solución.

¿me ayudan a solucionar esto?  también se que luego tendré el mismo problema para cuando vaya a mover el personaje para las direcciones diagonales ya que quiero que se mantenga el sprite de correr ya sea izquierda o derecha asi como en el Gif.

no pido que me arreglen todo el código(tampoco es que sea mucho ya que esta super básico), si solamente me dicen de que forma debo pensar para solucionarlo es mejor para mi ya que asi busco la manera de aplicar eso a código.

====

por cierto conseguí un tema donde hablan de algo muy parecido pero no es exactamente mi problema, espero no infligir ninguna regla.

pregunta extra ¿que tan feo se ve que alguien use el drag and drop y a la vez código? es que hay cosas que no se bien como aplicar en código y utilizo eso.

Muchas gracias por tomarte el tiempo de leer mi testamento  8)
3
Hola, deje de usar Game Maker un tiempo porque suelo tratar de programar un juego así sea simple y cuando me doy cuenta de que eso que creía simple realmente es complicado, suelo desanimarme porque me siento incapaz de poder conseguir todo lo demás sabiendo que las cosas que se supone que venían después de lo "simple" serian mas complicadas... no estudie ingeniería en sistemas, computación o algo relacionado con la programación en la universidad por lo que todo lo que se de programación es gracias a Internet, y lamentablemente para algunas personas como yo, porque supongo que no soy el único, me cuesta ser constante con las cosas a diferencia de una universidad donde tienes un horario y debes tomarte el tiempo necesario aunque realmente no es tan así pero tienes cierto tiempo para estudiar en especifico un tema, debes entregar trabajos, exámenes, es decir que tienes un plan de estudio bien especifico para que al salir de la universidad ya sepas bien todo lo básico,medio y intermedio sobre la programación y mas temas relacionados, y supongo que también cosas avanzadas...estudiando por Internet se me hace algo complicado tomarme el tiempo necesario para estudiar en especifico un tema hasta el cansancio para así no olvidarlo...

lo que vengo a pedirles no es alguna duda sobre algo que este desarrollando como un juego o algo así... mas bien es mas importante para mi que eso ya que si todo sale como lo estoy planeando, con lo que les pediré cuando vuelva a tocar Game Maker debería tener mas capacidad para programar de una manera mas fluida sin necesidad de volver a hacer alguna pregunta por acá, tal vez si deba volver pero no tendré que hacer preguntas de cosas simples si no tal vez cosas ya intermedias o avanzadas...

La pregunta es la siguiente: Si fueras un profesor que debe enseñar programación a un alumno ¿Que pasos a seguir y que tiempo de estudio le darías a esa persona para que aprenda? da igual si el plan de estudio es de 5 meses o 2 años, la idea es que tomando el tiempo necesario esta persona pueda aprender por su cuenta lo necesario para cuando toque el código no tenga que buscar por Internet ""como hacer que un objeto flote  en game maker""...

para darles un ejemplo de lo que pido, si nos tocara enseñarle a caminar a una persona (suponiendo que no sepa)... tal vez lo primero seria enseñarle a gatear, luego a caminar sobre un carrito de esos para bebe, ya luego de ahí pasaría a caminar y tal vez mas adelante cosas avanzadas como correr o saltar, pero para que el pase de una etapa a otra se necesita cierto tiempo y es lo que mas necesito, un tiempo aproximado de estudio de temas en específicos y obviamente esos temas para cuando intente algún codigo no andar perdido... tal vez pido mucho pero lo mas importante seria desarrollar lo mas posible esto que llaman ""lógica de la programación"" según lo que he leído y escuchado de otras personas, esto es lo mas dificil de desarrollar, pero siento que si consigo esto ya lo demás no sera tan complicado

diría mas detalles pero creo que esto ya quedo lo suficientemente largo para aburrir a mas de uno que entre a mi Post

por cierto se que esta pregunta no parece tener que ver nada con game maker pero la verdad es que si, porque mi plan es que luego de estudiar todo lo necesario que ustedes me recomienden, volver a game maker mas preparado para poder desarrollar un videojuego que valga la pena y no experimentos al azar solo para probar códigos... si esto va contra las reglas desde ahora pido disculpas... muchas gracias por tomarse el tiempo de leer  :) espero que si alguien anda igual que yo, esto le sirva y las respuestas de la comunidad también les ayude  :)
4
no se como cambiar los Sprites o Angulo de una instancia mientras esta en un Path, si la instancia se mueve hacia la derecha quiero que cambie la animación(Sprites) viendo a la derecha y así hacia todas las direcciones, o que cambie su Angulo a 0,90,180 o 270...

es fácil cuando es un personaje que controlas con el teclado porque es fácil decirle:

[gml]

if keyboard_check(ord("D")) {
    hspeed = 5
    }
    else if keyboard_check(ord("A")) {
        hspeed = -5
    }
    else if keyboard_check(ord("W")) {
        vspeed = -5
    }
    else if keyboard_check(ord("S")) {
        vspeed = 5
    } else {
        hspeed = 0
        vspeed = 0
    }

if hspeed >= 1 {
    image_angle = 0
}
if hspeed <= -1 {
    image_angle = 180
}
if vspeed >= 1{
    image_angle = 270
}
if vspeed <= -1 {
    image_angle = 90
}

[/gml]

se que en el código anterior no hay necesidad de poner el image_angle después con mas IF pero lo hice así para experimentar si con la velocidad este cambia de angulo... aplique este código en el objeto que tiene el path y no funciona ya que los paths usan solo "speed" así que no se bien como hacer que un Path cambie sus sprites o angulo dependiendo de la direccion a la que se mueva.
5
Pido disculpas por crear otro Post tan rápido... pero para mas comodidad para mi uso del Game Maker les vengo a pedir un favor....

como ya saben el manual del game maker studio viene por defecto en ingles, y estuve revisando y sin necesidad de tener el game maker studio instalado puedes usar el manual que trae por defecto... como mi pc es algo vieja no me corre el game maker studio 2, y la verdad aunque me corriera, seguiría usando el studio 1 porque ahí tengo mi licencia standar...  hace tiempo alguien pregunto que donde podía conseguir el manual de game maker studio 2 en español, y alguien le respondió diciéndole que ya el gms2 trae su manual en español.... por lo que acá no vengo con una duda si no a pedirles el manual, alguno podría subirlo a alguna pagina como mega o mediafire para descargarlo? creo que incluso por acá se puede... no se si la ruta de instalación de gms2 sea igual a la del 1 pero mi manual esta acá:

C:\Users\Zhekken\AppData\Roaming\GameMaker-Studio

y es el archivo que se llama: 5pice

Este trae como un signo de interrogación amarillo y el formato es .chm

no se si crear un post para pedir esto este en contra de las reglas pero me ayudarían mucho si suben el manual para descargarmelo y al fin tenerlo en español sin tener que depender del internet... incluso podría servirle a los que aun usan el game maker studio 1 y quieran usar el manual en español... y tengo claro que quizá el manual del gms2 tenga cosas nuevas que no tiene el gms1 pero aun así podría servirme mucho.. Muchas Gracias  :)

6
disculpen el nombre de este titulo pero no sabia como ponerle  :'(

necesito ayuda con un juego de Tower Defense, para "resumir" mi duda, pasa que hice un cubo que tiene un rango de alcance de 60 pixeles, cada vez que el objeto enemigo pasa por este rango, se crea una bala que persigue al objeto enemigo con el codigo:

if distance_to_object(obj_enemigo) < obj_torre.rango_vision and object_exists(obj_enemigo){

    move_towards_point(obj_enemigo.x,obj_enemigo.y,5)
    }

quería que mientras la distancia entre el objeto enemigo sea menor que el rango de visión que tiene el objeto torre, y mientras exista el objeto enemigo(esta parte en la que si el objeto exista o no, me confunde y no se si lo puse bien pero sin esto la bala al no detectar un obj_enemigo y ya estar en "persecusion" cuando desaparece el obj_enemigo me manda un error) entonces se creara una bala (esto de que se cree la bala esta en otro código parecido al de arriba solo que esta es para que la bala siga al enemigo y el otro para crear la bala mientras este en el rango) que perseguirá al objeto enemigo.... no se si deba pasar el código completo, pero mi problema es que mi alarma crea la bala después de que el objeto enemigo sale del rango, no me llevo bien con las alarmas :( y también que mi idea era que mientras el objeto enemigo este dentro de este rango el objeto torre pueda disparar balas, y esta sigan al objeto enemigo (esto dando igual si ya salio del rango porque se supone que ya la bala fue disparada)... todo bien en esto pero el problema mas grave es que cuando la bala comienza a perseguir al objeto enemigo, asi haya otro objeto enemigo, la bala sigue persiguiendo al que va de primero, les dejo un gif para que entiendan el problema de forma visual...

Quiza sea muy confusa mi duda, pero quiero que cuando se cree el obj_bala esta persiga al obj_enemigo, pero no que todas las balas persigan a un mismo enemigo si no al que este dentro del rango solamente, osea el objetivo mas cercano en ese instante... mejor dejo los códigos por si acaso y así puedan ayudarme mejor:

obj_torre en Create:

poder = 0
rango_vision = 60
alarm[0] = -1

obj_torre en Step:

rango_vision = 60

if distance_to_object(obj_enemigo) < rango_vision {
    alarm[0] = 2
    }
obj_torre en alarm 0 :

if alarm[0] == 0 {
    instance_create(x,y,obj_bala)
}

obj_bala en step:

if place_meeting(x,y,obj_enemigo){
    instance_destroy()
}

if distance_to_object(obj_enemigo) < obj_torre.rango_vision and object_exists(obj_enemigo){

    move_towards_point(obj_enemigo.x,obj_enemigo.y,5)
    }

el enemigo solo tiene un evento de path para recorrer la ruta...

no espero que vengan a darme todo el código que me falta, si me dan algunas ideas de como razonar de forma lógica lo que hago mal igual me estarían ayudando... muchas gracias por tomarse su tiempo de leer  :)

7
Buenas hace poco encontré este Script(foro): https://www.comunidadgm.org/desarrollo-de-scripts/pedir-el-nombre-al-jugador/

quisiera saber si alguno de ustedes sabe como hacer lo mismo pero en vez de letras solo pedirle números al jugador, esto podría servir por ejemplo para que se abra alguna especie de ventana y abrir tipos de puertas que pidan una contraseña en números... se que se pueden escribir números pero se guardan de tipo string ... si tienen otra manera de pedir solo números al jugador se los agradecería mucho si me explican...solo quiero pedir al usuario/jugador que escriba un numero para que este se almacene en una variable, de ahí pasar a condiciones y así abrir una puerta si se escribe bien la contraseña o dar un mensaje de error si se equivocan etc...

//\\Si no me estoy explicando bien luego lo edito dando un mejor ejemplo//\\
8
Bueno les explico, ayer por la mañana desperté con la idea de hacer un mini juego de Mesa (solo para practicar mas con el programa, nada serio)  iguales a los que son como: Ludo o Monopoly, para los que no hayan jugado este tipo de juegos, en resumen, tu personaje seria una ficha con una figura cualquiera, lanzas un dado y el numero que te salga el personaje avanzara, si cae un 3 entonces avanzas 3 casillas y así hasta que el primer jugador en llegar a la meta gana...

primero tenia que saber como hacer que el personaje avanzara por casillas, osea si una Room tiene casillas de 32x32 entonces el personaje se moverá de una en una, así como se mueven los personajes en Rpg Maker, investigando conseguí este codigo que me funciono bien:

Evento Create del personaje:

key_nokey=true;

Evento Step del personaje:

if (keyboard_check(vk_down)) {
key_nokey=false;
if (place_snapped(32,32)) {
motion_set(270,2);
}
}
if (keyboard_check(vk_up)) {//Arriba
key_nokey=false;
if (place_snapped(32,32)) {
motion_set(90,2);
}
}
if (keyboard_check(vk_left)) {//Izquierda
key_nokey=false;
if (place_snapped(32,32)) {
motion_set(180,2);
}
}
if (keyboard_check(vk_right)) {//Derecha
key_nokey=false;
if (place_snapped(32,32)) {
motion_set(0,2);
}
}
if (keyboard_check_released(vk_right) or keyboard_check_released(vk_left) or keyboard_check_released(vk_up) or keyboard_check_released(vk_down)) {
key_nokey=true;
}
if (key_nokey=true) {
if (place_snapped(32,32)) {
motion_set(0,0)
}
}

el personaje con las teclas, arriba,abajo,izquierda y derecha se mueven por casillas... ya con eso pude mover el personaje como quería, pero luego pensé que los jugadores no pueden mover libremente porque se supone que las fichas deben seguir una ruta especifica, algo obvio, pero igual la idea esta en que se mueva por casillas, luego pensé en usar Paths, que con esto sigues una ruta especifica y logre hacer una donde el personaje seguía la ruta que yo quería, llegando desde el inicio hasta la meta...

lo que yo tenia en mente era hacer que al presionar una tecla cualquiera, de manera aleatoria se elija cuantos pasos debe dar el personaje (osea cuantas casillas debe moverse) del 1 al 6 como un dado.

podría usar:

dado = choose (1,2,3,4,5,6)

una vez elija un numero al azar, entonces el personaje se mueva x cantidad de veces... pero con los Paths, no se como hacer que se detenga una vez entra en una casilla o que se mueva las casillas especificas que yo quiero (sin perder la ruta del path).

y aquí va mi pregunta, ¿hay una manera de hacer que el personaje se mueva las casillas que yo quiera y que nunca pierda su ruta?

Ahí les dejo un ejemplo de mas o menos como seria, la imagen la hice rápido así que dura poco

Disculpen que no tarde tanto en volver a preguntar algo de nuevo pero no se que cantidad de tiempo debo esperar para eso o si las preguntas que debo hacer deban ser sobre algo mas complejo que esto.

======================
Editado
======================
Después de inventar con los Paths, resolví el problema (sin eso de usar casillas, aunque la verdad me hubiera gustado mas así para que sea mas exacto)

Evento Create del jugador:

path_start(path0,0,0,0)
alarm[0] = 0

Evento alarm[0]

path_speed = 0

Evento Step:

if keyboard_check_pressed(ord("1")){
path_speed = 2
alarm[0] = 16
}
if keyboard_check_pressed(ord("2")){
path_speed = 2
alarm[0] = 32
}
if keyboard_check_pressed(ord("3")){
path_speed = 2
alarm[0] = 48
}
if keyboard_check_pressed(ord("4")){
path_speed = 2
alarm[0] = 64
}
if keyboard_check_pressed(ord("5")){
path_speed = 2
alarm[0] = 80
}
if keyboard_check_pressed(ord("6")){
path_speed = 2
alarm[0] = 96
}

ya solo me queda hacer que elija uno de estos 6 de manera aleatoria para que se mueva las casillas que salga en el dado. pero de igual forma, no se estaría moviendo en casillas exactas, aun así, de manera visual seria lo mismo.

por cierto la room es de 320x320 así que cada 1 segundo el personaje que es de 32x32 se mueve un cuadro equivalente a el que serian las casillas.

(si lees esto y tienes la respuesta a mi pregunta de mas arriba, igual dímela por favor que preferiría un método mas exacto)
9
Hola, soy nuevo en esto de  Game Maker (solo se algo básico de programación) actualmente uso la versión standar de GMS ... tengo pensado hacer un proyecto pequeño para de ahí pasar a algo mas complejo, el caso es que quiero hacer como una especie de protecciones para el personaje y enemigos, para que me entiendan mejor, pongamos de ejemplo que tenemos tres objetos, obj_jugador, obj_enemigo y un obj_bala... el enemigo tiene una vida base de 100, y la bala del jugador hace un daño de 50, lo que yo quiero hacer es crear una resistencia para que el enemigo en vez de recibir 50 de daño, reciba menos gracias a la armadura base que se le de al enemigo (o al jugador) ...

estuve probando con esto en el evento create del enemigo:

vida = 100
ataque = 50
armadura = 2
resistencia = ataque / armadura

la colision del enemigo con la bala (esto dentro del ob_enemigo):

vida -= ataque
ataque = resistencia
if vida <= 0 instance_destroy()

instance_destroy(obj_bala)

entonces mi idea era que el enemigo al hacer contacto con la bala, esta se destruya, y el enemigo reciba el daño pero reducido a la mitad, ya que tiene una armadura que lo protege un 50% del daño que reciba del obj_bala .. en este caso en vez de recibir 50, debería recibir 25 de daño pero el enemigo sigue recibiendo 50 de ataque con el primer disparo, con el segundo si reduce a la mitad (si le pongo 1000 de vida, este recibe de primer ataque 50 pero los demás si son de 25).

otro error que tengo es con el obj_bala cuando sale del jugador:

obj_jugador evento step:

if keyboard_check_pressed(ord("F"))instance_create(x,y,obj_bala)

cuando la bala colisiona con el enemigo, y hay varias balas en la Room, se destruyen todas cuando una sola colisiona con el enemigo, ¿como hago para que solo se destruyan de manera individual?

espero haberme explicado bien, si ustedes tienen un mejor método para hacer algún tipo de resistencia parecido al que quiero entonces díganme por favor y si funciona con % (porcentajes) entonces mucho mejor, muchas gracias por tomarse su tiempo de leerme  :D .

pido disculpas por preguntar dos cosas en un mismo Post.