Cita de: Texic en Septiembre 16, 2013, 10:22:37 PM
Idle se refiere a que no se cumple ninguno de los otros dos estados (Disparando o Recargando), podría estar moviendose, estar quieto, estar girando, simplemente todo lo que no sea estar disparando o recargando
Ok. Gracias.

Las Ias no escuchan cosas que sucedan en otros rooms. Eso es normal?

Totalmente, imaginate que son herméticos xD




Cita de: Texic en Septiembre 16, 2013, 11:00:08 PM
Totalmente, imaginate que son herméticos xD
Mhh, interesante  :-X. Un pequeño cambio de planes para mi ia  :-[.

Mmm... Sip, había olvidado colocar mi Ia en el room.

Sigo con problemas! No se si soy solo yo pero cuando uso el nuevo scr_raycast_ext el juego se traba, sin mostrar errores

Lo unico que hice fue poner esto en el create del obj_ia_player:
show_debug_message("Raycast hacia coord = " + string(scr_raycast_ext(x, y, x, y-150)))


Pueden verlo en el ejemplo adjunto (se traba en la splash screen porque no llega a dibujarse la room creo)
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


#50 Septiembre 17, 2013, 11:57:30 PM Ultima modificación: Septiembre 19, 2013, 07:21:27 AM por Texic
Uh, me había olvidado de recalcular la línea, listo, ya lo arreglé en el nuevo sdk, si no lo quieres descargar reemplaza el código de raycast_ext por este. Cuando lo reparé no tenía tiempo para testearlo, disculpa mgbu
[gml]/*
argument0 = x inicial del rayo
argument1 = y inicial del rayo
argument2 = x final del rayo
argument3 = y final del rayo
devuelve 0 si el rayo no detecta colisión y la distancia exacta hasta la misma si la detecta (con cajas, paredes y puertas, no IA enemigas)
*/
var col1,mit,asd,i,asdinit;
col=collision_point(x,y,obj_info_hab,0,1)
argument0=max(min(argument0,col.x+32*(col.image_xscale)),col.x)
argument1=max(min(argument1,col.y+32*(col.image_yscale)),col.y)
argument2=max(min(argument2,col.x+32*(col.image_xscale)),col.x)
argument3=max(min(argument3,col.y+32*(col.image_yscale)),col.y)
i=point_direction(argument0,argument1,argument2,argument3)
asd=point_distance(argument0,argument1,argument2,argument3)
asdinit=point_distance(argument0,argument1,argument2,argument3)
mit=asd
col1=collision_line(argument0,argument1,argument0+lengthdir_x(asd,i),argument1+lengthdir_y(asd,i),obj_solidos,1,1)
while !(col1=-4 and collision_line(argument0,argument1,argument0+lengthdir_x(asd+5,i),argument1+lengthdir_y(asd+5,i),obj_solidos,1,1)<>-4) and !(col1=-4 and asd>=asdinit)
{
mit=max(mit div 2,1)
if col1=-4 {asd+=mit}
else {asd-=mit}
col1=collision_line(argument0,argument1,argument0+lengthdir_x(asd,i),argument1+lengthdir_y(asd,i),obj_solidos,1,1)
}
if asd<>asdinit {return asd}
else {return 0}[/gml]




Me salto el siguiente error, despues que me el personaje salio de la habitacion traspasando los muros.

ERROR in
action number 2
of Other Event: User Defined 0
for object obj_ia:

In script scr_calcular_camino:
Error in code at line 9:
   argument0=max(min(argument0,col.x+32*(col.image_xscale)),col.x)
                                   ^
at position 34: Unknown variable x

Se que hay una nueva vercion me fijo si ya no tiene el problema.

Un consejo: Seria mejor que el personaje (obj_ia) tenga una mascara(mask_index) para evitar problemas de colision

#52 Septiembre 18, 2013, 05:09:40 PM Ultima modificación: Septiembre 18, 2013, 05:59:27 PM por Mgbu
Ahora raycast_ext funciona bien, pobre Texic, le estamos bombardeando jaja

EDIT: Ah! siempre quise tener un banner de GIA, el banner de GIA 4 se hace antes o después del concurso?
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Debería estar arreglado, fijate en la última versión. Antes la validación para el camino se caalculaba solamente mirando si el camino estaba libre, ahora se fija además que sea dentro del room




  Saludos ComunidadGM:

    Makero Texic, seguro esto es una duda trivial, pero aquí va....

    Deseo hacerme de un "sprite" para personificar mi IA, pero no se si las colisiones son a partir de una máscara o son a partir de la imagen del combatiente. Deberían ser a partir de una máscara para que así no importe el aspecto del soldado, en caso contrario ¿cómo sería los pasos para personalizar gráficamente las IAs...?

  Un saludo todos

  ¡ ...Y a Makear...!  ;D


Cita de: Mgbu en Septiembre 18, 2013, 05:09:40 PM
Ahora raycast_ext funciona bien, pobre Texic, le estamos bombardeando jaja

EDIT: Ah! siempre quise tener un banner de GIA, el banner de GIA 4 se hace antes o después del concurso?
No del todo. A simple vista del script se pueden apreciar dos cosas.

La primera que es un script MUY pesado, se debe de usar con precaución (Quizá podría ser optimizado haciendo un script para obtener el punto exacto de colisión de una linea en un cuadrado, con alguna función matemática).

Y la segunda es que a texic es le paso por alto que el raycast puede iniciar desde cualquier punto y no solo desde las coordenadas del objeto que ejecuta el script. Si no me di a entender texic, la cosa está en que estás usando las variables "x" e "y", en lugar de "argument0" y "argument1" en el script.

@ferhand:
Revisa las propiedades de la mascara de colisión en el sprite por defecto y copíalas a tu nuevo sprite, basta con que el radio del elipse de la mascara sea el mismo en tu sprite y el por defecto. En parte creo que texic debió de habernos facilitado esto y dejar la mascara en un sprite separado. Por otra parte estaría bueno saber si puedo dibujar "cualquier" cosa y ponerla como el sprite de mi personaje.

Mh a ver no es muuuy pesado, está puesto en baja precisión y hace uso de una búsqueda dicotómica, el órden del algoritmo es de log(n) donde n sería la distancia al punto exacto dividido por 5. Dicho esto es obvio que usarlo excesivamente puede resultar lento, pero tampoco es para asustarse. La función está limitada al room en el que se encuentran, sin excepción, para eso está al principio la validación de los valores, a lo mejor tenés una versión vieja en la que no estaba, porque no siempre estuvo.
La sprite, la verdad no es tan complicado realizar una con la misma máscara la verdad, no sean vagos y dejen de decir que no les facilite cosas porque tienen scripts para todo xD
La sprite tiene que ser del mismo tamaño, 32x32, al menos los límites visibles (pueden hacer una de 64x64 centrada para ponerle brillitos a la sprite... Lo que se les ocurra, pero el personaje máximo puede medir 32x32, también van a tener que centrar la máscara en ese caso)
Pueden hacer lo que les venga en gana con el sprite en tanto no sea obsceno ni hiriente. A lo que me refiero, no voy a aceptar sprites de hittler o un personaje desnudo, no es la idea, pero pueden hacer un alien, pueden quitarle el arma al jugador del sprite, hacer un fantasma, lo que se les venga en gana, pero dentro de los límites de una sociedad sana
Espero que haya quedado claro, cualquier duda me consultan, en el caso de las sprites depende mucho de lo que quieran hacer, pero en general fuera de los casos anteriores casi todo está permitido




Cita de: Texic en Septiembre 19, 2013, 01:41:07 AM
Mh a ver no es muuuy pesado, está puesto en baja precisión y hace uso de una búsqueda dicotómica, el órden del algoritmo es de log(n) donde n sería la distancia al punto exacto dividido por 5. Dicho esto es obvio que usarlo excesivamente puede resultar lento, pero tampoco es para asustarse. La función está limitada al room en el que se encuentran, sin excepción, para eso está al principio la validación de los valores, a lo mejor tenés una versión vieja en la que no estaba, porque no siempre estuvo.
Sobre si es pesado o no, lo dejo así. Lo que quería decir es que no es recomendable usarlo en un bucle 20 veces por step. Y sobre el error en el script, yo simplemente vi el script que posteaste, no es que tenga una versión vieja. Ahora mismo lo acabo de probar y en efecto sucede lo que dije anteriormente, quizá no me entendiste. Vuelvo a explicar.

[gml]
//Esta linea está en el código que posteaste:
col1=collision_line(x,y,x+lengthdir_x(asd,i),y+lengthdir_y(asd,i),obj_solidos,1,1)

//No he leido bien como funciona el script sin embargo creo que debería de ir algo así
col1=collision_line(argument0,argument1,argument0+lengthdir_x(asd,i),argument1+lengthdir_y(asd,i),obj_solidos,1,1)
[/gml]
En pocas palabras con el script actual esto funcionaría a la perfección:
scr_raycast_ext(x, y, mouse_x, mouse_y);
Sin embargo esto daría error en caso de que tx o ty sean diferentes a tus x o y actuales.
scr_raycast_ext(tx, ty, mouse_x, mouse_y);

Sobre la mascara y el sprite todo me parece bien, aunque al final creo que solo le cambiare el color de pelo  XD.

Ahh tenés razón, no había entendido bien lo que pusiste porque no citabas partes de código. Listo solucionado. Estas cosas pasan cuando no forzás el código con valores que no está preparado para recibir




Hey texic, sé que no debería molestarte de nuevo  :P. Vas a pensar (o ya lo haces) que soy un completo quejumbroso. Pero justo me doy cuenta de que la escopeta resulta ser prácticamente igual de fuerte que la metralleta, pero con menos distancia. En pocas palabras, no veo porque enfrentarme a alguien con metralleta, si yo tengo escopeta.