Menú

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.

Menú Mostrar Mensajes

Temas - ZELDA

#1
Saludos, he estado tratando de implementar un sistema de dialogo letra por letra en mi proyecto de gms 2 y me acorde que hace años aquí en CGM me había descargado un ejemplo que era de game maker 5 y lo intente primero en gm 8 y funciono genial, pero en gms 2 no, lo que pasa es que los saltos de linea si lo hace bien, pero al momento de pasar a otra pagina del dialogo no lo hace solo se queda en la primera pagina.
Para no ponerles mas texto aquí les dejo un editable que hice con gm 8 y ahí viene el código y en el mismo dialogo les menciono el error.
No puede ver este archivo adjunto.
#2
Buenas tardes CGM, mi duda es porque usar place_free es considerado como una mala practica, les cuento, hace tiempo en un grupo de Facebook hice una pregunta y les pase el código el cual tenia place_free, uno me contesto la duda que tenia en ese entonces, pero otro me dijo "No uses place_free porque eso es una mala practica mejor usa place_meeting y quitale el solido a los objetos" y le pregunte "¿Por qué es una mala practica?" y solo conseguí que me insultara  XD  y otro le contesto cierto es una mala practica y nunca me dijeron el porque
#3
Ya quedo, tuve que hacerle muchísimas modificaciones al codigo, les dejo el editable arreglado Se los dejo por si alguno tiene problemas similares
Buenos días Comunidad, mi duda es que quisiera lograr slopes con este codigo, para un juego tipo Zelda
repeat (abs(xvel))
{
    if (place_meeting(x + sign(xvel), y, obj_Wall)) { break; }
    x += sign(xvel);
}

repeat (abs(yvel))
{
    if (place_meeting(x, y + sign(yvel), obj_Wall)) { break; }
    y += sign(yvel)
}

if (Down) { yvel = 2; }
if (Left) { xvel = -2; }
if (Up) { yvel = -2; }
if (Right) { xvel = 2; }
if (!Left && !Right) { xvel = 0; }
if (!Up && !Down) { yvel = 0; }
Este mismo codigo lo uso en plataformas, y ahi si logre hacer slopes
repeat(abs(xvel))
{
    var slope = 0;
    while(!place_free(x + xvel, y - slope) && slope <= abs(1 * xvel / 2)) { slope += 1; }
    if (!place_free(x + sign(xvel), y - slope)) { break; }
    else { y -= slope; }
    x += sign(xvel);
    //Bajar slopes
    if (place_free(x, y) && yvel >= 0 && !place_free(x, y + 2 + abs(xvel)))
    {
        while (place_free(x, y + 1)) { y += 1; }
    }
}
y funciona bien en plataformas, pero porque el personaje se pega a la slope y solo avanza cuando uno aprieta izquierda o derecha, pero no en el tipo Zelda
les dejo un editable para que vean el error.
Nota: Uso gms2, pero lo hice de nuevo en gm8 para compartirlo ya que se me hace mas fácil.

EDITO: obtuve un avance, pero igual no queda bien
//Colisiones perfectas en x
repeat(abs(xvel))
{
    slope = 0;
    while(place_meeting(x + xvel, y - slope, object1) && slope <= abs(1 * xvel / 2)) { slope += 1; }
    if (place_meeting(x + sign(xvel), y - slope, object1)) { break; }
    else { y -= slope; }
    x += sign(xvel);
}
//en y
repeat (abs(yvel))
{
    slope = 0;
    while (place_meeting(x - slope, y + yvel, object1) && slope <= abs(1 * yvel)) { slope += 1; }
    if (place_meeting(x - slope, y + sign(yvel), object1)) { break; }
    else { x -= slope; }
    y += sign(yvel);
}
Pueden intentar ponerlo en el editable.
#4
Buenas tardes, uso este codigo para desactivar las instancias:
instance_deactivate_region(camera_get_view_x(0), camera_get_view_y(0), camera_get_view_width(0), camera_get_view_height(0), false, true);
instance_activate_region(camera_get_view_x(0), camera_get_view_y(0), camera_get_view_width(0), camera_get_view_height(0), true);

