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

1756
Preguntas y respuestas / Re:transicion entre rooms
Marzo 29, 2014, 12:11:15 AM
El ejemplo de Killer y el link que puse tratan del mismo método.

Cita de: Killer en Marzo 28, 2014, 11:36:54 PM
El problema cuando se usan views es que las superficies necesarias para las transiciones deben tener las mismas dimensiones, por lo que si views son distintas de un room a otro no funcionan bien. 

Segun entiendo, las dimensiones de las superficies A y B dependen de la vista y no del tamaño de la habitación, ¿es así? En mi juego, de momento la vista es una sola, por lo que la dimensión de la superficie debería ser siempre la misma, incluso las habitaciones que tengo tienen el mismo tamaño de momento. El problema es que efectuarse la transición, la superficie A muestra el inicio de la habitación anterior, cuando debería mostrar el final de esa habitación (pues la transición se hace al llegar al final de la habitación) .

Espero dar con alguna solución pronto.
1757
Preguntas y respuestas / Re:transicion entre rooms
Marzo 28, 2014, 10:56:49 PM
Sí, se pueden crear transiciones personalizadas, usando una función que está muy poco documentada en el manual.

http://gmc.yoyogames.com/index.php?showtopic=362339

Aunque yo estoy teniendo problemas en mi juego para aplicar una transición. Consultando los foros de GMC he visto que otros usuarios tienen problemas similares cuando se usan vistas, aun estoy intentando solucionarlo, si tu lo logras, avisa.

EDIT: Aunque ese efecto de cortinilla probablemente no requiera del método al que me refiero, sino de crear tu propia transición, para lo cual yo usaría surfaces
1758
Preguntas y respuestas / Re:Restringir caracteres
Marzo 27, 2014, 01:51:48 AM
NO estoy seguro que sea el método más eficiente, pero se me ocurre esto:

Suponiendo que el texto introducido se guarda en la variable mi_str

[STEP]
var char, ascii, i
for (i = 1; i <= string_length(mi_str); ++i)
{
char = string_char_at(mi_str, i)            // Tomar un caracter y ... 
ascii = ord(char)                           // ... obtener el codigo ascii de ese caracter
if (ascii == 32) or ( (ascii > 64) and (ascii < 123) )
validacion = true;                 //Si el código corresponde a una letra o espacio, se valida
else
validacion = false;
}

if (!validacion)
msg = "Se han introducido caracteres no válidos, por favor corrige el texto"


El código se puede mejorar aun mas, por ejemplo, si se encuentra un caracter no deseado, eliminarlo de la cadena. Aunque esto puede que no quieras que suceda. Lo que si falta es que también verifique caracteres acentuados y la 'ñ', si es que permites que los usuarios los utilicen en el texto. A ver si alguien tiene una opción más simple.
1759
General / Re:Ayuda para crear juego.
Marzo 26, 2014, 09:37:02 PM
Bueno, lo primero que te digo es que ojalá logres tus propósitos y que GameMaker sea la herramienta que te ayude a conseguirlos

Que bueno que tengas ganas de superación, aunque ten en cuenta que no es fácil hacer algo a la primera y que resulte un éxito, generalmente hay un tiempo para aprendizaje y luego viene la recopilación de experiencia...

1 Cada quien aprende distinto, así que no podría decirte cual es la mejor manera para que tu aprendas, pero si puedes leer inglés, lo que creo que da mejor relación tiempo/aprendizaje son los tutoriales incluídos con el GM:S (en la pantalla de inicio). Porque ya traen todo incluído (recursos gráficos, de sonido, etc) para que comiences a experimentar y no pierdes tiempo buscando en google, ni descargando, ni editando gráficos, etc.

2. Otra sugerencia, que puede que haya otros makeros que no opinen igual. NO uses Drag and Drop (arrastrar y soltar). Si usas el foro para preguntar, la mayoría de respuestas te las van a dar con código, no con acciones D&D. Además, soy de la opinión que tarde o temprano las exigencias de cualquier juego te van a empujar a usar código y lo que hayas aprendido de D&D será de poco beneficio.  Usar código no es difícil, sólo se trata de tener la buena costumbre de consultar el manual.

