Bueno tengo este sprite...



Necesito representar un texto que llenaria este cuadro al menos 7 veces... pero nose como hacer para dividirlo en esas 7 partes y mostrarlo... porque si pongo todo el texto junto las letras se salen del cuadro... obviamente...

Kisiera dividirlo en 7 partes y al presionar Z pasar de parte... alguno sabe como se hace eso?...

Creo que es muy dificil =/ xD

?-a qu? te refieres con dividirlo en 7 partes? Quieres decir, mostrar un texto en 7 lineas?

No funciona agregando # entre el texto para que salte a la siguiente linea?

usa la funcion draw_text_ext(x,y,string,sep,w)

lo mismo que draw_text solo que separa el texto en lineas sep es la separacion y w es el maximo de ancho

salu2

Orgulloso veterano de CGM
El poder de hacer un buen juego esta en tus manos.

Estoy casi seguro de que I-Am-Goku se refiere a un texto extremadamente largo, lo suficientemente extenso para llenar el espacio en ese sprite 7 veces, por lo que quiere separarlo, y hacer que aparezca cada parte una por una, cambiando cuando presiona la tecla Z.

En otras palabras, un cuadro de dialogo.

Te recomiendo que busques en las descargas de la comunidad, hay varios ejemplos del tema.

vale.. te pongo un codigo que almacenaria en 7 variables distintas, aprovechando los indices de las variables tipo array (espero que las conozcas), no hace falta que este en ejecucion todo el tiempo, con que se ejecute una vez y quede guardado en las variables antes de mostrarlo por pantalla, sobra

txt_original="Este es el texto que vamos a dividir en 7 partes";
fraccion=ceil(string_length(txt_original)/7);
for(i=0;i<7;i+=1){
txt_part[i]=string_copy(txt_original,i*fraccion+1,fraccion);
}
parte=0;



y luego para mostrar alguna parte simplemente..

draw_text(x,y,txt_part[parte]);  //donde parte es un indice del 0 al 6 con los fragmentos del texto

Creo que se refiere a lo tipico, un texto largo de unas 50 lineas que va apareciendo, no dividir el texto en 7 lineas, para eso creas una variabe que al pulsar el boton para pasar texto aumente en 1, y en draw segun la variable dibujas los textos usando el draw_text_ext, ejemplo
if draw=0 draw_text_ext(x,y,"Entonces debes pulsar tal tecla para consegir que el monigote",10,400)
if draw=1 draw_text_ext(x,y,"salte y alcance la barra, cuando lo haga pulsa tal tecla para que",10,400)
if draw=2 draw_text_ext(x,y,"la rompa y se coma un bollo de chocolate con pastas y despues",10,400)
if draw=3 draw_text_ext(x,y,"juegue a la pley",10,400)

