Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: arcangelcaos en Enero 17, 2016, 05:34:09 PM

Título: Ayuda como dibujar un texto compuesto
Publicado por: arcangelcaos en Enero 17, 2016, 05:34:09 PM
Hola, haber si me echáis una mano, que me estoy liando, y no se como salir, jajaja :'( :'(

Haber, estoy haciendo mi juego multiidioma, por lo tanto tengo un ini los textos.
Mis guerreros pueden tener hasta 3 Skill, 1, 2 o 3,.
Tengo el ini  SKILLNOMBRE  con el nombre en español de la skill, y SKILL con la descripción de lo que hace cada skill.

Lo que quiero es algo asi
Emboscada:Se anticipa a los ataques enemigos.
ContraAtaque:Devuelve el golpe después de ser atacado

Bueno, lo colores los he puesto al azar para que aquí se vean algo.

Puede ser que haya tres líneas, o 2 o 1, o ninguna. Pero además, la descripción de alguno puede ser larga y tenga que cambiar de renglón.

Se ponerlas de color, que no se como UNIR/ENLAZAR el SKILLNOMBRE y SKILL y cada uno de un color.

Espero haberme explicado.

Gracias.
Título: Re:Ayuda como dibujar un texto compuesto
Publicado por: bygdle en Enero 17, 2016, 05:42:11 PM
Debes usar dos draw_text, y un string_width para poner el segundo texto después del primero.
Puedes, por ejemplo, poner un script con lo siguiente:
[gml]
///texto_dividido(x,y,str1,col1,str2,col2);
var X = argument0;
var Y = argument1;
var texto1 = argument2;
var color1 = argument3;
var texto2 = argument4;
var color2 = argument5;

var w = string_width(texto1);
draw_set_colour(color1);
draw_text(X,Y,texto1);
draw_set_colour(color2);
draw_text(X+w,Y,texto2);
[/gml]

Y después lo llamas
[gml]
texto_dividido(x,y,"Emboscada",c_yellow,"Se anticipa a los ataques enemigos.",c_green);
[/gml]
Título: Re:Ayuda como dibujar un texto compuesto
Publicado por: arcangelcaos en Enero 17, 2016, 05:47:03 PM
Cita de: NiuWeb en Enero 17, 2016, 05:42:11 PM
Debes usar dos draw_text, y un string_width para poner el segundo texto después del primero.
Puedes, por ejemplo, poner un script con lo siguiente:
[gml]
///texto_dividido(x,y,str1,col1,str2,col2);
var X = argument0;
var Y = argument1;
var texto1 = argument2;
var color1 = argument3;
var texto2 = argument4;
var color2 = argument5;

var w = string_width(texto1);
draw_set_colour(color1);
draw_text(X,Y,texto1);
draw_set_colour(color2);
draw_text(X+w,Y,texto2);
[/gml]

Y después lo llamas
[gml]
texto_dividido(x,y,"Emboscada",c_yellow,"Se anticipa a los ataques enemigos.",c_green);
[/gml]

Gracias, no había caído en eso, funciona medianamente bien.
Ahora lo complico mas, Hay tres skill, tendre que controlar en "y" se empieza a dibujar, y como he dicho, puede que alguna descripción ocupe 2 o 3 renglones, como puedo saber la altura que ocupa????
Título: Re:Ayuda como dibujar un texto compuesto
Publicado por: bygdle en Enero 17, 2016, 05:49:01 PM
Usa string_heigth:

[gml]
///texto_dividido(x,y,str1,col1,str2,col2);
var X = argument0;
var Y = argument1;
var texto1 = argument2;
var color1 = argument3;
var texto2 = argument4;
var color2 = argument5;

var w = string_width(texto1);
var h = string_height(texto1);
var h2 = string_height(texto2);
if h == h2
h = 0;
draw_set_colour(color1);
draw_text(X,Y,texto1);
draw_set_colour(color2);
draw_text(X+w,Y+h,texto2);
[/gml]

A ver si funca
Título: Re:Ayuda como dibujar un texto compuesto
Publicado por: arcangelcaos en Enero 17, 2016, 06:45:38 PM
Cita de: NiuWeb en Enero 17, 2016, 05:49:01 PM
Usa string_heigth:

[gml]
///texto_dividido(x,y,str1,col1,str2,col2);
var X = argument0;
var Y = argument1;
var texto1 = argument2;
var color1 = argument3;
var texto2 = argument4;
var color2 = argument5;

var w = string_width(texto1);
var h = string_height(texto1);
var h2 = string_height(texto2);
if h == h2
h = 0;
draw_set_colour(color1);
draw_text(X,Y,texto1);
draw_set_colour(color2);
draw_text(X+w,Y+h,texto2);
[/gml]

A ver si funca

Al final hice algo asi

var X = argument0;
var Y = argument1-15;
var texto1 = argument2;
var color1 = argument5;
var texto2 = argument4;
var color2 = argument3;

var w = string_width(texto1);
draw_text_colour(X,Y,texto1,color1,color1,color1,color1,1)
draw_line_width_colour(X-10,Y+string_height(texto1)-2,X+190,Y+string_height(texto1)-2,2,c_blue,c_blue)
draw_text_ext_transformed_colour(X+20,Y+string_height(texto1),texto2,15,180,1,1,0,color2,color2,color2,color2,1)
i = string_height_ext(texto2,15,180)
return i


if Seleccionado.Skill2 <> "a"
{texto1=ini_read_string("SKILLNOMBRES",Seleccionado.Skill2,"a")
texto2=ini_read_string("SKILL",Seleccionado.Skill2,"a")
ScrDibujarSkill(xL+25,yL+380+(10+i),texto1,c_black,texto2,c_white)
}


Y se queda algo asi

Armadura 1:
_______________________________
   + 1 Defensa contra golpes
   físicos.