Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Guacusio

Páginas: 1 2 3 4 5 ... 28
31
Preguntas y respuestas / Re:39DLL, funcion para obtener nuestra IP(ayuda)
« en: Diciembre 03, 2015, 02:34:12 am »
Si buscas la IP pública de tu aparato, una forma sencilla de hacerlo es preguntárselo a una página web especializada en ello usando http_get. Por ejemplo:

Create:
Código: [Seleccionar]
get=http_get("http://ipv4bot.whatismyipaddress.com");
HTTP:
Código: [Seleccionar]
if ds_map_find_value(async_load,"id")=get
    {
    if ds_map_find_value(async_load,"status")=0
        show_message("ip="+ds_map_find_value(async_load,"result"));//muestra la IP en un mensaje
    }

Para ser sincero, no le veo mucha utilidad a conocer la IP pública en el contexto de las capacidades online de GM a menos que cuentes con un servidor dedicado, ya que la multitud de trabas que ponen los antivirus, S.O. y cortafuegos hacen muy difícil conseguir una conexión directa. Si buscas la IP local para usarla en un juego en red local, también hay una forma de conseguirla, aunque es un poquito más engorrosa: crear un servidor udp, mandar un broadcast con un buffer cualquiera y obtener la ip en la respuesta del evento Networking.

Create:
Código: [Seleccionar]
host=network_create_server(network_socket_udp,64198,1);//el puerto puede ser cualquiera disponible, 64198 es sólo un ejemplo
if host>=0
    {
    var tsock=network_create_socket(network_socket_udp);
    var tbuff=buffer_create(32,buffer_fixed,1);
    network_send_broadcast(tsock,64198,tbuff,buffer_get_size(tbuff));
    network_destroy(tsock);
    buffer_delete(tbuff);
    }

Evento Networking:
Código: [Seleccionar]
ip=ds_map_find_value(async_load,"ip");
network_destroy(host);

Las funciones de red en una red local funcionan sin problema. Una forma de salvar el problema de no poder crear una conexión via internet es usar una red privada virtual, como la que crea hamachi, y trabajar como si se estuviera en una red local.

32
Preguntas y respuestas / Re:Ordenar arrays
« en: Diciembre 01, 2015, 05:46:39 am »
Yo te sugiero que en vez de usar muchos arrays de 1 dimensión utilices un grid, donde cada fila represente a un jugador y cada columna represente un tipo de dato. Una vez tienes armado el grid, puedes ordenarlo usando cualquier columna como referencia mediante ds_grid_sort.

33
Preguntas y respuestas / Re:pregunta, escribir en el juego
« en: Noviembre 28, 2015, 08:58:40 am »
En un evento draw puedes dibujar el valor de la variable keyboard_string y en un evento key press enter dar por finalizada la lectura del teclado y su dibujo para tomar las acciones pertinentes según lo ingresado por el usuario.

34
Preguntas y respuestas / Re:[Solucionado] Qué se ejecuta antes?
« en: Noviembre 26, 2015, 05:11:25 am »
pues no me explico que en mi código

obj = instance_create(room_width/2,room_height/2,osure);
obj.price = price;

en el create de osure:
obj= instance_create(x+23,y+12,obtnyes);
obj.price = price;

aqui representa que osure le asigna price a obtnyes de su propio price, pues si se ejecuta eso antes debería de salirme error, pues no existe la variable... sin embargo, me "translada" la variable sin problemas hast ael final, y mi item se compra perfectamente restándole su original precio :B

Yo tampoco me explico que no te salga un error. Copié y pegué el mismo código que indicaste y obtengo lo siguiente:


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

Push :: Execution Error - Variable Get 100002.price(100008, -2147483648)
 at gml_Object_osure_CreateEvent_1 (line 2) - obj.price = price;
############################################################################################


, que significa que la variable price de osure no está definida.

35
Preguntas y respuestas / Re:[Solucionado] Qué se ejecuta antes?
« en: Noviembre 26, 2015, 01:39:48 am »
Hacer la prueba es muy sencillo; basta con usar un par de show_message:

objeto_A
create:
Código: [Seleccionar]
with instance_create(0,0,objeto_B)
    show_message("with");

objeto B
create:
Código: [Seleccionar]
show_message("evento create");

