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

136
o puedes usar el evento global mouse left pressed. al ser global no tienes que tener un sprite de colision el raton ni tienes que hacer click en el personaje.
137
Preguntas y respuestas / Re:Cambiar el Font
Noviembre 25, 2015, 11:27:40 PM
tienes que tener tu fuente en formato .ttf y ademas tiene que estar instalada en tu pc, luego solo creas una fuente en el game maker y seleccionas la fuente que pusiste o instalaste, ahora lo que si no se es como crear un archivo .ttf a partir de un png. porque hasta donde se son dos cosas muy diferentes, el archivo ttf no son imagenes, son vectores, por eso es que tu puedes agrandar y reducir letras sin que estas pierdan calidad.
138
Cita de: NiuWeb en Noviembre 24, 2015, 08:11:44 PM
básicamente 120...xD
O.o, agrupalos todos en un area y si se hace click dentro de esa area desactivas la creacion de objetos.
139
Cita de: NiuWeb en Noviembre 24, 2015, 06:54:55 PM
No me refiero a los botones, sino que tendría que hacer cientos de comprobaciones porque necesito muchos botones de GUI en el EDITOR.
¿es esa la única opción?
¿entonces cada boton es un objeto? eso no es muy eficiente, bueno, la verdad es que tampoco seria bueno hacer cientos de verificaciones, bajaria mucho el rendimiento, que te parece mejor esta idea, en cada boton pon lo siguiente, en el evento mouse_boton pon algo como esto global.boton_presionado = 1(lo pongo en este evento porque si fuera en el pressed solo detectaria cuando se presiono, entonce suponiendo que el usuario arrastra el dedo creando algo y toca los botones se seguiria creando igual) y en el evento mouse_boton_released pon global.boton_presionado = 0 y en la condicion del objeto creador pon
[gml]
if global.boton_presionado=0
//tu codigo
[/gml]

por supuesto el orden de ejecucion de los objetos es el mismo que el de su creacion, asegurate que tu objeto creado se cree despues que los botones, si no lo haces asi podria crear el primero objeto y eso tampoco se veria bien.
140
Cita de: penumbra en Noviembre 24, 2015, 06:39:17 PM
Cita de: jmbs19 en Noviembre 24, 2015, 05:36:40 PM
porque el gml no es inteligente, en el sentido de que el comprueba todas las variables aunque la primera sea falsa, entonces esto genera un peor rendimiento a la hora de ejecutarlo.

Cita de: jmbs19 en Noviembre 24, 2015, 06:17:48 PM
suponiendo que ataque sea false igualmente paso a paso estara comprobando el collision_check y las distances, lo que son unos calculos pesados.

GMS Realiza comprobaciones inteligentes (short-circuit evaluation) desde la versión 1.3. Si la primera condición es falsa, ya no evalúa las demás.
https://www.yoyogames.com/tech_blog/52

Casilla "short-circuit evaluations", pestaña General. en Global game settings

pues eso es nuevo XD, no leo los logs muy a menudo XD, de todas maneras igual hay que tratar de colocar las condiciones de la manera en que consuman menos recursos, si ahora el gml si lo hace, que antes no lo hacia como lo dijiste, igual abria que poner los chequeos de variables y cosas livianas al principio de la condicion. pero como dijiste antes no lo tenia y uno era el que tenia que hacer ese tipo de cosas.

con respecto a niuweb, no tendrias que cambiar nada en los botones, solo tienes que saber sus posiciones relativas a la view y multiplicarla por el escalar, y para hacer zoom en las view a partir del escalar seria algo como view_hview y view_wview por el escalar zoom
141
Cita de: kostra en Noviembre 24, 2015, 05:53:09 PM
jmbs, gml es lo más inteligente que he visto nunca, pongas como pongas el código funciona exactamente igual y lo tengo comprobadísimo, además de que eso es lo que dice todo el mundo en todos los lugares xD
[gml]if mouse_check_button(mb_left)
     if mouse_x >xinicial
     and mouse_x<xfinal
     and mouse_y >yinicial
     and mouse_y <yfinal//donde xinicial, xfinal,yinicial y yfinal son las coordenadas de tu boton
         {
           //tu codigo de creacion
         }[/gml]


esto es EXACTAMENTE LO MISMO que tu código, pero más ordenadito y bonito, dan ganas de comérselo xD

el funcionamiento es el mismo, y eso yo lo se, cuando te digo que no es inteligente me refiero a que no esta muy bien optimizado cuando de condicionales se habla.

