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

241
Me temo que debo disculparme, he hecho un par de pruebas y resulta que el c?digo que te di no te sirve para lo que quieres. Habr? que complicarse un poco:

var Obj1,Obj2,Obj3;

Obj1 = instance_nearest(x,y,Lanzamisile);
Obj2 = instance_nearest(x,y,Misil);
Obj3 = instance_nearest(x,y,Misilrapido);

if (distance_to_object(Obj1)<distance_to_object(Obj2)&&distance_to_object(Obj1)<distance_to_object(Obj3)) alarm[0]=1;
else if (distance_to_object(Obj2)<distance_to_object(Obj1)&&distance_to_object(Obj2)<distance_to_object(Obj3)) alarm[1]=1;
else if (distance_to_object(Obj3)<distance_to_object(Obj1)&&distance_to_object(Obj3)<distance_to_object(Obj2)) alarm[2]=1;



Este c?digo busca cual es el m?s cercano de cada uno de los 3 tipos de objetos. Luego compara distancias y activa la alarma del m?s cercano de todos. Deberia funcionarte sin problemas.
242
Preguntas y respuestas / Re: sprites rotados
Abril 21, 2010, 05:42:56 PM
Cita de: SP_Christian en Abril 21, 2010, 11:42:15 AM
Cita de: Alfonsos1 en Abril 21, 2010, 01:52:27 AM
cuando se rotan los sprites estos se ven peor

Aunque, en realidad, algunos pixeles deBerian ser de colores intermedios como verde limon.

Si si yo cuando veo una pared amarilla y giro la cabeza tambien la veo verde limon!! A ti tambien te pasa ?

PD1  Si un sprite se rota, es normal que se vean peor, si los pixeles fueran octogonales igual no, pero dado que son cuadrados, las lineas diagonales salen peor que las rectas  ---> bordes de sierra ---> antialiasing powa

PD2  SI mezclas el amarillo y el verde Y EL COLOR QUE QUEDA POR ENCIMA ES TRANSPARENTE igual si que queda verde limon

En primer lugar, una pared no esta hecha de pixeles; en segundo , asumiendo que es la imagen de una pared, lo que debe girar es la imagen, no la cabeza; y en tercero los pixeles que deberian cambiar son los que estan cerca de pixeles de otro color, no toda la pared.

Respecto al problema Alfonsos1, puedes usar marcar la opci?n Interpolate colors between pixels en Global Game Settings, o decidir cuando usarlo con la funci?n texture_set_interpolation().

No esperes maravillas, pero atenua el problema.
243
El problema es que no puedes usar un if en c?digo para condicionar una acci?n D&D:


Citarexecute code:

if instance_nearest(x,y,all).object_index=Lanzamisile{}
set Alarm 0 to 1


O haces que el if tambien sea una acci?n D&D o lo escribes todo en c?digo.
244
Preguntas y respuestas / Re: Buscar valores en array
Abril 18, 2010, 08:01:52 PM
Con arrays solo se podr?a probando uno a uno los valores:

//argument0 = Nombre Buscado

for (i=0;i<=4;i+=1){
if Array[i] = argument0 return i;
}


Ese peque?o script te retornar?a la posici?n en el array que ocupa el nombre, pero tiene la desventaja de que necesitas a fuerza saber el tama?o del array.
245
Instance_nearest es una funci?n no una variable, como argumentos necesita las coordenadas desde donde checar y el objeto que checar. Para usarla como tu quieres tendria que ser as?:

if instance_nearest(x,y,all).object_index=objeto1 {}

As? busca la instancia m?s cercana y determina si es una instancia de objeto1.
246
Puedes agregar eso en esta parte del c?digo:

  //Da puntajes
switch(Aciertos){
  case(1) : if ds_list_find_value(Lista[i],0)=ds_list_find_value(Numeros,0) score+=1; break;
  case(2) : if Seguido score+=10; else score+=4; break;
  case(3) : if Seguido score+=60; else score+=10; break;
  case(4) : if Seguido score+=250; else score+=40; break;
  case(5) : if Seguido score+=1000; else score+=500; break;
  case(6) : score+=5000; break;
}


Por ejemplo, si quieres activar un sonido cuando lo primero que sale son tres aciertos cambias la linea en case(3) por

  case(3) : if i=0 sound_play(Sonido); if Seguido score+=60; else score+=10; break;

Donde if i=0 significa si se esta checando la primera linea. Con eso conseguirias que solo el premio en el primer tiquete active el sonido, pero si no hay premio en la primera linea entonces no tendrias ning?n sonido sin importar que salga en las dem?s. En ese caso quizas seria mejor agregar una variable que guarde cual fue el premio mayor para luego activar su respectivo sonido, pero eso ya es decision tuya.

