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

1591
Preguntas y respuestas / Re:Objetos aleatorios
Mayo 16, 2014, 09:50:28 AM
El objeto problemático era el obj_crea2

Este es el código que va en [CREATE]

randomize()
cochesin = instance_create(1008, 176, choose(obj_coche1, obj_coche2, obj_coche3))
cochesin.hspeed = irandom_range(-4, -16)


Lo único importante, y que había olvidado comentarte, es que instance_create() devuelve el id de la instancia que se crea, y este id lo puedes guardar en una variable, y así ajustar la hspeed de esa instancia recién creada, tal como indica la tercer línea del código

Las mismas tres líneas de código van en el evento alarma del obj_crea2. Así lo hice y ya se crean los coches avanzando de derecha a izquierda
1592
Slade, te tomo la palabra, pues en un proyecto como el manual, otra persona que ayude en las traducciones no está de más. Te doy más detalles por MP.

Gracias.
1593
Preguntas y respuestas / Re:Objetos aleatorios
Mayo 16, 2014, 12:13:40 AM
Cita de: djboro88 en Mayo 16, 2014, 12:08:54 AM
He puesto:
hspeed = irandom_range(4, 16)

Y no se mueve hacia ningun lado.

Ese código de hspeed debe ir en el evento CREATE de cada uno de los objetos que quieres crear. ¿Así lo tienes?
1594
Preguntas y respuestas / Re:Objetos aleatorios
Mayo 16, 2014, 12:06:00 AM
randomize()
instance_create(x, y, choose(obj_1, obj_2, obj_3))

para la velocidad aleatoria:
hspeed = irandom_range(vel_min, vel_max)
1595
Cita de: chute666 en Mayo 15, 2014, 10:35:14 PM
dedidme si me equivoco :

tengo que crear una variable en caba obj que sea un enemigo y llamar a esa variable enemigo.
crear un evento d mouse y poner:
id_enemigo = instance_position(mouse_x,mouse_y,obj_enemigo)\\ en este objenemigo pongo el objeto del enemigo que  sea x ejemplo obj_serpiente etc...