Colocando en el room una instancia de A, aparece la siguiente secuencia de mensajes:

"evento create"
"with"

Como dice penumbra, lo mismo ocurre con el evento destroy, y también pasa en los eventos no mor lives y no more health. Todos ellos interrumpen el código y ejecutan su evento completo en el preciso momento en que se disparan.

36
Preguntas y respuestas / Re:[Solucionado] Qué se ejecuta antes?
« en: Noviembre 25, 2015, 07:25:01 pm »
Eh, emmm..... ya sé que el tema se cerró, pero micduda es casiclocmismo....xD
Quisiera ssber qué se ejecuta primero:
with instance_create(x,y,obj)
 a = 3;

Si el create de obj o el with...

Primero se crea la instancia de obj, luego se ejecuta su evento create y al final se ejecuta a=3 en ella.

37
Preguntas y respuestas / Re:Puntero personalizado c:
« en: Noviembre 24, 2015, 12:10:03 am »
en draw_gui:
draw_sprite(spr_cursor,mouse_x,mouse_y);

y si usas draw_sprite_ext lo puedes hasta hacer animado

Si vas a dibujar algo en las coordenadas del mouse durante DRAW GUI, mejor sería usar window_mouse_get_x y window_mouse_get_y en vez de mouse_x y mouse_y, ya que las coordenadas y resolución durante DRAW GUI son fijas e independientes de cómo se escale el juego o si se usan views.


38
Preguntas y respuestas / Re:como hago un objeto tipo "serpiente"
« en: Noviembre 23, 2015, 03:21:16 am »
Esta es una manera:

-Crea un ovjeto con una bariable "amo" que guarde la id de la instansia a la cual deve seguir; este ovjeto corresponderá a un cegmento
-Crea un ovjeto que reprecente a la cabeza, que se encargue de crear los cegmentos uno al lado del otro y que le de balor a la bariable "amo" de cada cegmento, ciendo el amo del primero la propia cabeza.
-En el evento step del cegmento, cambias su dirección y belocidad de modo que se dirija a su amo.

Te dejo un editable como ejemplo.

39
Olvídate de preguntarle al usuario dónde quiere guardar un archivo, ya que por ser GMS sandbox no te va a dejar guardar nada fuera de la save area.
Es cierto que el código está mal implementado (no lo quería mencionar  XD) pero hay dos excepciones a la regla del sandbox:

En windows y en mac es posible saltarse el sandbox, con la restricción de que el usuario debe elegir, mediante el cuadro de diálogo correspondiente, la nueva ubicación de guardado (o de lectura). Esto lo explica el manual:
Citar
On the Windows platform there is one way to save and load files from outside of the sandbox and that is using the functions get_open_filename and get_save_filename. Both of these functions will require that the user select an area for loading and saving and the return string can then be used in the rest of the file functions to bypass the sandbox.

Es cierto. Para mi es un misterio cómo es que GMS detecta que el string con una ruta fue definido mediante get_save_filename (para permitir una escritura fuera de la save area), mientras que tratar de escribir entregando directamente la ruta no funciona, siendo que ambas rutas son strings idénticos.

40
guacusio la fucion mysql_connect del php requiere como minimo para funcionar el lugar donde esta almacenada la base de datos(una url que te la da tu hosting, no es la misma que la de tu pagina), tu usuario, y tu password.

luego se usa mysql_select_db para seleccionar tu base de datos, es decir, el nombre de tu base de datos.

http://php.net/manual/es/function.mysql-connect.php
http://php.net/manual/es/function.mysql-select-db.php

ps:niuweb yo me equivoque, no es async_event es async_load, en los codigos que te pase cambia async_event por async_load.

Tienes toda la razón, me equivoqué y pido disculpas. Efectivamente, hay un servidor de mysql que tiene una URL y dentro de él se selecciona una BD con el nombre, user y password.


41
:GMS: Hola, estoy trabajando un sencillo programa, y en éste tengo la opción de guardar una string en un archivo de texto. Y tengo un script pasa eso:
extt = argument0;
sv = argument1;
cont = argument2;
svl = string_length(sv);
lngt = string_length(extt);

