MS - Movimento em 8 Direções

7 Respostas   5095 Visualizações

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

Brandt

Tópico criado em: 14/04/2014 às 23:29 - Última modificação por Masked em 25/04/2014 às 00:12

MS - Movimento em 8 Direções

por Masked

Introdução
Esse é mais outro script Masked Script, eu fiz ele mais par ter algum script para usar junto do MBS - Spritesheet e para testar ele, mas pode ser útil para alguém então decidi postar aqui, no momento ele só funciona no personagem, mas pretendo adicionar movimento diagonal (com mudança de gráfico e tudo) para os eventos (eu sei que tem como, mas ele não muda de gráfico e também não se move na diagonal no movimento aleatório e no seguir/fugir herói, também não tem uma opção "olhar para a diagonal", pretendo adicionar isso) mas só vou conseguir fazê-lo em atualizações futuras

Características
Como o próprio nome do script já diz, ele permite a movimentação em diagonal, além disso, ele permite que se mude o gráfico do personagem quando andando na diagonal e ainda é compatível com o MBS - Spritesheet, leia os comentários (em verde) do script para mais informações

Screenshots
Não perceptível por imagens

Script
Código: [Selecionar]
#==============================================================================
# MS - Movimento em 8 Direções
#------------------------------------------------------------------------------
# por Masked
#------------------------------------------------------------------------------
# O script permite que o jogador se movimente em 8 direções, é compatível com o
# script MBS - Spritesheet, ele usa o spriteset :isometric e :isometric_run
# para mudar o gráfico do personagem
#==============================================================================
module MS_8dir_Config
#==============================================================================
# Configurações
#==============================================================================
 
# Se quiser que o gráfico do ppersonagem seja mudado ao andar na diagonal,deixe
# como true
Change_Graphics = true
 
# O sufixo que o nome do char deve ter para ser usado como char andando na
# diagonal
DiagSFX = "_diag"
 
# Se estiver utilizando o script MBS - Spritesheet e quiser que o gráfico da
# diagonal seja um spriteset, deixe como true e configure um spriteset com
# nome :isometric, se não, deixe como false
MSSprite_DiagChar = true
 
#==============================================================================
# Fim das configurações
#==============================================================================
end
#==============================================================================
# ** Game_Player
#==============================================================================
class Game_Player < Game_Character
  include MS_8dir_Config
  #--------------------------------------------------------------------------
  # * Processamento de movimento através de pressionar tecla
  #--------------------------------------------------------------------------
  def move_by_input
    return if !movable? || $game_map.interpreter.running?
    case Input.dir8
    when 1
      @direction = 2
      move_diagonal(4,2)
    when 2
      move_straight(2)
    when 3
      @direction = 6
      move_diagonal(6,2)
    when 4
      move_straight(4)
    when 6
      move_straight(6)
    when 7
      @direction = 4
      move_diagonal(4,8)
    when 8
      move_straight(8)
    when 9
      @direction = 8
      move_diagonal(6,8)
    end
  end
end
#==============================================================================
# ** Game_Character
#==============================================================================
class Game_Character < Game_CharacterBase
  include MS_8dir_Config
 
  alias ms_mov_diag move_diagonal
 
  def move_diagonal(horz,vert)
    ms_mov_diag(horz,vert)
    spritesheet = defined? MBS_Spritesheet_Config && MSSprite_DiagChar == true
    Change_Graphics && spritesheet ? @pose = :isometric : (@character_name = "#{@character_name.sub(DiagSFX,"")}#{DiagSFX}" if FileTest.file?("#{@character_name.sub(DiagSFX,"")}#{DiagSFX}"))
  end
 
  alias ms_mov_str move_straight
 
  def move_straight(dir,turn_ok=true)
    ms_mov_str(dir,turn_ok)
    spritesheet = defined? MBS_Spritesheet_Config && MSSprite_DiagChar == true
    Change_Graphics && spritesheet ? @pose = :default : @character_name = @character_name.sub(DiagSFX,"")
  end
end

Créditos e Agradecimentos
- a mim, por criar e disponibilizar
~ Masked

Misty

  • Mito
  • *
  • Posts: 1602
  • Ouros: 1837
  • The Last One!~
  • Medalhas Participante do 'Amigo, Estou Aqui!' Participante da 2º Mostra de Arte Steamfórdia Vencedor CRM Awards - Melhor Designer pela 2ª vez Vencedor CRM Awards - Melhor Designer Vencedor do Protótipo Premiado
