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.

Mensajes - cristopher2545

31
puedes forzarla después que el dialogo termine no tengo un ejemplo de un sistema de dialogo pero podrías hacer que en la ultima linea de texto que conforme el dialogo entre personajes exista una variable que permita hacer una transición como por ejemplo dialogo_end=true

if dialogo_end=true //si el dialogo se acabo
{
lock=true / bloquea al personaje en su sitio
other.lock=true / bloqueas al enemigo en su lugar
instance_create(x,y,obj_tranmsicion) /creas una transición animada estilo rpg de antaño
}

en el animation end event de la animacion de transicion desactivas todo lo anterior

if sprite_index= spr_transition
{
dialogo_end=false
room_goto(combate_zone)
}

para hacer entrar en combate si el enemigo te toca podria ser algo como

if place_meeting(x,y,obj_malo)
{
lock=true / bloquea al personaje en su sitio
other.lock=true / bloqueas al enemigo en su lugar
instance_create(x,y,obj_tranmsicion) /creas una transición animada estilo rpg de antaño
}

if sprite_index= spr_transition
{
room_goto(combate_zone)
}
32
Desarrollo de Scripts / One way platforms
Mayo 23, 2019, 11:17:42 AM
Autor original: CRISTOPHER2545
Versión de GM utilizada:  :GM8: :GMS:
Descripción: este código añade las plataformas de un sentido o plataformas fantasma, las cuales puedes subir por debajo y bajar estando arriba si aprietas la tecla indicada, si solo deseas que funcione de un sentido puedes quitar la parte del código que indico abajo (el código es compatible con el de shaun spalding, el codigo también es compatible y funcional si la plataforma se mueve en horizontal).


Código:
evento CREATE de la plataforma

sprite_index= -1;
force=false // forza el cambio de mascara de la plataforma
down=false // desactiva la solides al apretar una tecla


evento STEP de la plataforma


mask_index = spr_platform

if force=true or down=true
{
mask_index=-1
}

// la variable onGround va en el personaje y es una variable para detectar si estas en el piso, si tu personaje no tiene una puedes usar esta que va en el evento step del jugador, no olvides declarar la variable en el create
if place_meeting(x,y-1,obj_wall)
{
onGround=true
}
else
onGround=false
///////////////////////////////////////


if !place_meeting(x,y-1,obj_player) && obj_player.onGround=false && obj_player.y>y
{
    force=true
    down=false  //remover si deseas solo subir a la plataforma
    }
    else
    {
    force=false
// remover si solo deseas subirte a la plataforma
    if keyboard_check(vk_down) 
    {
    down=true
    }
    }




evento DRAW de la plataforma



draw_sprite(spr_platform_M,0,x,y);



33
podrías empezar a analizar los pixel art de otros juegos y ir haciendo tus paletas de colores y tonalidades siento que teniendo eso y un poco de practica con los dibujos puedes llegar a crear cosas lindas si le metes amor a lo que haces
34
hehe gracias <3 esperemos que si , me gustaría poder implementarlas <3
35
pues podrías hacer que los enemigos tengan ataques predeterminados  como en lista por ejemplo

ataque=0 (1,2,3,4,5,6)

y hacer que el enemigo escoja las que tiene disponibles y las ejecute con un choose cuando el jugador finalice su ataque, si hay varios personajes en pantalla puedes darle una variable

personaje=0 (1,2,3,4)

y hacer que tenga varias reglas como atacar al personaje con menos vida o al que tenga mas o cosas asi
36
gracias por la pronta respuesta <3 el codigo funciona pero des-afortunadamente siguen los mismos errores antes mencionados, la plataforma se niega a mantener al jugador sobre y en su radio de giro pero agradezco el esfuerzo :)
37
hola a todos! Después de trabajar y estar viendo y practicando logre hacer que funcionaran como la seda! agradezco a todos los que me dieron un empujón <3 dejo la solución por si a alguien quiere implementarlas! es pixel perfect y funciona muy suave !

puedes crear cuantas plataformas quieras y si les das un angulo diferente en el código deegree todas giraran en los juegos tipo mario  :)

create