3. Lee el manual, al menos 15 0 20 minutos al día

4. Si no sabes inglés, hay varios usuarios que tienen canales de Youtube con tutoriales, como Jucarave y otros, esas son otras buenas fuentes de aprendizaje.

5. Acá en la comunidad puedes preguntar sobre tus dudas, pero lee las reglas antes, que muchos usuarios nuevos tienen en común que comenten cierta omisión a la hora de postear  :D
1760
General / Re:Nuestras amigas: Las Funciones
Marzo 26, 2014, 09:13:54 PM
Cita de: _-Caleb-_ en Marzo 26, 2014, 03:48:04 PM
Yo con el tiempo voy viendo que se repiten las mismas preguntas hasta la saciedad en preguntas y respuestas.

Esa es la palabra correcta, hasta la saciedad. Y desde mi punto de vista, no se trata de responder 10 o 20 veces lo mismo, por eso soy tan fastidioso con lo de consultar el manual y es un ode los motivos por los que nació  la propuesta de traducir el manual. Es claro que algo no se ha hecho, pero es necesario hacerlo para terminar con las mismas respuestas una y otra vez. Hace varios meses llegué a sugerir crear el canal oficial de la comunidad en Youtube, precísamente para subir videotutoriales resolviendo las preguntas más comunes y evitar la repetición en el foro (claro, otro contenido también, no solo tutoriales), pero se necesita de mucha participación de los miembros para hacer algo así y que funcione.

Ahora, siendo francos, casi todo ya está respondido en la sección de ejemplos de la comunidad.


1761
A ver si este método te cuadra...

Se puede evitar el uso de un ciclo, de esta manera no hay necesidad de comprobar si existe la instancia, el código guarda las ids de todas las instancias existentes (y obviamente no se va a guardar una id de una instancia que no existe). También se evita la necesidad de saber de antemano cuantas veces se repite el ciclo.

lista_i = ds_list_create()
with (all)                              //para todas las instancias existentes...
{
ds_list_add(lista_i, id)    // guardar su id en una lista
}


Y ahora, la magia de las ds_list
ds_list_sort(lista_i, true)          //Ordena de manera ascendente los identificadores de cada instancia
Si quieres ordenar descendentemente, cambias a false

para leer el primer valor de la lista
ds_list_find_value(lista_i, 0)

para leer el último valor de la lista
ds_list_find_value(lista_i, ds_list_size(lista_i) - 1)
1762
Preguntas y respuestas / Re:Ayuda con códigos
Marzo 25, 2014, 08:45:15 PM
Mediante una sencilla función

instance_number()  Devuelve el número de instancias de tipo obj. obj puede ser un objeto o la palabra clave all.

para el primer caso (enemigos en total) lo más conveniente sería usar un objeto parent

para el segundo caso (enemigos de un tipo) se usaría el objeto específico del enemigo.
1763
Preguntas y respuestas / Re:Como hacer cutscenes
Marzo 25, 2014, 08:39:50 PM
Las cutscenes involucran video. Creo que te refieres a diálogos con NPCs.

Lo que quieres hacer no es sencillo, y requeriría mucho más código del que pusiste. Los diálogos deberían estar organizados en un archivo de texto o un ini, desde donde deberías leerlos. No nada más necesitan estar guardados en un archivo, tienen que estar organizados de manera que se correspondan las respuestas según los diálogos.

También necesitarías adecuar el texto a la longitud de la caja de texto, es decir, si el diálogo no cabe en lo ancho de la caja de texto, hay que partir el texto en distintos renglones que se adapten al ancho de la caja. Creo que el primer paso es que consultes la sección de ejemplos.

http://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=771

http://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=25

Desde luego que hay más ejemplos, sólo puse dos al azar.
1764
Pseudocódigo:

