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

46
Pues a mi la 39dll, Download Manager y SST no me han dado problemas nunca... as? que podr?as descartarlas de momento.

Me da que el problema est? ubicado en la extensi?n GMCap, por el tema de los codecs que es muy variable en los PCs y que, al ser una DLL detr?s de una extensi?n, podr?a arrojar un problema en un lugar aleatorio.

Esto ?ltimo es una suposici?n, ser?a cosa de probar.
47
Tambi?n puedes mencionarnos el resto de la librer?as DLLs que utilizas (Si es que las hay).

Me han tocado varios problemas similares... DLLs que funcionan bien en un equipo en otro lo hacen mal, esto es por depender directamente de servicios de Windows que podr?an no estar bien instalados en cierto equipo.

?Saludos!
48
En mi ejemplo de la secci?n descargas el while tiene la funci?n de recoger datos m?s de una vez en un mismo step, while(1) es una ejecuci?n infinita del bloque de c?digo dentro, a menos que se cancele su ejecuci?n usando break, al usar receivemessage() se devuelve el n?mero de bytes recibidos, cuando el n?mero de bytes es menor a 0 significa que no hay datos nuevos, as? que se usa el break para cancelar la ejecuci?n de todo el while en ese step, la ventaja que ofrece este m?todo no es mucha, un juego puede funcionar perfectamente sin el.

En cuanto a lo de lag, hay que tomar en cuenta algunas cosas extra cuando se desea ampliar un juego online a m?s de 2 jugadores, recuerda que antes de recibir nuevos datos de otro socket se debe limpiar el buffer usando clearbuffer(), si no se hace se produce el efecto que mencionas.

Mi ejemplo ya esta viejo y debe ser actualizado, vengo diciendo esto m?s de a?o y no he hecho nada :-[, alg?n d?a estar? listo... XD

Saludos :)
49
Para nada es una funci?n pesada o que consuma muchos datos de Internet, en realidad solamente esta escuchando en el socket en busca de datos, tcpaccept() devuelve un valor positivo cuando encuentra datos de petici?n de conexi?n por parte de un "cliente".

Y si es necesario que se este ejecutando todo el tiempo, ya que no se sabe exactamente cuando un "cliente" le enviar? esa petici?n para conectarse.

Saludos :)
51
Como te dijo Texic, la mejor forma es usando bucles, si guardas los socket de cada jugador en un array podr?as hacer as?:

[gml]
// Env?o de mensaje TCP a todos los clientes
// global.socket = Contiene el socket asignado por la 39dll
// global.maxjugadores = El m?ximo de jugadores posibles (Debe ser constante, con esto me refiero a que es la capacidad m?xima de jugadores en el juego, no los que est?n actualmente conectados)
// global.jugador_online = Valor booleano (0 o 1) que demuestra si el jugador esta conectado

var i;
for(i = 1; i <= global.maxjugadores; i += 1)
{
    if global.jugador_online
    {
        sendmessage(global.socket)
    }
}
[/gml]

Siguiendo esa base puedes conseguir un online estable, para leer datos en el cliente no hay ning?n problema, ya que se puede leer directo, pero para que el host lea los datos de todos los clientes, podr?a ser as?:

[gml]
// Recibe mensajes de los clientes
// global.socket = Contiene el socket asignado por la 39dll
// global.maxjugadores = El m?ximo de jugadores posibles (Debe ser constante, con esto me refiero a que es la capacidad m?xima de jugadores en el juego, no los que est?n actualmente conectados)
// global.jugador_online = Valor booleano (0 o 1) que demuestra si el jugador esta conectado

var i;
for(i = 1; i <= global.maxjugadores; i += 1)
{
    if global.jugador_online
    {
        if tcpconnected(global.socket)
        {
            clearbuffer()
            receivemessage(global.socket
            /* Aqu? continuar con la lectura de datos recibidos */
        }
    }
}
[/gml]

Saludos :)
53
Puedes hacer algo como esto:

[gml]
switch(get_string("Inserta un texto",""))
{
  case "entrar": // Si se escribe "entrar" se ejecuta lo que esta dentro de {}
  {
    // C?digos si se escribi? "entrar"
    break
  }
 
  case "salir": // Si se escribe "salir" se ejecuta lo que esta dentro de {}
  {
    // C?digos si se escribi? "salir"
    break
  }
}
[/gml]