te lo pongo asi:

supongamos que estoy comprobando esto en step:

[gml]
if ataque = true and distance_to_object(x,y,obj_a) < a and distance_to_object(x,y,obj_b) < b and distance_to_object(x,y,obj_c) < c and collision_rectangle(x-10,y-10,x+10,y+10)
{
//codigo
}
[/gml]

el juego se realentisaria mucho porque, suponiendo que ataque sea false igualmente paso a paso estara comprobando el collision_check y las distances, lo que son unos calculos pesados.

en cambio si se hace esto:
[gml]
if ataque = true
{
    distance_to_object(x,y,obj_a) < a and distance_to_object(x,y,obj_b) < b and distance_to_object(x,y,obj_c) < c
        {
         collision_rectangle(x-10,y-10,x+10,y+10)
             {
               //codigo
             }
        }
}
[/gml]

esta mas optimizado porque primero comprueba si a es true, si es true ve las posiciones, y luego checa la colision
si a es false no hace nada de eso, por lo que no haces calculos innecesarios.

niuweb si haces zoom es lo mismo, solo un poco mas trabajoso, por ejemplo puedes usar un escalar. tanto para el zoom como para la posicion relativa.
[gml]xinicial =view_xview+(xinicial_boton*zoom)[/gml]
142
o puedes bajar un set nuevo de preguntas una sola vez, cada vez que se conecte y abra el juego, y que, si por ejemplo, no tiene internet despues de un par de intesto se rinda y arranque con el que ya tiene guardado
143
Cita de: jmbs19 en Noviembre 24, 2015, 05:36:40 PM
no tengo mucho conocimiento sobre las posiciones relativas de X e Y en el eventro draw_gui, pero imagino que si colocas una condicion algo asi
[gml]
if mouse_check_button(mb_left)
{
     if mouse_x >xinicial and mouse_x<xfinal and mouse_y >yinicial and mouse_y <yfinal//donde xinicial, xfinal,yinicial y yfinal son las coordenadas de tu boton
         {
           //tu codigo de creacion
         }
}
[/gml]

deberia de funcionar. porcierto te lo pongo anidado y no todo como una sola linea porque el gml no es inteligente, en el sentido de que el comprueba todas las variables aunque la primera sea falsa, entonces esto genera un peor rendimiento a la hora de ejecutarlo.

como te dije imagino son posiciones relativas, pero con sacar un poco de matematicas no deveria de darte problema, seria algo como
[gml]
xinicial =xinicial_boton+view_xview
[/gml]

y asi tambien con todas las coordenadas
o tambien puedes hacer que se dibujen en el evento draw y usas las funciones de arriba para que siempre sigan la view.
http://docs.yoyogames.com/source/dadiospice/002_reference/windows%20and%20views/views/view_xview.html
144
no tengo mucho conocimiento sobre las posiciones relativas de X e Y en el eventro draw_gui, pero imagino que si colocas una condicion algo asi
[gml]
if mouse_check_button(mb_left)
{
     if mouse_x >xinicial and mouse_x<xfinal and mouse_y >yinicial and mouse_y <yfinal//donde xinicial, xfinal,yinicial y yfinal son las coordenadas de tu boton
         {
           //tu codigo de creacion
         }
}
[/gml]

deberia de funcionar. porcierto te lo pongo anidado y no todo como una sola linea porque el gml no es inteligente, en el sentido de que el comprueba todas las variables aunque la primera sea falsa, entonces esto genera un peor rendimiento a la hora de ejecutarlo.
145
Cita de: IronGames en Noviembre 24, 2015, 03:34:47 AM
Cita de: jmbs19 en Noviembre 22, 2015, 01:19:27 PM
en el evento create del obj pones esto:
[gml]
t=0;//esta es una variable de temporizador, tambien puede hacerce con alarmas pero para mi es mas comodo asi

tt=15;//o cualquier numero, es el tiempo entre disparo y disparo, esto se mide en "pasos" o steps, pero si quieres que sean segundos o algo asi puedes colocar tt=1*room_speed que seria igual a un segundo
numero_balas=100//esta es la variable en la que se guardara el numero de balas, puede ser modificada en cualquier momento
[/gml]

Jeje Gracias :) Pero... ¿Podrias mandarme algun video para saber como se pone ese codigo? Entendí perfectamente el codigo, lo que no entendi es como melda aplicarlo al gm :v
en el evento step coloca esto

