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

1
Hmmm en realidad no entiendo a donde apuntas. Utilizando lo que me decis atacaria al que esta mas cerca de la torre, que seria parecido a usar INSTANCE_NEAREST. Pero no es lo que busco, la eleccion de objetivo tiene que ser entre todos los que estan dentro del rango, incluso si el mas cercano al final del recorrido no es el mas cercano a la torre

EDIT.
Muchas gracias por la buena intencion de ayudar metalfox6383, agradezco que hayas contestado, pero ya esta arreglado.
Postee este mismo problema en otro foro, y recibi una respuesta que ha resuelto el problema!
A continuacion pongo la solucion para que quede en el foro por si alguien mas adelante tuviese la misma consulta.
Se crea un script
//scr_find_target(object,range)
//arg0 = the object to find targets amongst
//arg1 = the range you want to check for

var _targetlist, _target;
_targetlist = ds_priority_create();

with (argument0) {
    if (point_distance(x,y,other.x,other.y) < argument1)
    { ds_priority_add(_targetlist,id,path_position); }
}

if !ds_priority_empty(_targetlist) {
    _target = ds_priority_find_max(_targetlist);
    ds_priority_destroy(_targetlist);
    return (_target);
}
else {
    return (-1);
}


Quien me dio esta solucion es Katuko del foro de yoyogames.
2
Estoy creando un Tower Defense, para los que no conocen el concepto es el tipo de juego donde colocas torres defensivas que deben matar a enemigos. Los enemigos van por un camino y tenes que matarlos antes de que lleguen al final. Cada torre dispara automaticamente si el enemigo esta dentro de su rango de ataque.

Lo que necesito, que no me sale a pesar de varios intentos, es que la torre al seleccionar un enemigo para disparar tome en cuenta dos cosas:

1- Que este dentro de su rango de ataque, lo cual si puedo hacer utilizando "distance_to_object"
2- Que  ataque al que esta mas adelante en el camino, es decir, el que esta mas cerca de llegar al final.

Ya cada enemigo tiene la variable "path_position" que va del 0 al 1 segun que tan cerca esta de llegar al final del path, por ende hay una manera de identificar segun esta variable quien va mas adelante; o en su defecto pense en poner una variable que aumente en cada step el valor que tenga de speed, de manera que tambien indicaria lo mismo. Pero mi conocimiento en programacion es escaso asi que aun teniendo esas variables, no logro pensar como conseguir lo que quiero.

Busque preguntas y ejemplos pero ninguno tiene esto. Siempre atacan al mas cercano y no es lo que quiero para mi juego.

Agradeceria cualquier opinion que puedan darme para conseguirlo.
3
Preguntas y respuestas / Re:Unkown variable
Febrero 25, 2013, 12:31:42 AM
Woo esta arreglado!
Habia un objeto con un nombre distinto que tenia a En de parent. Ese objeto tenia un create event distinto y la variable no la tenia incorporada. El error surgia cando ese objeto se creaba, y no me daba cuenta pq en el error me decia que estaba relacionado al objeto En. Disculpas por las molestias, como habia dicho al principio era un problema idiota. Gracias por la ayuda de todas maneras, aprendi una que otra cosa
4
Preguntas y respuestas / Re:Unkown variable
Febrero 24, 2013, 11:35:54 PM
Cita de: penumbra en Febrero 24, 2013, 11:12:38 PM
¿Y si en STEP quitas la primera condición para ver si da el mismo error con p2_time?
Acabo de probar, y salta el mismo error con el p2_time. Dice unknown variable tmb.

