RMRK is retiring.
Server is paid up for the rest of 2026, but the forum may go after that. See here for more information. Please archive or save anything you would like to keep before 2027.
Main Menu
  • Welcome to The RPG Maker Resource Kit.

Advance Moving Script

Started by Leon Oswald, March 02, 2007, 06:33:22 AM

0 Members and 1 Guest are viewing this topic.

Leon Oswald

Advance Moving script
- Can Run (pres Z button)
- Can moving to diagonal pozitioin
Dash ver. 1.2[/b][/font]
[spoiler]#==============================================================================
#Advance Moving script - Dash ver. 1.2
#Script by Kurama
#http://www.anime.tym.sk/
#------------------------------------------------------------------------------
# Graphics/Characters
# Scene_Dash
# 001-Fighter01_dash
#==============================================================================

class Game_Player < Game_Character

  SPEED_DASH = 5   # ??????????
  SPEED_NORMAL = 4   # ???????

  # ?????????????????Input::(hotkey)
  #??????????????????????????
  KEY_DASH = Input::A

  # "_dash"??????????????????????? true:?? / false:??? ?
  NO_FILE_DASH = true
 
  # ????????????????? true:????? / false:???? ?
  CHANGE_IN_MOVING = false
 
  # ??????????????ID
  # ?????????????????????????????ON???????
  #  ???????????????
  NO_DASH_SWITCH = 999

end

#==============================================================================
# ? Game_Player
#==============================================================================

class Game_Player < Game_Character

  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  alias dash_update update
  def update
    # ?????????????????
    # ???????????????????????
    unless $game_system.map_interpreter.running? or
           @move_route_forcing or $game_temp.message_window_showing
      if !($game_switches[NO_DASH_SWITCH])
        # ????
        if Input.press?(KEY_DASH) and (CHANGE_IN_MOVING == false or Input.dir8 != 0)
          if (dash_graphic_exist?($game_party.actors[0]) or NO_FILE_DASH)
            # ??????????????
            if @move_speed != SPEED_DASH
              @move_speed = SPEED_DASH
              @dash_on = true
              $game_player.refresh
            end
          end
        elsif @dash_on == nil or @dash_on
            @move_speed = SPEED_NORMAL
            @dash_on = nil
            $game_player.refresh
        end
      end
    end
    dash_update
  end
  #--------------------------------------------------------------------------
  # ? ??????????????????
  #--------------------------------------------------------------------------
  def dash_graphic_exist?(actor)   
    # ???????
    begin
      RPG::Cache.character(actor.character_name.to_s + "_dash", actor.character_hue)
    rescue
      return false
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  alias dash_refresh refresh
  def refresh
    dash_refresh
    # ??????? 0 ??????
    if $game_party.actors.size != 0
      actor = $game_party.actors[0]
      # ??????????????????
      if @dash_on and dash_graphic_exist?(actor)
        fileplus = "_dash"
      else
        fileplus = ""
      end
      @character_name = actor.character_name + fileplus
      @character_hue = actor.character_hue
    end
  end
end
[/spoiler]
Quarter ver.1.0
[spoiler]#==============================================================================
#Advance Moving script - Quarter ver. 1.0
#Script by Kurama
#http://www.anime.tym.sk/
#------------------------------------------------------------------------------
# Graphics/Characters
# Scene_Quarter
# 001-Fighter01_quarter
#==============================================================================

#==============================================================================
# ? Game_Player
#==============================================================================

class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  alias update_para_quarter update
  def update
    update_para_quarter
    unless moving? or $game_system.map_interpreter.running? or
           @move_route_forcing or $game_temp.message_window_showing
      # ???????????????????????????
      case Input.dir8
      when 1  # ?????
        move_lower_left
      when 3  # ?????
        move_lower_right
      when 7  # ?????
        move_upper_left
      when 9  # ?????
        move_upper_right
      end
    end
  end
end

#==============================================================================
# ? Sprite_Character
#==============================================================================

