Saludos Makeros, estaba trabajando en un viejo proyecto Rpg y me preguntaba como podia hacer para dibujar un cuadro al acercarme a dicho objeto

Podria decirse que es facil dibujar ese cuadro con algunas variables, pero ahora estaba pensando en algunos defectos que tendria al probarlo y como puedo solucionarlos  ???

1- Quiero que el cuadro se dibuje arriba del objeto al que nos acercamos pero imaginen que al acercarnos, el objeto esta casi por el borde de la room, si yo me acercara ahora, parte del cuadro se dibujaria afuera de la room y eso seria molesto ¿como podria hacer que el texto se acoplara o se dibujara para abajo?

2- Como el anterior caso, imaginen que el cuadro de texto tiene un ancho mayor que el del objeto en si (obviamente siempre es mayor), y al igual que el otro caso nuestro objeto esta muy cerca de algun borde horizontal, tambien quisiera se acoplara algunos pixeles al lado contrario ¿como podria calcular la distancia que necesita para separarse automaticamente?

3- Tambien quisiera dibujar el valor de cada pocion dentro de unos parentesis, un ejemplo es que en el objeto Pocion cada instancia de ella en la room tenga un valor diferente que ofrecerle al jugador, "Quieres coger esta Pocion (+50 HP)" o "Quieres coger esta Pocion (+75 HP)" etc, lo valores pueden variar mucho y si es posible no quiero añadir tantos objetos de Pociones (Seria Molesto)

En fin no creo que queden mas dudas, pues solo quiero un cuadro que se acople al espacio en pantalla.
Solo necesitaria completar los primeros 2 casos, el 3ro lo trataria pronto  :-[

Okey no entendí tu cuadro no se si es un cuadro de texto o una barra de sangre necesito saber que es ese cuadro para ayudarte alli.

Para el caso 3: debes tener una fuente que este con los paracentesis activas y para dibujar los paracentesis es realmente fácil.

lo que necesitas:
[gml]
valor=25;
mensaje="Pocion";
[/gml]
Para Dibujar:

[gml]
    draw_text(x,y,mensaje+" ( "+ valor +" HP ) ");
[/gml]
Ten cuidado con las comillas espero una imagen de ejemplo de el caso 1 y el caso 2 para ver si te puedo ayudar y mas detalles como si el recuadro es una instancia separada o si solo lo dibujas mediante código del mismo objeto comerciantes saludo y espero que sea de ayuda.

Visitarme en mi canal
https://www.youtube.com/channel/UC8QOfYit7o0YuQ5nuO7f_-Q?view_as=subscriber

Digamos que el cuadro de texto traspasa el lado derecho del room, lo que tienes que calcular es cuanto del lado derecho del cuadro de texto traspasa el borde, y mover el cuadro esa cantidad hacia la izquierda.
Como dibujas el cuadro de texto, usas un sprite?

Cita de: 3dgeminis en Junio 18, 2020, 09:18:47 PM
Digamos que el cuadro de texto traspasa el lado derecho del room, lo que tienes que calcular es cuanto del lado derecho del cuadro de texto traspasa el borde, y mover el cuadro esa cantidad hacia la izquierda.
Como dibujas el cuadro de texto, usas un sprite?

Si eso pregunto para saber que variables usar para molerlo a la izquierda bueno es obvio que es usando room_width y room height y restando el tamaño del sprite para eso pero no se si esta centrado (en ese casi solo tendría que resta la mitad del tamaño del sprite) o e el origen (en ese caso todo el tamaño del sprite) todo eso si es que usa una instancia si utilizar el dibujo del objeto npc es necesario hacer lo mismo pero con variables y comprobando un paso un poco mas elaborado.

Saludos 3Dgeminis, en primera uso un draw rectangle comun para dibujar el cuadro, ¿Seria mas facil usar un sprite?

Saludos elmmeronw, tu ejemplo de las comillas y otras comillas dentro mas signo de suma me confundieron un poco  ???, nose suponia que ya no se pueden usar mas comillas dentro de las comilla?

De todas formas como me recomendarian una solucion para mi problema que se ajuste, si es que necesito un sprite pues a la orden usare uno

No es necesario el sprite.
Cuando dibujas el rectangulo te pide 4 valores para definir 2 vertices (x1,y1,x2,y2), asi que se puede usar eso para para saber si el retangulo se sale de los bordes.
Si x2 es mayor que el largo del room, x1 seria igual a el ancho del room menos el ancho del rectangulo. Si x1 es menor que 0, x1 es igual a 0.
Lo mismo para y.

Hmm, podria usar algunas variables locales para determinar a que posiciones debe estar acoplado el cuadro de texto
[gml]
/// Event Draw
var x1, y1, x2, y2;
x1 = x-95;
y1 = y-32;
x2 = x+95;
y2 = y-69;

// Acoplarse segun el espacio
acoplar_cuadro(32);

draw_set_alpha(0.7)
draw_set_color(c_dkgray)
draw_rectangle(x1, y1, x2, y2, false)
[/gml]
[gml]
///acoplar_cuadro(cantidad de acoplamiento)
var rest;
rest = argument0;

if (x2 > view_wview) {
   x1 -= rest;
   x2 -= rest;
}
if (x1 < view_xview) {
   x1 += rest;
   x2 += rest;
}
if (y2 < view_yview) {
   y2 += rest;
   y1 += rest;
   y += rest; //Sumarle tambien al objeto para que no se vean fallos al dibujar
}
[/gml]

Bueno supongo hay que hacerles algunos cambios al codigo  :-[

Para simplificar los de las comillas es simple solo tiene que colocar dentro de comillas lo que quiere que se dibuje y los singno de más es para encadenar los string. En pocas palabras
"Pepe "  + " Augusto" ;
Es igual que " Pepe Augusto"
Lo que haces es unir las dos cadenas en una sola o por lo menos mostrar una sola.