Cita de: penumbra en Febrero 24, 2013, 11:12:38 PM
Esto no tiene mucho que ver, pero en el código de la colisión, puedes quitar if p1_time<=90 ya que me imagino que siempre que toque un dardo, el tiempo comienza desde 90 hasta 0, sin importar si antes ya había sido tocado por otro dardo.
Eso era por si en el futuro decidia agregar algun tipo de dardo que pueda enenenar por mas de 3 segundos, para que no lo reduzca. Pero si, por el momento es igual ponerlo como decis
Cita de: penumbra en Febrero 24, 2013, 11:12:38 PM
Eso sí está raro. Sin ver todo el código no se me ocurre algo más.
Muy raro. Realmente lo reviso una y otra vez, pero no le encuentro sentido. Pasaria todos los codigos, pero realmente no estan relacionados en lo mas minimo. Esta variable acabo de crearla y solo hice la interaccion entre esos tres eventos.
Recien para confirmar si aun tenia el valor de la variable puse en el evento Draw, que dibuje el numero del valor p1_time. Lo hace, el numero cambia con cada step. Incluso sigue marcando el valor cuando sale el error. Si pongo ignore (que permite hacer otro step antes de que vuelva a surgir el error) el valor disminuye. Es decir que incluso desps del error, sigue ejecutando el codigo: if p1_time>0
{p1_time-=1}
5
Preguntas y respuestas / Re:Unkown variable
Febrero 24, 2013, 10:51:35 PM
Hmmm... no entendi a que te referis. El codigo esta en el evento Step del objeto En. Es decir que si el codigo se esta ejecutando si o si va a existir.
Aun asi lo probé y desgraciadamente no hay diferencia.
6
Preguntas y respuestas / Re:Unkown variable
Febrero 24, 2013, 10:29:04 PM
Cita de: penumbra en Febrero 24, 2013, 09:47:04 PM
Precísamente.  a = b no es una comparación, es una asignación. Una comparación es a == b.  Puedes usar
Tenia entendido que en lenguaje de gm, al poner el if detras era exactamente lo mismo y comparaba. Pero todos los dias se aprende algo nuevo jaja. modifique los signos para que compare propiamente. Pero pasa lo mismo u.u
Cita de: penumbra en Febrero 24, 2013, 09:47:04 PM
Según tu mensaje de error, la falla está en la línea 8 del evento Step, pero en el código que pegaste, la instrucción  if !p1_time=0 no está en la línea 8.
Si, en realidad el codigo arriba tiene otras cosas, pero no esta relacionado con esto, y en ningun momento usa estas variables.

El tema es que de todas maneras el codigo funciona. Empieza funcionando a la perfeccion pero desps como que "pierde" el valor de esa variable. Dice que no la reconoce, siendo que en sus variables locales sigue marcando el valor y se modifica en cada step. Eso me frustra ._.
7
Preguntas y respuestas / Re:Unkown variable
Febrero 24, 2013, 09:07:42 PM
Cita de: penumbra en Febrero 24, 2013, 08:28:40 PM
Mmm. ¿En palabras coloquiales, qué quieres hacer con esto?

if !p1_time=0

GML es un lenguaje muy permisivo en ciertas cosas. Alevaluar una condición, a= b no es lo mismo que a == b
Quise expresar siempre que el valor no sea 0, en este caso solo dejara de ser 0 si es un numero mayor. Para que reste 1 hasta llegar a 0.
Entiendo que al poner if a=b, lo compara.
De todas maneras el codigo tambien lo habia probado con if p1_time>=1 y pasaba exactamente lo mismo. Lo cambie a !p1_time=0 pq era mas corto jaja
8
Preguntas y respuestas / Unkown variable
Febrero 24, 2013, 08:00:36 PM
No queria postear esto para no molestar por un problema seguramente idiota... pero no se que pasa.
Tengo un objeto (En), al dispararle debe envenenarse por un maximo de 3 segundos, siendo posible tener dos niveles de veneno diferentes.
En su create event tiene
p1_time = 0 //tiempo en que tiene veneno nivel 1
p2_time = 0 //tiempo en que tiene veneno nivel 2

Al colisionar con otro objeto, un dardo.
if p1_time<=90
{p1_time=90}//Queda envenenado por 3 segundos con veneno nivel 1

Y en su step event
if !p1_time=0
{p1_time-=1}

if !p2_time=0
{p2_time-=1}

if  p1_time>=1 and p2_time=0//Calcula el daño, da prioridad al veneno level 2. Si el 2 se acaba antes que el 1, el 1 debe seguir dañando
{hp-=0.16}
if p2_time>=1
{hp-=0.24}


En principio funciona. Lo envenena, y disminuye su hp. Pero despues de unos segundos, mientras sigue envenenado, o cuando ya se termino el tiempo del veneno, o cuando lo vuelven a envenenar, aleatoreamente, me sale el error:

___________________________________________
ERROR in
action number 1
of  Step Event
for object En:

Error in code at line 8:
   if !p1_time=0
       ^
at position 6: Unknown variable p1_time
___________________________________________

Abriendolo en el debug mode, mientras sucede veo que el objeto (En) nunca pierde el valor de la variable p1_time.

Espero puedan ayudarme, desde ya gracias!