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 - jmbs19

46
una cosa importante

CitarThis function calculates the distance from the edge of the bounding box of the calling instance to the nearest edge of the nearest instance of the object specified.

la distancia no es desde el origen, es desde el lado mas cercano al objeto, el borde, no el origen.
47
no se si ya resolvieron tu problema, pero el codigo que pasaste esta mal.
Cita de: eams1986 en Enero 23, 2016, 01:59:00 AM
Hola amigos makeros necesito una ayudita con este tema

tengo este codigo en

//END STEP DE LA PLATAFORMA
if place_meeting(x,y-1,obj_player)
  {
   obj_player.x+=spd; //funciona bien
  }
  else

if place_meeting(x,y-1,obj_player)
  {
   obj_player.x-=spd;//aqui no funciona
  }


https://gyazo.com/6d38726bceb3054307757348c94c2b97

Es el player el problema la plataforma funka bien!

para un lado si se mueve junto a la plataforma

pero para el otro no esta bien.

Gracias

estas usando en el else la misma condicional que usas en el primer if, por eso esa parte del codigo nunca se ejecutara porque, en primer lugar, ya es falso.

[gml]
if place_meeting(x,y-1,obj_player)//esto
  {
   obj_player.x+=spd;
  }
  else
if place_meeting(x,y-1,obj_player)//y esto son iguales.
  {
   obj_player.x-=spd;
  }
//por lo que no se ejecuta porque es falso
[/gml]
lo que entiendo de tu codigo es que si el jugador esta encima de la plataforma, mientras este encima, le estara sumando a su x la velocidad de desplazamiento de la platafarma. y si no esta encima hace exactamente lo mismo. hay radica tu problema

tienes que hacer algo asi
[gml]
//END STEP DE LA PLATAFORMA
if place_meeting(x,y-1,obj_player)
  {
   obj_player.x+=(spd*dir);
  }

[/gml]

donde dir es la direccion de tu plataforma, si va a la derecha es 1 y si va a la izquierda es -1
48
para que un objeto este al fondo del todo, tienes que asignarle una depth muy alta.

depth=9999

puedes colocar eso en el create de tu objeto background o puedes simplemente asignarle ese valor desde las propiedades del objeto en donde dice depth. si con eso todavia tapa algun otro objeto, solo tienes que hacer mas grande el numero.

ps: no es recomendable usar objetos como backgrounds.
49
puedes usar la funcion http://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/sprites/sprite_create_from_screen.html
para crear un sprite a partir de la pantalla, luego dibujas el sprite con el indice retornado y desactivas las instancias, recuerda que antes de llamar esta funcion tienes que eliminar el sprite creado anteriormente o se te saturara la memoria en muy poco tiempo.
50
no tiene return, el resultado esta dentro del array level, prefiero dejarlo asi ya que los return y arrays tienen un error muy extraño si tu retornas un array dentro de un return a una variable x

[gml]
//script
a[0]=argument0;
a[1]=argument1;
retun a;
//la llamada
resultado1=script(1,2);
[/gml]

efectivamente retorna el valor del array completo a la variable resultado, sin embargo si en un futuro se vuelve a ejecutar ese script, pero con otros valores en "a" y aunque el rotorno lo aga a una variable "resultado2" tambien se cambia el valor del "resultado1". por lo que me da a entender que cuando se retorna un array en realidad no se le asigna el valor al "resultado1" sino que se le asigna la direccion de memoria que tiene "a", por eso cada vez que se ejecuta tambien se cambia el valor de todas las variables a las que se les asigno en return "a". y por eso preferi deja este script asi.

la forma de usarlo seria algo asi

[gml]
string_explode(string(texto),",")
a=level[0]
b=level[1]
//o tambien
for(i=1;i<=array_length_1D(level);i++)
a=level
[/gml]
51
Cita de: Ynfiniti en Enero 13, 2016, 01:58:18 AM

if (keyboard_check_pressed(ord("C"))){
    repeat(manzanas){
        instance_create(x,y,obj_manzana);
    }
}

Cita de: woolf7 en Enero 13, 2016, 01:50:12 AM
algo como esto:
if (keyboard_check_pressed(ord('c'))){
   for (i = 1; i <= manzana; i++){
  instance_create(x,y,obj_manzana);
}
}

??

