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

61
Preguntas y respuestas / Re:hit box
Diciembre 05, 2019, 04:22:20 PM
Si, Solamente tenes que activar la casilla de "mascaras de collision separadas" en las propiedades del sprite.
Y las modificas a mano una a una
62
._.

hacer el de 2, 3, 5, n cartas es lo mismo que hacer el de 4, el de poker. Solo tenes que extrapolarlo o como se diga.
En un principio, unicamente hacés un recorrido de la primer carta hasta la quinta y adicionalmente ponés un contador que cuente las repeticiones de una carta en concreto, si el contador es 2, 3 5, bueno, ya determinarás que clase de premio es.

Pero así como lo decís casi que, estas pidiendo que te hagamos el juego, no sé.
63
Y bueno, ya que tenés la lista, usala para ver los valores
tomas la primer carta de la mano, y verificas si las otras 4 van en escalera, osea, va aumentando el valor en 1:
[gml]
var carta;
carta = ds_list_find_value(mazo, 0)//la primer carta de la mano
if (ds_list_find_value(mazo,1) == carta+1) && (ds_list_find_value(mazo,2) == carta+2)
&& (ds_list_find_value(mazo,3) == carta+3) && (ds_list_find_value(mazo,4) == carta+4)
    global.poker = true[/gml]
Notese la redundancia en el codigo, hasta se puede colocar dentro de un for. Pero bue, claridad, antes.

Y para verificar si es poker, tendrias que recorrer los primeros 5 elementos con un ciclo for, y una variable centinela, que indique que si 4 cartas son iguales, sea poker.
El codigo no lo escribo porque ya me voy a dormir XD pero no creo que sea muy dificil.
64
Nah, si vas a evadir el problema cada vez que se te presente uno, no terminas un juego nunca jaja

mira, te recomiendo que uses Action Decoder, que esta enla seccion de descargas. Para ir familiarizandote con el paso de D&D a GML.
https://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=157

Pensa el algoritmo en D&D, pasalo a GML con esto y tratá de razonar tu problema.
Hacé prubas cambiando los parametros, es lo mejor para agarrarle el truco a la programación en gral.

Ya te digo yo que dibujar algo desde otro objeto es re fácil pero igual, pero no quiero darte la respuesta XD
65
Yo te recomiendo que primero lo penses y hagás con D&D y luego intentés extrapolarlo a GML.
Cambia cada accion en D&D por su equivalente a GML, para poder ir agarrandole la mano.

