En resources, change global game settings, pestaña android, luego la primera pestaña de las de la izquierda, hay una opción que dice orientation, tenés para elegir portrait, landscape y both, por defecto viene en both, simplemente cambialo a landscape
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.
392
Noticias / Re:Banner participantes CGM 2012
Febrero 20, 2013, 02:41:54 PM
Emm... Me da cosa preguntar pero ahora yo cuál uso? XD
393
Desarrollo de Scripts / Re:Scripts extendidos para listas
Febrero 19, 2013, 08:14:57 PMCita de: Creador de juegos GM en Febrero 19, 2013, 08:02:18 PMmuy buen post,espero que le sirva a otro mas que a mii,muy bueno,por sierto... que game maker 8 usasEl 8.0, pero debería funcionar en el 8.1 también, y si no sacaron ninguna de estas funciones, lo mismo con el studio. Ahora con los anteriores no sé porque no tengo los manuales a mano, pero en el 6 no está la función shuffle así que esa no funcionaría, pero sostengo que las demás si, ya que las funciones comparten los mismos argumentos que con gm8 y la misma funcionalidad
394
Desarrollo de Scripts / Scripts extendidos para listas
Febrero 19, 2013, 07:27:21 PM
Creador: Yo
Version de GM utilizada: :GM8:
Descripcion:
Una recopilación de scripts útiles para listas creado por mi, extiende las funciones permitiendo mezclar o ordenar 2 listas ligadas (o más modificando los scripts), buscar y reemplazar un valor o todos (como la función string_replace_all), y encontrar todas las repeticiones de un valor en una lista con la posición detallada de cada uno
ds_list_sort_both
[gml]//argument0=lista 1
//argument1=lista 2
//argument2=ascendente
//argument3=preciso
var a,b,isreal,isreal2;
if argument3=0
{
if ds_list_size(argument0)<>ds_list_size(argument1) {return -1}
a=ds_list_create()
ds_list_copy(a,argument0)
b=ds_list_create()
ds_list_copy(b,argument1)
ds_list_sort(argument0,argument2)
for (i=0;i<=ds_list_size(argument1)-1;i+=1)
{
ds_list_replace(argument1,i,ds_list_find_value(b,ds_list_find_index(a,ds_list_find_value(argument0,i))))
}
ds_list_destroy(a)
ds_list_destroy(b)
return 1
}
else
{
if ds_list_size(argument0)<>ds_list_size(argument1) {return -1}
isreal=ds_list_create()
isreal2=ds_list_create()
for (i=0;i<=ds_list_size(argument0)-1;i+=1)
{
ds_list_add(isreal,is_real(ds_list_find_value(argument0,i)))
ds_list_replace(argument0,i,string(ds_list_find_value(argument0,i))+string(i))
ds_list_add(isreal2,is_real(ds_list_find_value(argument1,i)))
ds_list_replace(argument1,i,string(ds_list_find_value(argument1,i))+string(i))
}
a=ds_list_create()
ds_list_copy(a,argument0)
b=ds_list_create()
ds_list_copy(b,argument1)
ds_list_sort(argument0,argument2)
for (i=0;i<=ds_list_size(argument1)-1;i+=1)
{
ds_list_replace(argument1,i,ds_list_find_value(b,ds_list_find_index(a,ds_list_find_value(argument0,i))))
}
for (i=0;i<=ds_list_size(argument0)-1;i+=1)
{
ds_list_replace(argument0,i,string_delete(ds_list_find_value(argument0,i),string_length(ds_list_find_value(argument0,i)),1))
if ds_list_find_value(isreal,i) {ds_list_replace(argument0,i,real(ds_list_find_value(argument0,i)))}
ds_list_replace(argument1,i,string_delete(ds_list_find_value(argument1,i),string_length(ds_list_find_value(argument1,i)),1))
if ds_list_find_value(isreal2,i) {ds_list_replace(argument1,i,real(ds_list_find_value(argument1,i)))}
}
ds_list_destroy(a)
ds_list_destroy(b)
ds_list_destroy(isreal)
ds_list_destroy(isreal2)
return 1
}[/gml]
Este script ordena una lista (lista 1) en orden ascendente o descendente dejando intacta la lista ligada (lista 2). El argumento preciso debe usarse si en la lista 1 existen valores que se repiten, de otra manera se recomienda no usarlo ya que consume más recursos. Las listas deben tener el mismo tamaño. Devuelve 1 si la operación es exitosa, de lo contrario devuelve -1
ds_list_shuffle_both
[gml]//argument0=lista 1
//argument1=lista 2
//argument2=preciso
var a,b,isreal,isreal2;
if argument2=0
{
if ds_list_size(argument0)<>ds_list_size(argument1) {return -1}
a=ds_list_create()
ds_list_copy(a,argument0)
b=ds_list_create()
ds_list_copy(b,argument1)
ds_list_shuffle(argument0)
for (i=0;i<=ds_list_size(argument1)-1;i+=1)
{
ds_list_replace(argument1,i,ds_list_find_value(b,ds_list_find_index(a,ds_list_find_value(argument0,i))))
}
ds_list_destroy(a)
ds_list_destroy(b)
return 1
}
else
{
if ds_list_size(argument0)<>ds_list_size(argument1) {return -1}
isreal=ds_list_create()
isreal2=ds_list_create()
for (i=0;i<=ds_list_size(argument0)-1;i+=1)
{
ds_list_add(isreal,is_real(ds_list_find_value(argument0,i)))
ds_list_replace(argument0,i,string(ds_list_find_value(argument0,i))+string(i))
ds_list_add(isreal2,is_real(ds_list_find_value(argument1,i)))
ds_list_replace(argument1,i,string(ds_list_find_value(argument1,i))+string(i))
}
a=ds_list_create()
ds_list_copy(a,argument0)
b=ds_list_create()
ds_list_copy(b,argument1)
ds_list_shuffle(argument0)
for (i=0;i<=ds_list_size(argument1)-1;i+=1)
{
ds_list_replace(argument1,i,ds_list_find_value(b,ds_list_find_index(a,ds_list_find_value(argument0,i))))
}
for (i=0;i<=ds_list_size(argument0)-1;i+=1)
{
ds_list_replace(argument0,i,string_delete(ds_list_find_value(argument0,i),string_length(ds_list_find_value(argument0,i)),1))
if ds_list_find_value(isreal,i) {ds_list_replace(argument0,i,real(ds_list_find_value(argument0,i)))}
ds_list_replace(argument1,i,string_delete(ds_list_find_value(argument1,i),string_length(ds_list_find_value(argument1,i)),1))
if ds_list_find_value(isreal2,i) {ds_list_replace(argument1,i,real(ds_list_find_value(argument1,i)))}
}
ds_list_destroy(a)
ds_list_destroy(b)
ds_list_destroy(isreal)
ds_list_destroy(isreal2)
return 1
}[/gml]
Hace lo mismo que el script anterior pero mezclando la lista 1 de manera aleatoria, también se debe notar que se elimina el parámetro ascendente. Las listas deben tener el mismo tamaño. Devuelve 1 si la operación es exitosa, de lo contrario devuelve -1
ds_list_find_replace
[gml]//argument0=lista
//argument1=valor buscado
//argument2=valor con el que será reemplazado
var a;
a=ds_list_find_index(argument0,argument1)
if a<>-1 {ds_list_replace(argument0,a,argument2)}
return a[/gml]
Este script reemplaza el primer valor encontrado en una lista por el valor deseado. Devuelve la posición del elemento reemplazado si se encontró, de lo contrario devuelve -1
ds_list_find_replace_all
[gml]//argument0=lista
//argument1=valor buscado
//argument2=valor con el que será reemplazado
var a,b;
b=-1
a=ds_list_find_index(argument0,argument1)
while a<>-1 {ds_list_replace(argument0,a,argument2) a=ds_list_find_index(argument0,argument1) b=1}
return b[/gml]
Este script reemplaza todos los valores encontrados en una lista por el valor deseado. Devuelve 1 si se encontró y reemplazó algún valor, de lo contrario devuelve -1
ds_list_find_index_all
[gml]//argument0=lista
//argument1=valor buscado
var a,b;
aux=ds_list_create()
b=-1
a=ds_list_find_index(argument0,argument1)
while a<>-1 {ds_list_replace(argument0,a,"_*#@") ds_list_add(aux,a) a=ds_list_find_index(argument0,argument1)}
a=ds_list_find_index(argument0,"_*#@")
while a<>-1 {ds_list_replace(argument0,a,argument1) a=ds_list_find_index(argument0,"_*#@")}
return aux[/gml]
Este script encuentra todas las posiciones de un valor buscado en la lista y los vierte en una lista nueva, devuelve el índice de dicha lista
Bueno, esos son todos, me costó un poco hacer algunos, pero a mi particularmente me estaban haciendo falta, espero que a alguno le sirva, saludos! :)
Version de GM utilizada: :GM8:
Descripcion:
Una recopilación de scripts útiles para listas creado por mi, extiende las funciones permitiendo mezclar o ordenar 2 listas ligadas (o más modificando los scripts), buscar y reemplazar un valor o todos (como la función string_replace_all), y encontrar todas las repeticiones de un valor en una lista con la posición detallada de cada uno
ds_list_sort_both
[gml]//argument0=lista 1
//argument1=lista 2
//argument2=ascendente
//argument3=preciso
var a,b,isreal,isreal2;
if argument3=0
{
if ds_list_size(argument0)<>ds_list_size(argument1) {return -1}
a=ds_list_create()
ds_list_copy(a,argument0)
b=ds_list_create()
ds_list_copy(b,argument1)
ds_list_sort(argument0,argument2)
for (i=0;i<=ds_list_size(argument1)-1;i+=1)
{
ds_list_replace(argument1,i,ds_list_find_value(b,ds_list_find_index(a,ds_list_find_value(argument0,i))))
}
ds_list_destroy(a)
ds_list_destroy(b)
return 1
}
else
{
if ds_list_size(argument0)<>ds_list_size(argument1) {return -1}
isreal=ds_list_create()
isreal2=ds_list_create()
for (i=0;i<=ds_list_size(argument0)-1;i+=1)
{
ds_list_add(isreal,is_real(ds_list_find_value(argument0,i)))
ds_list_replace(argument0,i,string(ds_list_find_value(argument0,i))+string(i))
ds_list_add(isreal2,is_real(ds_list_find_value(argument1,i)))
ds_list_replace(argument1,i,string(ds_list_find_value(argument1,i))+string(i))
}
a=ds_list_create()
ds_list_copy(a,argument0)
b=ds_list_create()
ds_list_copy(b,argument1)
ds_list_sort(argument0,argument2)
for (i=0;i<=ds_list_size(argument1)-1;i+=1)
{
ds_list_replace(argument1,i,ds_list_find_value(b,ds_list_find_index(a,ds_list_find_value(argument0,i))))
}
for (i=0;i<=ds_list_size(argument0)-1;i+=1)
{
ds_list_replace(argument0,i,string_delete(ds_list_find_value(argument0,i),string_length(ds_list_find_value(argument0,i)),1))
if ds_list_find_value(isreal,i) {ds_list_replace(argument0,i,real(ds_list_find_value(argument0,i)))}
ds_list_replace(argument1,i,string_delete(ds_list_find_value(argument1,i),string_length(ds_list_find_value(argument1,i)),1))
if ds_list_find_value(isreal2,i) {ds_list_replace(argument1,i,real(ds_list_find_value(argument1,i)))}
}
ds_list_destroy(a)
ds_list_destroy(b)
ds_list_destroy(isreal)
ds_list_destroy(isreal2)
return 1
}[/gml]
Este script ordena una lista (lista 1) en orden ascendente o descendente dejando intacta la lista ligada (lista 2). El argumento preciso debe usarse si en la lista 1 existen valores que se repiten, de otra manera se recomienda no usarlo ya que consume más recursos. Las listas deben tener el mismo tamaño. Devuelve 1 si la operación es exitosa, de lo contrario devuelve -1
ds_list_shuffle_both
[gml]//argument0=lista 1
//argument1=lista 2
//argument2=preciso
var a,b,isreal,isreal2;
if argument2=0
{
if ds_list_size(argument0)<>ds_list_size(argument1) {return -1}
a=ds_list_create()
ds_list_copy(a,argument0)
b=ds_list_create()
ds_list_copy(b,argument1)
ds_list_shuffle(argument0)
for (i=0;i<=ds_list_size(argument1)-1;i+=1)
{
ds_list_replace(argument1,i,ds_list_find_value(b,ds_list_find_index(a,ds_list_find_value(argument0,i))))
}
ds_list_destroy(a)
ds_list_destroy(b)
return 1
}
else
{
if ds_list_size(argument0)<>ds_list_size(argument1) {return -1}
isreal=ds_list_create()
isreal2=ds_list_create()
for (i=0;i<=ds_list_size(argument0)-1;i+=1)
{
ds_list_add(isreal,is_real(ds_list_find_value(argument0,i)))
ds_list_replace(argument0,i,string(ds_list_find_value(argument0,i))+string(i))
ds_list_add(isreal2,is_real(ds_list_find_value(argument1,i)))
ds_list_replace(argument1,i,string(ds_list_find_value(argument1,i))+string(i))
}
a=ds_list_create()
ds_list_copy(a,argument0)
b=ds_list_create()
ds_list_copy(b,argument1)
ds_list_shuffle(argument0)
for (i=0;i<=ds_list_size(argument1)-1;i+=1)
{
ds_list_replace(argument1,i,ds_list_find_value(b,ds_list_find_index(a,ds_list_find_value(argument0,i))))
}
for (i=0;i<=ds_list_size(argument0)-1;i+=1)
{
ds_list_replace(argument0,i,string_delete(ds_list_find_value(argument0,i),string_length(ds_list_find_value(argument0,i)),1))
if ds_list_find_value(isreal,i) {ds_list_replace(argument0,i,real(ds_list_find_value(argument0,i)))}
ds_list_replace(argument1,i,string_delete(ds_list_find_value(argument1,i),string_length(ds_list_find_value(argument1,i)),1))
if ds_list_find_value(isreal2,i) {ds_list_replace(argument1,i,real(ds_list_find_value(argument1,i)))}
}
ds_list_destroy(a)
ds_list_destroy(b)
ds_list_destroy(isreal)
ds_list_destroy(isreal2)
return 1
}[/gml]
Hace lo mismo que el script anterior pero mezclando la lista 1 de manera aleatoria, también se debe notar que se elimina el parámetro ascendente. Las listas deben tener el mismo tamaño. Devuelve 1 si la operación es exitosa, de lo contrario devuelve -1
ds_list_find_replace
[gml]//argument0=lista
//argument1=valor buscado
//argument2=valor con el que será reemplazado
var a;
a=ds_list_find_index(argument0,argument1)
if a<>-1 {ds_list_replace(argument0,a,argument2)}
return a[/gml]
Este script reemplaza el primer valor encontrado en una lista por el valor deseado. Devuelve la posición del elemento reemplazado si se encontró, de lo contrario devuelve -1
ds_list_find_replace_all
[gml]//argument0=lista
//argument1=valor buscado
//argument2=valor con el que será reemplazado
var a,b;
b=-1
a=ds_list_find_index(argument0,argument1)
while a<>-1 {ds_list_replace(argument0,a,argument2) a=ds_list_find_index(argument0,argument1) b=1}
return b[/gml]
Este script reemplaza todos los valores encontrados en una lista por el valor deseado. Devuelve 1 si se encontró y reemplazó algún valor, de lo contrario devuelve -1
ds_list_find_index_all
[gml]//argument0=lista
//argument1=valor buscado
var a,b;
aux=ds_list_create()
b=-1
a=ds_list_find_index(argument0,argument1)
while a<>-1 {ds_list_replace(argument0,a,"_*#@") ds_list_add(aux,a) a=ds_list_find_index(argument0,argument1)}
a=ds_list_find_index(argument0,"_*#@")
while a<>-1 {ds_list_replace(argument0,a,argument1) a=ds_list_find_index(argument0,"_*#@")}
return aux[/gml]
Este script encuentra todas las posiciones de un valor buscado en la lista y los vierte en una lista nueva, devuelve el índice de dicha lista
Bueno, esos son todos, me costó un poco hacer algunos, pero a mi particularmente me estaban haciendo falta, espero que a alguno le sirva, saludos! :)
395
Preguntas y respuestas / Re:Ayuda con ds_list
Febrero 19, 2013, 06:16:06 PM
[gml]nuevo_valor=get_string('','')
if ds_list_find_index(nombres,nuevo_valor)=-1
{
ds_list_add(nombres,nuevo_valor)
}[/gml]
ds_list_find_index encuentra un valor y devuelve su posición, -1 si no lo encuentra
if ds_list_find_index(nombres,nuevo_valor)=-1
{
ds_list_add(nombres,nuevo_valor)
}[/gml]
ds_list_find_index encuentra un valor y devuelve su posición, -1 si no lo encuentra
396
Noticias / Re:CMS Actualizado
Febrero 19, 2013, 03:54:51 PM
Eso no aumenta la seguridad, simplemente filtra las malas palabras. Cada uno es responsable de lo que publica, ya hay medidas para esa clase de cosas, un filtro no va a cambiar mucho el asunto
397
Juegos en desarrollo / Re:Drodo Galactic Freak 1.3.3
Febrero 18, 2013, 08:44:54 PM
Ferdeath, tu tema no cumple con las normas establecidas de la sección. Fijate si podés subir el juego en la sección descargas, me avisás y te valido la descarga. Sino en caso de que no funcione subilo a dropbox para tener un link directo, los servicios como mediafire, 4shared y todos los hosting que redirijan y muestren publicidad pueden usarse solamente como mirrors. Saludos!
398
Preguntas y respuestas / Re:Como importar un proyecto de la versión MIPS a la versión Pro
Febrero 18, 2013, 08:24:52 PM
Bienvenido internauta! (nunca mejor dicho)
Te invito a que leas el reglamento de la sección y modifiques tu post así podemos contestar el tema. Saludos!
Te invito a que leas el reglamento de la sección y modifiques tu post así podemos contestar el tema. Saludos!
399
Preguntas y respuestas / Re:como desplazarme en android
Febrero 15, 2013, 10:47:06 PM
Arrastrando el dedo? Tendrías que usar las funciones device_mouse para obtener las coordenadas de los dedos en pantalla. A su vez crear una variable que almacene la posición anterior (esto se hace actualizándolas luego de todo el proceso del objeto), entonces al saber la diferencia entre la posición anterior del dedo y la actual con una simple resta, podés determinar que hubo un movimiento de dedo hacia x lado. O si querés directamente podés asignarle la coordenada que te devuelve device_mouse_get_x al objeto en cuestión y se movería instantáneamente a la posición del dedo
400
Preguntas y respuestas / Re:¿Cual es el error en este codigo?
Febrero 15, 2013, 01:04:34 PM
Te lo arreglé, el problema era que cambiabas de sprite pero se mantenía el número de subimágen actual, tenés que reiniciarlo con image_index=0 para que las animaciones se muestren desde el principio. Saludos!
401
Preguntas y respuestas / Re:como desplazarme en android
Febrero 15, 2013, 12:55:02 PM
Antes que nada bienvenido jose_cv21! Te pido que por favor modfiques tu post para que cumpla el reglamento de la sección así podemos ayudarte. Saludos!
402
Preguntas y respuestas / Re:sprites limitados. unxpected error when run game
Febrero 11, 2013, 08:56:45 PM
sprite_delete, background_delete y seguido un clean con la cleanmem. Los tiles se te va a complicar un toque más usarlos, porque vas a tener que agregarlos con las funciones gml de los tiles, que no son nada cómodas, pero podés automatizar el sistema guardando todo en un txt a partir de un mapa ya creado
403
Preguntas y respuestas / Re:sprites limitados. unxpected error when run game
Febrero 11, 2013, 02:31:41 PM
Utilizar el cleanmem constantemente bajaría los fps creo, te recomiendo usarla antes de cargar los recursos del nivel. En cada nivel cargas las sprites que ese nivel va a usar en variables globales. En cada objeto cambiás el uso de las sprites por las referencias a las variables globales. Borrás todas las sprites del juego (o mejor dicho las exportás y borrás), y listo. Cuando termina el nivel borrás todas las sprites usadas, pasás un cleanmem y cargás las nuevas. Es un trabajo bastante pesado, lo reconozco, tuve que hacer algo parecido una vez (aunque con otro propósito), pero si querés asegurarte de que va a funcionar en la mayor cantidad posible de pc's sin errores y sin bajas de fps es el camino indicado. De hecho la mayoría de los juegos de hoy en día requieren una carga entre nivel y nivel, de otra manera tendrían que mantener todo en ram y el consumo se iría a la gadorcha. En game maker rara vez se suele hacer porque los juegos son chiquitos, pero no es tu caso, y hacer un juego grande requiere usar técnicas de juegos grandes
404
Preguntas y respuestas / Re:sprites limitados. unxpected error when run game
Febrero 11, 2013, 11:18:36 AM
Si, el tamaño de los gráficos y la cantidad está limitado por la ram de tu placa de video. Y si lograste superar 1gb no va a haber demasiada gente que pueda jugarlo. Los gráficos los vas a tener que empezar a cargar y liberar por partes, sobre todo por niveles, y asegurarte de que cada nivel no llene el cupo con los gráficos usados
405
Preguntas y respuestas / Re:Saltar sin script
Febrero 10, 2013, 03:30:41 AM
Bienvenido! Antes que nada por favor lee las reglas de la sección y arregla el post. Saludos!