O Jeito que eu Resolvi Foi Colocar um Script Para Quebrar o Texto Automaticamente
Esse:
# ================================================= =======================
# ** Caixas de mensagens de Word Wrapping, de: KilloZapit
# ------------------------------------------------- -----------------------
# Muda as caixas de mensagens para que ela automaticamente envolva linhas longas.
#
# Nota: Considero este script como de domínio público, e não coloquei nenhum
# restrições sobre o uso que seja. Meu único pedido é esse
# é fornecido um link de volta ao script para que mais pessoas possam
# Acesse se quiserem.
#
# Versão do segundo:
# Agora tira códigos de cores e códigos de ícones para que eles não quebram palavras.
# Também calcula a largura do ícone juntamente com a largura do texto para as palavras.
# Versão the Third:
# Agora, também tira atrasos e outros códigos relacionados ao tempo.
# Divide os códigos de controle não-ícone antes de contar ícones.
# Os códigos de controle agora podem quebrar linhas no caso de mudanças de fonte.
# Adicionado alguns comentários para esclarecer algum código.
# Versão the Forth:
# Corrigido um pequeno erro que pode causar um erro ao contar ícones.
# Adicionado um pequeno aviso para questões de direitos autorais.
# Version the Fifth:
# Adicionado modo "colapso", que elimina espaços extras.
# Pode agora usar o modo "espaço em branco" fora do modo wordwrap, se necessário.
# Versão do Sexto:
# Problemas corrigidos com espaços em colapso não envolvendo palavras corretas.
# Versão do sétimo:
# Opção adicionada para adicionar uma margem no lado direito da janela.
# ------------------------------------------------- -----------------------
# Também adiciona as seguintes novas seqüências de escape:
#
# \ ww - Word Wrap: liga o Word Wrap se estiver desligado
# \ nw - Sem Envoltório: desliga a palavra
# \ ws - Modo WhiteSpace: converte novas linhas em espaços (como HTML)
# \ nl - Nova linha: preserva devoluções difíceis
# \ cs - Collapse whiteSpace: elimina espaços extras (também como HTML)
# \ pré - PRE-formatado: preserva espaços
# \ br - line BRake: newline manual para o modo de espaço em branco
# \ rm - Margem Direita: espaço extra no lado direito da janela
# ================================================= =======================
# Standard config module.
module KZIsAwesome
module WordWrap
# change this if you don't want wordwrap on by default.
DEFAULT_WORDWRAP = true
# change this if you want white space mode on by default.
DEFAULT_WHITESPACE = false
# change this if you want white space mode on by default.
DEFAULT_COLLAPSE = true
# change this to add a right margin to the window.
DEFAULT_RIGHT_MARGIN = 0
end
end
class Window_Base < Window
include KZIsAwesome::WordWrap
alias_method :initialize_kz_window_base, :initialize
def initialize(x, y, width, height)
initialize_kz_window_base(x, y, width, height)
@wordwrap = DEFAULT_WORDWRAP
@convert_newlines = DEFAULT_WHITESPACE
@collapse_whitespace = DEFAULT_COLLAPSE
@right_margin = DEFAULT_RIGHT_MARGIN
@lastc = "\n"
end
alias_method :process_character_kz_window_base, :process_character
def process_character(c, text, pos)
c = ' ' if @convert_newlines && c == "\n"
if @wordwrap && c =~ /[ \t]/
c = '' if @collapse_whitespace && @lastc =~ /[\s\n\f]/
if pos[:x] + get_next_word_size(c, text) > contents.width - @right_margin
process_new_line(text, pos)
else
process_normal_character(c, pos)
end
@lastc = c
else
@lastc = c
process_character_kz_window_base(c, text, pos)
end
end
def get_next_word_size(c, text)
# Split text by the next space/line/page and grab the first split
nextword = text.split(/[\s\n\f]/, 2)[0]
if nextword
icons = 0
if nextword =~ /\e/i
# Get rid of color codes and YEA Message system outline colors
nextword = nextword.split(/\e[oOcC]+\[\d*\]/).join
# Get rid of message timing control codes
nextword = nextword.split(/\e[\.\|\^<>!]/).join
# Split text by the first non-icon escape code
# (the hH is for compatibility with the Icon Hues script)
nextword = nextword.split(/\e[^iIhH]+/, 2)[0]
# Erase and count icons in remaining text
nextword.gsub!(/\e[iIhH]+\[[\d,]*\]/) do
icons += 1
''
end if nextword
end
wordsize = (nextword ? text_size(c + nextword).width : text_size( c ).width)
wordsize += icons * 24
else
wordsize = text_size( c ).width
end
return wordsize
end
alias_method :process_escape_character_kz_window_base, :process_escape_character
def process_escape_character(code, text, pos)
case code.upcase
when 'WW'
@wordwrap = true
when 'NW'
@wordwrap = false
when 'WS'
@convert_newlines = true
when 'NL'
@convert_newlines = false
when 'CS'
@collapse_whitespace = true
when 'PRE'
@collapse_whitespace = false
when 'BR'
process_new_line(text, pos)
@lastc = "\n"
when 'RM'
@right_margin = obtain_escape_param(text)
else
process_escape_character_kz_window_base(code, text, pos)
end
# Recalculate the next word size and insert line breaks
# (Needed primarily for font changes)
if pos[:x] + get_next_word_size('', text) > contents.width
process_new_line(text, pos)
end
end
end
~Desenvolvendo Um Jogo de RPG Dentro de Hogwarts, Uma Escola de Magia e Bruxaria, Qualquer Ideia ou Ajuda Será Bem Vinda~