Menú

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.

Menú Mostrar Mensajes

Mensajes - kostra

#1
Preguntas y respuestas / Re:Actualizacion atascada
Agosto 20, 2022, 12:41:53 PM
para ejecutar una versión hay que darle doble click, no hay nada atascado, tienes la última descargada, la penúltima sin descargar y la antepenúltima ejecutándose... que no te sale el mensajito al iniciar GM para cambiarlo??
#3
Cita de: Danth en Julio 02, 2022, 08:16:33 PMvaya, justo acabo de terminar de terminar de leer un documento en donde se explica el uso del base64 en gm, y estaba en plan.....
nmms eso lo puede desencriptar cualquier vato xd.

funciona perfecto, pero una duda, para qué sirve esa "función" db()
en gms1 pone error, igual la puse como comentario y el script funciona como debe. (o almenos a mi me funciona como en teoría debería funcionar (? )

wen aporte u.u
lo que dijo johann xD

gracias por avisar, post editado.

PD: la skin nueva mola, pero, qué pasó con el bbcode?
#4
el problema de html y cualquier script ue se haga SOLO con gml, tiene el problema del dpi, entonces en según ué dispositivo, el aspect ratio lo puedes dejar perfecto, pero por culpa de el problema con el dpi, se verá borroso y/o feo. Para arreglar eso solo se puede con alguna extensión en javascript por ejemplo (yal tiene alguno por ahí), ya que las funciones de dpi que tiene gml no funcan.
#5
General / Re: Mi galeria de imagenes
Abril 27, 2022, 07:41:13 PM
mis dieses <3 <3 <3 <3 <3 <3
#6
ACTUALIZADO!
-Tenía un bug grave que podía hacerte perder la info de tus listas. Solucionado.
#7
Preguntas y respuestas / Re: ¿Se puede imprimir?
Abril 16, 2022, 10:33:07 PM
un admin del foro en inglés dice:
Hello! There is no native function to be able to do this and you'd have to write an extension for it.... And I have zero idea how you'd even start going about that I'm afraid.
es decir.. nativamente con GM no se puede.. que busques a ver si hay alguna extensión y que no puede ayudarle pk no tiene ni p idea xD
fuente: https://forum.yoyogames.com/index.php?threads/can-my-game-communicate-with-a-printer.87843/

he buscado en la marketplace a ver si hay algo y....
[spoiler]Sorry, no hay nada :(   xdd, así que mucha suerte.. busca cómo hacerlo en otros lenguajes y busca cómo implementar al GM tales lenguajes... no te queda otra[/spoiler]
#8
Nombre del creador: Kostrón Sobakón
Breve descripción de su función: Nunca te ha pasado que quieres transformar en string una ds_list, pero el json solo sirve para ds_maps?, te da pereza tener que ingeniartelas cómo hacerlo? para qué, si ya lo hice yo por ti!! c:
Versión GM utilizada: GMS2.. pero meh, seguro sirve para todos o casi todos los GM
Modo de uso:
En el encoder, como argumento hay que poner una ds_list y devuelve un json (un ds_map transformado en string)
En el decoder, como argumento hay que poner un json (string que representa un ds_map... obviamente un json sacado de un jsln_encoder, si no no sirve!!!)
CódigoS (son 2, el encoder y el decoder):
[gml]
#region jsln encode
   function jsln_encode(_ds_list) {
      var _list = ds_list_create();
      ds_list_copy(_list,_ds_list);
      var _map = ds_map_create();
         ds_map_add_list(_map,"list",_list );
         var _json = json_encode(_map);
      ds_map_destroy(_map);
         
      return _json;
   }
#endregion
#region jsln decode
   function jsln_decode(_json) {
      var _map = json_decode(_json);
         var _ds_list = ds_list_create();
         ds_list_copy(_ds_list,_map[? "list"]);
      ds_map_destroy(_map);

      return _ds_list;
   }
#endregion
[/gml]

Adaptaciones a los antiguos scripts...
[gml]
///jsln_encode(ds_list)
var _list = ds_list_create();
ds_list_copy(_list,argument[0]);
var _map = ds_map_create();
   ds_map_add_list(_map,"list",_list );
   var _json = json_encode(_map);
ds_map_destroy(_map);
         
return _json;
[/gml]
[gml]
///jsln_decode(json)
var _json = argument[0];
var _map = json_decode(_json);
   var _ds_list = ds_list_create();
   ds_list_copy(_ds_list,_map[? "list"]);
ds_map_destroy(_map);

return _ds_list;
[/gml]

Cualquier duda, pss pregunten
#9
NOTA IMPORTANTE!!! No se flipen con el tamaño de la password (no es necesario) pk peta con stack overflow!! (me acabo de dar cuenta xd)

Nombre del creador: Kostrón Sobakón
Breve descripción de su función: Encripta una string con apariencia de base64 pero cuando alguien trate de decodificarlo verá que no conseguirá nada aunque lo decodifique varias veces en cadena, pues pa eso está la "password" c:
Versión GM utilizada: GMS2.. pero meh, seguro sirve para todos o casi todos los GM
CódigoS (son 2, el encoder y el decoder):
[gml]
#region mega64_encode
   function mega64_encode(_string,_password) {
      var _str = _string;
      for (var i = 0; i < string_length(_password); ++i) {
         _str = string_char_at(_password,i+1)+base64_encode(_str);
      }
      return _str;
   }
#endregion
#region mega64_decode
   function mega64_decode(_mega64_string,_password) {
      var _str = _mega64_string;
      var _reversed_pass = "";
      for (var i = 0; i < string_length(_password); ++i) {
         _reversed_pass += string_char_at(_str,0);
         _str = string_copy( _str,2,string_length(_str)-1 );
         _str = base64_decode(_str);
      }
         
      var _pass = "";
      for (var i = 0; i < string_length(_reversed_pass); ++i) {
         _pass += string_char_at( _reversed_pass,string_length(_reversed_pass)-i );
      }
         
      if (_password == _pass) { return _str; }
      else { return false; }
   }
#endregion
[/gml]

Adaptaciones a los antiguos scripts...
[gml]
///mega64_encode(string,password)

var _string = argument[0];
var _password = argument[1];
var _str = _string;
for (var i = 0; i < string_length(_password); ++i) {
   _str = string_char_at(_password,i+1)+base64_encode(_str);
}

return _str;
[/gml]
[gml]
///mega64_decode(mega64_string,password)

var _mega64_string = argument[0];
var _password = argument[1];
var _str = _mega64_string;
var _reversed_pass = "";
for (var i = 0; i < string_length(_password); ++i) {
   _reversed_pass += string_char_at(_str,0);
   _str = string_copy( _str,2,string_length(_str)-1 );
   _str = base64_decode(_str);
}
         
var _pass = "";
for (var i = 0; i < string_length(_reversed_pass); ++i) {
   _pass += string_char_at( _reversed_pass,string_length(_reversed_pass)-i );
}
         
if (_password == _pass) { return _str; }
else { return false; }
[/gml]

Supongo que no hace falta explicar su uso a detalle... se usa igual que el base64 pero con una pasword que tú te inventes.. poniendo siempre la misma que uses al encriptar.. para desencriptar, que si no la lías parda!! D:
Sé que se podría aprovechar mejor la pass, pero lo hice rápido, si alguna vez lo actualizo avisaré. Se aceptan sugerencias (otra cosa es que haga caso xD)
#10
Preguntas y respuestas / Re: Complejidad del GML
Junio 07, 2021, 11:17:15 PM
Ni me acordaba de este post, pero bueno ya que reviviste, aquí tienen un tuto que me sirvió bastante para aprender un poco todo lo que otros 800 videos me enseñaron de las bases de la machine learning, aplicado a GML. Posible sí que es, he obtenido buenos resultados con unas pruebas y malos con otras. Lo que aun me cuesta de entender es qué clase de "pesos" (bias) debería poner en según qué circunstancias. Espero a alguien le sirva, a mí sí me sirvió y le dí duro hasta que me cansé xd

https://highleapstudios.wordpress.com/2019/09/24/neural-network-in-game-maker-studio-1/
#11
primero de todo... al CREAR server, no tienes que poner ninguna ip :/

pasa el código que usas para crear el socket
#12
en hamachi hay 2 IPs, la IPv4 y la IPv6  cuál estás usando? Has abierto el server desde el mismo GM (testeando) y has mirado si sale algo en la consola? Añadiste el server (y el cliente también por si acaso) a las excepciones del Firewall?

PD: si te pasas por el discord del foro podremos hacer pruebas más rápidamente
#13
Si has hecho todo correctamente, usar hamachi sí debería funcionar. Lo que sirve en local sirve también en online si configuras todo bien. Hamachi hace que no te haga falta tal configuración, así que no debería haber ningún problema. Podrías, antes de postear, haberlo probado tú mismo y ya si falla algo traer la duda. Este post es demasiado abstracto xd
#14
Buenakas! ando haciendo un plagio genérico de maincra, tengo ya 170 items programados, mecánicas sofisticadas, crafteos, construcción etc... muy muy avanzado. Y actualmente empecé a hacer pruebas para la generación de un mapa muy muy grande. El tamaño que he considerado para la room principal de la superficie, la cual trato de generar un terreno pseudo-aleatorio de tierra y más alante poner bordes de arena simulando playas, es de exactamente 12800x12800px, usando una view de 640x352px

Como la interacción con esta tierra base, es mínima y la puedo detectar de muchas maneras, he decidido usar tiles que es mil veces más eficientes que poner una cantidad muy muy masiva de objetos, aun desactivándolos a fuera de la room, entonces, mi generación consiste en un objeto, con un sprite de 2048x2048 las cuales tiene unos cuantos frames con distintas formas que funcionarán como plantillas de pseudo-aleatoriedad. Uso un objeto con este sprite, con el siguiente código:

create:
[gml]///init

//coloco el generador con el sprite plantilla en el centro de la room, snapeado a una grid de 16x16
x = floor( (room_width/2)/16 )*16;
y = floor( (room_height/2)/16 )*16;
image_speed = 0;

//el centro tendrá la plantilla del frame 0 siempre
image_index = 0;
image_angle = irandom(359);

//inicializamos variables de la generacion
procesos = 100; //veces que la plantilla cambiará de forma y se moverá de lugar
tubo = 0; //variable para controlar una barra de carga basada en los procesos

//rellenar la plantilla principal
for (var i=x-1024;i<x+1024;i+=16) {
    for (var j=y-1024;j<y+1024;j+=16) {
        if collision_point(i,j,oterraingen,true,false) {
            tile_add(tdirt,0,0,16,16,i,j,5);
            }
        }
    }

//actualizacion de variables
procesos--;
tubo++;
[/gml]

step:
[gml]///generar terreno

if procesos {
    //mover plantilla
    x = floor( irandom_range(2048,room_width-2048)/16 )*16;
    y = floor( irandom_range(2048,room_height-2048)/16 )*16;
   
    //cambiar de forma
    image_index = irandom(image_number-1);
    image_angle = irandom(359);
   
    //rellenar plantilla nueva con tiles
    for (var i=x-1024;i<x+1024;i+=16) {
        for (var j=y-1024;j<y+1024;j+=16) {
            if collision_point(i,j,oterraingen,true,false)
            && !tile_layer_find(5,i,j) {
                tile_add(tdirt,0,0,16,16,i,j,5);
                }
            }
        }

    //actualizacion de variables
    procesos--;
    tubo++;
    }
else {
    //volver al centro, crear al jugador y destruirse para empezar la partida
    x = room_width/2;
    y = room_height/2;
    instance_create(x,y,oplayer);
    view_object[0] = oplayer;
    instance_destroy();
    }[/gml]

y de extra, irrelevante al problema, el tubo de carga en ev draw:
[gml]///draw tubo loading

var _tmaxlengh = 500;
var _tmax = 100;
var _tpos = tubo*_tmaxlengh/_tmax;

var _x = view_xview[0]+view_wview[0]/2-_tmaxlengh/2;
var _y = view_yview[0]+view_hview[0]/2;

draw_set_colour(c_black);
draw_rectangle(0,0,room_width,room_height,false);

draw_set_colour(c_white);
draw_rectangle(_x,_y-2,_x+_tmaxlengh,_y+2,true);
draw_rectangle(_x,_y-2,_x+_tpos,_y+2,false);[/gml]


Una vez hayan entendido el método que hice, veo que solo con 100 procesos (y no niego que me encantarían más), se me genera un terreno (una especie de gran isla) que me acaba de gustar sin que quede tierra suelta inaccesible y/o formas muy raras que no me convencen... Observo que usar tiles, probablemente sí ayuda, incluso si están activos todos a la vez ( hablamos de +300k tiles ), pero claro, como podrán adivinar... se me tira ~20 mins generando terreno y esto me parece un problema MUY GORDO que hará que el jugador se canse de esperar y cierre el juego...

Alguna sugerencia para mejorar este método. O incluso alguna idea para tener una generación parecida aun que deba de cambiar radicalmente el método?
#15
parecía que si funcaba pero no, pasa lo mismo o algo parecido, con 0.6 parece que oc, con 0.8 va mal para según qué dirección

[gml]///path_start_alt(ind,speed)

var _xx = path_get_point_x(argument[0],1);
var _yy = path_get_point_y(argument[0],1);

dir = point_direction(x,y,_xx,_yy);
spd = argument[1];[/gml]
Powered by EzPortal
SMF spam blocked by CleanTalk