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

61
Según lo que entiendo, el script tiene que guardar las ubicaciones (x,y) de todas las instancias de un objeto dado (cuyo object_index es argument0) en un archivo tipo ini cuyo nombre es argument1. Lo que yo haría sería guardar las variables x,y en una lista y luego guardar esa lista como string en el archivo. El siguiente script haría eso:

//scriptpara guardar coordenadas
//argument0=object_index del objeto
//argument1=nombre del archivo (sin el .ini)
var lista;
lista=ds_list_create();
with argument0
    {
    ds_list_add(lista,x);//guarda la x de la instancia
    ds_list_add(lista,y);//guarda la y de la instancia
    }
ini_open(argument1+".ini");
ini_write_string("coordenadas",object_get_name(argument0),ds_list_write(lista));
ini_close();
ds_list_destroy(lista);


Ese script guarda en la sección "coordenadas" del archivo ini una clave con el nombre del objeto y un valor igual a un string que contiene toda la información con las coordenadas.

El siguiente script lee la información y crea las instancias:

//script para leer coordenadas y crear los objetos:
//argument0=object_index del objeto
//argument1=nombre del archivo (sin el .ini)
var lista,n,i,xx,yy;
lista=ds_list_create();
ini_open(argument1+".ini");
ds_list_read(lista,ini_read_string("coordenadas",object_get_name(argument0),""));
n=ds_list_size(lista);//número de datos a leer
for(i=0;i<n;i+=2)
    {
    xx=lista[| i];//coord. x
    yy=lista[| i+1];//coord. y
    instance_create(xx,yy,argument0);
    }
ds_list_destroy(lista);
62
Preguntas y respuestas / Re:Errorcito con evento HTTP
Noviembre 13, 2015, 05:59:43 PM
Me gustaría poder ayudarte, pero aún no entiendo cuál es el problema. ¿Es que no recibes el archivo solicitado? Para empezar, que el valor de la variable status no sea 0 no significa que haya un error; puede que estén llegando paquetes del archivo aún (en cuyo caso valdría 1), así que deberías cambiar la primera condición else a:

else if status<0//sólo valores negativos significan error

Si el valor de status es efectivamente negativo, significa que hubo un error en la descarga del archivo. En ese caso, puede ser que el servidor no acepte peticiones de descarga o que la ruta del archivo en el servidor no coincida con la que le entregas en el argumento de http_get_file.

63
Cita de: jmbs19 en Noviembre 10, 2015, 01:54:34 PM
si estas revisando el archivo en la carpeta donde estas haciendo el juego, dentro del project, no te saldra nada, lo unico que el hace desde esa carpeta es leer datos en caso de que no existan en la carpeta de appdata del juego

Siendo estricto, eso no es correcto. Si el archivo a manipular no se encuentra en la save area (que viene a ser la carpeta con el nombre del juego en appdata), GMS lo busca en el file bundle, no en la carpeta de trabajo del juego (aunque los archivos en el file bundle se obtienen de la carpeta datafiles en la carpeta de trabajo del juego). La dirección del file bundle se puede obtener leyendo la variable working_directory.
64
Prueba a poner una lectura del ini inmediatamente después de cerrarlo, para ver si en verdad no hubo grabación de nada. Por ejemplo la variable mname:

.
.//tu código para escribir en el ini
.
ini_close();//aquí es donde lo cierra tu código
ini_open("map.ini");
show_message("mname="+ini_read_string("map","mname",""));
ini_close();
.
.
.


Si no aparece el valor de mname, efectivamente no se ha grabado, lo cual sería muy raro.
65
Preguntas y respuestas / Re:Subir archivo hosting
Noviembre 09, 2015, 06:25:55 PM
Cita de: kostra en Noviembre 09, 2015, 12:54:45 PM
he seguido este tuto, creo que es lo que dices, y me sale upload failed todo el rato:
http://gmc.yoyogames.com/index.php?showtopic=635244&p=4639387

te refieres a algo asi?


EDITO: PD: cabe destacar que necesito que en el envio se CREE un nuevo archivo, trato de subir códigos de "niveles" en el cual se subirá en plan "mapa1.ini", "mapa2.ini", etc... que controlaré con un ciclo.

Si te aparece upload failed, significa que deberías recibir el string FAIL, lo cual implica que la página PHP no pudo abrir el archivo en modo escritura, que sería bastante improbable (exista el archivo o no). Indica qué es lo que devuelve la página PHP en el evento asíncrono HTTP, por ejemplo con un show_message:

if (async_load[? 'id'] == ah_upload) {
  show_message(async_load[? 'result']);
  if (string_copy(async_load[? 'result'], 1, 2) == "OK") {
    show_message_async("Upload OK.");
  }
  else {
    show_message_async("Upload failed.");
  }
}


Otra cosa: ¿creaste la carpeta uploads en el mismo directorio donde se encuentra la página PHP?
66
Preguntas y respuestas / Re:Subir archivo hosting
Noviembre 09, 2015, 05:26:34 PM
Cita de: penumbra en Noviembre 09, 2015, 10:15:43 AM
El archivo ini puede enviarse mediante la función http_post_string(), pero si se manda así tal cual, probablemente todo el proceso falle, porque la URL no sería válida, entonces se necesita usar codificación de URL para que el envío sea correcto
http://help.yoyogames.com/entries/26963528-Encoding-URLs