Pero el problema es que tambien se desactiva el suelo, y al cambiar los valores ya no se borra el suelo que esta debajo,  pero no se activan paredes, ni enemigos, este codigo lo probe en game maker 8 solamente cambiando el cmaera_get_view_x, por el view_xview Y yview respectivamente funciona perfecto pero aqui no
nota:
   -La vista es 400x224
   -En camera_get_view_y y en camera_get_view_height les puse + 192 y no se desactiva el suelo pero no ocurre lo mismo en x ni width.
gracias
Edito: solo tuve que agregar un view_camera[0]:
instance_deactivate_region(camera_get_view_x(view_camera[0]), camera_get_view_y(view_camera[0]), camera_get_view_width(view_camera[0]), camera_get_view_height(view_camera[0]), false, true);
instance_activate_region(camera_get_view_x(view_camera[0]), camera_get_view_y(view_camera[0]), camera_get_view_width(view_camera[0]), camera_get_view_height(view_camera[0]), true);
#5
Preguntas y respuestas / Problema slopes (SOLUCIONADO)
Noviembre 06, 2018, 02:21:11 PM
Buenas Tardes, he estado probando varios codigos de colisiones perfectas(y uno me gusto mas que los demas) y quise juntarlo con un codigo de slopes que me funciono con otro, pero con este solamente funciona bajando los lopes y no subiendo el codigo es este:
//Bucle para colisiones perfectas en X
repeat(abs(xvel))
{
    slope = 0;
    while(!place_free(x, y - slope) && slope <= abs(1 * xvel)) { slope += 1; }
    if (!place_free(x + sign(xvel), y - slope)) { break; }
    else
    {
        y -= slope;
    }
    x += sign(xvel);
    //Bajar slopes
    if place_free(x, y) && yvel >= 0 && !place_free(x, y + 2 + abs(xvel))
    {
        while (place_free(x, y + 1))
        {
            y += 1;
        }
    }
}

//Bucle para colisiones perfectas en Y
repeat(abs(yvel))
{
    if (!place_free(x, y + sign(yvel)))
    {
        if (yvel >= 0) { saltos = 0; }
        break;
    }
    y += sign(yvel);
}

EDITO: Ya lo solucione, modifique esta parte:
slope = 0;
while(!place_free(x + xvel, y - slope) && slope <= abs(1 * xvel / 2)) { slope += 1; }
#6
Bueno en realidad ya tengo el Dash, con el que tengo el problema es con el codigo de apretar 2 veces una direccion para poder hacer el Dash, lo que pasa es que siento que no es muy preciso es decir no siempre lo hace y no se de que forma mejorarlo el codigo es este:
Evento step
//Apretar 2 veces una direccion para hacer el dash
tiempo += 1;
if (tiempo >= 20)
{
    if (!Left || !Right)
    {
        n_vecesL = 0;
        n_vecesR = 0;
    }
    tiempo = 0;
}
if (!LeftPress) { canDash = false; }
if (!RightPress) { canDash = false; }
if (LeftPress)
{
    n_vecesL += 1;
}
if (RightPress)
{
    n_vecesR += 1;
}
if (n_vecesL == 2 || n_vecesR == 2)
{
    canDash = true;
}

//Dash
if (!place_free(x, y + 1))
{
    if (canDash)
    {
        if (dash == 0)
        {
            if (canMove == 1)
            {
                dash = 1;
                if (dir = 1 && dash = 1) { hspd = -spd * 4.2 }
                if (dir = 0 && dash = 1) { hspd = spd * 4.2 }
                canMove = 0;
                alarm[0] = 15;
            }
        }
    }
}