Saludos :)
54
Te dejo este script que hice y que cumple la funci?n que necesitas:

get_number_ext()

// Define el n?mero de archivos en un directorio con cierta extensi?n
//argument0: Directorio
//argument1: Extensi?n
//return: N?mero de archivos encontrados

var dir, ext, a, c;
dir = argument0
ext = argument1
c = 0
if string_copy(dir,string_length(dir),1) != '\' {dir += '\'}
if string_copy(ext,1,1) != '.' {ext = string_insert('.',ext,1)}
for(a = file_find_first(dir + '*' + ext,fa_archive); a != ''; a = file_find_next()) {if filename_ext(a) = ext {c += 1}}
return c


Obviamente si no hay ning?n archivo .sav la funci?n devuelve negativo, para hacer lo que pides ser?a:


if !get_number_ext(working_directory,'.sav') {/* Aqui el c?digo */}


Saludos :)
55
Es mejor utilizar listas directamente, cada una tiene un identificador propio, puedes organizar los datos dentro de estas, obtener el tama?o de la lista (n?mero de registros), etc.

Tienes m?s informaci?n en el manual: http://www.comunidadgm.org/manual_GM/Listas.htm

Con las funciones que te muestra Texic se puede lograr un resultado similar al de las listas, s?lo que el uso ser?a m?s complicado. Para hacer lo que pides basta con enviar el id de la lista previamente creada y dentro del script obtener los valores.

Saludos :)
56
Tan simple como hacer una b?squeda en el registro de Windows, deber?a valer para todos los sistemas con kernel Windows NT


registry_set_root(1)
return registry_read_string_ext('\SOFTWARE\Microsoft\Windows NT\CurrentVersion','ProductName')


Saludos :)
57
Para iniciar cualquier juego creado en Game Maker 8 o inferiores no deber?as tener ning?n problema, sin embargo, es posible que posteriormente al inicio del juego te encuentres con alg?n error solamente si el juego utiliza Surfaces, debido a que para utilizarlas se necesita de m?s memoria de video, y he podido comprobar que estos errores ocurren usualmente con 128mb o menos.

Saludos
58
Preguntas y respuestas / Re: Compatibilidad gm8-gm7
Marzo 20, 2010, 04:39:26 PM
Una vez que el editable .gmk ha sido guardado en GM8 ser? imposible leerlo desde el GM7, saltar? un mensaje de "Fue creado con una version m?s nueva"

Saludos
59
Preguntas y respuestas / Re: DLL GMRAR
Febrero 28, 2010, 07:50:10 PM
Ah? funciona bien el link, lo que pasa que con los cambios recientes en la comunidad la URL ya no era v?lida pues el link del sistema de descargas cambio

Recuerden que cuando alg?n post tiene alg?n link roto o algo mal se puede usar el link de Reportar al moderador y ya el staff se encargar? de solucionarlo ;)
60
Preguntas y respuestas / Re: Saber IP con la 39dll
Febrero 12, 2010, 04:51:51 AM
Pues mira, la 39dll trae una funci?n para identificar tu direcci?n IP, pero al parecer no funciona tan bien como deber?a, el problema esta en que si tu cuentas con m?s de 1 dispositivo de red lo m?s probable es que te devuelva la direcci?n de otro dispositivo que no es el que tiene acceso a Internet o no es el que se esta usando para establecer esa conexi?n WinSock

La forma m?s efectiva de obtener tu direcci?n IP p?blica es a travez de PHP, leyendo los datos desde una web como http://www.whatismyip.org/ o fabricando tu propio script PHP que devuelva la IP. Para leerla desde una direcci?n web en Internet tienes que conectarte al puerto 80 de esa web o usar alguna DLL como Download Manager

Para obtener la direcci?n IP de los jugadores cliente es bastante m?s f?cil, pues el servidor ya tiene las direcciones p?blicas almacenadas en cada socket, para obtenerlas usa la funci?n tcpip(socket) . El argumento "socket" es el ID del socket del cliente del cual quieres obtener su direcci?n IP, este socket se obtiene al aceptar la conexi?n TCP con tcpaccept() y tambi?n es usado para recibir mensajes de los clientes, por lo que no creo que tengas problemas en identificar la variable en la que guardas el socket

P.D. Se ve bastante bien la imagen, suerte con el desarrollo ;)