colocar o menu de escolhas no meio da tela(rpg maker vx ace)

12 Respostas   575 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

Candy Floos

  • *
  • Posts: 58
  • Ouros: 4
Tópico criado em: 31/10/2018 às 19:14 - Última modificação por Sotelie em 04/11/2018 às 04:33

olá , e se você já percebeu eu ultimamente eu to aparecendo muito site perguntado muitas
perguntas mais é que esse site tá me ajudando muito eu consegui muitas coisas tipo fazer
um sistema de perseguição e usar itens então obrigada.



bom eu estou com uma pequena dúvida, uma coisa tem me incomodado
no menu de escolhas o fato das escolhas aparecerem no canto da tela,
além de isso ser feio na minha visão e ficar chato para mim e o jogador, eu
queria saber como colocar o menu de escolhas no meio da tela tipo the witchs house
castelo mogeko etc. Eu queria saber se tem um script também ou como mudar
e qual posição eu tenho que colocar  para o menu ficar no meio da tela.

bjs


rpg maker vx ace

Geraldo de Rívia

  • Mito
  • *
  • Posts: 4452
  • Ouros: 3887
  • O vento está sibilando.
  • Medalhas Vencedor do Protótipo Premiado Participantes do Maps Together 2
Resposta 1: 31/10/2018 às 22:13

olá , e se você já percebeu eu ultimamente eu to aparecendo muito site perguntado muitas
perguntas mais é que esse site tá me ajudando muito eu consegui muitas coisas tipo fazer
um sistema de perseguição e usar itens então obrigada. [...]
Que bom que está encontrando um suporte que atenda o que precisa. Ao menos para mim, e acredito que para toda a comunidade, é gratificante ver o pessoal saciando dúvidas aqui, seguindo com seus projetos e melhorando suas habilidades.

Enfim, quanto à sua dúvida, o código que cuida da janela de escolhas é o Window_ChoiceList. Dentro desse código há o método update_placement (segue observando no seu projeto), que como o comentário acima dele fala, ele é responsável pela atualização da posição da janela

Código: [Selecionar]
#--------------------------------------------------------------------------
  # * Atualização da posição da janela
  #--------------------------------------------------------------------------
  def update_placement
    self.width = [max_choice_width + 12, 96].max + padding * 2
    self.width = [width, Graphics.width].min
    self.height = fitting_height($game_message.choices.size)
    self.x = Graphics.width - width
    if @message_window.y >= Graphics.height / 2
      self.y = @message_window.y - height
    else
      self.y = @message_window.y + @message_window.height
    end
  end

A coordenada horizontal da janela é definida ali na linha "self.x = Graphics.width - width" onde o código fala que, o X da janela (self.x) é igual à largura da janela do jogo (Graphics.width) menos a largura da janela de escolhas (width) que está sendo calculada nas linhas acima. Isso faz com que a janela fica no canto direito da tela. Tu pode alterar aí para ir testando, substituindo essa linha por "self.x = 100", por exemplo, para tu ver como essa mudança impacta ali.
A posição vertical da janela é controlada por uma condição, pois varia conforme a posição da janela de mensagens. Tu também pode substituir essa condição, apagando tudo do "if" ao primeiro "end" e colocando "self.y = 250", por exemplo, no lugar. Mas sempre salve a parte que modificou em um canto, para depois voltar o código ao normal. O ideal é fazer essas mudanças em um código separado.

Tu já sabe onde queria deixar essa janela? Te ajudo a montar o código.

Candy Floos

  • *
  • Posts: 58
  • Ouros: 4
Resposta 2: 01/11/2018 às 01:48

olá muito obrigada mesmo , e  me desculpe(desculpa mesmo) por só responder agora, bom se não for
incomodo e não te atrapalhar  eu queria o menu de escolhas bem na frente da tela sabe como the witch's house
,castelo mogeko etc. Muito obrigada mesmo ficarei grata

Geraldo de Rívia

  • Mito
  • *
  • Posts: 4452
  • Ouros: 3887
  • O vento está sibilando.
  • Medalhas Vencedor do Protótipo Premiado Participantes do Maps Together 2
Resposta 3: 01/11/2018 às 05:51

[...] eu queria o menu de escolhas bem na frente da tela sabe como the witch's house
,castelo mogeko etc. [...]
Não sei, nunca joguei esses jogos. Eles têm a janela de escolhas centralizadas na tela?

Speed

  • Veterano
  • *
  • Posts: 744
  • Ouros: 407
  • você consegue!
  • Medalhas Participante da 2º Mostra de Arte Steamfórdia
Resposta 4: 01/11/2018 às 08:13 - Última modificação por Speed em 01/11/2018 às 08:42

 Oi
 Gostaria de oferecer uma ideia. Você poderia fazer por eventos, ao invés de alterar a posição da janela das escolhas, utilizando imagens e condições. É bem simples de ser feito e você tem a total liberdade de escolher, dentro dos 544x416, onde que a imagem vai ficar posicionada.
 Vou fazer algo como exemplo pra você estudar e fazer o seu com as modificações necessárias.


 Edit: Fiz aqui um sistema. Deixei o que a maioria das coisas fazem explicadas em comentários nos eventos. É bem básico e com um pouquinho de empenho você consegue modificar bem fácil.
 Para você abrir o menu de escolhas pressione a tecla "A".
 https://mega.nz/#!eINAQaAD!NJOWxc_hoS_PV6TCkTt99SEVxrtHZ2P5iS3rvy_S1h4

 Bons estudos.  :XD:

Stella Artois

  • Veterano
  • *
  • Posts: 960
  • Ouros: 1018
  • Devagar conquistaremos o mundo, mas conquistaremos
  • Equipamentos "Creio que nenhum dos modelos que tenho se iguala em importância à este. Deve ter sido o modelo mais fabricado até hoje!" "Um dos melhores trabalhos dos povos das terras da noite é esse metal, que na escuridão mais gelada aquece o corpo que protege." "Se prefere andar à noite vai precisar de uma dessas. Permite golpes silenciosos e se camufla fácil, fácil na escuridão." "Pode parecer brega ter uma engrenagem no pescoço, mas saiba que a peça nesse colar é ungida com poderes ancestrais. Grrruuuuhhhh!" "Esta peça foi forjada pelo grande ferreiro Dimitry, há algumas eras atrás. Diz-se a lenda que, não importa quantas vezes caia, este escudo sempre levantará seu portador.
  • Medalhas Participante do 'Amigo, Estou Aqui!' Participante da 2º Mostra de Arte Steamfórdia Vencedor do Protótipo Premiado
Resposta 5: 01/11/2018 às 08:35 - Última modificação por ~Vici em 01/11/2018 às 08:37

Talvez este possa ser útil.
Lembrando que as dicas dos membros acima são bem úteis e melhores pois não dependerá de scripts de terceiros além de aprender a manusear melhor a ferramenta. o/

Ty Corvo

Candy Floos

  • *
  • Posts: 58
  • Ouros: 4
Resposta 6: 01/11/2018 às 20:34 - Última modificação por ~Vici em 01/11/2018 às 21:37

Não sei, nunca joguei esses jogos. Eles têm a janela de escolhas centralizadas na tela?
  sim



Oi
 Gostaria de oferecer uma ideia. Você poderia fazer por eventos, ao invés de alterar a posição da janela das escolhas, utilizando imagens e condições. É bem simples de ser feito e você tem a total liberdade de escolher, dentro dos 544x416, onde que a imagem vai ficar posicionada.
 Vou fazer algo como exemplo pra você estudar e fazer o seu com as modificações necessárias.


 Edit: Fiz aqui um sistema. Deixei o que a maioria das coisas fazem explicadas em comentários nos eventos. É bem básico e com um pouquinho de empenho você consegue modificar bem fácil.
 Para você abrir o menu de escolhas pressione a tecla "A".
 https://mega.nz/#!eINAQaAD!NJOWxc_hoS_PV6TCkTt99SEVxrtHZ2P5iS3rvy_S1h4

 Bons estudos.  :XD:


olá bom sistema e parabéns e muito obrigada mais não é oque eu quero especificamente ,
desculpe continue com o seu maravilhoso trabalho.

Geraldo de Rívia

  • Mito
  • *
  • Posts: 4452
  • Ouros: 3887
  • O vento está sibilando.
  • Medalhas Vencedor do Protótipo Premiado Participantes do Maps Together 2
Resposta 7: 02/11/2018 às 06:06

Então tu vai fazer o seguinte: procure pelo código Window_ChoiceList que citei anteriormente em seu projeto. Nele, copie a chamada da classe e o método def update_placement que, como também falei anteriormente, é o responsável pela posição da janela de escolhas. Daí crie um novo código no local apropriado e é nele que faremos as modificações. O código até então deverá ficar assim:

Código: [Selecionar]
class Window_ChoiceList < Window_Command
  def update_placement
    self.width = [max_choice_width + 12, 96].max + padding * 2
    self.width = [width, Graphics.width].min
    self.height = fitting_height($game_message.choices.size)
    self.x = Graphics.width - width
    if @message_window.y >= Graphics.height / 2
      self.y = @message_window.y - height
    else
      self.y = @message_window.y + @message_window.height
    end
  end

Após a chamada do método, as três primeiras linhas definem a largura (width) e a altura (height) da janela. Nessas linhas não mexeremos. As linhas que iniciam com o "self.x" e a condição do "if" ao primeiro "end" são as que controlam o posicionamento da janela, portanto é aí que mexeremos.

Para alterar a coordenada X da janela é bem fácil. Até agora, o código subtrai a largura da janela de escolhas da largura da janela do jogo (tela), deixando as escolhas no canto direito. Se dividirmos o valor dessa subtração por 2 a janela ficará no meio da tela, mas devemos nos atentar a deixar a subtração entre parênteses, para que ela aconteça primeiro. Dessa forma, a linha "self.x = Graphics.width - width" deverá ficar assim:

Código: [Selecionar]
self.x = (Graphics.width - width) / 2
Agora quanto à coordenada Y, a condição verifica onde a janela de mensagens está para colocar a janela de escolhas próxima a ela. Não precisaremos disso, vez que a janela de escolhas ficará sempre centralizada, portanto podemos apagar do "if" ao primeiro "end" e no lugar montar uma equação similar à que fizemos anteriormente, porém para a variável "self.y":

Código: [Selecionar]
self.y = (Graphics.width - width) / 2
Porém, "Graphics.width" é a variável que guarda a largura da tela, e como estamos calculando o Y da janela, precisamos da altura. Para obter a altura é simples, é só substituir o "Graphics.width" por "Graphics.height". A variável "width" se refere à largura da janela de mensagens e precisamos da altura para esse cálculo. Olhando nas linhas anteriores, vemos que a variável que guarda a altura da janela é a "height". Substituindo na equação para as variáveis corretas, teremos:

Código: [Selecionar]
self.y = (Graphics.height - height) / 2
E por fim, mas não menos importante, copiamos a chamada da classe, mas não copiamos o fechamento dela, que ficava lá no final do código Window_ChoiceList. Então, na última linha do código, adicione "end".

Testa aí e vê se consegue desenvolver esse código e se o resultado é o que deseja. Caso dê algum erro ou não fique como queria, poste uma imagem do erro e/ou o seu código.

Candy Floos

  • *
  • Posts: 58
  • Ouros: 4
Resposta 8: 02/11/2018 às 14:22

eu tentei mais deu erro então eu tive que arrumar o código e voltou a normal ,eu tentei
de novo e a janela mudou de local  só que foi para esquerda , poderia mandar uma imagem
para facilitar.

Geraldo de Rívia

  • Mito
  • *
  • Posts: 4452
  • Ouros: 3887
  • O vento está sibilando.
  • Medalhas Vencedor do Protótipo Premiado Participantes do Maps Together 2
Resposta 9: 02/11/2018 às 18:09

Posta como ficou teu código e te ajudo a consertar ele. Se conseguiu mover a janela para a esquerda é porque já fez alguma coisa correta nele.

Candy Floos

  • *
  • Posts: 58
  • Ouros: 4
Resposta 10: 02/11/2018 às 19:12

eu apenas troquei width  por height eu basicamente troquei self.y = (Graphics.width - width) / 2 para
self.y = (Graphics.height - height) / 2 , não é mais fácil você liberar uma imagem  de como se faz ???
É claro se quiser

Syureri

Resposta 11: 02/11/2018 às 19:27

Coloque acima de main:

Código: [Selecionar]
class Window_ChoiceList < Window_Command
 
  alias :m_upd_plcmnt :update_placement
  def update_placement
    m_upd_plcmnt
    self.x = Graphics.width * 0.5 - self.width * 0.5
    self.y = Graphics.height * 0.5 - self.height * 0.5
  end
 
end

Se quiser que a posição y seja automática como o padrão, remova a linha 7.

Candy Floos

  • *
  • Posts: 58
  • Ouros: 4
Resposta 12: 03/11/2018 às 19:09

Que bom que está encontrando um suporte que atenda o que precisa. Ao menos para mim, e acredito que para toda a comunidade, é gratificante ver o pessoal saciando dúvidas aqui, seguindo com seus projetos e melhorando suas habilidades.

Enfim, quanto à sua dúvida, o código que cuida da janela de escolhas é o Window_ChoiceList. Dentro desse código há o método update_placement (segue observando no seu projeto), que como o comentário acima dele fala, ele é responsável pela atualização da posição da janela

Código: [Selecionar]
#--------------------------------------------------------------------------
  # * Atualização da posição da janela
  #--------------------------------------------------------------------------
  def update_placement
    self.width = [max_choice_width + 12, 96].max + padding * 2
    self.width = [width, Graphics.width].min
    self.height = fitting_height($game_message.choices.size)
    self.x = Graphics.width - width
    if @message_window.y >= Graphics.height / 2
      self.y = @message_window.y - height
    else
      self.y = @message_window.y + @message_window.height
    end
  end

A coordenada horizontal da janela é definida ali na linha "self.x = Graphics.width - width" onde o código fala que, o X da janela (self.x) é igual à largura da janela do jogo (Graphics.width) menos a largura da janela de escolhas (width) que está sendo calculada nas linhas acima. Isso faz com que a janela fica no canto direito da tela. Tu pode alterar aí para ir testando, substituindo essa linha por "self.x = 100", por exemplo, para tu ver como essa mudança impacta ali.
A posição vertical da janela é controlada por uma condição, pois varia conforme a posição da janela de mensagens. Tu também pode substituir essa condição, apagando tudo do "if" ao primeiro "end" e colocando "self.y = 250", por exemplo, no lugar. Mas sempre salve a parte que modificou em um canto, para depois voltar o código ao normal. O ideal é fazer essas mudanças em um código separado.

Tu já sabe onde queria deixar essa janela? Te ajudo a montar o código.




olá sobre o menu de escolhas eu fiquei vasculhando e lendo varias vezes  o seu comentário
até que descobri e ficou certinho do jeito que eu queria  muito obrigada não sei como agaredeçer
você valeu mesmo