Hice una prueba con http_post_string para transmitir un string con espacios y acentos y fue recibido correctamente. Al parecer, esta función ya incluye la codificación necesaria para enviar información.
67
Preguntas y respuestas / Re:Problema con variable
Noviembre 09, 2015, 05:30:25 AM
También puede ser que estés usando el evento left button en vez de left pressed.
68
Preguntas y respuestas / Re:CREAR ALARMA EN EL STEP
Noviembre 05, 2015, 04:25:13 PM
Tendrías que indicar el código completo que hay en ese evento para entender por qué falla. Tal vez se está iniciando en cada step, como dice elviskelley; tal vez tienes una condición para iniciarla pero está mal planteada.
69
De todas las formas que han presentado hasta ahora, yo usaría la que me parece más sencilla que es la primera que propuso Clamud: hacer un par de llamadas a la función point_in_triangle
70
No conozco el artículo del que hablas, pero puede que esto te ayude:

http://gmnet.parakoopa.de/engine/
http://gamemakerserver.com/
71
Cita de: Maxy en Noviembre 02, 2015, 01:10:39 AM
Mmmm no entendi esto, por que la verdad no me funciono....



Cita de: penumbra en Noviembre 02, 2015, 12:43:39 AM
Si las tres instancias jugador pertenecen al mismo objeto, puedes cambiar el código en [STEP] a
[gml]
if instance_nearest(x, y, obj_player)  < 64
     sprite_index = spr_puerta_abierta
else
     sprite_index = spr_puerta_cerrada
[/gml]

Probablemente lo que penumbra quiso decir fue esto:

if distance_to_object(instance_nearest(x, y, obj_player))  < 64
     sprite_index = spr_puerta_abierta
else
     sprite_index = spr_puerta_cerrada


que es lo que se requiere hacer cuando hay más de un jugador, puesto que es necesario encontrar primero cuál instancia del objeto jugador es la más cercana a la puerta antes de medir a qué distancia está.

EDIT: leyendo la descripción de la función distance_to_object (tanto para  :GM8: como para  :GMS:), ya está incluido en ella el tomar la instancia más cercana, así que el código original que puso penumbra debiera ser suficiente:

if distance_to_object(obj_player) < 64
     sprite_index = spr_puerta_abierta
else
     sprite_index = spr_puerta_cerrada


Esto funciona si los jugadores son instancias del mismo objeto obj_player. Como sólo te funciona para uno de los 3 jugadores, se deduce que estás usando objetos distintos para cada jugador. En ese caso, aplica lo que dije antes sobre los parent.
72
Entonces probablemente los jugadores no son instancias de un mismo objeto sino que son instancias de objetos diferentes. Si los 3 jugadores tienen los mismos códigos y eventos, conviene poner éstos en uno solo (por ejemplo, en P1) y hacer que éste sea el parent de los otros, y medir la distancia a este objeto. Si tienen distintos códigos en sus eventos, puedes crear un nuevo objeto (por ejemplo, P) sin ningún evento, hacer que sea parent de los otros 3 objetos y medir la distancia a P.
73
Cita de: nonoroman en Octubre 31, 2015, 04:06:38 PM
Muchas gracias por responder clamud.
Pero no entiendo bien eso de cambiar la semilla previamente con randomize. Y como le paso el resultado al random_range???


Cita de: nonoroman en Octubre 31, 2015, 04:05:22 PM
Muchas gracias por responder clamud.
Pero no entiendo bien eso de cambiar la semilla previamente con randomize. Y como le paso el resultado al random_range???

Los números "aleatorios" que genera GM no son realmente aleatorios, son pseudoaleatorios: el mecanismo para generarlos se basa en partir de un número dado y en base a él calcular el siguiente mediante una fórmula. Por lo tanto, si se parte de un mismo número, todos los números "aleatorios" que se generen a continuación serán los mismos. Para que esto no pase, el número inicial (conocido como semilla) se tiene que cambiar. Eso es lo que hace la función randomize y por eso Clamud te dijo que la incluyeras. Por lo tanto, tienes que incluir al principio del juego esta función, para que la secuencia de números aleatorios no se repita.

La función random_range debiera generar números en todo el rango entre -30 y 30, no entiendo cómo es que sólo "te genera estos dos valores".
74
La versión gratuita tiene toda la funcionalidad de la versión Pro en cuanto a disponibilidad de funciones y número de recursos ilimitados. La diferencia está en algunas opciones avanzadas que tiene PRO, entre ellas la administración de texturas y el compilador Yoyo. Para más detalles visita su página:

http://www.yoyogames.com/studio

Yo te aconsejaría que partieras de inmediato usando GMS ya que hay ciertas incompatibilidades entre algunas funciones de GM8 y GMS y otras están obsoletas.
75
Sería bueno que pusieras bajo un mismo parent a todas las casillas para facilitar operaciones sobre ellas. También sería bueno que aclararas a qué te refieres con "que la selección reconozca las propiedades de la casilla seleccionada". Si lo que quieres es obtener la id de la instancia de la casilla seleccionada, utiliza instance_place el evento global mouse left pressed en el objeto desde el cual quieres leer la id. Una vez conocida la id, puedes obtener cualquier información de esa casilla. Por ejemplo, si necesitas saber el sprite de la casilla desde la instancia selectora:

evento global mouse left pressed de la instancia selectora:
var s;
s=-1;//si no hay casilla, considera su sprite como -1
with instance_place(mouse_x,mouse_y,obj_casilla_parent);//id de la casilla
    s=sprite_index;//obtener el sprite de la casilla