🤔 Para Refletir :
"Não julgue um jogo pelo Title!"
- FL

Fechar dialogo depois de x segundos

Estado
Tópico fechado. Não é possível fazer postagens nela.

Hector MG. Barbossa

Cidadão
Membro
Membro
Juntou-se
24 de Junho de 2015
Postagens
121
Bravecoins
0
Pessoal preciso resolver um problema. (RPG Maker MV)

Imaginem que um contador de 10 segundos é executado e ao final desses 10 segundos o sistema realiza uma ação qualquer. Antes que esse tempo acabe, o jogador clica em algum evento que fez com que apareça uma caixa de dialogo com um texto qualquer... O jogador não clica para finalizar o dialogo e a caixa permanece aberta.

Quando esses 10 segundos chegam ao fim, a ação de termino desses 10 segundos acontece, MAS!!!!... Essa caixa de texto aberta não poderia estar ali, teria que ser fechada automaticamente depois desse tempo para então a ação seguir.

Como eu forço o fechamento de uma caixa de texto com o texto dentro ao final desse tempo?

Estou usando o $gameMessage.clear(); só que ele fecha a caixa mas não apaga o texto contido dentro dela. Como fazer para apagar esse texto junto com a caixa?
 
Bem...Você pode tentar usar o comando da mensagem pra esperar 1s ( \| ) 10 vezes e usar o comando pra fechar a caixa de diálogo  ( \^ ) no texto.
 
Exatamente como o colega acima falou, não precisa sscript nem nada.
Porém, você deve ter cuidado, se texto entre o game já é chato (para a maioria) e causa desistência, imagine texto que necessita esperar tempo para passar?
 
O King Gear vou o que chegou o mais próximo.

Pessoal, não entenderam a situação.
Não da pra usar ( \| ) porque é uma caixa de dialogo que é aberta quando o personagem clica em qualquer lugar do jogo (durante o processo de 10 segundos). O que estou querendo explicar é que ao final de 10 segundos acontece a morte do cara, se tiver uma caixa de dialogo aberta a mensagem dessa caixa não é fechada e ela somente some quando o comando de game over é finalizado, o que não serve pra mim.

Quando o evento de 10 segundos termina ocorre a chamada de alguns outros eventos como imagens, sons, etc até o comando de game over ser executado. Se tiver uma caixa de dialogo aberta o texto dessa mensagem não some dali ficando encima de todo e qualquer evento que aparecer... Preciso tirar esse texto dali.

King Gear, ja tentei usar esse esquema só que não acontece nada, a mensagem persiste no mesmo local.

"Acho que o código abaixo "limpa" a janela de mensagem."
Tambem achei mas o engraçado é que não acontece nada.

Em meados, acho que consigo explicar mais simples...

Sabe quando a gente clica em algum lugar e aparece uma caixa de texto com uma mensagem? A gente clica novamente para que o texto seja fechado correto? Preciso do codigo desse segundo clique, o que fecha a caixa de texto...

Vejam o video de demonstração do problema
[youtube]https://youtu.be/M2zeoXJ1W9g[/youtube]
 
Realmente, vi aqui e o comando que passei somente adiciona mais o texto ao já existente na
janela. Tenta:

Código:
$gameMessage._texts = [];

Já a função que é executada para fechar a janela de mensagem é a terminateMessage, da
Window_Message.
 
King Gerar comentou:
Realmente, vi aqui e o comando que passei somente adiciona mais o texto ao já existente na
janela. Tenta:

Código:
$gameMessage._texts = [];

Já a função que é executada para fechar a janela de mensagem é a terminateMessage, da
Window_Message.
Usei este código mas não aconteceu nada. Estranho...
 
Pelo que vi resolve só com o input automático  \^ no final do texto, já tentou??
Parece que vc está usando algum script que altere as mensagens, poque não faz sentido o texto ser finalizado, a janela fechar e o texto não ser apagado. Nem deveria ser possivel eventos acontecerem antes do texto ser finalizado.
manda um print do evento nas linhas onde aparece o texto, há a contagem e as imagens aparecem

 
Huh, isso nem deve precisar de script dependendo da forma como estiver settado o evento.

Dê uma olhada nos comandos de mensagem (tô sem o RM aqui para conferir, sorry).
Um dos comandos é "wait 1 second", acho que é \., e tem um outro que é para não aguardar input após o texto (acho que é \^).

Aí seria só colocar algo tipo: \.\.\.\.\.\.\.\.\.\^ no final da mensagem.
 
Entendo agora que não dá pra usar os comandos de mensagem.

Ainda assim tem algo extremamente estranho aí
vamos por parte. Esse contador é algo feito por script?
Você está usando algum script de fazer eventos ignorarem as mensagens?
Porque normalmente, esse evento que mostra imagens e gameover, não deveria acontecer até que o jogador tenha finalizado a mensagem, é impossível a menos que algo esteja realmente ignorando a espera natural que os acontecimentos dos eventos sempre esperam.

Tenta usar isso aqui no script call pra ver se vai.
É o padrão que econtrei no plugin das SCenes

Window_Message.prototype.windowWidth = function() {
    return Graphics.boxWidth;
};

Window_Message.prototype.windowHeight = function() {
    return this.fittingHeight(this.numVisibleRows());
};

Window_Message.prototype.clearFlags = function() {
    this._showFast = false;
    this._lineShowFast = false;
    this._pauseSkip = false;
};

 
Ludovic comentou:
Entendo agora que não dá pra usar os comandos de mensagem.

Ainda assim tem algo extremamente estranho aí
vamos por parte. Esse contador é algo feito por script?
Você está usando algum script de fazer eventos ignorarem as mensagens?
Porque normalmente, esse evento que mostra imagens e gameover, não deveria acontecer até que o jogador tenha finalizado a mensagem, é impossível a menos que algo esteja realmente ignorando a espera natural que os acontecimentos dos eventos sempre esperam.

Tenta usar isso aqui no script call pra ver se vai.
É o padrão que econtrei no plugin das SCenes

Window_Message.prototype.windowWidth = function() {
    return Graphics.boxWidth;
};

Window_Message.prototype.windowHeight = function() {
    return this.fittingHeight(this.numVisibleRows());
};

Window_Message.prototype.clearFlags = function() {
    this._showFast = false;
    this._lineShowFast = false;
    this._pauseSkip = false;
};

É tudo feito por eventos com exceção da chamada $gameMessage.clear(); logo no inicio do final da contagem.

Esse codigo ai faz com que a caixa de mensagem aberta seja ignorada e o restante do evento seja completado, assim como mostro nos videos, ele ignora a caixa aberta e continua. Se tirar ele realmente o evento para mas não no inicio do código, vai parar no final no momento em que deveria entrar outro evento comum, o de mostrar o sangue e a mão na tela pra depois chamar o game over.

Vou tentar esse codigo daqui a pouco ok.

Edit--------------

Coloquei o código... Não aconteceu nada o.0.
 
Estado
Tópico fechado. Não é possível fazer postagens nela.
Voltar
Topo Inferior