[gml]
if t > 0//si te es mayor a 0 entonces le restara 1 al valor de t, esto es lo que cuenta por asi decirlo, es un reloj
t=t-1;
[/gml]

en el evento global mouse left coloca esto
[gml]
if t==0 and numero_balas >0 //si t es igual a 0 bala y el numero de balas es mayor a 0 se ejecuta el codigo de abajo
{
instance_create(x,y,obj_bala);//crea en la posicion x e y el objeto obj_bala
numero_balas = numero_balas-1
t=tt; //le asignara el balor que tenga el temporizador y se creara el objeto
}
[/gml]
este codigo es bastante facil de entender, pero de todas maneras te le deje varias notaciones, bienvenido y espero la pases bien por aqui.
porfavor si vas a citar un comentario no escribas dentro de la cita, es dificil saber lo que dices, si no leo mi cita completa no hubiera visto tu respuesta.

de todas maneras no entiendo cuando dices esto:
CitarPodrias mandarme algun video para saber como se pone ese codigo
146
Preguntas y respuestas / Re:bet em up
Noviembre 24, 2015, 04:47:58 AM
Cita de: Neodreamer en Noviembre 23, 2015, 10:38:35 PM
MUchas gracias es que quiero haga los combos tipo final fight y no se como hacerlos lo estoy haciendo asi:switch(combo=0)
{
case 1: sprite_index=spr_combo1;  break;
case 2: sprite_index=spr_com2; ; break;
case 3: sprite_index=spr_combo3;break
}
no es que me salgan muy bien  la verdad y me gustaria hacer el sistema de final fight si alguien sabe como hacerlo.Primero combo1 boton y luego cuando colisiona con elenmigo los demas goles en cadena los cambios de sprite, o algun gmk para ir aprendiend como hacerlo.Gracias
primero que nada, tu switch esta mal. tu le estas dando un valor 0 a combo, mientras que solo existe case para 1,2 y 3, entonces por hay ya tienes un problema, si lo tienes como 0 porque declaras apenas estas declarando la variable entonces te digo que esa variable deberia de haber estado declarada desde hace rato, ejemplo en el create, ahora bien, por lo que veo tu combo no es mas que una asignacion de sprite, si le vas a colocar mas cosas como daño extra y cosas asi deberias de ponerlo en ese mismo lugar.
otra cosa, no se si el combo lo das por random cuando tocas al enemigo, pero en caso de ser asi tendrias que tener algo asi como

[gml]
combo = (round(random(2))+1)
//resto de tu codigo
[/gml]

como ultima cosa te digo el evento colision es constante mientras esta exista, en otras palabras a cada paso que la colision exista el codigo que coloques aqui estara ejecutandose paso a paso, por lo que deberias de crear una condicion tipo "si no lo a tocado antes entonces hacerlo"

seria algo asi:

[gml]
//en create
golpeado = 0
//en collision
if golpeado = 0
{
//codigo de combo
golpeado= 1
alarm[0]=20//tiempo en step para que ejecute esa alarma y tambien es el tiempo que durara el golpe en step
}
//dentro de la alarma
golpeado=0
[/gml]
ps:trata de ser mas descriptivo con tu pregunta, el tema del post, y asignale el icono para la version de game maker que usas, esta en las reglas y pueden sancionarnos a los dos.

http://www.comunidadgm.org/preguntas-y-respuestas/preguntas-y-respuestas-que-es-y-como-funciona-leer-antes-de-postear/

CitarTanto el autor del tema como los usuarios que respondan a este tipo de mensajes de forma reiterada en lugar de reportarlos, podrán ser sancionados.
147
Preguntas y respuestas / Re:bet em up
Noviembre 23, 2015, 08:49:54 PM
dentro de el evento colision colocas
[gml]
if keyboard_check_pressed("boton")
{
//tu codigo de combos
}
[/gml]
y bienvenido a la comunidad, espero la pases bien.
148
Cita de: kostra en Noviembre 23, 2015, 01:27:35 AM
primero haz el sistema evitándote los mil objetos y luego ya busca el hacer ini online... tienes varios posts que hablan sobre eso, so mismo abrí uno preguntando lo mismo, igual abrió niuweb, parece que sepone de moda los ini online xDD
no se si los ini online estan tanto asi como que moda XD, en lo personal prefiero los sql con php y la explotacion de string(exploit es una funcion en algunos lenguajes de alto nivel que separan una cadena de texto en partes a partir de un caracter especial que se encuentre en esa cadena, por ejemplo ","":"";" y cosas asi. el game maker no tiene la funcion, pero hay muchos scripts que la emulan)me parece mas seguro ya que no pueden usar mi script para subir o bajar cosas del hosting.
149
Cita de: penumbra en Noviembre 23, 2015, 12:19:39 AM
Cita de: jmbs19 en Noviembre 23, 2015, 12:00:02 AM
me gusta mucho el orden que tienes, pero no me gusta como haces para saber cual es la correcta ya que usa la longitud de una cadena.
Cuestion de gustos. Ambos métodos servirían, pero justamente, prefiero preguntar por la longitud de la cadena (o un método similar) que tener que definir dos claves más por cada pregunta en el ini. Yo me decanto por este método porque una sola clave en el ini me indica cuál es la respuesta correcta, sin necesidad de claves adicionales que indiquen las respuestas incorrectas y porque me gusta que la respuesta correcta en si misma tenga una característica de la que las otras respuestas carecen, y sólo debo buscar dicha característica.