En el caso de animaciones te recomendaria que lo hicieras con otro objeto, donde tienes lista la animaci?n y que se destruye al finalizarla, inclusive podrias agregar el sonido en el create de ese objeto. En ese caso en lugar de sound_play usas instance_create:

  case(3) : if i=0 instance_create(x,y,Objeto); if Seguido score+=60; else score+=10; break;

La forma que sea preferible de utilizar dependera de que tienes en mente con las animaciones y sonidos.
247
Ac? te dejo el ejemplo m?s parecido a lo que ocupas, puedes compararlo con el anterior para ver las diferencias.

Ahora en lugar de que las listas almacenen los n?meros en columnas lo hacen en filas, de manera que en lugar de buscar si el n?mero existe en la columna checa si el n?mero en la posici?n correspondiente a la fila es el mismo que saco el jugador.

248
Ahora veo, la idea es que cada linea de n?meros pueda dar un premio diferente, pense que se trataba de un premio general. Una duda, ?las filas deben dar todos los premios posibles o solo el mayor premio posible? Me refiero a si, por ejemplo, una fila saca 5 n?meros no consecutivos gana premio por 2 consecutivo, 3 consecutivo y 5 no consecutivo o solo por 5 no consecutivo.

En todo caso, el ejemplo anterior puede ser facilmente cambiado para dibujar sprites en lugar de texto. Simplemente haz que el sprite tenga las subimagenes en orden de 0 a 9 y a la hora de dibujar haz que la subimagen sea el correspondiente n?mero de la lista.

Las posiciones de las lineas tambien pueden cambiarse sin mucha dificultad, es cuestion de cambiar las coordenadas de dibujo.
249
Antes de dibujar checa la variable view_current, y haz que dibuje la barra del jugador 1 cuando view_current sea igual a 0 y la del jugador 2 cuando view_current sea igual a 1. Por ejemplo:

switch (view_current){
case (0) : //Dibuja barra de jugador 1
case (1) : //Dibuja barra de jugador 2
}
250
La ?nica manera de que el c?digo de Silver_light (junto la correcci?n de Wadk) no te sirva es si estas dibujando al personaje manualmente. Checa si tienes algo en el evento Draw.

Edit: Confirmado, estas dibujando el personaje manualmente. Cambia la accion de dibujar sprite por este c?digo:

draw_sprite_ext(sprite_index,-1,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha);

Es un poco m?s de lo que en realidad necesitas, pero es mejor si vamos a lo seguro.
251
En realidad te recomendar?a hacerlo con listas, es mucho m?s f?cil.

Simplemente crea 6 listas que tengan cada una los 8 enteros que hay que comparar, luego crea una lista que contenga los 6 n?meros que saca el jugador. Busca si el numero en la posici?n 1 de la lista del jugador se encuentra en la lista 1 de enteros, el n?mero en la posici?n dos en la lista dos, el n?mero 3 en la lista 3, etc.

Luego solo es cuesti?n de determinar cuantas coincidencias hubo y seleccionar el premio.

Te dejo un ejemplo, usa control para sacar los n?meros del jugador y shift para reiniciar el puntaje.
252
Preguntas y respuestas / Re: ?porque no funciona?
Abril 10, 2010, 09:44:50 PM
De la manera que lo estas haciendo el shyguy solo tiene realmente dos acciones. La primera, cuando x es mayor que -185, y la segunda cuando x es menor a -185.

En el caso de las acciones "x mayor que" se debe a que cuando se cumple una de las condiciones de acci?n todas las que est?n bajo ella se cumplen tambi?n, la m?s reciente en ser cumplida remplaza la anterior hasta que solo queda x mayor que -185.

Puedes evitarlo utilizando ELSE despu?s de cada bloque de acci?n. De esa manera solo checaria la condici?n de la siguiente acci?n si la anterior no se cumpli?.

Otra posible soluci?n seria invertir el orden de las acciones de manera que si se cumple la superior la inferior no se pueda cumplir.
253
Preguntas y respuestas / Re: Algunas Preguntas
Abril 04, 2010, 05:32:49 PM
El ofuscador hace que sea dificil leer el c?digo en caso de que lo decompilen, tambien tienes el anti-decompilador que protege los juegos ante el actual decompilador, pero impide el instantplay del juego:

http://gmc.yoyogames.com/index.php?showtopic=422511&st=0