darkruler...el codigo es muy largo para algo tan simple y no sirve como script XD;el texto de arriba es solo un ejemplo-[
Cita de: bonachiu en Diciembre 10, 2009, 01:10:49 PM
vale.. te pongo un codigo que almacenaria en 7 variables distintas, aprovechando los indices de las variables tipo array (espero que las conozcas), no hace falta que este en ejecucion todo el tiempo, con que se ejecute una vez y quede guardado en las variables antes de mostrarlo por pantalla, sobra

txt_original="Este es el texto que vamos a dividir en 7 partes";
fraccion=ceil(string_length(txt_original)/7);
for(i=0;i<7;i+=1){
txt_part[i]=string_copy(txt_original,i*fraccion+1,fraccion);
}
parte=0;



y luego para mostrar alguna parte simplemente..

draw_text(x,y,txt_part[parte]);  //donde parte es un indice del 0 al 6 con los fragmentos del texto



esta bastante bien este a mi tambien se me ocurrio lo mismo pero no lo dije por que tiene una falla grave...divide las letras tambien XD...estoy tratando en uno que no corte las palabras

Orgulloso veterano de CGM
El poder de hacer un buen juego esta en tus manos.

jaja cierto, seria ponerse a contar espacios " " y nada.. dividirlo entre 7, no seria mucha historia..

Bueno no entendi muy bien este codigo... tengo actualmente esto (no le presten atencion a la conversacion porque vana  estar horas leyendo... es una escena de dragon ball)

txt_original="Goku: Hola Chicos, ? Como andan?, tanto tiempo Sin vernos...# Roshi, Krilin y Tortuga: Goku!, que haces!! tanto tiempo!! ?que es lo que traes ahi? parece un bebe...# Goku: Esto? Ah, si... es mi hijo jaja, su nombre es gohan...# Roshi: ?Un Hijo?!! A la mi...!! Milk y vos No perdieron el tiempo jaja, Felicitaciones# Goku: Jaja Gracias... es medio timido todavia...(Goku siente algo...) Un momento... ?Que es eso? Es un Ki maligno... y bastante alto... Krilin...?Vos lo sentis?# Krilin: (asustado) Si, tenez razon... es demasiado grande... espero nos equivoquemos... porque no podriamos ganarle...# Goku: ?Esta viniendo hacia aca! Gohan kedate atras mio... y callado...# Gohan: (Llendo para atras) Si...# Misterioso: Hola, Goku...# Goku: (Preparandose para un encuentro) ?Quien sos?... ?Como sabes mi nombre?... ?Y que queres aca?# Misterioso: Lo que faltaba... Nisiquiera te acordas quien es tu hermano!!! Soy tu hermano Raditz!!# Goku: ?Hermano? Vos estas loco... yo no tengo hermano... solo tenia abuelo y esta muerto, asique deja de decir boludeces y andate!!# Raditz: Yo sabia que no ibas a servir... soy tu hermano... vos descendes de una familia llamada Saiyajins... somos una familia guerrera... y lo nuestro es conquistar planetas y venderlos, y vos tenes que ayudarnos.# No sos muy fuerte, pero con algo de entrenamiento podes llegar a ser casi tan fuerte como yo.# Goku: Vos estas un poco loco, yo no tengo hermanos asique andate de aca ya.# Raditz: Bueno no voy a discutir por tan poco... pero veo que ese chikito atras tuyo tiene tu Ki, de grande va a ser fuerte, asique creo que me lo llevo. Permiso# Goku: (Entrometiendose) Ni se te ocurra tocar a Gohan... Porque vamos a terminar mal, andate# Raditz: (Golpe al estomago de Goku) Sali de aca...# Gohan: No! No!!! Papa!!! ayudame!!! Soltame!!!# Raditz:(Llevandose a Gohan) Chau, Goku, Lastima lo tuyo che...# Goku: No!! Volve aca hijo de p...!!! Dame a Gohan!! (Se prepara para seguir a Raditz)# Krilin: (Deteniendolo) No goku... no hagas nada todavia, ese golpe te dejo debil, y no podrias ganarle ahora aunque te recuperes, mejor idea una estrategia, Porque asi no vas a ganar.#Goku: Ya se que hacer, Solo puedo pedir ayuda a una persona, dejame pasar.#Krilin: Bueno, pero haceme caso, es una muerte segura si lo vas a buscar.";

fraccion=ceil(string_length(txt_original)/7);

for(i=0;i<7;i+=1){

txt_part[i]=string_copy(txt_original,i*fraccion+1,fraccion);
}

parte=0;



Y en el evento de presionar Z tengo esto...

draw_text(x,y,txt_part[0]); 8tambien probe con 1, 2,3,4 etc... y no anda... tira este error...

Error in code at line 1:
   draw_text(x,y,txt_part[1]);

te has asegurado de que esos dos codigos se ejecutan en el mismo objeto?

tambien tienes que asegurarte que el codigo largo se ejecuta una sola vez y a ser posible en el create event, y la otra parte en el draw event

Bueno muchas gracias... el codigo ya anda bien... dibuja el texto... ahora...

necesito que al presionar Z pase de parte...

El texto me corta las letras tambien =S... no hay forma de que no lo haga?

para que el texto se divida no en letras sino en palabras  habria que hacer un codigo algo mas complejo.. quiza en un par de horas me entre la inspiracion y te lo haga, ahora mismo me pillas reventado y a punto de ir a dormir XD  pues en create evento pones la variable parte a 0

luego en el draw event tenias este codigo:

draw_text(x,y,txt_part[parte]);


pues en el evento key press Z pon simplemente este trozo de codigo:


if(parte<6){parte+=1;}


asi sumas en uno la variable parte que es el trozo de texto que se muestra con el evento draw :)

Ahora que lo pienso... tenes razon!!! es asi... gracias por responder... si llega a funcionar como pienso que va a funcionar porque lo veo bien al codigo... sos un groso...

Vale.. vamos a animarnos a hacer el codigo que divide por palabras y no por letras, ya no va a ser perfecto como el otro que por ejemplo si teniamos 15 palabras hacia 7 bloques de 2 y uno de uno:2... 2+2+2...+1, ahora pueden salir letras aproximadas por bloques pero acercandose a la fraccion de 7, por ejemplo si tenemos 70 palabras lo ideal serian 7 bloques de 10 palabras, pero al separar por espacios quiza tengamos bloques de 8 palabras, de 6, o incluso por exceso, de 11 o 12 palabras, intentare que sea mas por defecto que por exceso, ya que si nos excedemos quiza el texto no quepa en el recuadro, pero al hacer esto por defecto ya no podemos decir que van a ser justo 7 divisiones, sino que el criterio para partir dejara de ser 7 particiones para ser X particiones de tantas letras (aprox), pongamos unas 20 letras por particion:

txt_original="Este es el texto del que vamos a hacer X particiones con 20 letras en cada particion, quiza se queda corto y como mucho da para diez, pero confiemos que con textos largos la cosa salga bien";

aprox=20; //tendremos que aproximarnos tomando este numero como referenica, sera como el ejemplo a seguir para todas las particiones, que su numero de letras sera siempre <= que aprox

particiones=0; //comenzaremos con la cuenta de divisiones, de momento llevamos 0

//ahora enumeramos los espacios encontrados
espacios=0;
for(i=0;i<string_length(txt_original);i+=1){
  if(string_char_at(txt_original,i+1)==" "){
     espacio[espacios]=i+1;
     espacios+=1;
}
}

desde=1; //desde servira para comenzar la copia para ir pegando los trozos
for(i=0;i<espacios;i+=1){
  if((espacio[i]-desde)>aprox){
    txt_part[particiones]=string_copy(txt_original,desde,espacio[i-1]-desde);
    particiones+=1;
    desde=espacio[i-1]+1;
  }
}
txt_part[particiones]=string_copy(txt_original,desde,string_length(txt_original)-(desde-1));
particiones+=1;


parte=0;


en el evento draw seria lo mismo que antes, sustituye el que te di en su momento por este en el evento create