var extension,largo;
largo=string_length(sv);
if largo<6
   sv+=extt;//se ingresó un nombre muy corto que no puede terminar en .txty hay que agregárselo
else
    {
    extension=string_copy(sv,largo-4,5);//últimos 5 caracteres del nombre
    if extension!=extt
        sv+=extt;
    }

ini_open(sv);
ini_write_string("a","b",cont);
ini_close();

fname = file_text_open_write(sv);
file_text_write_string(fname,cont);
file_text_close(fname);

if file_exists(sv)
 show_message("Texto guardado como archivo en "+sv+" exitosamente");
else
 show_message("Ha ocurrido un error al intentar guardar el texto como archivo en "+sv+". Inténtelo de nuevo más tarde")

y ejecuto el script así:

if mouse_check_button(mb_right)
 {
   dirr = get_save_filename("Archivo de texto","");
   save_file(".txt",dirr,STRING);
 }

Pero simplemente no me crea el archivo. Leo en el cuadro de compilación y me encuentro con esto:
Código: [Seleccionar]
Error! not allowing save with filename 'C:\Users\usuario\Desktop\texto.txt'
Error! not allowing save with filename 'C:\Users\usuario\Desktop\texto.txt'
Error! not allowing save with filename 'C:\Users\usuario\Desktop\texto.txt

¿Qué puedo hacer?, no veo donde está el error, y he usado este código sin problemas en muchas ocaciones.

Tengo que decirte que tu código es desastroso. Suposición que no has dejado en claro: save_file es el nombre del script cuyo código está al principio de tu pregunta (no es obvio pero se intuye).

No corresponde indicar en el tipo de archivo de la función get_save_filename algo como "archivo de texto", sino que algo como "*.txt" ya que es la extensión lo que se indica ahí. Si vas a leer el archivo como ini, debieras proponerle al usuario una extensión .ini en vez de txt. Olvídate de preguntarle al usuario dónde quiere guardar un archivo, ya que por ser GMS sandbox no te va a dejar guardar nada fuera de la save area.


42
Creo que tienes una gran confusión, las bases de datos no tienen una URL asociada, simplemente tienen un nombre, un user y un password. Cuando abres una cuenta en un server, puedes crear en ella una base de datos, a la cual tienes que dar nombre. En el menú Database crea una base de datos, asígnale un user y un password. Una vez hecho eso, entra a phpMyAdmin y crea una tabla en esa base de datos. Luego de eso estás en condiciones de agregar datos a esa tabla de la base de datos. Te recomiendo que antes de intentar usar las funciones http de GMS estudies el lenguaje php ya que no es buena idea tratar de copiar y pegar código sin tener la menor idea de lo que estás haciendo.

Un evento asíncrono es un evento que se dispara cuando GMS recibe información externa y el programador no sabe cuándo ocurrirá. La variable async_load guarda el resultado de un evento asíncrono.

43
Preguntas y respuestas / Re:Crear archivo en el escritorio
« en: Noviembre 20, 2015, 07:40:07 pm »
Si tu juego correrá en Windows, puedes decirle que abra en su explorador esta ruta:

%localappdata%\<Nombre del juego>

donde <Nombre del juego> es la carpeta con el nombre del juego. Si quieres abrir %localappdata% desde GMS para verla, en el menú Help hay una opción que lo hace, llamada "Open Project Data in Explorer"


44
Preguntas y respuestas / Re:Crear archivo en el escritorio
« en: Noviembre 20, 2015, 07:22:37 pm »
El archivo se guardará en la save area, la cual depende de la plataforma sobre la cual se ejecuta el juego. En Windows 7, por ejemplo, es %localappdata%\<Nombre del juego>. En android es más difícil ya que, según entiendo, el dispositivo debe estar rooteado para acceder a la save area.

45
Preguntas y respuestas / Re:Eliminar archivos de hosting?
« en: Noviembre 20, 2015, 07:16:17 pm »
Como primera medida de seguridad, hay que evitar hacer público el contenido del php. Si ya lo hiciste, entonces puedes modificarlo para exigir del cliente una variable adicional con un password en la información que viene en el post y sólo ejecutar el php si el password es correcto (y por supuesto, no publicar el contenido de ese php nuevo).

Páginas: 1 2 3 4 5 ... 28