Un método parecido sería que la clave correcta guardara una palabra clave, dicha palabra clave solamente estaría contenida en la respuesta correcta, por ejemplo, "Unity". Si la palabra clave está contenida en la cadena, la respuesta es correcta.

En cualquiera de las variaciones que propongo, se puede crear un script tipo validar_respuesta() que valide la respuesta de manera más pulcra, por ejemplo
[gml]
validar_respuesta(pregunta)
[/gml]
Y que se encarge tanto de evaluar la respuesta, como de generar los objetos obj_ganar u obj_perder, según sea el caso.

Lo bueno de todo es que siempre hay más de una manera de implementar las cosas.
creo que me entendiste mal cuando te dije lo de la cadena

Citarseria bueno que en vez de usar la longitud de una cadena usara la misma respuesta. y luego comparar si los dos string son iguales, algo como:

if r1 = correcta
{
instance_create(x,y,obj_ganar)//lo pongo asi porque el dice que cuando se gana se crea el objeto ganar
}
else
instance_create(x,y,obj_perder)

pero bueno, formas de hacerlo hay muchas, sin embargo tener 100 objetos, uno por cada pregunta, eso no me parace muy eficiente, y no quiero imaginar lo dificil que seria ordenarlo o actualizarlo.
150
Cita de: penumbra en Noviembre 22, 2015, 11:34:38 PM
Un método que se me ocurre es que en el ini, por cada pregunta, tengas la siguiente estructura (los comentarios no van en el ini, sólo sirven para propósitos de explicación):

[PREGUNTA10]
pregunta = "Cual es el mejor software para desarrollar juegos"   //Cadena
r1 = "Game Maker Studio"   //Cadena
r2 = "Game Salad"     //Cadena
r3 = "Unity"     //Cadena
correcta = ??    //Entero


El valor para la clave entero sería la longitud de la cadena de la respuesta correcta. Es decir, que si por ejemplo, la respuesta correcta fuera "Unity", el valor de correcta sería un 5, que es la longitud de la cadena "Unity". De esto se deduce que debes asegurarte que ninguna de las tres respuestas tenga una longitud igual. Luego, en GM, para saber cuál es la respuesta correcta, sólo tienes que comparar la longitud de la respuesta elegida con el valor de la clave correcta del ini mediante la función string_legnth()

penumbra yo tambien tenia pensado algo parecido.

[99]
pregunta="esta es la pregunta"
respuesta_1_texto="respuesta 1"
respuesta_1="verdadera"
respuesta_2_texto="respuesta 2"
respuesta_2="falsa"
respuesta_3_texto="respuesta 3"
respuesta_3="falsa"
[numero_cartas]
numero="99.000000"


me gusta mucho el orden que tienes, pero no me gusta como haces para saber cual es la correcta ya que usa la longitud de una cadena. seria bueno que en vez de usar la longitud de una cadena usara la misma respuesta. y luego comparar si los dos string son iguales, algo como:
[gml]
if r1 = correcta
{
instance_create(x,y,obj_ganar)//lo pongo asi porque el dice que cuando se gana se crea el objeto ganar
}
else
instance_create(x,y,obj_perder)
[/gml]

otra cosa, e estado testeando con los ini y se puede tener como nombre en seccion un numero usando un string(variable)

por eso, suponiendo que use un sistema random de preguntas,que el ini lo tomara de internet y que quiere poder agregar mas preguntas, prodria hacer una lectura de una seccion el ini que diga cuantas preguntas hay y a partir de ese numero hacer un round(random(valor)) para seleccionar una pregunta dentro del codigo.