class Sprite_Character < RPG::Sprite
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  alias update_para_quarter update
  def update
    update_para_quarter
    if @tile_id == 0
      if (@character.direction - 2) % 2 == 1
        # ????????????
        if quarter_graphic_exist?(@character)
          # ????????
          if character.dash_on and dash_quarter_graphic_exist?(@character)
            @character_name = @character.character_name + "_dash_quarter"
          else
            @character_name = @character.character_name + "_quarter"
          end
          self.bitmap = RPG::Cache.character(@character_name,
            @character.character_hue)
          # ?????
          case @character.direction
            when 1
              n = 0
            when 3
              n = 2
            when 7
              n = 1
            when 9
              n = 3
          end
        else
          @character.direction = @character.sub_direction
          # ???????????????
          n = (@character.direction - 2) / 2
        end
        # ?????????
        sx = @character.pattern * @cw
        sy = n * @ch
        self.src_rect.set(sx, sy, @cw, @ch)
      else
        self.bitmap = RPG::Cache.character(@character.character_name,
          @character.character_hue)
        # ?????????
        sx = @character.pattern * @cw
        sy = (@character.direction - 2) / 2 * @ch
        self.src_rect.set(sx, sy, @cw, @ch)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ? ????????????
  #--------------------------------------------------------------------------
  def quarter_graphic_exist?(character)
    # ???????
    begin
      RPG::Cache.character(character.character_name.to_s + "_quarter", character.character_hue)
    rescue
      return false
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ? ????????????????
  #--------------------------------------------------------------------------
  def dash_quarter_graphic_exist?(character)
    # ???????
    begin
      RPG::Cache.character(character.character_name.to_s + "_dash_quarter", character.character_hue)
    rescue
      return false
    end
    return true
  end
end

#==============================================================================
# ? Game_Character
#==============================================================================

class Game_Character
  #--------------------------------------------------------------------------
  # ? ??????????
  #--------------------------------------------------------------------------
  attr_accessor   :direction        # ??
  attr_accessor   :sub_direction    # ???????????????
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  def move_lower_left
    # ?????????
    unless @direction_fix
      @sub_direction = @direction
      @direction = 1
      # ?????????????????????????
      @sub_direction = (@sub_direction == 6 ? 4 : @sub_direction == 8 ? 2 : @sub_direction)
    end
    # ??????? ?????????????????
    if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 4)) or
       (passable?(@x, @y, 4) and passable?(@x - 1, @y, 2))
      # ?????
      @x -= 1
      @y += 1
      # ????
      increase_steps
    end
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  def move_lower_right
    # ?????????
    unless @direction_fix
      @sub_direction = @direction
      @direction = 3
      # ?????????????????????????
      @sub_direction = (@sub_direction == 4 ? 6 : @sub_direction == 8 ? 2 : @sub_direction)
    end
    # ??????? ?????????????????
    if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 6)) or
       (passable?(@x, @y, 6) and passable?(@x + 1, @y, 2))
      # ?????
      @x += 1
      @y += 1
      # ????
      increase_steps
    end
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  def move_upper_left
    # ?????????
    unless @direction_fix
      @sub_direction = @direction
      @direction = 7
      # ?????????????????????????
      @sub_direction = (@sub_direction == 6 ? 4 : @sub_direction == 2 ? 8 : @sub_direction)
    end
    # ??????? ?????????????????
    if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 4)) or
       (passable?(@x, @y, 4) and passable?(@x - 1, @y, 8))
      # ?????
      @x -= 1
      @y -= 1
      # ????
      increase_steps
    end
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  def move_upper_right
    # ?????????
    unless @direction_fix
      @sub_direction = @direction
      @direction = 9
      # ?????????????????????????
      @sub_direction = (@sub_direction == 4 ? 6 : @sub_direction == 2 ? 8 : @sub_direction)
    end
    # ??????? ?????????????????
    if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 6)) or
       (passable?(@x, @y, 6) and passable?(@x + 1, @y, 8))
      # ?????
      @x += 1
      @y -= 1
      # ????
      increase_steps
    end
  end
  #--------------------------------------------------------------------------
  # ? ?????????????
  #--------------------------------------------------------------------------
  def dash_on
    if @dash_on != nil
      return @dash_on
    else
      return false
    end
  end
end
[/spoiler]
Demo: http://anime.tym.sk/subori/Advance%20Moving%20script.zip
Dash:

Quarter:
Sorry for my stupid English, I'm from Slovakia :)

Craftknight's rule
Story: 23%
Maps: 4%
Systems: 5%

Blizzard

Use [ code ] tags next time, otherwise the code can get corrupted.
Get King of Booze for Android, for iOS, for OUYA or for Windows!
Visit our website.
You can also love/hate us on Facebook or the game itself.



Get DropBox, the best free file syncing service there is!

:)

Watch out for: HaloOfTheSun

fadark

my hero's graphic doesn't change. I uploaded the dash sprite.

just so everyone knows, im 15 years old.

tdogg427

Tdogg427
(Guard Tower Studios)
Thats right foos Cloud

Which Final Fantasy Character Are You?
Final Fantasy 7

Houna

I uploaded the dash and quarter images but my character doesn't change when I'm running or walking diagonally, is there anything I can do to fix this?

SpyFox

Look at the beginning of the script and look what the (Example): "001-Fighter01_quarter" says and rename the character file to that. It worked for me.

Which Final Fantasy Character Are You?

... I didn't think I was stubborn...

Rune

Would you happen to have some dash and Quarter sprites for Fighter04?
Sincerely,
Your conscience.