Resposta 1: 14/04/2014 às 23:32

Sempre que vejo "MS" no título dos seus tópicos me confundo, já que essa sigla também é usada nos meus sistemas.  :=p:

De qualquer forma, louvado seja o senhor, Masked. Não faz ideia de quanto procurei por um sistema de movimentação diagonal onde os gráficos dos personagens fossem alterados, muito obrigado por criar e disponibilizar isso aqui!  :XD:

Toma meu ouro mais do que agradecido!  :blink:
Aquele abraço!

Misty

  • Mito
  • *
  • Posts: 1602
  • Ouros: 1837
  • The Last One!~
  • Medalhas Participante do 'Amigo, Estou Aqui!' Participante da 2º Mostra de Arte Steamfórdia Vencedor CRM Awards - Melhor Designer pela 2ª vez Vencedor CRM Awards - Melhor Designer Vencedor do Protótipo Premiado
Resposta 2: 24/04/2014 às 19:28

Double post, mas por uma boa causa.
Quando finalmente fui testar o script, acontece o seguinte erro ao pressionar alguma tecla, poderia resolver/me ajudar, por gentileza? :XD:

Brandt

Resposta 3: 25/04/2014 às 00:13

Hehe, eu também me confundo às vezes com os seus sistemas xD

Quanto a esse erro, foi besteira minha mesmo, corrigido:
Código: [Selecionar]
#==============================================================================
# MS - Movimento em 8 Direções
#------------------------------------------------------------------------------
# por Masked
#------------------------------------------------------------------------------
# O script permite que o jogador se movimente em 8 direções, é compatível com o
# script MBS - Spritesheet, ele usa o spriteset :isometric e :isometric_run
# para mudar o gráfico do personagem
#==============================================================================
module MS_8dir_Config
#==============================================================================
# Configurações
#==============================================================================
 
# Se quiser que o gráfico do ppersonagem seja mudado ao andar na diagonal,deixe
# como true
Change_Graphics = true
 
# O sufixo que o nome do char deve ter para ser usado como char andando na
# diagonal
DiagSFX = "_diag"
 
# Se estiver utilizando o script MBS - Spritesheet e quiser que o gráfico da
# diagonal seja um spriteset, deixe como true e configure um spriteset com
# nome :isometric, se não, deixe como false
MSSprite_DiagChar = true
 
#==============================================================================
# Fim das configurações
#==============================================================================
end
#==============================================================================
# ** Game_Player
#==============================================================================
class Game_Player < Game_Character
  include MS_8dir_Config
  #--------------------------------------------------------------------------
  # * Processamento de movimento através de pressionar tecla
  #--------------------------------------------------------------------------
  def move_by_input
    return if !movable? || $game_map.interpreter.running?
    case Input.dir8
    when 1
      @direction = 2
      move_diagonal(4,2)
    when 2
      move_straight(2)
    when 3
      @direction = 6
      move_diagonal(6,2)
    when 4
      move_straight(4)
    when 6
      move_straight(6)
    when 7
      @direction = 4
      move_diagonal(4,8)
    when 8
      move_straight(8)
    when 9
      @direction = 8
      move_diagonal(6,8)
    end
  end
end
#==============================================================================
# ** Game_Character
#==============================================================================
class Game_Character < Game_CharacterBase
  include MS_8dir_Config
 
  alias ms_mov_diag move_diagonal
 
  def move_diagonal(horz,vert)
    ms_mov_diag(horz,vert)
    spritesheet = defined? MBS_Spritesheet_Config && MSSprite_DiagChar == true
    Change_Graphics && spritesheet ? @pose = :isometric : (@character_name = "#{@character_name.sub(DiagSFX,"")}#{DiagSFX}" if FileTest.file?("#{@character_name.sub(DiagSFX,"")}#{DiagSFX}"))
  end
 
  alias ms_mov_str move_straight
 
  def move_straight(dir,turn_ok=true)
    ms_mov_str(dir,turn_ok)
    spritesheet = defined? MBS_Spritesheet_Config && MSSprite_DiagChar == true
    Change_Graphics && spritesheet ? @pose = :default : @character_name = @character_name.sub(DiagSFX,"")
  end
end
~ Masked

