Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Mostrar Mensajes

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


Mensajes - 3dgeminis

Páginas: 1
1
Preguntas y respuestas / Re:Problema con plataforma circular
« en: Febrero 02, 2020, 12:51:24 am »
Hola LastSparkle

Game Maker guarda las coordenadas que tenía el objeto en el Step Anterior.

Cuando cambias la "X" e "Y" de la plataforma, puedes encontrar cuántos pixeles se movió horizontalmente/verticalmente y aplicarlos al player.

Ejemplo, en el Evento que mueve tu plataforma:
//Primero calcula si el player está arriba tuyo:
var player_arriba  = false
if ( place_meeting(x,y-1,obj_player) ) { player_arriba = true } //Si la plataforma es atravezable, deberás hacer otro check.
//Ahora mueves la plataforma con el código que tengas
x = lengthdir_x bla bla
y = lengthdir_y lo mismo
//Acá la magia
var x_offset = x - xprevious //Esto calcula cuántos pixeles se movió la plataforma
var y_offset = y - yprevious
//Si el player estaba arriba de la plataforma, lo mueve también:
if ( player_arriba ) {
obj_player.x += x_offset
obj_player.y += y_offset
//Acá debes correr un código de colisión en el player para detectar si ha colisionado con algo, así evitas que el player se atasque.
//Según el resultado puedes regresar la plataforma a su posición anterior (x = xprevious) para no avanzar o botar al player de la plataforma o causarle daño al player o no mover el player, etc.
//Ejemplo, si el player colisiona, no mueve la plataforma:
var player_colisiona = false
with ( obj_player ) { if ( place_meeting(x,y,obj_wall) ) { player_colisiona = true } }
if ( player_colisiona = true ) { x = xprevious; y = yprevious; obj_player.x -= x_offset; obj_player.y += y_offset } //Esto regresa tanto a la plataforma como al player a la posición anterior.
}

Yo he llamado al player "obj_player", pero tu le pones el nombre que usaste tú

Saludos
Los siguientes usuarios dieron las gracias a este tema: 3dgeminis

2
Desarrollo de Scripts / orden_alfabetico(str,index)
« en: Noviembre 09, 2018, 05:01:57 pm »
Nombre del creador: REYES DAVILA
Breve descripción de su función: orden alfabético.
Versión GM utilizada: GM4
Código del Script:

b1=0
b3=0
kbk=0
contador=0

//ADMINISTRADOR DE PALABRAS
palabra_ram=""
i2=1
for(i=1;i<=string_length(argument0);i+=1)
 {
  letra=string_copy(argument0,i,1)
  letra_pos=string_copy(argument0,i-1,1)
  if(letra!=" ")palabra_ram+=letra
  if(letra=" " && letra_pos!=" " || i=string_length(argument0))
   {
    palabra[i2]=palabra_ram
    palabra_id[i2]=i2
    palabra_letra[i2]=string_copy(palabra[i2],1,1)
    if(ord(palabra_letra[i2])>=91 && ord(palabra_letra[i2])<=122)palabra_letra[i2]=chr(ord(palabra_letra[i2])-32)
    palabra_ram=""
    if(i<string_length(argument0))i2+=1
   }
 }
palabra_numero=i2

//organizador de palabras
for(i=1;i<=palabra_numero;i+=1)
 {
 palabra_pos[i]=1
 for(i2=1;i2<=palabra_numero;i2+=1)
  {
  ord1=ord(palabra_letra[i])
  ord2=ord(palabra_letra[i2])
  id1=palabra_id[i]
  id2=palabra_id[i2]
  if(i!=i2 && ord1 > ord2){palabra_pos[i]+=1}
  if(i!=i2 && ord1 = ord2)
   {
   if(palabra[i]=palabra[i2])    
    {
    if(id1>id2){palabra_pos[i]+=1}
    }
    else
    {
    if(string_length(palabra[i])>1 && string_length(palabra[i2])>1)
     {
     superior=0
     i3=1
     repetir=1
     for(i3=1;repetir;i3+=1)
      {
      repetir=0
      letra=string_copy(palabra[i],i3+1,1)
      letra2=string_copy(palabra[i2],i3+1,1)
      if(string_length(palabra[i])>i3-1 && string_length(palabra[i2])>i3-1)
       {
       if(ord(letra) > ord(letra2)){superior=1}
       if(ord(letra) = ord(letra2)){repetir=1;}
       }
      }
     if(superior){palabra_pos[i]+=1}
     }
     else
     {
     if(string_length(palabra[i])!=string_length(palabra[i2]))
      {
      if(string_length(palabra[i])>string_length(palabra[i2])){palabra_pos[i]+=1;}
      }
      else
      {
      if(id1>id2){palabra_pos[i]+=1;palabra_cod[i]="aqui"}
      }
     }//fin else
    }//fin else
   }//fin if
  }//fin for
 }//fin for

//organizador de palabras 2
for(i=1;i<=palabra_numero;i+=1)
 {
 for(i2=1;i!=palabra_pos[i2];i2+=1){};
 palabra_ordenada[i]=palabra[i2]
 }

//agrupando palabras
str2=""
for(i=1;i<=palabra_numero;i+=1)
 {
 str2+=palabra_ordenada[i]+" "
 }

//devolviendo valor

if(argument1)
 {
 return palabra_ordenada[argument1]
 }
 else
 {
 return  str2
 }

orden_alfabetico(str,index): en str colocas la cadena con el conjunto de palabras a ordenar y en index colocas la palabra que quieres ver, si no se especifica nada devuelve la cadena completa ordenada.

Ejemplo1:
orden_alfabetico("corazón tiburón azul ballena")
esto devuelve cadena: "azul ballena corazón tiburón"

Ejemplo2:
orden_alfabético("corazón tiburón azul ballena", 1)
esto devuelve cadena: "azul"

Los siguientes usuarios dieron las gracias a este tema: 3dgeminis

3
Propuestas y soporte / Re:Busco editables gmk 7...
« en: Agosto 26, 2017, 01:53:36 am »
 :GM7: Thanks 3dgeminis, mas que agradecido... Ahora estoy en viaje y sin créditos, así que probaré todo el fin de semana o lunes cuando esté frente a mi ordenador.

Espero que esa pagina sea segura al igual que el link del pack je je... Ya he tenido mis problemas por querer descargar Gm8. Pero eso no importa.

Estoy en deuda contigo 3dgeminis, a subirte unos puntitos 10/10. Saludos. :)
Los siguientes usuarios dieron las gracias a este tema: 3dgeminis

4
Preguntas y respuestas / Re:puntuacion
« en: Agosto 25, 2017, 12:38:54 pm »
Eso no se puede hacer como ha dicho el anterior usuario, eso lo haces en el evento draw:

Código: [Seleccionar]
punt_mostrar=string_format(punt,8,0); //Donde hay un '8', pones la longitud total máxima del número, asi que si tienes 1000 puntos, se añadiran 4 ceros detrás para hacer 8.
punt_mostrar=string_replace_all(punt_mostrar,' ','0') //Aquí sustituimos los espacios que crea la función anterior por '0'
draw_text(0,0,punt_mostrar);  //Mostramos los puntos

Debería funcionar, si es así no olvides darme un puntito ;D
Los siguientes usuarios dieron las gracias a este tema: 3dgeminis

Páginas: 1