"si la velocidad es mayor a cero Y no hay contacto con el piso"
{
     sprite_index = spr_caida
}

"Si hay contacto con el piso"
{
vspeed = 0; gravity = 0;
}
1765
Cita de: mchgforos en Marzo 25, 2014, 09:43:02 AM
Perdón, no creí que fuese importante el que sean el mismo objeto hasta que vi que no me funcionaba el código.
La room tiene varias bombas distribuidas por el mapa y lo que hago es pulsar sobre una y que exploten las que tiene alrededor.

No hay problema, sólo lo menciono porque entre más detalles ofrezcas más makeros te pueden ayudar. Suponiendo que el objeto de las bombas se llama obj_bomba, y que hay un objeto obj_explosion que tiene un sprite animado de la explosión

1. En [CREATE] del obj bomba, pondría una variable
explotar = 0;

2. En [CREATE] del objeto controlador (un objeto que no sea bomba, puede ser obj_controller o obj_player, etc)
bomba_id = -1

En [STEP] del obj controlador ( o donde hayas declarado la variable bomba_id)
bomba_id = instance_position(mouse_x, mouse_y, obj_bomba)       //bomba_id almacena el id de la bomba (si el cursor del mouse está sobre dicha bomba)
if (mouse_check_button_pressed(mb_left)
{
    if (bomba_id > 1000)
          bomba_id. explotar = 1                           //Si se hace click sobre la bomba, ésta debe explotar
}


En [STEP] del objeto bomba
if (explotar == 1)
{
instance_create(x, y, obj_explosion)                 //Crear una explosión en el mismo lugar donde está ubicada la bomba
instance_destroy()                                        // Destruir el objeto bomba que "explotó"
}

Debes verificar la máscara del sprite de explosión para asegurarte que sea lo suficientemente grande si es que quieres que alcance a otras bombas. Todo el codigo anterior haría explotar la bomba sobre la que se hiciera click, para que la explosión se transmita a otras bombas, sería

[EV COLISION] del objeto explosion contra el obj_bomba
with (other)
{
explotar = 1                //Hacer que se cree otra explosión en la(s) bomba(s) dentro del alcance de la explosión anterior.
}


Por último, usas el evento [ANIMATION END] del objeto explosión para destruirlo al llegar a la última subimagen de la animación
instance_destroy()

A lo mejor se me escapa algo, pero más o menos te puedes dar una idea.






1766
Cita de: mchgforos en Marzo 24, 2014, 09:54:06 AM
Buenos días,
Quería saber cómo puedo hacer que al pulsar sobre un objeto en el juego explote y se lleve por delante todos los objetos que tenga alrededor.

Es mas fácil ayudar cuando desde un principio se dan detalles exactos de lo que se pretende hacer. El código de Mega G es correcto para lo que pediste en el primer post

Cita de: mchgforos en Marzo 25, 2014, 12:52:39 AM
El problema es que lanzo una bomba y lo que quiero es que al explotar lo hagan también las bombas de alrededor pero no me sale con este código.

Antes no habías mencionado que los objetos de alrededor son también bombas que deben explotar, esto cambia la lógica de los códigos. ¿qué pasos haces para que una bomba explote en tu juego?
1767
De lo que he visto en tu código, le pides al usuario que introduzca un id, pero no me imagino por qué un usuario común y corriente tendría que saber los ids de cada objeto que haya en el juego

para saber si un objeto existe
object_exists(object_index)

para saber si una instancia existe
if (instance_number(object_index) > 0 )


1768
uff es cierto. Me había olvidado totalmente de las capas de tiles, intuía que había un método más eficiente, pero jamás me acordé de esto.
1769
Pues yo iría por la opción de usar fondo, porque es mucho más rápido, si usas tiles tienes que mover tile por tile para dar el efecto de que se avanza, y si son muchos tiles....

Pero bueno, lo que preguntas se puede hacer usando

tile_set_position(id,x,y)

y ajustando el valor de x
1770
Nada más sumale "a" a una de las dos coordenadas, creo que a la Xx.