degree = 0;  // The degree you want it to start at.
orginX = x;  // The center of your circle, x coord.
orginY = y;  // The center of your circle, y coord.
rad = 100;  // The radius of your circle.
spd=1
origin=0 // recuerda el ultimo punto en x donde el jugador piso


step


if Angle>=360 {Angle-=360}

Angle += Speed;


origin= obj_player.x - xprevious // esta siempre buscando la x del jugador




// Update position

y = lengthdir_y(Orbit, Angle) + Center_Y;
x = lengthdir_x(Orbit, Angle) + Center_X



if place_meeting(x,y-12,obj_player)
{
if obj_player.force_jump=false
{
obj_player.y = lengthdir_y(Orbit, Angle) + Center_Y
obj_player.x = lengthdir_x(Orbit, Angle) + Center_X + origin // si estas tocando la plataforma el x se congela en el punto exacto que registro el código origin
}

}



38
este codigo va en el evento step del jugador,  si deseas que el personaje no pueda bajar estando arriba solo quita esta parte "or obj_player.key_down "


with obj_platform
{
    if other.bbox_bottom  >= bbox_bottom or obj_player.key_down
    {
        mask_index = -1;
     
    }
    else
   
    {
        if other.vsp >= 0
        {
       
            mask_index = spr_platform;
        }
    }
}

39
Juegos en desarrollo / Re:-The Beat Em Up Proyect-
Marzo 15, 2019, 03:04:15 PM
NEW UPDATE- RUN && PUNCH UPDATE
40
para que siempre funcione y sea consistente uso

 
   
     z_keyD= keyboard_check(ord("Z"));
     x_keyD= keyboard_check(ord("X"));
     c_keyD= keyboard_checkd(ord("C"));


pero directamente no funciona y pues para ejecutar los ataques uso las variables combinadas que me mencione antes, creo yo que es porque ambos ataques comparten las mismas teclas pero no entiendo como solucionarlo
41
hola gracias por sus respuestas

ya intente cambiar el "*" por +  y no muestra mejoría de hecho empeoro mas ahora el ataque especial ni siquiera reacciona y realmente no entiendo la razón ni el porque, trate de bloquear la tecla de ataque cuando el como inicia pero se niega a funcionar bien
42
hola a todos!

vengo aquí con otro pequeño problema, esto (intentando) hacer un juego de peleas al estilo retro, tengo casi todo excepto algo que me ah molestado por días y eso es el sistema de combate tengo la idea de hacerlo eh incluso ya me ah salido pero hay algo que no funciona correctamente me explico:

tengo un código que maneja esas cosas si pulsas 2 botones a la vez haces un ataque, si pulsas solo un botón haces otro


if z_key*x_key
{
// hace un ataque convinado
}
else
if z_key
{
//hace un ataque sencillo
}


este codigo funciona pero tiene problemas, por ejemplo cuando quiero que el personaje se cubra presionas 2 teclas, el problema es que al presionarlas no es constante aveces bloquea y otras veces simplemente suelta un puñetazo ignorando la acción original y esto se nota mas cuando estas ejecutando varios combo a la vez cuando estas peleando y usas un ataque combinado el jugador simplemente lo ignora y da uno básico, lo haces la segunda vez y lo hace de manera correcta y asi pasa de manera irregular y no comprendo que hago mal.

calvez bloquear el ataque normal instantáneamente que presiones los botones combinados pero realmente nos e como hacerlo

si alguien tiene una idea de como mejorar lo que ya tengo seria genial porque me esta molestando que aveces funcione y aveces no sin razon y como no hay mucha ayuda online es difícil detectar la situación espero puedan ayudarme y de antemano gracias!
43
tal vez  no pueda resolver tu pregunta pero intentare de resolver parte de ella, estas de suerte trabajo en un juego isometrico  y se un poco

puedes usar este código de movimiento y colisiones no es perfecto pero hace el trabajo (funciona si lo copias y pegas pero antes analiza para poder entender lo que sigue)

