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

NY - Gravidade

Iniciado por Naemegashi Yokohuro, 16/02/2014 às 11:10

16/02/2014 às 11:10 Última edição: 16/02/2014 às 12:05 por Naemegashi Yokohuro

Este script cria um mini game que o jogador fica em uma plataforma e só pode se mover para os lados, porem ele mudar sua própria gravidade, trocando de plataforma.

Spoiler
[close]

Todas as instruções para aprender utilizar o script estão nele mesmo.

Não encontrei nenhum Bug, exceto pelo fato do monstro não te matar se você não forçar o contato com ele, mas isso é da própria engine, não do script.

Naemegashi Yokohuro (Criador do Script).
Masked (Esse é o cara, me ajudou a corrigir todo o Script).
Dax (Essa cara também é de mais, me passou vários comandos).
Raizen (Também é o cara, com seu tópico me ajudou a intender os comandos).
Kenyan (Fez o script de movimento apenas nas para os lados)
Davi Felipe ( O cara que me fez ter essa ideia, com o seu sistema de plataforma por eventos).

Se for utilizar o Script, dê créditos a toda essa galera, eu estive sempre perturbando eles pedindo ajuda.






 :rainbow:

Que design lindo pra um tópico de script! É isso que dá um scripter e designer, o Dax é outra prova disso...

O sistema está bem legal, só acho que você poderia diminuir a velocidade com que o personagem cai/sobe, se quiser eu dou uma olhada nisso pra você  :ok:

Até mais
~ Masked

Quero sim Masked, eu não consegui fazer ele se mover com uma velocidade menor, se você fizer isso eu agradeço muito  :wow:

Tá um pouco melhor:

#===========================================================================#
#                    Naemegashi Yokohuro - Gravidade                        #
#---------------------------------------------------------------------------#
#===========================================================================#
#                                Instruções                                 #
#===========================================================================#
#Altere todos os campos na area de configuração, para ajusta-la ao seu game.#
#O personagem ira atrevesar as áreas que são passaveis, e ira andar nas     #
#áreas não passaveis.
#Os monstros tem esse problema para lhe matar mesmo, isso é da propria      #
#engine, não é um erro do script.
#Use os comandos uteis para fazer os check points no mapa.
#De crédito as pessoas citadas nesse script caso use ele.
#Lembre-se de ativar e desativar a switch para ligar e desligar o script.   #
#Caso encontre algum bug, me avise no tópico onde você achou o script.      #
#===========================================================================#
#             Comandos Uteis (Podem ser utilizados em eventos)              #
#===========================================================================#
# $game_player.region_id = 1
# $game_map.passable?(x,y,d)
# Input.trigger?(:C)
# $game_player.move_speed = 2
# $game_player.moving?
# DataManager.save_game($Savid)
# DataManager.load_game($Savid) 
#===========================================================================#
#                                Créditos                                   #
#===========================================================================#
# Naemegashi Yokohuro (Criador do Script).
# Masked (Esse é o cara, me ajudou a corrigir todo o Script).
# Dax (Essa cara também é de mais, me passou varios comandos).
# Raizen (Também é o cara, com seu tópico me ajudou a intender os comandos).
# Kenyan (Fez o script de movimento apenas nas para os lados)
# Davi Felipe ( O cara que me fez ter essa idéia, com o seu sistema de plataforma por eventos).
# Aqui o link dos tópicos citados.
# Davi Felipe >
# http://www.mundorpgmaker.com.br/forum/index.php?topic=120254.msg1075157#msg1075157
# Raizen >
# http://centrorpg.com/rpg-maker-vxace-34/mega-lista-de-comandos-por-scripts-para-seus-sistemas-por-eventos!/
#===========================================================================#
#                           Configure essa parte                            #
#===========================================================================#
$Key = :C                       #Tecla que Altera a Gravidade.
$SwtF = 1                       #Switch que ativa o sistema.
$Savid = 16                     #Id do SaveFile que sera usado de check point.
$SomM = "Blow3"                 #Se reproduzido quando o personagem morre.
$GrapicUp = "$CharUp"           #Gráfico do jogador de cabeça para baixo.
$GrapicDown = "$CharDn"         #Gráfico do jogador normal.
$FaceC = "Face"                 #Face do Jogador.
$MoveRate = 4                  #Dividendo da velocidade de movimento.
#===========================================================================#
#=============================Não mecha abaixo==============================#
#===========================================================================#
class Game_Player < Game_Character 
  $L = 0
  $G = 2
  def initialize
    $gravidade = true
  super
    @vehicle_type = :walk           
    @vehicle_getting_on = false     
    @vehicle_getting_off = false    
    @followers = Game_Followers.new(self)
    @transparent = $data_system.opt_transparent
    @move_controller = 0
    clear_transfer_info
  end
  def update
    last_real_x = @real_x
    last_real_y = @real_y
    last_moving = moving?
    move_by_input
    refresh
    $force = $game_switches[$SwtF]
    super
    gravidade
    update_scroll(last_real_x, last_real_y)
    update_vehicle
    update_nonmoving(last_moving) unless moving?
    @followers.update
  end
