bueno pongo en el mouse crear objeto un cuadrado por ejemplo y creo dos objetos iguales al grabar las posiciones solo m graba la posicion del segundo objeto el ultimo creado         Como identifico copias del objeto y sus coordenadas x y ?

#1 Noviembre 23, 2013, 07:10:30 PM Ultima modificación: Noviembre 23, 2013, 07:12:16 PM por penumbra
lo que yo haría sería guardar las id de cada instancia en alguna estructura de datos, en este caso en una pila

CREATE :
ids_pila = ds_stack_create();

CUANDO QUIERA GUARDAR el id de las instancias (STEP probablemente)
with (obj_mi_objeto)
{
    ds_stack_push(ids_pila, id);
}

no lo comprendo como ace esto que obj_mio xy
se distinge de mio copia x,y podrias hacer un ejemplo ademas me da error la variable ids_pil aunque se que los tiros van por ahi por la id

#3 Noviembre 23, 2013, 10:24:36 PM Ultima modificación: Noviembre 23, 2013, 10:34:58 PM por penumbra
El detalle es que no tengo el Studio, por eso no puedo hacerte ejemplo

Digamos que tienes un objeto obj_bala y que en determinado momento de tu juego, hay 10 instancias de este objeto en la habitación. Esas 10 instancias o copias, como tú les llamas, tienen internamente un identificador único (id).  Al usar la instrucción

with(obj_bala)
{
}


Lo que pongas entre corchetes se va a ejecutar para cada instancia de la bala, es decir, se va a ir recorriendo 10 veces por todas las "copias" del objeto ob_bala. En el ejemplo que puse en el mensaje anterior, GM "entraria" a la primer instancia de ob_bala y leería su identificador (id), lo almacenaría en la pila, luego accedería a la siguiente instancia, y leería un nuevo id, y así dependiendo del número de instancias.

Luego, como estás usando una pila, los datos que le metas (guardes) se van apilando "uno encima de otro" (hablando en sentido figurado).

ultimo_dato = ds_stack_pop(ids_pila)

Al hacer eso, obtienes el identificador de la ultima instancia que se guardói en la pila Y OJO, este valor se borra de la pila (el tamaño de la pila disminuye en 1, es decir, ahora  te quedan 9 valores). Luego puedes hacer

ultimo_dato.x += 5, por ejemplo, para mover esa "copia" en particular.

Espero que se entienda algo  :-[

EDITADO:

A lo mejor se te hace más fácil usar un arreglo para guardar las id's. algo como

[CREATE]
contador = 0; arreglo_id(10) = 0   

with(obj_mio)
{
    arreglo_id[contador] = id
    contador +=1
}

#4 Noviembre 23, 2013, 11:10:06 PM Ultima modificación: Noviembre 23, 2013, 11:13:33 PM por petpan13
muchas gracias por contestar algo entiendo pero tengo que estudiar y comprobar vera en studio para grabar las posiciones de un objeto se hace asi:


  ini_open( 'savedata.ini' );
if (instance_number(dest)>0){
ini_write_real('SAVE','xx', dest.x)
ini_write_real('SAVE','yy', dest.y) }

ini_close()

por eso necesito identificar copias para conocer su x y y salvarlas

ini_write_real('SAVE','xx1', copiadest.x)
ini_write_real('SAVE','yy1', copiadest.y) }

algo asi creo q with  puede valer todo es experimentar solo q en vez de copia pondia 1 2 3