Novato com problemas...

2 Respostas   110 Visualizações

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

Nunnu

  • *
  • Posts: 39
  • Ouros: 2
  • cala boca
Tópico criado em: 04/10/2016 às 23:02

Estou querendo incluir um método de aumentar velocidade dos personagens enquanto fazem alguns comandos, mas que depois que terminam, suas velocidades voltem ao normal, o código que vai mudar isso é este:

Código: [Selecionar]
  def fast_formation
    if gathering? && @pressed
      @move_speed = 5
    else
      @move_speed = 4
    end
  end

Os comando são basicamente uma reunião do grupo de heróis (gather), e logo depois se posicionam em uma determinada formação. Quero que eles façam isso mais rapidamente, por uma questão de estética.

Esse "@move_speed" acima, quando incluo no script, não funciona, pois se trata da classe Game_Followers, que não contém esse comando. Tentei incluir na classe Game_Player, mas não consigo ligar as duas classes de um jeito que faça o script funcionar corretamente.

Se puderem me ajudar agradeço, quero apenas que eles formem mais velozmente, tudo o que estiver errado, podem corrigir. Talvez tenha algo errado com esse código de cima. O código da formação é esse (créditos ào tonyhart pela ajuda no código):

Código: [Selecionar]
class Game_Followers
 
  alias prev_initialize initialize
  def initialize(leader)
    prev_initialize(leader)
    @pressed = false
    fast_formation = true
  end

  alias prev_update update
  def update
    prev_update
    if Input.trigger?(:X)
      gather
      @pressed = true
    end
    if !gathering? && !moving? && @pressed
      newfollow
    end
  end
 
  def newfollow
    case $game_player.direction
    when 2
      self[0].move_straight(4)
      self[0].set_direction(2)

      self[1].move_straight(6)
      self[1].set_direction(2)
     
      self[2].move_straight(8)
      self[2].set_direction(2)

    when 4
      self[0].move_straight(8)
      self[0].set_direction(4)
     
      self[1].move_straight(2)
      self[1].set_direction(4)
     
      self[2].move_straight(6)
      self[2].set_direction(4)

    when 6
      self[0].move_straight(8)
      self[0].set_direction(6)
     
      self[1].move_straight(2)
      self[1].set_direction(6)
     
      self[2].move_straight(4)
      self[2].set_direction(6)

    when 8
      self[0].move_straight(4)
      self[0].set_direction(8)
     
      self[1].move_straight(6)
      self[1].set_direction(8)

      self[2].move_straight(2)
      self[2].set_direction(8)
    end
   
    @pressed = false

  end
end
Feito por:   King Gerar          ManecBR3
                   
                   (um gato)            (outro gato)

TonyHart

  • *
  • Posts: 144
  • Ouros: 126
  • Born in 95 to die
Resposta 1: 05/10/2016 às 00:34

Você pode acrescentar o seguinte código:

Código: [Selecionar]
alias prev_update update
  def update
    prev_update
    if Input.trigger?(:X)
      gather
      @pressed = true
    end
   
    #Acrescentar
    self[0].update if @pressed
    self[1].update if @pressed
    self[2].update if @pressed
   
    if !gathering? && !moving? && @pressed
      newfollow
    end
  end

Ao chamar o update mais uma vez, vc fará que os followers se movam 2x mais rapidos.
Born in 95 to die

Nunnu

  • *
  • Posts: 39
  • Ouros: 2
  • cala boca
Resposta 2: 05/10/2016 às 01:59

@tonyhart

Wow, muito útil, não sabia dessa, essa solução é bem mais fácil xD

Muito obrigado mais uma vez, só vou ver agora se consigo deixar rápido assim na formação também.

Até mais.
Feito por:   King Gerar          ManecBR3
                   
                   (um gato)            (outro gato)