vas bien, esa es la idea, pero no es necesario crear una variable en cada objeto enemigo. Si quieres, la variable id_enemigo la puedes declarar en el objeto jugador (o en un objeto controlador, si lo prefieres). La función instance_position la estás usando bien, es decir, sí se usaría en un evento de click del ratón, y devolverá el identificador de instancia del enemigo. Ese identificador lo puedes usar después en cualquier objeto jugador para referirte al enemigo seleccionado (por eso conviene hacer global a la variable id_enemigo.

por ejemplo, si hubiera un objeto obj_seleccion, que tuviera asociado el sprite spr_aro. El spr_aro sirve para identificar que enemigo seleccionaste. Entonces en el obj_seleccion, para seguir al enemigo seleccionado [STEP]

if instance_exists(id_enemigo)
{
     x = id_enemigo.x
     y = id_enemigo.y
}

Y el aro seguiría al enemigo  seleccionado mientra existiera en la habitación, y se cambiariá automaticamente a otro enemigo cuando se eligiera otro... (obvio  XD)

1596
@rogerskate tu ejemplo funciona seguramente, pero tener una variable por cada enemigo, y un if por cada enemigo hace que el código se extienda mucho si hay muchos enemigos en la habitación. Se puede usar una sola variable para indicar cualquier enemigo en específico.
1597
Cita de: chute666 en Mayo 15, 2014, 08:51:35 PM
buuff hahaha soy bastante nuevo en esto jejeje creo que ebtiendo lo que quieres decir pero nose como llevarlo a cabo...
seria crear una variable llamada x ejemplo seleccion.. y cuando esta esta true se le pueda atacar... y cuando no  pues no jajaja
pero como llevo eso a la practica?  pongo en el enemigo un evento left pressed con un evento var llamado asi? o como?

Mira este ejemplo, la mecánica no es exactamente igual a lo que buscas, pero te da una idea de cómo seleccionar y qué eventos usar.
http://www.comunidadgm.org/preguntas-y-respuestas/(-dudaayuda-)-seleccionar-y-perseguir-personaje/msg95945/#msg95945
1598
Es que da algo de mala espina que de entrada el primer script use más de 50 ifs. Así visto por encima, creo que se podría optimizar mucho más, y con ese antecedente, ya los otros scripts como que se me hacen sospechosos. Seguro funcionan, pero no sé...

Ahorita no puedo hacer un ejemplo, pero la idea no es complicada (seguro hay más y mejores ideas, ésta es sólo una)

Tienes una cadena. Usas longitud = string_length(mi_cadena) para saber de cuántos caracteres está compuesta. La variable longitud se usaría en un ciclo for o un repeat, pues imprimir letra por letra implica hacer una serie de pasos de manera cíclica.

Dentro del ciclo, para tomar un caracter, haces letra = string_copy(mi_cadena, 1, 1). Esto hace que la variable letra tome el primer caracter de la cadena. Usas un contador, por ejemplo contador += 1.

if (contador mod 10 == 0)
{
    imprimir = 1
    if (imprimir == true)
    {
          draw_text(xx, yy, letra)
          xx + = 12
          imprimir = 0
     }
}
Esto hace que  cada 10 pasos se dibuje un caracter. xx es la posición x donde se imprime el caracter, pero se debe aumentar para que el siguiente caracter se imprima a la derecha del  anterior.

Como ya imprimiste el primer caracter, no tiene caso tenerlo en la cadena, por lo que se borra, usando mi_cadena = string_delete(mi_cadena, 1, 1). Cuando se repita el ciclo, se volverá a tomar el primer caracter de la cadena, que será en realidad el segundo, porque el primero ya se borró, esto pasará una y otra vez, de manera que así  se va recorriendo la cadena hasta imprimir todas las letras.

Se trata nada más de una idea, tienes que trabajarla más, por ejemplo, hay que "partir" la cadena si es más larga que el ancho de la pantalla, y entonces bajar cierto espacio en Y y comenzar a imprimir otra vez desde la izquierda (texto multilínea)






1599
Yo tengo unas semanas trabajando en una idea similar. haciendo una serie de mini tutoriales para responder las dudas más frecuentes del foro, claro dentro de lo poco que sé.

No estoy seguro, pero creo que no es necesario pedir permiso a los administradores. Y creo que la sección donde se publicaría este tipo de material es la de artículos.

CitarGracias a los últimos cambios realizados en la web, ahora puedes compartir con más facilidad que nunca todos aquellos artículos que te resulten interesantes. Tanto si son tuyos, como si no.

Para hacerlo, no tienes mas que publicar un tema en el subforo "Artículos" perteneciente a "Propuestas y soporte" ubicado en esta dirección: http://www.comunidadgm.org/articulos/

1600
Preguntas y respuestas / Re:Duda con el view_angle
Mayo 14, 2014, 02:29:07 AM
Suponiendo que al comenzar el juego, la view está en 0 grados.

en CREATE

rotar = 1                  //bandera para activar/desactivar rotación de vista


en STEP
if ( abs(view_angle[0]) < 90) and (rotar == true)   //Si no se ha llegado a la máxima rotación, y se permite rotación...
     view_angle[0] += 1                             //...girar vista. También puede cambiarse el sentido del giro cambiando el signo a menos
else
{
     rotar = 0               //Impedir rotación si el ángulo es de 90° o más.
}
1601
Preguntas y respuestas / Re:Botones fijos
Mayo 14, 2014, 01:52:59 AM
Metodo 1.
Lo que quieras que esté fijo en pantalla, lo dibujas especificando sus cordenadas relativas a la posición de la view, no del room: view_xview, view_yview

Método 2.
Usar el evento DRAW GUI para dibujar interfaces fijas en pantalla.
1602
Preguntas y respuestas / Re:ayuda como tipo tiburon
Mayo 13, 2014, 09:05:24 PM
va en STEP del tiburón, pero debes modificarlo. En lugar de "tiburon.y" sólo debe de estar "y". Y en lugar de "altura_maxima" debes poner un número indicando hasta donde debe llegar el tiburón)


if distance_to_object(obj_player) < 200 and (y > altura_maxima)
{
     vspeed=-8
}
else
     vspeed = 8
1603
Preguntas y respuestas / Re:Room encima de otra
Mayo 13, 2014, 08:25:30 PM
suponiendo que la tecla ENTER hace que aparezca el menú, en STEP

if keyboard_check(vk_enter) and (!instance_exists(obj_menu))
{
   
    instance_create(xx, yy, obj_menu)
}

la segunda condición no es necesaria, pero se asegura que nada más se cree un objeto menu. De lo contrario, si se presionara ENTER más de una vez, se crearían más menús.
1604
Preguntas y respuestas / Re:Room encima de otra
Mayo 13, 2014, 08:21:13 PM
La forma menos eficiente, pero más rápida de hacer si no te quieres complicar es que cada botón de tu menú sea un objeto. El sprite de ese objeto sería un sprite con el dibujo o forma de botón. El sprite puede tener más de una subimagen, una subimagen indicando que el botón está inactivo y otra subimagen indicando que el botón está activo.
1605
Preguntas y respuestas / Re:Room encima de otra
Mayo 13, 2014, 08:14:45 PM
No. Lo que se hace es que todo el menú de opciones sea un objeto (o varios objetos). El sprite de ese objeto menú lo tendrías que hacer translúcido para que se pudiera ver la habitación a través de él. Hasta donde sé, sólo puede haber una habitación a la vez en GM