Alarma 0
canMove = 1;
dash = 0;
canDash = false;

Les dejo el editable para que vean el codigo completo
Nota: el room esta en 60
Saludos
#7
Preguntas y respuestas / Error WallJump (SOLUCIONADO)
Agosto 08, 2018, 09:34:14 PM
Buenos dias CGm tengo un problema con mi codigo de wall jump el problema es que al regresar al bloque en el cual se le hizo el wallJump ya no hace mas el wall jump hasta que toca el suelo ya se puede y ese puede ser un problema cuando se esta jugando  XD el codigo que estoy usando para el wallJump es:
//WallJump
if(place_free(x, y + 1))
{
    if (Jump)
    {
        if (Right and !Left and !place_free(x + 1, y) and wallJump = 1)
        {
            canMove = 0;
            alarm[0] = 12;
            wallJump = -1
            dir = 1
            vspd = -velSalto * 1.1;
        }
        if (Left and !Right and !place_free(x - 1, y) and wallJump = -1)
        {
            canMove = 0;
            alarm[0] = 12;
            wallJump = 1;
            dir = 0
            vspd = -velSalto * 1.1;
        }
    }
}
if (canMove = 0)
{
    if (dir = 0) { hspd = spd * 2.2; }
    if (dir = 1) { hspd = -spd * 2.2; }
}

//Deslizamiento paredes
if (Right && !place_free(x + 1, y) && vspd > 0)
{
    vspd = 1;
}
else if (Left && !place_free(x - 1, y) && vspd > 0)
{
    vspd = 1;
}

