De hecho lo hace para los tiles (No encontr? otra forma de hacerlo)
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.
1142
Desarrollo de Scripts / room_export/import
Octubre 02, 2010, 10:20:46 PM
Creador: Yo
Version de GM utilizada: :GM8:
Descripcion:
room_export
[gml]global.a=file_text_open_write(argument0)
with (all)
{
file_text_write_string(global.a,"room_instance_add(argument0,"+string(x)+","+string(y)+","+string(object_index)+")")
file_text_writeln(global.a)
}
b=1
z=1
while layer<>0
{
for (q=0;q<=room_width;q+=1)
{
for (w=0;w<=room_height;w+=1)
{
l=tile_layer_find(layer,q,w)
if l<>-1 and search()=0
{
l[z]=l
z+=1
file_text_write_string(global.a,"room_tile_add(argument0,"+string(tile_get_background(l))+","+string(tile_get_left(l))+","+string(tile_get_top(l))+","+string(tile_get_width(l))+","+string(tile_get_height(l))+","+string(tile_get_x(l))+","+string(tile_get_y(l))+","+string(layer)+")")
file_text_writeln(global.a)
}
}
}
b+=1
}
file_text_write_string(global.a,"room_set_code(argument0,'room_speed="+string(room_speed)+"')")
file_text_writeln(global.a)
file_text_write_string(global.a,"room_set_width(argument0,"+string(room_width)+")")
file_text_writeln(global.a)
file_text_write_string(global.a,"room_set_height(argument0,"+string(room_height)+")")
file_text_writeln(global.a)
file_text_write_string(global.a,"room_set_caption(argument0,'"+string(room_caption)+"')")
file_text_writeln(global.a)
file_text_write_string(global.a,"room_set_persistent(argument0,"+string(room_persistent)+")")
file_text_writeln(global.a)
file_text_write_string(global.a,"room_set_background_color(argument0,"+string(background_color)+","+string(background_showcolor)+")")
file_text_writeln(global.a)
for (v=0;v<=7;v+=1)
{
file_text_write_string(global.a,"room_set_background(argument0,"+string(v)+","+string(background_visible[v])+","+string(background_foreground[v])+","+string(background_index[v])+","+string(background_x[v])+","+string(background_y[v])+","+string(background_htiled[v])+","+string(background_vtiled[v])+","+string(background_hspeed[v])+","+string(background_vspeed[v])+","+string(background_alpha[v])+")")
file_text_writeln(global.a)
file_text_write_string(global.a,"room_set_view(argument0,"+string(v)+","+string(view_visible[v])+","+string(view_xview[v])+","+string(view_yview[v])+","+string(view_wview[v])+","+string(view_hview[v])+","+string(view_xport[v])+","+string(view_yport[v])+","+string(view_wport[v])+","+string(view_hport[v])+","+string(view_hborder[v])+","+string(view_vborder[v])+","+string(view_hspeed[v])+","+string(view_vspeed[v])+","+string(view_object[v])+")")
file_text_writeln(global.a)
}
file_text_write_string(global.a,"room_set_view_enabled(argument0,"+string(view_enabled)+")")
file_text_close(global.a)[/gml]
room_import
[gml]global.b=file_text_open_read(argument1)
while !file_text_eof(global.b)
{
execute_string(file_text_read_string(global.b),argument0)
file_text_readln(global.b)
}
file_text_close(global.b)[/gml]
search //lo van a necesitar, es un script q usa el export para asegurarse de no repetir los tiles
[gml]t=1
o=0
while l[t]<>0
{if l[t]=l {o=1 break}
t+=1}
return o[/gml]
Ejemplo:[gml]//exportar
layer[1]=1000000 //estos son los layers para los tiles, no encontr? una manera de sacarlos por c?digo, asi que hay que ingresarlos manualmente antes de exportar
layer[2]=999999
room_export("\Rooms\Room1.gmr")
//importar
room_import(room1,"\Rooms\Room1.gmr")[/gml]
Dejo un adjunto obviamente, para demostrar su funcionamiento. Mientras m?s layers haya y m?s tama?o tenga el room, m?s tarda en exportar. Siempre pueden encriptar los archivos resultantes, ya que no vienen encriptados por defecto. Es lo mejor que pude hacer por ahora, pero ya lo iremos mejorando entre todos. Saludos :)
Version de GM utilizada: :GM8:
Descripcion:
CitarEste script exporta e importa rooms del game maker. Tiene algunos peque?os inconvenientes que luego solucionar?. Por ej, no guarda los c?digos de creaci?n del room, ni los c?digos de creaci?n de los objetos. Hay que estar en el room en el que se va a exportar (No pasa lo mismo al importar), aunq esto es f?cil de solucionar, y nada m?s. Lo hice lo m?s completo que pude
room_export
[gml]global.a=file_text_open_write(argument0)
with (all)
{
file_text_write_string(global.a,"room_instance_add(argument0,"+string(x)+","+string(y)+","+string(object_index)+")")
file_text_writeln(global.a)
}
b=1
z=1
while layer<>0
{
for (q=0;q<=room_width;q+=1)
{
for (w=0;w<=room_height;w+=1)
{
l=tile_layer_find(layer,q,w)
if l<>-1 and search()=0
{
l[z]=l
z+=1
file_text_write_string(global.a,"room_tile_add(argument0,"+string(tile_get_background(l))+","+string(tile_get_left(l))+","+string(tile_get_top(l))+","+string(tile_get_width(l))+","+string(tile_get_height(l))+","+string(tile_get_x(l))+","+string(tile_get_y(l))+","+string(layer)+")")
file_text_writeln(global.a)
}
}
}
b+=1
}
file_text_write_string(global.a,"room_set_code(argument0,'room_speed="+string(room_speed)+"')")
file_text_writeln(global.a)
file_text_write_string(global.a,"room_set_width(argument0,"+string(room_width)+")")
file_text_writeln(global.a)
file_text_write_string(global.a,"room_set_height(argument0,"+string(room_height)+")")
file_text_writeln(global.a)
file_text_write_string(global.a,"room_set_caption(argument0,'"+string(room_caption)+"')")
file_text_writeln(global.a)
file_text_write_string(global.a,"room_set_persistent(argument0,"+string(room_persistent)+")")
file_text_writeln(global.a)
file_text_write_string(global.a,"room_set_background_color(argument0,"+string(background_color)+","+string(background_showcolor)+")")
file_text_writeln(global.a)
for (v=0;v<=7;v+=1)
{
file_text_write_string(global.a,"room_set_background(argument0,"+string(v)+","+string(background_visible[v])+","+string(background_foreground[v])+","+string(background_index[v])+","+string(background_x[v])+","+string(background_y[v])+","+string(background_htiled[v])+","+string(background_vtiled[v])+","+string(background_hspeed[v])+","+string(background_vspeed[v])+","+string(background_alpha[v])+")")
file_text_writeln(global.a)
file_text_write_string(global.a,"room_set_view(argument0,"+string(v)+","+string(view_visible[v])+","+string(view_xview[v])+","+string(view_yview[v])+","+string(view_wview[v])+","+string(view_hview[v])+","+string(view_xport[v])+","+string(view_yport[v])+","+string(view_wport[v])+","+string(view_hport[v])+","+string(view_hborder[v])+","+string(view_vborder[v])+","+string(view_hspeed[v])+","+string(view_vspeed[v])+","+string(view_object[v])+")")
file_text_writeln(global.a)
}
file_text_write_string(global.a,"room_set_view_enabled(argument0,"+string(view_enabled)+")")
file_text_close(global.a)[/gml]
room_import
[gml]global.b=file_text_open_read(argument1)
while !file_text_eof(global.b)
{
execute_string(file_text_read_string(global.b),argument0)
file_text_readln(global.b)
}
file_text_close(global.b)[/gml]
search //lo van a necesitar, es un script q usa el export para asegurarse de no repetir los tiles
[gml]t=1
o=0
while l[t]<>0
{if l[t]=l {o=1 break}
t+=1}
return o[/gml]
Ejemplo:[gml]//exportar
layer[1]=1000000 //estos son los layers para los tiles, no encontr? una manera de sacarlos por c?digo, asi que hay que ingresarlos manualmente antes de exportar
layer[2]=999999
room_export("\Rooms\Room1.gmr")
//importar
room_import(room1,"\Rooms\Room1.gmr")[/gml]
Dejo un adjunto obviamente, para demostrar su funcionamiento. Mientras m?s layers haya y m?s tama?o tenga el room, m?s tarda en exportar. Siempre pueden encriptar los archivos resultantes, ya que no vienen encriptados por defecto. Es lo mejor que pude hacer por ahora, pero ya lo iremos mejorando entre todos. Saludos :)
1143
Desarrollo de Scripts / Re: sprite_get_index
Octubre 02, 2010, 09:51:38 PM
Wow, ahora a 10000 veces por step da 5-6 fps (Quiz?s se deba tambi?n a que mi pc est? m?s liviana que cuando lo prob? la otra vez)
1144
Desarrollo de Scripts / Re: sprite_get_index
Octubre 02, 2010, 04:36:49 AM
Demostrado, tu c?digo 5000 veces por segundo Wadk da 2 fps, el mio seg?n la cantidad de sprites que tenga que recorrer el while, pero en circunstancias normales gana el tuyo por bastante
1145
Preguntas y respuestas / Re: Como hago para invertir una imagen.
Octubre 02, 2010, 02:24:57 AM
Q la imagen se invierta horizontal o verticalmente?
EDIT: En cualquier caso, pone image_xscale=-1 o image_yscale=-1 para invertir, y image_xscale=1 eo image_yscale=1 para volver las sprites a la normalidad
EDIT: En cualquier caso, pone image_xscale=-1 o image_yscale=-1 para invertir, y image_xscale=1 eo image_yscale=1 para volver las sprites a la normalidad
1146
Desarrollo de Scripts / Re: sprite_get_index
Octubre 01, 2010, 02:06:19 AM
Claro que est? bien, pero empieza en 1000 y termina en -1, esa es la parte que no me convence. Normalmente no se llega ni a las 300 sprites (En mi caso particular). Supone m?s esfuerzo y recorrido llegar desde 1000 a 300 que desde 0 a 300, estaba pensada para ser m?s r?pida en ese sentido
1147
Desarrollo de Scripts / Re: sprite_get_index
Octubre 01, 2010, 01:41:51 AM
Pues obviamente no se me hab?a ocurrido XD
Ahora la cambio, me fijo cu?l funciona mejor (de las tuyas, esta claro q la m?a no est? optimizada)
EDIT: Listo, ya ta
Ahora la cambio, me fijo cu?l funciona mejor (de las tuyas, esta claro q la m?a no est? optimizada)
EDIT: Listo, ya ta
1149
Preguntas y respuestas / Re: usar sprite mediante str
Septiembre 30, 2010, 09:59:50 PM
Este GM... Que limitado. Bueno, hice un script para sacar el ?ndice de un sprite mediante un string que contenga su nombre. Espero que te sirva m?s adelante, considerando que ya resolviste el problema
http://www.comunidadgm.org/index.php?topic=12757.msg59554#msg59554
http://www.comunidadgm.org/index.php?topic=12757.msg59554#msg59554
1150
Desarrollo de Scripts / sprite_get_index
Septiembre 30, 2010, 09:56:37 PM
Creador: Yo-Wadk
Version de GM utilizada: :GM8:
Tambi?n es compatible con :GM7: :GM6: y probablemente :GM5:
Descripcion:
sprite_get_index (mio)
[gml]z=0
zz=-1
while z<>-1 and z<1000
{
if sprite_get_name(z)=argument0 {zz=z z=-1}
else {z+=1}
}
return zz[/gml]
o
sprite_get_index (Wadk)
[gml]execute_string("return "+argument0);[/gml]
Ejemplo:[gml]sprite_index=sprite_get_index("sprite2")[/gml]
Dejo un adjunto para que vean el funcionamiento de ambas, remarco un par de diferencias. La de Wadk es rapid?sima, a diferencia de la m?a. Pero cuando la sprite no existe da error, a menos que:
A - Desactiven los mensajes de error
B - Activen el "treat uninitialized variables as 0", en ?ste ?ltimo no va a devolver -1 al no encontrar la sprite, sino que devuelve 0
Por eso es q dejo las dos. Bueno, espero que les guste alguna XD
Version de GM utilizada: :GM8:
Tambi?n es compatible con :GM7: :GM6: y probablemente :GM5:
Descripcion:
CitarEste script b?sicamente saca el ?ndice de un sprite mediante un string que contenga su nombre. De no encontrarlo devuelve -1. En lo posible traten de que el sprite exista para mejorar el rendimiento del script, ya que hasta que encuentra el sprite recorre 1000 para encontrarlo. En el ejemplo ver?n que el rendimiento no se ve afectado por un simple while de 1000, pero para juegos pesados podr?a resultar inconveniente usar este script en step sobre sprites inexistentes. Esto para mi script, el de Wadk funciona diferente
sprite_get_index (mio)
[gml]z=0
zz=-1
while z<>-1 and z<1000
{
if sprite_get_name(z)=argument0 {zz=z z=-1}
else {z+=1}
}
return zz[/gml]
o
sprite_get_index (Wadk)
[gml]execute_string("return "+argument0);[/gml]
Ejemplo:[gml]sprite_index=sprite_get_index("sprite2")[/gml]
Dejo un adjunto para que vean el funcionamiento de ambas, remarco un par de diferencias. La de Wadk es rapid?sima, a diferencia de la m?a. Pero cuando la sprite no existe da error, a menos que:
A - Desactiven los mensajes de error
B - Activen el "treat uninitialized variables as 0", en ?ste ?ltimo no va a devolver -1 al no encontrar la sprite, sino que devuelve 0
Por eso es q dejo las dos. Bueno, espero que les guste alguna XD
1151
Preguntas y respuestas / Re: ?como hacer una barra de vida personalizada?
Septiembre 28, 2010, 06:27:31 PM
Se hace manejando variables, preferiblemente globales, asi se puede acceder a ellas desde cualquier objeto. Te dejo un ejemplo
1152
Preguntas y respuestas / Re: Porblemas con el movimiento de mi personaje
Septiembre 26, 2010, 10:17:19 PM1153
Preguntas y respuestas / Problema complicado (39dll) [Solucionado]
Septiembre 25, 2010, 01:03:21 AM
Tengo un par de dudas por solventar para mi pok?mon TCG. Decid? hacer sub-conexiones en una conexion normal con el host. Asi evito el fowarding y otros inconvenientes. Ahora, tengo entendido que la 39dll indexa a todos los jugadores de la partida. Entonces cuando un jugador sale de la partida se modifica el indice de los dem?s (Eso le? en GMC), por lo q no s? c?mo referirme a un jugador de manera fija
Imaginense q hay 8 jugadores, cada uno con un indice
A B C D E F G H
1 2 3 4 5 6 7 8
Supongamos que hay una batalla entre el jugador B y el G. Se refieren entre ellos como 2 y 7 para enviarse datos. Ahora el jugador D se aburri? y sali? del juego, la lista quedar?a asi
A B C E F G H
1 2 3 4 5 6 7
Entonces la conexi?n entre el jugador B pasar?a a quedar con el H, y la partida B-G se va a lamierda no funciona. Alguna idea para solucionarlo???
EDITO: No he dicho nada, probando me fije y no reorganiza nada la dll, ni siquiera ocupa los espacios vac?os cuando entran conexiones nuevas
Imaginense q hay 8 jugadores, cada uno con un indice
A B C D E F G H
1 2 3 4 5 6 7 8
Supongamos que hay una batalla entre el jugador B y el G. Se refieren entre ellos como 2 y 7 para enviarse datos. Ahora el jugador D se aburri? y sali? del juego, la lista quedar?a asi
A B C E F G H
1 2 3 4 5 6 7
Entonces la conexi?n entre el jugador B pasar?a a quedar con el H, y la partida B-G se va a la
EDITO: No he dicho nada, probando me fije y no reorganiza nada la dll, ni siquiera ocupa los espacios vac?os cuando entran conexiones nuevas
1154
Preguntas y respuestas / Re: Cargar en otra parte(SOLUCIONADO TEMPORALMENTE)
Septiembre 24, 2010, 06:32:41 PM
Texic scores again!
Acabo de probarlo y ten?a raz?n =D
El c?digo que est? abajo de game save no se ejecuta luego de cargar
Acabo de probarlo y ten?a raz?n =D
El c?digo que est? abajo de game save no se ejecuta luego de cargar
1155
Preguntas y respuestas / Re: Cargar en otra parte(SOLUCIONADO TEMPORALMENTE)
Septiembre 24, 2010, 06:29:39 PM
No s? si al hacer game load corre el utlimo codigo desde q se guard?, lo dudo, ser?a demasiando para el game maker, debe de guardar y cuando cargas empieza el step en el q te quedaste de nuevo. Voy a probar