ya ellos dos te respondieron, lo unico es que ellos usan el keyboard_check_pressed que es lo mismo que el evento presionar una tecla, donde la tecla puede ser cualquiera de las vk_algo o si son letras usas ord("letra"), donde la letra tiene que se mayuscula y este codigo se deberia de colocar dentro de step o cualquier otro evento que se repita continuamente, por otro lado si quieres usar el evento presionar una tecla usa solo la parte interna del codigo.

[gml]
repeat(manzanas){
        instance_create(x,y,obj_manzana);
    }
[/gml]

es aconsejable usar cosas como for y while, pero en tu caso al no necesitar ninguna de las ventajas de un for o while, como son usar el marcador como indice, sugiero usar un repeat.
52
Preguntas y respuestas / Re:Variable=objetos
Enero 13, 2016, 01:46:32 AM
explicate bien, porque lo dices pueden significar muchas cosas. puede significar:
-quieres que dependiendo del valor de variable se cree un objeto u otro
-quieres crear un objeto y que dentro de este exista una variable con el valor de la variable del objeto creador.
-quieres que dependiendo del la variable se creen varias instancias del objeto

necesitamos que seas mas especifico, trata de usar un lenguaje mas acertado, ademas el titulo del tema es completamente errado, un objeto no es una variable.
53
De todas maneras Recuerda que tienes que poner tu hud en una profundidad negativa bastante alta para que el hud siempre esté en el frente de la pantalla.

Eso lo puedes hacer directamente desde las opciones del objeto o asignándole del código créate de esta forma depth=-99999

54
hasta donde tengo entendido no se puede, hace no mucho un usuario aqui pregunto si se puede crear una variable a travez de un string, que es mas o menos lo que tu estas intentando, basado en que en c se podia hacer algo parecido, y aunque creo que en c si se podia en gml no. la unica manera que se me ocurre de emular lo que dices es usando ds_maps. hace como un mes se respondio una pregunta en la que se intentaba emular el exist_variable_local que fue despreciada en el gms usando ds_maps, buscala y veras como se hizo.
55
simplemente no, una vez que llamas al return el script deja de ejecutarse.


CitarIt should be noted that the execution of the script ends at the return statement, meaning that any code which comes after the return has been called will not be run.

http://docs.yoyogames.com/source/dadiospice/002_reference/001_gml%20language%20overview/401_17_scripts.html
56
el error fue mio, por alguna razon coloque el v_caida=4 en la colision, cuando tiene que estar en el create, tu ultimo mensaje fue lo que me hizo darme cuenta de eso.

de todas maneras ya corregi el mensaje anterior, copialo y pegalo otra vez o simplemente en lo que ya tienes pon el v_caida=4 en el create y quitalo de la colision.
57
el problema hay es que estas haciendo mal la operacion. yo no te pase ese codigo de esa forma, de todas maneras es como dijo kostra.

puede ser tanto fruta++; que sumara 1 a fruta a cada step como fruta+=1; que hace exactamente lo mismo como tambien puede ser fruta=fruta+1; las tres funcionan, pero fruta+1 no te va a funcionar porque estas realizando una operacion sin asignarle ese valor a nada, por eso te sale ese problema.
58
Pues te digo que gms tiene muchas incompatibilidades con Windows 10. Como cualquier otra cosa en el mundo. Sinceramente ese Windows no sirve para nada. Ahora volviendo a tu problema puede ser un problema con los permisos. Correlo como administrador. Otra cosa aseguraré de que la version que tengas instalada no sea un beta.
59
Como dije en el mensaje anterior estoy desde un teléfono. Así que no puedo escribir muy bien código. Así que lo que haré explicarte cómo hacerlo. Primero cambia el if por un while. Segundo, en vez de usar copy string has key +=key_original. y tercero quita lo del falt = ... y mas=....

Te pongo lo de la key original para evitar crear un String demasiado largo. Por supuesto esta variable debería de haberse creado anteriormente con el argumento key
60
Sigue teniendo el mismo problema de la longitud de tu key. El problema es que con eso ahora a lo sumo lo que hace es copiarlo dos veces. Esto es debido a que estás usando mal la función String copy http://docs.yoyogames.com/source/dadiospice/002_reference/strings/string_copy.html después de la última posición de tu key lo único que vas a estar copiando son caracteres vacíos. Es por eso que después de cierto número de caracteres dejara de codificarlo.

Ps: estoy escribiendo desde un teléfono usando la herramienta de reconocimiento de vos. Porque me cansé del teclado táctil. Esa es la razón por la que hay tantos acentos.