CREATE EVENT
h = 0;           // velocidad horizontal
      v = 0;           // velocidad vertical
      m = 1;           // multiplica la velocidad actual
      accel = 1        // aceleracion en el piso
      fric  = 0.5;     // friccion en el piso
      maxSpd = 2.1     // velocidad maxima


STEP EVENT

//[SISTEMA DE COLICIONES]
//--------------------------------------------------------------------------------//     

// VARIABLES TEMPORALES

    var i;

// VERTICAL

    for (i = 0; i < abs(v); ++i) {
    if (!place_meeting(x, y + sign(v),obj_parent_solid))
    y += sign(v);
    else {
    v = 0;
    break;
    }
    }

// HORIZONTAL

    for (i = 0; i < abs(h); ++i) {
    if (!place_meeting(x + sign(h), y, obj_parent_solid))
    x += sign(h);
    else {
    h = 0;
    break;
    }
    }
   
//[MOVIMIENTO (KEY INPUTS)]
//--------------------------------------------------------------------------------//

// IZQUIERDA



     if (kLeft && !kRight) 
     {
     if (h > 0)
     h = Approach(h, 0, fric);
     h = Approach(h, -maxSpd, accel);
     }

// DERECHA

     if (kRight && !kLeft)
     {
     if (h < 0)
     h = Approach(h, 0, fric);   
     h = Approach(h, maxSpd, accel);
     }
}   
// ARRIBA


     if (kUp && !kDown)
     {
     if (v > 0)
     v = Approach(v, 0, fric);   
     v = Approach(v, -maxSpd, accel);
     }


// ABAJO

     if (kDown && !kUp)
     {
     if (v < 0)
     v = Approach(v, 0, fric);   
     v = Approach(v, maxSpd, accel);
     }     



para manejar la profundidad


depth=-y*10



con lo de subir la rampa no creo poder ayudarte y aunque tenga algo esta experimental y no funciona correctamente la verdad pero si logro ver que pasa te lo comento
44
Preguntas y respuestas / Re:Sumar inputs del teclado
Marzo 01, 2019, 07:20:11 AM
Cita de: Hezz en Marzo 01, 2019, 06:58:01 AM
Hola cristopher2545! Le podés aplicar álgebra booleana.

Lo que querés hacer es lo que haría la puerta lógica "AND". En álgebra booleana esto se expresa de esta forma:
Con dos valores:
A * B = B * A
O con tres valores
(A * B) *C = A * (B * C) = A * B * C

Aplicándolo a lo que querés hacer vos quedaría así:
[gml]//Las teclas las definís vos según tu necesidad
var tecla_a = keyboard_check(tecla);
var tecla_b = keyboard_check(tecla);
var tecla_c = keyboard_check(tecla);

//Primer caso (TECLA A + TECLA B = salto)
if (tecla_a * tecla_b){
    //Ejecutar un script de salto
    salto();
}

//Segundo caso (TECLA A + TECLA B + TECLA C = sprintar)
if (tecla_a * tecla_b * tecla_c){
    //Ejecutar un script de sprint
    sprint();
}
[/gml]

Lo que sucede es que, al presionar las teclas, las variables se actualizan a 1. Y al soltar, a 0.
Suponé que estás presionando las teclas "a" y "b":
[gml]if (tecla_a * tecla_b *tecla_c) {...}
//Es igual que:
if (1 * 1 * 0) {...} //1 * 1 * 0 = 0, que es false
[/gml]
Se tiene que presionar las 3 teclas al mismo tiempo para que ese evento se ejecute.

Te recomiendo que leas información sobre álgebra booleana. Este tema aplicado a la programación es muy útil.

venga ya de haber sabido colega <3 creo debo darle una desempolvada  al libro de matemáticas para no estar batallando
te agradezco la respuesta <3
45
Buenas a todos!

tengo un pequeño problema que no soy capas de resolver, os cuento:

quiero que el jugador apriete varias teclas al mismo tiempo para hacer una acción, que esta acción solo se cumpla si las 2 teclas se pulsaron a la vez por ejemplo

TECLA A + TECLA B = salto
TECLA A +TECLA B +TECLA C = sprintar

si alguien sabe como hacerlo o darme una idea seria genial!
de antemano gracias!  :)