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.

Temas - arcangelcaos

101
Hola, otra vez parado, voy avanzando, pero tengo mis dudas.
Yo estoy acostrumbrado un poco a VB, que tenia una función que era WAIT, que hacia que esperara a que terminara una función antes de seguir con la otra.
Aquí no se si eso existe, y si no, necesito crear algo parecido.
Yo tengo lo siguiente

criatura = argument0
movi = criatura.Mov
repeat (movi)
{
i=1
a= criatura.DistAtk

while (i <> (a+1))
{
    if not place_free((criatura.x+(96*i)),y)
    {
        obstaculo = collision_point( (criatura.x+(96*i)),y, objAmigo, false, false)
        if obstaculo = -1
        {
            obstaculo = collision_point( (criatura.x + (96*i)),y, objEnemigo, false, false)
            scrAtake(criatura,obstaculo)
            break;
        }
    i+=1
    break;
     }
    i+=1
  }
    with (criatura)
    {
        sprite_index = sprEspada2Mov
        mipath = path_add()
        path_add_point(mipath, x, y, 100)
        path_add_point(mipath, (x+96), y,100)
        path_set_closed (mipath, false)
        path_start (mipath, 10,0,true)
     }
         


Vale, esto es un scrips que es llamado desde otro.
Las criaturas tiene un alcance para el daño, y unos puntos de movimientos. Pues el primer movimiento por decirlo asi si lo hace bien.
Comprueba si hay enemigos enfrente, si no, luego en el 2 cuadrado. Si los hay en alguno ataka.
Si no, avanza un cuadrado, y vuelve a comprobar, y avanzara tanto cuadrados como movimientos tenga asignados, y también comprobara si hay enemigos hasta la distancia que tenga asignada, el problema es lo que hace todo super rápido, no se espera que llegue al final del path para volver a repetir, como podría hacer eso.

Es en la función repetir() la que quiero que espere hasta que llegue al final del path.

Gracias
102
Hola, estoy compilando para ver como se ven en android y si da algún fallo alguna cosa, y me salta estos erroes

-build-setup:
[getbuildtools] Using latest Build Tools: 21.1.2
     [echo] Resolving Build Target for facebook...

BUILD FAILED
c:\Program Files (x86)\Android\android-sdk\tools\ant\build.xml:601: The following error occurred while executing this line:
c:\Program Files (x86)\Android\android-sdk\tools\ant\build.xml:542: Unable to resolve project target 'android-8'

Total time: 10 seconds


Alguno sabe que es??
103
Preguntas y respuestas / Ayunda movimiento instancia
Enero 09, 2015, 05:32:28 PM
Hola, aquí ando otra vez. Vamos a ver si me explico lo que quiero, haber como me iluminais porque no doy con la tecla.

Tengo una room, con 2 filas horizontales, con 14 puntos "x" fijado a cada una.
Yo tengo una reserva de criaturas abajo de la room, arrastro la criatura hasta uno de esos puntos en una de las líneas. Si esta ocupada lo devuelve a la reserva, y si no la coloca centrada.

He aquí donde viene el tema, yo ahora le doy a un botón pasar turno.
Cada criatura tiene extablecido unos movimiento en línea recta, 2, 3, 4, etcc.  multiplicado por 92 cada uno, para asi llegar al punto de la línea que le corresponda.

Como ya se los puntos donde puede haber criaturas hago lo siguiente:
if not place_free (x,y,)
    criatura = colision_point(x,y, objAmigo)    //objAmigo es un padre de cada criatura
    move_towar_point ( criatura.x+(movimiento*92), criatura.y+(movimiento*92))

El problema es que no se para, sigue el movimiento, como puedo hacer que pare cuando llegue a ese punto.
Pero es que es mas, para completar la información, puede estar en 14 puntos diferente.
Otra cosa, he de colocar que antes de iniciar el movimiento compruebe si tiene a 92pix una criatura, si es asi, comprube si es amiga o enemiga (objetos padres), si es amiga, pase por encima, si es enemiga ataque (función independiente), y si no hay nada, que lo compruebe a 184 px, porque tiene de alcance 2 cuadros. Si tampoco hay nada, ande 92 pix, vuelva a comprobar si hay alguna critura a su alcance, delante, no al rededor, y vuelva a  empezar, asi hasta los movimientos que tenga asigandos en el evento créate.

Valo, yo he pensado en collision_ line (x,y, x1, y1, objeto) hasta hay bien. Pero como hago que se pare, con move_towar no para de andar.

Ahh, y otra cosa que me pasa, puede haber varias criaturas, y quiero que ande una, haga sus ataques y cuando termine que empiece la otra, y ahora se mueven todas prácticamente al mismo tiempo. Hay alguna manera que hasta que no finalice una función no continue con otra???

Gracias, espero haber explicado bien.

EJEMPLO UN POCO GRAFICO

__ __ __ __ __ __ __ __
__ __ __ __ __ __ __ __

A_ __ __ E_ __ __
__ __ __ __ __ __

Que A avance los movimientos, hasta que llegue a su destino y se pare, y si se encuentra a E durante el camino, que le ataque.
104
Haber, yo he pensado hacerlo asi, pero si me alumbráis de hacerlo de otra manera mejor. Mirar lo que estoy haciendo
Tengo un txt con el nombre de todos los objetos
Tengo un ini, con la cantidad de cada objeto

Quiero hacer como un libro, que me muestre en cada hoja unos objetos en función de la cantidad que tengo en el ini
Bien, he pensado este código al abrir la room
ini_open("Datos\CriaturasPosee.ini")
criaturas = file_text_open_read("Datos\CriaturasPosee.txt")
global.CriaturasCuartel = ds_list_create()
while not(file_text_eof(criaturas))
{
criatura= file_text_read_string(criaturas)
ncriatura= asset_get_index(criatura)
cantidad= ini_read_real('CriaturasPosee',criatura,0)
    if cantidad>0
    {
        repeat (cantidad)
        {
        ds_list_add(global.CriaturasCuartel,criatura)
        }
    }
file_text_readln(criaturas)       

global.TotalCriaturas = ds_list_size (global.CriaturasCuartel)
//ds_list_sort(CriaturasCuartel,1)
global.Paginas = ceil(global.TotalCriaturas/15)
global.pagina = 1
global.posicion =1
global.posicionrelativa =1
draw_text(735,80, "global.pagina" + "/" + "global.paginas")
    repeat (15)
        {
        global.posicionrelativa = global.posicion
        criatura= ds_list_find_value(global.CriaturasCuartel,global.posicionrelativa)
        ncriatura = asset_get_index(criatura)
        switch (global.posicion)
         {
         case 1:
         x1= 608
         y1=128 ;break
         case 2:
         x1= 608+128
         y1=128 ;break     
         case 3:
         x1= 608+252
         y1=128;break
         case 4:
         x1= 608
         y1=128+128;break
         case 5:
         x1= 608+128
         y1=128+128;break
         case 6:
         x1= 608+256
         y1=128+128;break
         case 7:
         x1= 608
         y1=128+256;break
         case 8:
         x1= 608+128
         y1=128+256;break
         case 9:
         x1= 608+256
         y1=128+256;break
         case 10:
         x1= 608
         y1=128+384;break
         case 11:
         x1= 608+128
         y1=128+384;break
         case 12:
         x1= 608+256
         y1=128+384;break
         case 13:
         x1= 608
         y1=128+512;break
         case 14:
         x1= 608+128
         y1=128+512;break
         case 15:
         x1= 608+256
         y1=128+512;break
         case 16:
         x1= 608
         y1=128+640;break
         case 17:
         x1= 608+128
         y1=128+640;break
         case 18:
         x1= 608+256
         y1=128+640;break
         }
         instancia= instance_create(x1,y1,ncriatura)
         if (global.TotalCriaturas = global.posicionrelativa)
         {
         break
         }
         global.posicion += 1
        }


el swicht lo uso poner cada objeto en un lugar correspondiente.

Ahora me he creado 2 botones, uno hacia atrás y otro hacia adelante, el de atrás en principio funciona una parte, la de si estoy en la pagina 1, pero no se el otro código dado que la de avanzar no funciona.
tengo este código
if not (global.pagina = global.Paginas)
    {
    global.posicion = 1
    i= global.pagina
    global.pagina +=1
    draw_text(735,80, "global.pagina" + "/" + "global.paginas")
    repeat (15)
        {
        global.posicionrelativa = global.posicion + (i*15)
        criatura= ds_list_find_value(global.CriaturasCuartel,global.posicionrelativa)
        ncriatura = asset_get_index(criatura)
        switch (global.posicion)
         {
         case 1:
         x1= 608
         y1=128 ;break
         case 2:
         x1= 608+128
         y1=128 ;break     
         case 3:
         x1= 608+252
         y1=128;break
         case 4:
         x1= 608
         y1=128+128;break
         case 5:
         x1= 608+128
         y1=128+128;break
         case 6:
         x1= 608+256
         y1=128+128;break
         case 7:
         x1= 608
         y1=128+256;break
         case 8:
         x1= 608+128
         y1=128+256;break
         case 9:
         x1= 608+256
         y1=128+256;break
         case 10:
         x1= 608
         y1=128+384;break
         case 11:
         x1= 608+128
         y1=128+384;break
         case 12:
         x1= 608+256
         y1=128+384;break
         case 13:
         x1= 608
         y1=128+512;break
         case 14:
         x1= 608+128
         y1=128+512;break
         case 15:
         x1= 608+256
         y1=128+512;break
         }
         instancia= instance_create(x1,y1,ncriatura)
         if (global.TotalCriaturas = global.posicionrelativa)
         {
         break
         }
         global.posicion += 1
        }
    }


He ido comprobando paso a paso lo que hace y mas o menos empieza bien, pero al llegar a cierta posición me da como ncriatura -1 en la posición 23, cuando en realidad hay mas criaturas, como 60 asi.
Puedo ver de una sola vez lo que hay en la lista? hay alguna función para verla en pantalla?
Donde puede estar el fallo? alguno lo ve?, y no se si los siguientes valores los hace bien porque no me deja continuar






Lo dejo por si a alguien le puede servir de inspiración para algo.
Faltaria añadir eliminiar todos los objetos antes de crear los nuevo en los eventos de las paginas.


El error era que había un espacio en la ultima línea del txt, no se veía, no se notava, pero hay estaba.


Tened cuidado de no dejar un espacio o línea en blanco al final del txt  :'( :'( :'( :'( :'( :'( :'( :'(
105
Preguntas y respuestas / Mil dudas con collision
Enero 03, 2015, 08:53:33 PM
Madre mía, llevo todo el día programando y haciendo cosas, y o estoy ya que no carburo bien o no entiendo las opciones.
Estoy intentando generar un evento de colision.
En el evento (script) tendrá dos argumentos, mi objeto, y el objeto contra el que coche. Dentro de este evento se hacen cálculos para ver el el daño que se causa y la vida que queda y si procede se destruya la instancia. Es que hay habilidades, etcc que afectar al resultado, por eso un calculo grande.

Bien, aquí es donde viene mi dilema, lo explico en seudocódigo.

Tengo una unidad mía, que se moverá al acabar un tiempo o que yo le de finalizar turno. Bien

Hola, la unidad se mueve "2cuadros" = 64pixles x 2, en cada movimiento, puede ser que tenga aliados delante o enemigos.
Además tiene un ataque que llega 64x2 (uso 64, que son los pixeles que ocupa cada casilla y enemigo)

Necesito que al STEP (ANDAR) compruebe si tiene algún enemigo en frente, pero puede ser que haya un amigo a 64 y el enemigo a 64x2. Entonces debe atacar al enemigo, pero no al amigo. Todos tiene una variable que los identifica como Tipo:Amigo/Enemigo.

Si hay un enemigo, que llame a la función colisión creado por mi, con argumento1= mi unidad, argumento2 = el enemigo.
Para que así yo ya en dicha función yo haga mis cálculos y varié su variables según los resultados.

He visto collision_line para un tipo de unidad, y collision_circle, para otras. Pero lo que no se es como averiguar con que objeto a chocado, para asi poder decidir si sigue andando o ataca.

Espero haber explicado bien.

Gracias.

Con que me digáis como averiguo conque instancia a chocado, me vale. Dado que puede haber 2 o mas instancias del mismo objeto. Y tengo como 100 objetos diferentes, que pudiera haber, pero como mucho habrá 10 al mismo tiempo en la room
106
Haber si me explico lo que no entiendo.
Yo tengo un objeto con una variables que se definen al crearse, que se dibujan al rededor del objeto con draw text
Hasta aquí bien, pero ahora, yo tengo 2 instancia de objeto, osease, esta  veces en la room. Yo hago drawn_text (obj.x,obj.y, obj.variable)

He probado con  instancia = instance_id
drawn_text(instancia.x,instancia.y, instancia.variable)
pero no me lo hace.

Pues bien, solo me lo dibuja en la primera instancia, no el segunda. Como puedo hacer que me lo dibuje en la segunda, y ahh, las variables son independientes para cada instancia de un mismo objeto?, por ejemplo la vida.
Gracias

107
Hola otra vez. Esto con  :GMS:.
Tengo un txt con una lista de criaturas, en cada línea un nombre.
objcriatura1
objcriatura2
objcriatura3

Tengo un ini con la cantidad de cada criatura.

[CriaturasPosee]
objcriatura1=2
objcriatura2=1

Puede ser que esa criatura del txt no este en el ini.

Bien, lo que quiero es que me lea todo eso y me pongas los objetos en el mapa.
Yo he desarrollado esto, pero no me da error, pero no se donde falla.
Hay alguna manera de ver que valores cogen las variables mientras se ejecuta, es que no lo consigo  ni en modo debug.

He creado un objeto, sin sprite, no visible con el siguiente código
evento créate

x1=64
y1=64

ini_open("Datos\CriaturasPosee.ini")
criaturas = file_text_open_read("Datos\CriaturasPosee.txt")
while (file_text_eof(criaturas))
{
criatura= file_text_read_string(criaturas)
cantidad= ini_read_real("CriaturasPosee",criatura,0)

    if cantidad>0
        repeat (cantidad)
            {
            instance_create (200+x1,150+y1,criatura)
            if x1< 750
                x1+=64
            else
                x1=64
                y1+=64
            }
file_text_readln(criaturas)       


y no me hace nada, creo que esta bien expresado.
en seudocódigo es lo siguiente:
cojo el nombre de un objeto
voy al ini y miro la cantidad
el 1 lo pongo en una posición, si hay 2, lo pongo al lado, y si llego al final de la room, bajo una línea y vuelvo a empezar
avanzo una línea en el txt
cojo otro nombre y repito la operación,
asi hasta que llegue al final del txt.
108
Preguntas y respuestas / Error al abrir un .txt
Diciembre 31, 2014, 07:24:46 PM
Hola, estoy desarrollando un juego en  :GMS:. Quiero guardar en archivos txt una información, no son variables como tal. Son listado de "objetos".

ob_mago
ob_maga
ob_caballero

etcc

El txt no lleva otro contenido.

He creado yo directamente el txt desde el window 8.

Uso este código a modo de prueba antes de meterme a programar a fondo
Evento créate de un objeto.
Criaturas = file_text_open_read(working_directory + "\a.txt")
a=150
b=150
while (file_text_eof(Criaturas))
    {
    Nombre = file_text_read_string (Criaturas)
    draw_text(a,b, Nombre)
    file_text_readln (Criaturas)
    a += 30
    b += 30
    }
file_text_close (Criaturas)


Pues bien, el Gm me duelve este error


___________________________________________
############################################################################################
ERROR in
action number 1
of Create Event
for object ob_Line1_1:

File is not opened for reading.
at gml_Object_ob_Line1_1_CreateEvent_1 (line 4) - while (file_text_eof(Criaturas))
############################################################################################
y abajo en el compilador esto:
Sound_Prepare()
InitGraphics()
Finished PrepareGame()
Run_Start
StartGame()
ERROR!!! :: Failed to open file: C:\Users\Jdj\AppData\Local\Temp\gm_ttt_78700\gm_ttt_43545\a.txt


Saber que probado en todos los directorios, en C:, con barra inclinada, sin ella, en un directorio especifico, ya no se que hacer

Donde puede estar el fallo??
Ah, en pensado en los ini, pero no voy a guardar valores de variables, son, digamos los tipos de monstruos que ha matado, para asi luego cuando se desee generar un informe en la pantalla con los que han sido.

Estoy ya desesperado, por mas leo tutoriales no encuentro el fallo, todos los tutoriales les sale a la primera, pero a mi no, me faltara algún dll o algo?

Gracias