Sin embargo, es cierto que tu juego nunca estara 100% seguro, si alguien realmente quiere decompilarlo eventualmente encontrar? como.
254
Preguntas y respuestas / Re: Transition Rooms
Abril 01, 2010, 10:13:27 PM
Pues veamos, lo primero seria crear el script con el comportamiento de la transici?n, el script recibe 5 argumentos, una superficie con la imagen del room origen, una superficie con la imagen del room destino, el ancho de las superficies, el alto de las superficies, y la posici?n actual de la transici?n (de 0 a 1), en ese orden.


Si por ejemplo quieres que la imagen destino cubra por los costados a la imagen origen entonces primero debes dibujar la superficie origen.

Luego haces que la superficie destino se dibuje en dos mitades, cada una al extremo del campo de visi?n, y que su posici?n cambie seg?n la posici?n de la transici?n:

Código (tr_Transicion) [Seleccionar]
/*
argument0 superficie con room de origen
argument1 superficie con room de destino
argument2 ancho de las superficies
argument3 altura de las superficies
argument4 posicion de la transicion
*/
//Dibuja Origen
draw_surface(argument0,0,0);
//Dibuja Destino
draw_surface_part(argument1,0,0,argument2/2,argument3,-(argument2/2)+(argument2/2)*argument4,0);
draw_surface_part(argument1,argument2/2,0,argument2/2,argument3,argument2-(argument2/2)*argument4,0);



Con eso bastar?a para el script. Ahora utilizas transition_define para que el script se utilice como una transici?n:

transition_define(99,tr_Transicion);

Luego, cuando quieras usar la transici?n que creaste usas transition_kind con el index que le elegiste:

transition_set=99;
room_goto_next()


Claro, ese es el ejemplo m?s simple, transiciones m?s complejas tambi?n son posibles, por ejemplo te dejo esta otra transici?n:

Código (tr_PasaPagina) [Seleccionar]
/*
argument0 superficie con room de origen
argument1 superficie con room de destino
argument2 ancho de las superficies
argument3 altura de las superficies
argument4 posicion de la transicion
*/
var S,P,A,X,Y,XX,YY;

S=surface_create(argument2,argument3);
P=abs(1-argument4);
A=70*P;
surface_set_target(S);
//Posiciona
draw_surface(argument0,0,0);
X=lengthdir_x(argument3+argument3*0.25*P,-A+90);
Y=lengthdir_y(argument3+argument3*0.25*P,-A+90);
XX=argument2*P;
YY=argument3-((argument3*0.075)*P)-argument3*0.5*abs(0.5-abs(argument4-0.5));
draw_surface_ext(argument1,XX+X,YY+Y,1+0.25*P,1+0.25*P,-A,c_white,1);
//Borra
draw_set_blend_mode_ext(0,6);
A=45*P;
X=lengthdir_x(argument3*2,-A+90);
Y=lengthdir_y(argument3*2,-A+90);
XX=argument2-argument2*0.5*argument4;
YY=argument3+argument3*0.5*argument4;
draw_surface_ext(argument1,XX+X,YY+Y,2,2,-A,c_black,1);
draw_set_blend_mode(bm_normal);
surface_reset_target();
//Dibuja
draw_surface(argument1,0,0);
if argument4>0.5 draw_set_alpha(0.8-(argument4-0.5)*2);
else draw_set_alpha(0.8);
draw_rectangle(0,0,argument2,argument3,0);
draw_set_alpha(1);
draw_surface(S,0,0);
surface_free(S);


Se supone que es un cambio de p?gina, pero nunca la termine.
255
Preguntas y respuestas / Re: Transition Rooms
Abril 01, 2010, 12:55:52 AM
De hecho me parece que lo que quiere es simplemente saber como usar c?digo para activar las transiciones. En cuyo caso soccer2008 tendr?a raz?n.

Si de eso se trata, lo ?nico que debes hacer es utilizar la variable transition_kind, ten en cuenta que transition_kind solo afecta la pr?xima transici?n, as? que debes utilizarlo cada vez que cambias de room:

transition_kind = 5;
room_goto_next();

transition_kind = tr_melt;
room_goto_previous();


En el manual viene la transici?n equivalente a cada indice, y al utilizar la expansi?n de transiciones puedes usar los nombres que vienen en su respectiva ayuda. Por cierto, la funci?n transition_time no existe en GM7.


Si por otro lado, como menciona Hackware, lo que quieres es crear tus propias transiciones debes usar la funci?n transition_define, que utiliza dos argumentos, el indice de la transici?n y el script que contiene el comportamiento de la transici?n. Aunque antes de que te pongas a hacer transiciones te advierto que es bastante complejo.