Noticias

¡Ayuda a la Comunidad GM, haz una donación!

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

Páginas: 1
1
Preguntas y respuestas / Re:Cargar imagen jpg
« en: Enero 08, 2020, 08:56:57 am »
Por la forma en que GM (y cualquier Engine 2D moderno) maneja las texturas lo recomendable es que no los cargues en tiempo de ejercicion ya que esto ocasionará que tus sprites no sean compactados en forma de atlas (llamado texture page en gm) causando que se incremente el número de "texture swaps" en la GPU del dispositivo. Si te preocupa el peso del juego lo recomendable es que habilites la compresión PNGCrush como directiva de compilador.

Más info: https://docs2.yoyogames.com/source/_build/3_scripting/4_gml_reference/miscellaneous/gml_pragma.html

Los siguientes usuarios dieron las gracias a este tema: Mataca

2
Guerra de IAs (GIA) / Re:¡GIA_01+ ha comenzado!
« en: Enero 04, 2020, 10:37:32 am »
Que alegría!
En el "Game information" del proyecto sigue el reglamento viejo del 2008. Se sigue requiriendo hacer el "Registro" de la IA?

A codear se ha dicho!
Los siguientes usuarios dieron las gracias a este tema: Johann

3
Noticias / Re:GIA 01 La carrera de los droides
« en: Diciembre 21, 2019, 06:21:02 am »
Obviamente tengo que participar. Pasaron un montón de años desde la ultima vez que entré al foro y esta es la excusa perfecta para volver. Definitivamente un concurso asi me motiva muchísimo.

Espero que se inscriban muchas personas! Voy a intentar darle difusión en lo posible.

Edit: va a estar hecho en GMS2 no? Digo, porque el post tiene ícono de GMS1, pero ya el GMS1 dejo de tener soporte hace mucho tiempo
Los siguientes usuarios dieron las gracias a este tema: Johann

4
Desarrollo de Scripts / draw_text_c2c (caracter a caracter)
« en: Septiembre 08, 2010, 03:17:28 am »
Creador: Ciberman (Javier H. Mora)
Versión GM: GM8  :GM8: pero debe funkar en otras...
Descripción:
Quién no ha lidiado con el tema de tener que dibujar algun texto con draw text ext letra por letra y poder saber donde terminó de escrivir para poner alguna otra cosa luego... mh.. no, no me entendieron, voy de nuevo.... aplicaciones prácticas de este script:

-hacer un codigo de diálogo RPG letra a letra
-verificar la posicion en donde quedaría cualquier caracter que queramos (luego de ser dibujado)
-Controlar que nuestro texto no pase de X caracteres
-O de un heigth específico...
-dibujar solo la parte que nos interesa de largos textos..
-controlar cuando se está por dibujar un espacio (o cualquier otro caracter)

Uso:
para usar el scrip se llama igual que el draw text ext pero con un argumento extra opcional que es la posicion inicial desde la que dibuja...
OJO::: el script iniciará todo (si es que lo ejecutas por primera vez) y dibujará solo un caracter. por lo que deberas llamarlo en un bucle 50 veces si quieres dibujar 50 caracteres.
asi si quieres dibujar todo deberas hacer asi:
for(c=0;c<=string_length(string);c+=1;)
     {
     draw_text_c2c(25,25,string,-1,750)   // dibuja texto letra a letra
     }
draw_text_c2c_reset();
remplazando string y los argumentos por los tuyos...
osea, llamas a la funcion tantas veces como lo nesecites y cuando termines de escrivir tu texto llamas a la funcion draw_text_c2c_reset();


Scripts
Bien ... ahora me dejo de hablar y les presento al script

Script.. este es el usuario... usuario, este es el script:
draw_text_c2c:
///////// draw_text_c2c
// Creador: Ciberman (Javier H. Mora)
// No son necesarios los créditos, aunque se agradecen.
// --------------------------------------
// Uso: draw_text_c2c(x,y,string,sep,w[,posicion inicial]);

//este script se usa con draw_text_c2c_reset()


var xxx,yyy,str,pos,width,sep,ch,ww,hh,xx,yy,esp,posi;
xxx=argument0 // posicion inicial
yyy=argument1
str=argument2
sep=argument3 // sepracion de renglones (-1 default)
width=argument4

posi=max(1,argument5); //opcional, posicion inicial