Uhtred

  • Mito
  • *
  • Posts: 1598
  • Ouros: 2175
  • Even a broken clock is right twice a day.
  • Medalhas Participante da 2º Mostra de Arte Steamfórdia Vencedor da 1º Edição da CRM JAM Vencedor CRM Awards - Melhor Maker Vencedor CRM Awards - Melhor Jogo Completo Vencedor CRM Awards - Melhor Projeto Participantes do Maps Together 2 Vencedor do Protótipo Premiado Vencedores das edições do Concurso Projeto Rickas!
Resposta 4: 28/05/2014 às 12:14

Não funcionou aqui Masked... na real até funcionou, ele anda nas 8 direções de boa, mas não troca o gráfico do carinha.

Não to usando o MBS - Spritesheet então deixei como false na configuração dele, deixei o sufixo "_diag" e importei o arquivo do char mas não troca o gráfico, estou usando arquivo de char próprio com o prefixo "$" no arquivo.

Brandt

Resposta 5: 29/05/2014 às 19:49

Ah, foi besteira minha, tente com esse:
Código: [Selecionar]
#==============================================================================
# MS - Movimento em 8 Direções
#------------------------------------------------------------------------------
# por Masked
#------------------------------------------------------------------------------
# O script permite que o jogador se movimente em 8 direções, é compatível com o
# script MBS - Spritesheet, ele usa o spriteset :isometric e :isometric_run
# para mudar o gráfico do personagem
#==============================================================================
module MS_8dir_Config
#==============================================================================
# Configurações
#==============================================================================
 
# Se quiser que o gráfico do ppersonagem seja mudado ao andar na diagonal,deixe
# como true
Change_Graphics = true
 
# O sufixo que o nome do char deve ter para ser usado como char andando na
# diagonal
DiagSFX = "_diag"
 
#==============================================================================
# Fim das configurações
#==============================================================================
end
#==============================================================================
# ** Game_Player
#==============================================================================
class Game_Player < Game_Character
  include MS_8dir_Config
  #--------------------------------------------------------------------------
  # * Processamento de movimento através de pressionar tecla
  #--------------------------------------------------------------------------
  def move_by_input
    @original_charname ||= @character_name.sub(DiagSFX,"")
    return if !movable? || $game_map.interpreter.running?
    case Input.dir8
    when 1
      @direction = 2
      move_diagonal(4,2)
      @character_name = @original_charname + DiagSFX
    when 2
      move_straight(2)
      @character_name = @original_charname
    when 3
      @direction = 6
      move_diagonal(6,2)
      @character_name = @original_charname + DiagSFX
    when 4
      move_straight(4)
      @character_name = @original_charname
    when 6
      move_straight(6)
      @character_name = @original_charname
    when 7
      @direction = 4
      move_diagonal(4,8)
      @character_name = @original_charname + DiagSFX
    when 8
      move_straight(8)
      @character_name = @original_charname
    when 9
      @direction = 8
      move_diagonal(6,8)
      @character_name = @original_charname + DiagSFX
    end
  end
end
#==============================================================================
# ** Game_Character
#==============================================================================
class Game_Character < Game_CharacterBase
  include MS_8dir_Config
 
  alias ms_mov_diag move_diagonal
 
  def move_diagonal(horz,vert)
    ms_mov_diag(horz,vert)
    character_name = @character_name.sub(DiagSFX,"") + DiagSFX
  end
 
  alias ms_mov_str move_straight
 
  def move_straight(dir,turn_ok=true)
    ms_mov_str(dir,turn_ok)
    Change_Graphics && $imported[:mbs_spritesheet] ? @pose = :default : @character_name = @character_name.sub(DiagSFX,"")
  end
end
~ Masked

Uhtred

  • Mito
  • *
  • Posts: 1598
  • Ouros: 2175
  • Even a broken clock is right twice a day.
  • Medalhas Participante da 2º Mostra de Arte Steamfórdia Vencedor da 1º Edição da CRM JAM Vencedor CRM Awards - Melhor Maker Vencedor CRM Awards - Melhor Jogo Completo Vencedor CRM Awards - Melhor Projeto Participantes do Maps Together 2 Vencedor do Protótipo Premiado Vencedores das edições do Concurso Projeto Rickas!
Resposta 6: 30/05/2014 às 11:28

Opa, agora sim funcionando direitinho!

Valeu Masked!

vitorano

  • *
  • Posts: 254
  • Ouros: 106
Resposta 7: 18/12/2014 às 17:42

1000 disculpas por reviver o tópico, mas no meu caso, meus chars ja usam sufixo ( "[FR8]"do Multiframe do Raizen) como eu faço pra que os meus chars funcionem ?