#===========================================================================#
#          Esta parte restringe os movimentos apenas para os lados          #
#===========================================================================#
  def move_by_input
    return if !movable? || $game_map.interpreter.running?
    if $game_switches[$SwtF] == true
      if Input.press?(:LEFT) or Input.press?(:X)
        move_straight(4)
      elsif Input.press?(:RIGHT) or Input.press?(:Z)
        move_straight(6)
      end
    elsif
      if Input.press?(:LEFT) or Input.press?(:X)
        move_straight(4)
      else
        if Input.press?(:RIGHT) or Input.press?(:Z)
          move_straight(6)
        else
          if Input.press?(:UP) or Input.press?(:L) 
            move_straight(8)
          else
            if Input.press?(:DOWN) or Input.press?(:Y) 
              move_straight(2)
            end
          end
        end
      end
    end
  end
#===========================================================================#
#                     Esta parte controla todo o sistema                    #
#===========================================================================#
  def gravidade
    if $game_switches[$SwtF] == true
    (gravity_move_diagonal($L ,$G);@move_controller = 0) if @move_controller % $MoveRate == 0
    @move_controller += 1
    if Input.trigger?($Key)
      if !$game_player.passable?($game_player.x, $game_player.y + 1, 2) and $gravidade == true
        $gravidade = false
      else
        if !$game_player.passable?($game_player.x, $game_player.y - 1, 8) and $gravidade == false
        $gravidade = true
        end
      end
    end
    if $gravidade == true
        $G = 2
        $game_party.members[0].set_graphic($GrapicUp, 0, $FaceC, 0)
    elsif $gravidade == false
        $G = 8
        $game_party.members[0].set_graphic($GrapicDown, 0, $FaceC, 0)
    end
    if Input.press?(:LEFT) or Input.press?(:X)
        $L = 4
    else
      if Input.press?(:RIGHT) or Input.press?(:Z)
          $L = 6
      else
        if !Input.press?(:RIGHT) or !Input.press?(:Z) or !Input.press?(:LEFT) or !Input.press?(:X)
            $L = 0
        end
      end
    end
  end
end
def gravity_move_diagonal(horz, vert)
      @move_succeed = diagonal_passable?(x, y, horz, vert)
    if @move_succeed
      @x = $game_map.round_x_with_direction(@x, horz)
      @y = $game_map.round_y_with_direction(@y, vert)
      @real_x = $game_map.x_with_direction(@x, reverse_dir(horz))
      @real_y = $game_map.y_with_direction(@y, reverse_dir(vert))
      increase_steps
    end
    set_direction(horz) if @direction == reverse_dir(horz)
    set_direction(vert) if @direction == reverse_dir(vert)
  end
end
#===========================================================================#
#                 Esta parte controla o sistema de respawn                  #
#===========================================================================#
class Scene_Gameover < Scene_Base
    attr_reader   :followers  
  def start
    super
    play_gameover_music
    fadeout_frozen_graphics
    create_background if $game_switches[$SwtF] == false
  end
  def terminate
    if $game_switches[$SwtF] == false
      super
      dispose_background
    end
  end
  def perform_transition
   Graphics.transition(fadein_speed) if $game_switches[$SwtF] == false
  end
  def play_gameover_music
    Audio.se_play("Audio/SE/" + $SomM, 100, 100) if $game_switches[$SwtF] == true
    if $game_switches[$SwtF] == false
      RPG::BGM.stop
      RPG::BGS.stop
      $data_system.gameover_me.play
    end
  end
  def fadeout_frozen_graphics
    Graphics.transition(fadeout_speed)
    Graphics.freeze if $game_switches[$SwtF] == false
  end
  def create_background
    if $force == false
      @sprite = Sprite.new
      @sprite.bitmap = Cache.system("GameOver")
    end
  end
  def dispose_background
    if $force == false
      @sprite.bitmap.dispose
      @sprite.dispose
    end
  end
  def update
    super
    goto_title if Input.trigger?(:C) and $game_switches[$SwtF] == false
    goto_map if $game_switches[$SwtF] == true
    end
  def fadeout_speed
    if $game_switches[$SwtF] == false
      return 60
    elsif $game_switches[$SwtF] == true    
      return 1
    end
  end
  def fadein_speed
    if $game_switches[$SwtF] == false
      return 120
    elsif $game_switches[$SwtF] == true  
      return 1
    end
  end
  def goto_title
    fadeout_all
    $game_switches[$SwtF] = false
    SceneManager.goto(Scene_Title)
  end
  def goto_map 
    SceneManager.goto(Scene_Map)
    if DataManager.save_file_exists?
      DataManager.load_game($Savid) 
    elsif !DataManager.save_file_exists?
      $game_switches[$SwtF] = true
      DataManager.setup_new_game
      $game_map.autoplay
    end
  end
end


É só mudar o $MoveRate pra mudar a velocidade, quanto maior for, mais devagar ele vai, só tem um problema que é que a animação dele 'voando' fica travada, ele não vai liso, fica parando de tile em tile... vou ver se tem como consertar
~ Masked

Muito obrigado Masked  :rainbow:
Se precisar de alguma coisa é só falar XD

Olá
Desculpe reviver o tópico, mas, o link está quebrado. Poderia reupar o script?