Porque  sino, o bien te puedo dejar un tocho de codigo, pero a lo mejor no entendés nada, y estaríamos en la misma.
66
Preguntas y respuestas / Re:Poner color al enumerador
Noviembre 20, 2019, 03:25:04 AM
Hola amigo, en GMS1.4 esta medio bugueada la sentencia enum a veces se decolora entera la estructura. Lo normal sería que quede en rojito que es color por defecto.
Ya en GMS2 está arreglado.
67
Para ello existe la sentencia WITH, que es el equivalente al recuadro de arriba que te permite cambiar entre self, other, object:
[gml]
with(objeto){
            //todas las funciones dentro de las llaves { y  } se ejecutan para "objeto"
}
[/gml]
lo cual seria en GML:
[gml]
with(obj_player){
            instance_change(otro_objeto, true);
[/gml]
68
Y, ponele que si. Supuestamente hay una funcion para eso:

buffer_get_surface(...)

Que convierte la surface en un buffer. De ahi, la mandás normalmente. Nunca intenté hacerlo.  :'(
69
Si nunca pagaste un peso por la licencia, es bastante probable de que sea pirata XD
70
Teoricamente una surface trabaja como un evento draw. Que tiene comportamiento de pila
por lo que el sprite que se dibuja primero queda mas debajo, y el que se dibuja al ultimo queda por encima de todo
solo bastaria con que dibujés los sprites en orden de llamada:

[gml]draw_sprite(sprite_de_mas_abajo)
draw_sprite(sprite_de_enmedio)
draw_sprite(sprite_de_mas_arriba)[/gml]
71
Ni idea, pero deberías probar hacer lo mismo en 2D para saber si es que las funciones en 3D son las que estan causando ese efecto raro.

No se si estas usando primitivas, pero podes probar usando:
draw_vertex_texture_colour(x, y, xtex, ytex, col, alpha)

con el alfa a 1.
72
Es raro, la verdad.
en todo caso usa:

show_debug_message(fps)

para mostrar la velocidad a la que corren los room, de normal 30fps, y fijate si varía en el room donde guardas/cargas, si se pone a, 60 por ejemplo es que ahí esta el problema.
73
Exacto, vendria a ser como una capa en el photoshop, lo que se dibuje fuera no se ve.
ahora, lo que ocupe de memoria ps, eso ya no sé, depende mucho del tamaño de las dimensiones del lienzo. y de la plataforma en la que se ejecute el juego, por ejemplo las PC de escritorio son los suficientemente potentes para albergar mucha memoria ram y guardar varias surfaces, pero por ejemplo, un telefono android, la verdad que queda bastante por debajo.

las coordenadas en la surface no se pueden cambiar.
lo que si se puede cambiar, es al momento de dibujarla en pantalla con draw_surface:
https://docs.yoyogames.com/index.html?page=source%2Fdadiospice%2Findex.html

que de hecho es la funcion mas importante XD sino no se verá nada
74
holis (?
amigo, las surfaces sirven para dibujar. Estuve por ahi leyendo que querés aplicarlas a una entrada de texto... hmm desde ya, usar surfaces no es la mejor manera. Ni la optima. Lo suyo seria manejar con funciones de cadena.

ahora, las surfaces como bien dice el amigo de arriba, son para dibujar, es como un lienzo. Y ahi podes hacer varios efectos combinando funciones que alteran el mezclado, por ejemplo par ahacer un sprite totalmente blanco o sacarle los colores a un sprite y dejarlo blanco y negro, o hacer el efecto de congelado. Un montonazo de cosas, pero tiene un cierto coste tanto de memoria como de procesamiento dependiendo ya de que tan vergas te pongás con el efecto.
hoy por hoy existen los shaders, que sirve tambien para aplicar efectos de dibujo y es más optimo. Pero asi tambien, lleva un poco de complejidad manejarlas.

bueno, las funciones basicas que necesitas saber para crear  y dibujar una surface son:

surface_crate(ALTO, ANCHO)-> crea una surface con el alto y ancho indicado. Osea, crea un lienzo de tal tamaño para poder dibujar en el. Cabe destacar que uno no vé directamente lo que se dibuja sino que lo hace a traves de codigo.
Otra cosa notables es que la surface tiene posicion absoluta, osea, siempre aparece en la coordenada 0,0. Esto hay que tenerlo en cuenta a la hora de dibujar
surface_free(SURFACE)-> esto borra la surface, es imprescindible borrar la surface si no se usa mas, porque ocupa memoria RAM, si no se borra se iría acumulando hasta que explote la pila de memoria y haga overflow.
surface_set_target(SURFACE)-> esta funcion pone a SURFACE como blanco de dibujo. Osea, todo el codigo de dibujo que siga despues de esta funcion, se aplica encima de la surface.
Ejemplo:

[gml]
surf = surface_create(200,200); //se crea el lienzo de 200x200
surface_set_target(surf); //colocamos la surface para que las funciones de dibujo le afecten
draw_set_text(20, 20, "hola amigos de youtube!"); //la posicion es absoluta
surface_reset_target();
[/gml]
surface_reset_target(); -> hace que las secuencias de dibujo dejen de aplicarse a la surface antes definida con surface_get_target, y entonces las funciones de dibujo se aplican normalmente en la pantalla del juego

eso seria lo mas facil para comenzar a dibujar algo.
A grandes rasgos es como usar el evento draw solo que en un lienzo acotado :)
de ahi hay hartos efectos que le podes poner, pero bueno, eso pa otro tutorial(?
75
Preguntas y respuestas / Re:Ayuda Juego RPG por turnos
Septiembre 21, 2019, 03:26:54 PM
me parece que el problema está acá:
[gml]
witch (strState)
{
if place_meeting(x+12,y,objEnemigo)
{numVX = 0

  sprite_index = sprTomAtack;
   }
[/gml]
Se detiene, y se sigue cumpliendo en cada step la instruccion de sprite_index = sprTomAttack. Entonces se ejecuta el resto de lo que queda, pero en el siguiente step se vuelve a asignar, creo que es por eso que nunca termina de animarse porque se asigna de nuevo cada step.
intentá ponerle esta condicion:
[gml]
witch (strState)
{
if place_meeting(x+12,y,objEnemigo)
{numVX = 0
   if (sprite_index != sprTomAtack)
        sprite_index = sprTomAtack;
   }
[/gml]
eso haría que solo se asigne una vez, y por lo tanto no se repita la animacion infinitas veces