Les dejo una imagen gif del error y el editable. [https://gifs.com/gif/4RZ0BJ
Saludos
#8
Buenas dias/noches. bueno es que estoy haciendo un engine, no un juego de plataformas, pero me he atorado con el wallJump y el salto gradual, en mi engine uso unos codigos de colisiones perfectas tanto el movimiento como lo gravedad, pero el wallJump y el salto gradual simplemente no me salen.
El codigo que uso para el wallJump es:
//WallJump
if (Jump)
{
    if (Right and !Left and !place_free(x + 1, y) and wallJump = 1)
    {
        canMove = 0;
        alarm[0] = 10;
        wallJump = -1
        vspd = -velSalto;
    }
    if (Left and !Right and !place_free(x - 1, y) and wallJump = -1)
    {
        canMove = 0;
        alarm[0] = 10
        wallJump = 1;
        vspd = -velSalto;
    }
}

if (canMove = 0)
{
    if (dir = 0) { hspd = spd * 2; }
    if (dir = 1) { hspd = -spd * 2; }
}

y el codigo del salto gradual:
if (keyboard_check_released(ord('X')) and vspd > 0) { vspd += abs(vspd / 1.5); }

Dejo el engine para que vean como es el codigo, casi todo lo tengo en step menos las variables.
EDITO: uso el  :GM8: para poder editar sin tener que estar obligado a guardar como en el  :GMS:
#9
Hola CGM, tengo una duda xD, resulta que estoy haciendo un infinite runner, y me gustaria que el contador use sprites de numeros, tengo el sprite de los numeros (spr_Numbers), no se que hacer, porque tengo los siguientes codigos:
En create de obj_Control:
global.Metros=0;

En step:
global.Metros+=1

En draw:
draw_sprite(spr_Numbers, 0, view_xview[0], view_yview[0])

pero al llegar a 10 sigue contando pero desde 0 y me gustaria que no tuviera fin ni que volviera a contar, si no es mucha molestia me podrian ayudar.
Saludos y gracias.
#10
Hola otra vez, mi problema es que con este codigo se atora con slopes y estuve buscando ejemplos y tutoriales pero no pude implementarlos, este es el codigo:
Left=keyboard_check(ord('A'))
Up=keyboard_check(ord('W'))
Right=keyboard_check(ord('D'))

repeat (abs(xvel)){
if place_meeting(x+sign(xvel),y,obj_Wall) break;
x+=sign(xvel)
}
repeat (abs(yvel)){
if place_meeting(x,y+sign(yvel),obj_Wall) break;
y+=sign(yvel)
}
if Left
{
    xvel=8
}
if Right
{
    xvel=-8
}
if !Left && !Right
{
    xvel=0
}
if Left && Right
{
    xvel=0
}
if place_meeting(x,y+1,obj_Wall)
{
    ground=1
    yvel=0
}
else
{
    ground=0
    yvel+=0.3
}
if up && ground
{
    yvel=-6
}
if (keyboard_check_released(ord("W")) and yvel<0)yvel+=(abs(yvel/1.5));

en otra ocacion me ayudaron con el salto gradual.
Saludos y gracias
#11
Buenas noches, dias o tardes, estoy haciendo un juego de plataformas en el game maker 8 y encontre un engine de colisiones perfectas que maneja el movimiento y la gravedad con algoritmos propiedad de SP_Christian y ya aprendi a usarlo sin mirar el engine.
(Todo en el evento step)
Left=keyboard_check(ord('A'))
Up=keyboard_check(ord('W'))
Right=keyboard_check(ord('D'))

repeat (abs(xvel)){
if place_meeting(x+sign(xvel),y,obj_Wall) break;
x+=sign(xvel)
}
repeat (abs(yvel)){
if place_meeting(x,y+sign(yvel),obj_Wall) break;
y+=sign(yvel)
}
if Left
{
    xvel=8
}
if Right
{
    xvel=-8
}
if !Left && !Right
{
    xvel=0
}
if Left && Right
{
    xvel=0
}
if place_meeting(x,y+1,obj_Wall)
{
    ground=1
    yvel=0
}
else
{
    ground=0
    yvel+=0.3
}
if up && ground
{
    yvel=-6
}

Saludos y gracias de antemano
#13
Hola CGM ps vengo con esta duda, quiero hacer que cuando yo apriete una flecha solo una vez camine y que cuando apriete 2 veces corra pero no se como hacer esto que les dije, el codigo que uso es este:
if place_free(x-4,y)
{
    x-=4
    dir=1
    sprite_index=spr_Mono_Walk
    image_xscale=-1
    image_speed=0.4
}

Saludos
#14
Hola CGM descargue un ejemplo que muestra como hacer una collision perfecta con el sig codigo
if keyboard_check(vk_up){
for(i=0; i<(velocidad+1) i+=1) {
if place_free(x,y-i) Y=i else break
} y-=Y
}
if keyboard_check(vk_down){
for(i=0; i<(velocidad+1) i+=1) {
if place_free(x,y+i) Y=i else break
} y+=Y
}

y ese lo use para las paletas y mi pregunta es como hago para que la pelota use ese mismo codigo pero que se mueva sola y que se mueva aunque sea nadamas horizontal pero alatoriamente, es decir: izquierda o derecha.
saludos y gracias de antemano!!!
#15
Hola CGM, el problema es que estoy haciendo un shooter con vista cenital y antes de hacer que el personaje dispare quiero solucionar este problema,.
en create tengo:
global.arma=0

y en step:
if global.arma=0
{
    image_single=0
}
if global.arma=1
{
    image_single=1
}
if global.arma=2
{
    image_single=2
}
if global.arma=3
{
    image_single=3
}
if global.arma=4
{
    image_single=4
}
if global.arma=5
{
    image_single=5
}
if global.arma=6
{
    image_single=6
}

y en las ruedas del raton tengo global.arma+=1 y global.arma-=1
en el objeto de control tengo:
global.arma1=0
global.arma2=0
global.arma3=0, etc

y en la colision con el arma obviamente puse que si tenga municiones, pero lo que yo quiero lograr es que si no tiene armas o municiones se pase al arma siguiente o si no tiene armas que no cambie, puse:
if global.arma1>0 and global.arma2>0, etc
{
    global.arma+=1
} y tambien el el de global.arma-=1

pero no funciona porque aun cuando agarro una sola arma cambia a todas las armas y no entiendo que pasa!!! alguien me podria ayudar por favor???
saludos
#16
Preguntas y respuestas / ¿Como cambiar la gravedad?
Diciembre 15, 2012, 09:55:12 PM
Hola CGM bueno mi pregunta es esta como puedo cambiar la gravedad porque no cambia al momento de presionar la tecla asignada, les muestro el codigo
gravity_direction=270
gravity=0.5
if place_meeting(x,y+1,obj_Wall){
if gravity_direction=270{
if keyboard_check_pressed(vk_space){
gravity_direction=90
gravity=0.5
}
}
if gravity_direction=90{
if keyboard_check_pressed(vk_space){
gravity_direction=270
gravity=0.5
}
}
}

saludos
P.D:he buscado en el b uscador y no aparece nada!!!
#17
Hola comunidad gm vengo con esta duda de los slopes  porque se atora al caminar hacia los slopes y al brincar sobre ellos y tengo estos códigos:
En Left
if keyboard_check(ord("Z")) //si la tecla Z está presionada
    {
    if place_free(x-5,y)
        {
        dir=-1;
        sprite_index=spr_mario_small_run;
        image_xscale=-1
        mov=true;
        x-=5;
        image_speed=0.5;
        }
    }
else //si la tecla Z no está presionada
    {
    if place_free(x-3,y)
        {
        dir=-1;
        sprite_index=spr_mario_small_walk;
        image_xscale=-1
        mov=true;
        x-=3;
        image_speed=0.3;
        }
    }

if jump=1
    {sprite_index=spr_mario_small_jump;
    image_xscale=-1}

En Right
if keyboard_check(ord("Z")) //si la tecla Z está presionada
    {
    if place_free(x+5,y)
        {
        dir=1;
        sprite_index=spr_mario_small_run;
        image_xscale=1
        mov=true;
        x+=5;
        image_speed=0.5;
        }
    }
else //si la tecla Z no está presionada
    {
    if place_free(x+3,y)
        {
        dir=1;
        sprite_index=spr_mario_small_walk;
        image_xscale=1
        mov=true;
        x+=3;
        image_speed=0.3;
        }
    }

if jump=1
    {sprite_index=spr_mario_small_jump;
    image_xscale=1}

Y en colision con el bloque y slopes
if (vspeed > 0 && not place_free(x,y+vspeed)) {move_contact_solid(direction,12);
    vspeed = 0
    if dir=1
    {
    sprite_index=spr_mario_small_walk;
    image_xscale=1
    image_single=0
    }
    if dir=-1
    {
    sprite_index=spr_mario_small_walk;
    image_xscale=-1
    image_single=0
    }
    jump=0
    }

espero su ayuda y gracias de antemano
saludos
#18
Hola CGM pues vengo con esta duda pues fijense que habia visto yo un ejemplo de un mario isometrico tipo mario rpg y ya perdi el ejemplo pero logre rescartar esta imagen (adjunta) que me acuerdo que de esa imagen se sacaba todos los movimientos de mario y mi pregunta es como se logra eso???
saludos
#19
Hola CGM hace mucho que no me metia al foro y venia con esta pregunta de como se podria animar los fondos como estos

Uploaded with ImageShack.us
gracias de antemano
saludos
#20
hola amigos quisiera saber como hacer que cuando termine el salto de mi mono y vaya callendo cambie el sprite  y cuando no tenga un objeto solido debajo de el tenga la animacion de cuando se cae el codigo del salto es este
if not place_free(x+0,y+1)
vspeed=-7
if global.direccion=1
    {
    sprite_index=spr_mono_jumpR;
    }
if global.direccion=0
    {
    sprite_index=spr_mono_jumpL;
    }

gracias de antemano