O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

[Resolvido] Como adiciono ícones numa mensagem pelo script? [VXA]

Iniciado por raspudin32, 01/11/2020 às 10:15

Antes de tudo, olá para todos os que estão visualizando essa mensagem :)

Gostaria de saber se é possível e como adicionar ícones numa mensagem direta do "printf" no script.

Esse seria o comando em questão:
DISABLE_MESSAGE = "Pressione (ícone) para desativar."

Comecei a uns dias a brincar com a engine e a fazer um projeto "for-fun" para meus amigos e eu curtimos. Adicionei alguns scripts, sendo um deles o Autobattle Command do Yanfly, o que me causou a dúvida.
Minha ideia seria colocar um ícone para ilustrar o botão B do controle XB360/ONE para desativar a batalha automática, mas minha pouca experiência está me dificultando um pouco.

Desde já, agradeço pela atenção.

Depende de como você está mostrando a mensagem. Possui algum código de exemplo de como está tentando fazer? Isso nos ajudaria a te ajudar.

Não tenho certeza se é isso mesmo, mas ai está:

DISABLE_MESSAGE = "Pressione cancelar para desativar."

def refresh
    contents.clear
    draw_background(contents.rect)
    text = YEA::AUTOBATTLE::DISABLE_MESSAGE
    draw_text(contents.rect, text, 1)
  end

A ideia seria aparecer dessa forma:
https://ibb.co/qNdhS3Y

E aqui a script completa que estou usando, caso seja necessário:
https://github.com/Archeia/YEARepo/blob/master/Battle/Command_Autobattle.rb

Código do Yanfly? Fuja para as colinas imediatamente e perca três pontos, mais sorte no próximo turno.


YEA::AUTOBATTLE::DISABLE_MESSAGE, no caso, é onde a mensagem está salva, certo? Testou só colocar a tag de ícones no texto? Da mesma forma que usa nos diálogos comuns.

01/11/2020 às 12:07 #4 Última edição: 01/11/2020 às 12:10 por raspudin32
Tipo assim?

DISABLE_MESSAGE = "Pressione \i(x) para desativar."


Sim, eu tentei dessa forma e a mensagem aparece:

Pressione i(x) para desativar.

*tive que usar parenteses pra representar por que colchetes não aparece aqui


01/11/2020 às 12:44 #5 Última edição: 01/11/2020 às 12:45 por Brandt
Você pode trocar a função Window_Base#draw_text pela Window_Base#draw_text_ex, que renderiza os códigos de escape. O código ficaria assim:

  def refresh
    contents.clear
    draw_background(contents.rect)
    text = YEA::AUTOBATTLE::DISABLE_MESSAGE
    rect = contents.rect
    draw_text_ex(rect.x, rect.y, text)
  end


A desvantagem aí é que essa função não permite centralizar o texto. Se você quiser muito centralizar, vai precisar fazer na mão: calcular o tamanho dos trechos de texto usando a função Window_Base#text_size (que é praticamente um alias pra Bitmap#text_size), adicionar o espaço usado para o ícone e então posicionar o texto de acordo.
~ Masked

Também experimente usar dois \\ ao invés de apenas um \. Via editor não é necessário pois ele adiciona automaticamente (tipo aqui nesta mensagem, por exemplo), mas via código ele interpreta como Sequência de Escape.

Parece que funcionou:

https://ibb.co/BrhcZNp

Quanto ao texto estar desalinhado, no momento não chega a ser um problema.
Preciso ainda estudar um pouco mais da linguagem (e dar uma relembrada em tudo o que aprendi do cursinho de programação) para poder arrumar isso.

Mas até o momento, esse já é um resultado ótimo.
Obrigado pela grande ajuda e pela atenção, e peço desculpas por quaisquer inconveniente que tenha provocado.