if !(variable_global_exists("scrdrawtextext"))
     {
     global.scrdrawtextext[0]=xxx; //x final
     global.scrdrawtextext[1]=yyy; //y final
     global.scrdrawtextext[2]=posi;   //pos final
     global.scrdrawtextext[3]=0;   //espacio
     }
else
     {
     //if !(show_question(string(global.scrdrawtextext[0]))) {game_end();}
     if string(global.scrdrawtextext[0])="CiBeRmAn"
         {
         global.scrdrawtextext[0]=xxx; //x final
         global.scrdrawtextext[1]=yyy; //y final
         global.scrdrawtextext[2]=posi;   //pos final
         global.scrdrawtextext[3]=0;   //espacio
         }
     }

     
xx=global.scrdrawtextext[0]; //x final
yy=global.scrdrawtextext[1]; //y final
pos=global.scrdrawtextext[2]; //pos
esp=global.scrdrawtextext[3]; // espacio




ch=string_char_at(str,pos);
ww=string_width(ch);

if sep=-1 {hh=string_height(ch);}
else {hh=sep;}

if esp=1
     {
     var x_comp,ch_ext,i;
     ch_ext="";
     x_comp=xx;
     for(i=2;ch_ext!=" ";i+=1;)
         {
         ch_ext=string_char_at(str,pos+i);
         //if !(show_question(string(ch)+" - "+string(x_comp))) {break;}
         if ch_ext="#" or pos+i>=string_length(str)
             {break;}
         x_comp+=string_width(ch_ext);
         }
     
     if x_comp>xxx+width
         {
         draw_text(xxx,yy+hh,ch);
         global.scrdrawtextext[0]=xxx+ww;
         global.scrdrawtextext[1]=yy+hh;
         global.scrdrawtextext[3]=0;
         global.scrdrawtextext[2]=pos+1;
         return 2;
         }
     else
         {
         draw_text(xx,yy,ch);
         global.scrdrawtextext[0]=xx+ww;
         global.scrdrawtextext[1]=yy;
         global.scrdrawtextext[2]=pos+1;
         global.scrdrawtextext[3]=0;
         return 1;
         }
     }
else
     {
     if ch=" "
         {
         draw_text(xx,yy,ch);
         global.scrdrawtextext[0]=xx+ww;
         global.scrdrawtextext[1]=yy;
         global.scrdrawtextext[2]=pos+1;
         global.scrdrawtextext[3]=1;
         return 4;
         }
     else
         {
         if ch="#"
             {
             global.scrdrawtextext[0]=xxx;
             global.scrdrawtextext[1]=yy+hh;
             global.scrdrawtextext[2]=pos+1;
             global.scrdrawtextext[3]=0;
             return 3;
             }
         else
             {
             draw_text(xx,yy,ch);
             global.scrdrawtextext[0]=xx+ww;
             global.scrdrawtextext[1]=yy;
             global.scrdrawtextext[2]=pos+1;
             global.scrdrawtextext[3]=0;
             return 1;
             }
         }
     }

draw_text_c2c_reset:
///////// draw_text_c2c_reset
// Creador: Ciberman (Javier H. Mora)
// No son necesarios los créditos, aunque se agradecen.
// --------------------------------------
// Uso: draw_text_c2c_reset();

//este script se usa con draw_text_c2c(...)

global.scrdrawtextext[0]="CiBeRmAn"; //x final
global.scrdrawtextext[1]="CiBeRmAn"; //y final
global.scrdrawtextext[2]=1;   //pos final
global.scrdrawtextext[3]=0;   //espacio


Obtención de datos:
Ahora preguntaras, como se esas cosas que nombraste al comienzo del post..
muy facil.. cuando llamas por primera vez se crea un array que contiene la informacion para que analices en cada ciclo de tu bucle.

global.scrdrawtextext[0] = posicion X donde dibujará el próximo caracter (donde terminó de escrivir)

global.scrdrawtextext[1] = posicion Y de lo antedicho

global.scrdrawtextext[2] = numero de caracter que dibujará

global.scrdrawtextext[3] (true/false) = indica si en la anterior llamada al script se dibujó un caracter de espacio (" ")


ademas, si estos datos no te bastan el script debuelve:
return 1; si se dibujó un caracter normalmente
return 2; si se dibujó un caracter y se pasó de linea
return 3; si se pasó de linea porque se encontró un #
return 4; si el último caracter dibujado fue un espacio " "



Disfruten...

EDIT: subo un ejemplo: (Gm8)
Los siguientes usuarios dieron las gracias a este tema: Furoppi games

Páginas: 1