Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Need help with [footprint]script

meira

Member

Hey  :tongue:

I'm using this footprint script by Wachunga:

=begin
============
  Dynamic Footprints - version 1.0 (2005-11-07)
============
  by Wachunga

0.95 - original release
1.0 - fixed a small bug with directional footprints and
      updated the compatibility list
 
SETUP:
1) From the database (Tileset tab), give the appropriate tiles of any
    tilesets that you want to show footprints (e.g. sand in "Desert",
    snow in "Snow Field") the terrain tag 1.
2) Place the footprints file in the Graphics/Tilesets folder.

To prevent an event from having any footprints (e.g. birds), include NOFOOT
somewhere in its name.

(If using non-RTP sprites, you may want to create customized footprints.)

FEATURES:
* customizable duration footprint fading (optional)
* direction-specific footprints (optional)
* rounded footprints paths
* overlapping footprints supported
* handles move events (jumping, speed changes, etc) and teleportation

COMPATIBILITY:
1) Cogwheel's Pixel Movement script - unfortunately, pixel movement by its
    very nature isn't very compatible with footprints (short of using sprites
    or pictures instead of a tileset) because a character can move part way
    across a tile without footprints appearing.
   
  2) Near Fantastica's Squad Based Movement/Action Battle System script -
    make sure it is below this script
 
  3) Near Fantastica's Updated Day Night script - again, make sure it is below
    this script
 
  4) Baskinein's Animated Sprite script - see:
    http://www.rmxp.net/forums/index.php?s= ... t&p=261921
   
  5) Fukuyama's Caterpillar script - to only have one set of footprints
    for the whole group, no modifications are necessary (just make sure his
    script is above this one). To have a separate (overlapping) set of
    footprints for each character, uncomment (by moving the "= end") the
    following lines:

module Train_Actor
class Game_Party_Actor < Game_Character   
  def move_down(turn_enabled = true)
    if turn_enabled
      turn_down
    end
    if passable?(@x, @y, Input::DOWN)
      turn_down
      @y += 1
      increase_steps
    end
  end
  def move_left(turn_enabled = true)
    if turn_enabled
      turn_left
    end
    if passable?(@x, @y, Input::LEFT)
      turn_left
      @x -= 1
      increase_steps
    end
  end
  def move_right(turn_enabled = true)
    if turn_enabled
      turn_right
    end
    if passable?(@x, @y, Input::RIGHT)
      turn_right
      @x += 1
      increase_steps
    end
  end
  def move_up(turn_enabled = true)
    if turn_enabled
      turn_up
    end
    if passable?(@x, @y, Input::UP)
      turn_up
      @y -= 1
      increase_steps
    end
  end
end
end

=end

#----------------------------------------------------------------------
# Footprints for six situations (down->up, left->right, down->left,
# left->up, up->right and right->down) are required (twelve for
# directional footprints). See the provided footprints template
# (footprints_template.png) for specific details, noting
# that the right half of the template can be empty if using the default
# of non-directional footprints (i.e. leaving FP_DIRECTIONAL = false).
FP_FILE = "Footprints_Default"
#----------------------------------------------------------------------
# FP_DIRECTIONAL specifies whether there are direction-specific
# footprints (e.g. footprints from player moving up are different
# from those left when player is moving down)
FP_DIRECTIONAL = false
#----------------------------------------------------------------------
# Terrain tag(s) as set in the database
FP_TAG = 1
#----------------------------------------------------------------------
# How much time elapses before footprints begin to fade
FP_BEFORE_FADE_TIME = 600
# After beginning to fade, how long the fading process actually takes
FP_FADE_TIME = 120
# Note: it's possible to maintain footprints indefinitely (with
# FP_FADE_TIME = 0), but if the player opens a menu or changes maps,
# the footprints won't be saved. To allow them to persist even then,
# use Near's Dynamic Maps script (slight modifications would be needed).
#----------------------------------------------------------------------
# tilemap indexes (do not modify)
# regular:
FP_DU = 384
FP_LR = 385
FP_DL = 386
FP_LU = 387
FP_UR = 388
FP_RD = 389
# directional:
FP_UD = 512
FP_RL = 513
FP_DR = 514
FP_RU = 515
FP_UL = 516
FP_LD = 517

#----------------------------------------------------------------------

class Spriteset_Map
attr_accessor :footprints 
attr_accessor :fp_tilemap
def initialize
  @viewport1 = Viewport.new(0, 0, 640, 480)
  @viewport2 = Viewport.new(0, 0, 640, 480)
  @viewport3 = Viewport.new(0, 0, 640, 480)
  @viewport2.z = 200
  @viewport3.z = 5000
  @tilemap = Tilemap.new(@viewport1)
  @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
  for i in 0..6
    autotile_name = $game_map.autotile_names
    @tilemap.autotiles = RPG::Cache.autotile(autotile_name)
  end
  @tilemap.map_data = $game_map.data
  @tilemap.priorities = $game_map.priorities
  @panorama = Plane.new(@viewport1)
  @panorama.z = -1000
  @fog = Plane.new(@viewport1)
  @fog.z = 3000
  @character_sprites = []
  for i in $game_map.events.keys.sort
    sprite = Sprite_Character.new(@viewport1, $game_map.events)
    @character_sprites.push(sprite)
  end
  @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
  @weather = RPG::Weather.new(@viewport1)
  @picture_sprites = []
  for i in 1..50
    @picture_sprites.push(Sprite_Picture.new(@viewport2,
      $game_screen.pictures))
  end
  @timer_sprite = Sprite_Timer.new

  # Dynamic Footprints additions begin
  @footprints = []
  fp_tileset = FP_DIRECTIONAL ? Bitmap.new(256,1024) : Bitmap.new(256,512)
  # make a column for each footprint image
  # right -> down
  fp_tileset.blt(160, 0, RPG::Cache.tileset(FP_FILE), Rect.new(0, 0, 32, 32))
  # up -> right
  fp_tileset.blt(128, 0, RPG::Cache.tileset(FP_FILE), Rect.new(0, 32, 32, 32)) 
  # left -> right 
  fp_tileset.blt(32, 0, RPG::Cache.tileset(FP_FILE), Rect.new(0, 64, 32, 32))   
  # down -> left
  fp_tileset.blt(64, 0, RPG::Cache.tileset(FP_FILE), Rect.new(32, 0, 32, 32))
  # left -> up
  fp_tileset.blt(96, 0, RPG::Cache.tileset(FP_FILE), Rect.new(32, 32, 32, 32)) 
  # down -> up
  fp_tileset.blt(0, 0, RPG::Cache.tileset(FP_FILE), Rect.new(32, 64, 32, 32))

  # fill out each column, making copies of the image with decreasing opacity
  0.step(5*32, 32) do |x|
    opacity = 255
    0.step(15*32, 32) do |y|
      fp_tileset.blt(x, y, fp_tileset, Rect.new(x, 0, 32, 32), opacity)
      opacity -= 16
    end
  end

  if FP_DIRECTIONAL
    # down -> right
    fp_tileset.blt(160, 512, RPG::Cache.tileset(FP_FILE), Rect.new(64, 0, 32, 32))
    # right -> up
    fp_tileset.blt(128, 512, RPG::Cache.tileset(FP_FILE), Rect.new(64, 32, 32, 32)) 
    # right -> left
    fp_tileset.blt(32, 512, RPG::Cache.tileset(FP_FILE), Rect.new(64, 64, 32, 32))   
    # left -> down
    fp_tileset.blt(64, 512, RPG::Cache.tileset(FP_FILE), Rect.new(96, 0, 32, 32))
    # up -> left
    fp_tileset.blt(96, 512, RPG::Cache.tileset(FP_FILE), Rect.new(96, 32, 32, 32)) 
    # up -> down
    fp_tileset.blt(0, 512, RPG::Cache.tileset(FP_FILE), Rect.new(96, 64, 32, 32))
   
    0.step(5*32, 32) do |x|
      opacity = 255
      512.step(32*32, 32) do |y|
        fp_tileset.blt(x, y, fp_tileset, Rect.new(x, 512, 32, 32), opacity)
        opacity -= 16
      end
    end 
  end
 
  @fp_tilemap = Tilemap.new(@viewport1) 
  @fp_tilemap.tileset = fp_tileset
  @fp_tilemap.map_data = Table.new($game_map.width, $game_map.height, 3)
  # end Dynamic Footprints additions
 
  update
end

alias fp_dispose dispose
def dispose
  @fp_tilemap.dispose
  fp_dispose
end

alias fp_update update
def update
  @fp_tilemap.ox = $game_map.display_x / 4
  @fp_tilemap.oy = $game_map.display_y / 4
  @fp_tilemap.update
  unless FP_FADE_TIME == 0
    for fp in @footprints
      if fp.time > 1
        fp.time -= 1
        if fp.fade and (FP_FADE_TIME - fp.time) % (FP_FADE_TIME/16.0) < 1
          @fp_tilemap.map_data[fp.x,fp.y,fp.z] += 8
        end
      else
        if not fp.fade
          # begin fading
          fp.time = FP_FADE_TIME
          fp.fade = true
        else       
          @fp_tilemap.map_data[fp.x,fp.y,fp.z] = 0
          @footprints.delete(fp)
        end
      end
    end
  end
  fp_update
end

  def show_footprints(fp_index,fp_x,fp_y)
    # start with first layer, then stack footprints as necessary
    fp_z = 0
    if @fp_tilemap.map_data[fp_x,fp_y,fp_z] == 0
    @fp_tilemap.map_data[fp_x,fp_y,fp_z] = fp_index
    else
    fp_z = 1
    if @fp_tilemap.map_data[fp_x,fp_y,fp_z] == 0
      @fp_tilemap.map_data[fp_x,fp_y,fp_z] = fp_index
    else
      fp_z = 2
      if @fp_tilemap.map_data[fp_x,fp_y,fp_z] != 0
        # delete the existing footprint at these coords from the list
        # (to prevent having multiples)
        for i in @footprints.reverse
          if i.x == fp_x and i.y == fp_y and i.z == fp_z
            @footprints.delete(i)
            break
          end
        end
      end
      @fp_tilemap.map_data[fp_x,fp_y,fp_z] = fp_index
    end
    end
    @footprints.push(Footprint.new(fp_x,fp_y,fp_z))   
  end 

end

#-------------------------------------------------------------------------------

class Game_Event < Game_Character
  alias fp_ge_init initialize
  def initialize(map_id, event)
  fp_ge_init(map_id, event)
  if @event.name.upcase.include?('NOFOOT')
    @fp_id = nil
    end
  end
end

#-------------------------------------------------------------------------------

class Game_Character

alias fp_gc_init initialize
def initialize
  fp_gc_init
  # 1st argument = second last x/y
  # 2nd argument = last x/y
  @last_x = [0,0]
  @last_y = [0,0]
  @fp_id = 0 # default footprints
end

def footprints
  # determine which prints to draw and where
  if terrain_tag(@last_x[1],@last_y[1]) != FP_TAG
    return
  end
  fp_index = nil
  # left
  if @x > @last_x[1]
    if @last_y[1] > @last_y[0]
      fp_index = FP_UR
    elsif @last_y[1] < @last_y[0]
      fp_index = FP_DIRECTIONAL ? FP_DR : FP_RD
    else
      fp_index = FP_LR
    end
  else
    # right
    if @x < @last_x[1]
      if @last_y[1] > @last_y[0]
        fp_index = FP_DIRECTIONAL ? FP_UL : FP_LU
      elsif @last_y[1] < @last_y[0]
        fp_index = FP_DL
      else
        fp_index = FP_DIRECTIONAL ? FP_RL : FP_LR
      end
    else
      # up
      if @y < @last_y[1]
        if @last_x[1] > @last_x[0]
          fp_index = FP_LU
        elsif @last_x[1] < @last_x[0]
          fp_index = FP_DIRECTIONAL ? FP_RU : FP_UR
        else
          fp_index = FP_DU
        end
      # down
      elsif @y > @last_y[1]
        if @last_x[1] > @last_x[0]
          fp_index = FP_DIRECTIONAL ? FP_LD : FP_DL
        elsif @last_x[1] < @last_x[0]
          fp_index = FP_RD
        else
          fp_index = FP_DIRECTIONAL ? FP_UD : FP_DU
        end
      end
    end
  end
  if fp_index != nil
    fp_x = @last_x[1]
    fp_y = @last_y[1]
    $scene.spriteset.show_footprints(fp_index,fp_x,fp_y)
  end
end

  def moveto(x, y)
    @x = x
    @y = y
    @real_x = x * 128
    @real_y = y * 128
    if @fp_id != nil
      # track the last positions
      @last_x = [@x,@x]
      @last_y = [@y,@y]
    end
  end

  def increase_steps
    @stop_count = 0
    # show footprints if enabled for this character
    if @fp_id != nil and $scene.is_a?(Scene_Map)
      footprints
      # track the last positions
      @last_x.shift
      @last_x.push(@x) 
      @last_y.shift
      @last_y.push(@y) 
    end
  end

  def terrain_tag(x=@x,y=@y)
    return $game_map.terrain_tag(x, y)
  end

  def update_jump
    @jump_count -= 1
    @real_x = (@real_x * @jump_count + @x * 128) / (@jump_count + 1)
    @real_y = (@real_y * @jump_count + @y * 128) / (@jump_count + 1)
    if @fp_id != nil and @jump_count == 0
      # track the last positions
      @last_x = [@x,@x]
      @last_y = [@y,@y]     
    end
  end 
 
end

#-------------------------------------------------------------------------------

class Scene_Map
  attr_reader :spriteset

  # only change is a couple of (commented) sections to prevent teleporting
  # within same map from losing footprints when the spriteset is recreated
  def transfer_player
    $game_temp.player_transferring = false
    if $game_map.map_id != $game_temp.player_new_map_id
      $game_map.setup($game_temp.player_new_map_id)
    else # Dynamic Footprints
      fp = @spriteset.footprints
      md = @spriteset.fp_tilemap.map_data
    end
    $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
    case $game_temp.player_new_direction
    when 2
      $game_player.turn_down
    when 4
      $game_player.turn_left
    when 6
      $game_player.turn_right
    when 8
      $game_player.turn_up
    end
    $game_player.straighten
    $game_map.update
    @spriteset.dispose
    @spriteset = Spriteset_Map.new
    if fp != nil or md != nil # Dynamic Footprints
      @spriteset.footprints = fp
      @spriteset.fp_tilemap.map_data = md
    end
    if $game_temp.transition_processing
      $game_temp.transition_processing = false
      Graphics.transition(20)
    end
    $game_map.autoplay
    Graphics.frame_reset
    Input.update
  end
end

#-------------------------------------------------------------------------------

class Footprint
attr_reader :x
attr_reader :y
attr_reader :z
attr_accessor :time
attr_accessor :fade

def initialize(x,y,z)
  @x = x
  @y = y
  @z = z
  @time = FP_BEFORE_FADE_TIME
  @fade = false
end

end



And there it says that
# Note: it's possible to maintain footprints indefinitely (with
# FP_FADE_TIME = 0), but if the player opens a menu or changes maps,
# the footprints won't be saved. To allow them to persist even then,
# use Near's Dynamic Maps script (slight modifications would be needed).
(lines 118-121)

What happens is that i don't have the skill to do those slight modifications  :dead:

#==============================================================================
# ** Dynamic Maps
#==============================================================================
# Near Fantastica
# Version 3
# 02.10.05
#==============================================================================

#------------------------------------------------------------------------------
# * SDK Log Script
#------------------------------------------------------------------------------
SDK.log("Dynamic Maps", "Near Fantastica", 3, "02.10.05")

#------------------------------------------------------------------------------
# * Begin SDK Enable Test
#------------------------------------------------------------------------------
if SDK.state("Dynamic Maps") == true

module Map
  #----------------------------------------------------------------------------
  @items = []
  @dynamic = false
  @map_data = {}
  @map_id = 0
  @data = []
  #============================================================================
  class Item
    #--------------------------------------------------------------------------
    attr_accessor :name
    attr_accessor :x
    attr_accessor :y
    attr_accessor :width
    attr_accessor :height
    attr_accessor :z
    attr_accessor :id
    #--------------------------------------------------------------------------
    def initialize(name, id, x, y, width, height, layer = 2)
      @name = name
      @id = id
      @x = x
      @y = y
      @width = width
      @height = height
      @z = layer - 1
    end
  end
  #============================================================================
  class Map_Data
    #--------------------------------------------------------------------------
    attr_accessor :map
    #--------------------------------------------------------------------------
    def initialize
      @map = 0
    end
  end
  #----------------------------------------------------------------------------
  def Map.set_map(map, map_id)
    @map_data[map_id] = map
  end
  #---------------------------------------------------------------------------- 
  def Map.data(map_id)
    return @map_data[map_id]
  end
  #----------------------------------------------------------------------------
  def Map.setup_map(map_id)
    @dynamic = true
    @map_id = map_id
    @data = []
    map = load_data(sprintf("Data/Map%03d.rxdata", map_id))
    list = map.events[1].pages[0].list
    for item in list
      break if item.parameters[0] == nil
      eval(item.parameters[0])
    end
    data = []
    for item in @items
      data.push(item) if $game_party.item_number(item.id) != 0
    end
    @items = data
    return
  end
  #----------------------------------------------------------------------------
  def Map.clear
    @items = []
    @dynamic = false
    @map_id = 0
    return
  end
  #----------------------------------------------------------------------------
  def Map.mapdata
    return @data
  end
  #----------------------------------------------------------------------------
  def Map.dynamic
    return @dynamic
  end
  #----------------------------------------------------------------------------
  def Map.items
    return @items
  end
  #----------------------------------------------------------------------------
  def Map.remove_item(item)
    @items.delete(item)
  end
  #----------------------------------------------------------------------------
  def Map.map_id
    return @map_id
  end
  #----------------------------------------------------------------------------
  def Map.draw(sz, tz, xo, yo, sx, sy, width, height)
    map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
    a,b = 0,0
    x,y = sx,sy
    width.times do |w|
      height.times do |h|
        $game_map.map.data[xo+w, yo+h, tz] = map.data[x+w, y+h, sz]
      end
    end
  end
end


class Game_Map
  #----------------------------------------------------------------------------
  attr_accessor :map
  #----------------------------------------------------------------------------
  alias nf_dm_game_map_setup setup
  #----------------------------------------------------------------------------
  def setup(map_id)
    save_map(@map_id)
    if Map.data(map_id) == nil
      nf_dm_game_map_setup(map_id)
    else
      nf_dm_game_map_setup(map_id)
      load_map(map_id)
    end
  end
  #----------------------------------------------------------------------------
  def load_map(map_id)
    map_data = Map.data(map_id)
    @map = map_data.map
  end
  #----------------------------------------------------------------------------
  def save_map(map_id)
    return if map_id == 0
    map_data = Map::Map_Data.new
    map_data.map = @map
    Map.set_map(map_data, map_id)
  end
end

class Scene_Map
  #----------------------------------------------------------------------------
  alias nf_dm_scene_map_update update
  #----------------------------------------------------------------------------
  def update
    if Input.trigger?(Input::L) and Map.dynamic
      $scene = Scene_Placment.new
    end
    nf_dm_scene_map_update
  end
end

class Scene_Placment
  #--------------------------------------------------------------------------
  def main
    @z = 1
    @item = nil
    @place = false
    @move = false
    @remove = false
    @draw = false
    @cursor = Sprite.new
    @cursor.x = 0
    @cursor.y = 0
    @cursor.z = 5000
    @cursor.opacity = 160
    @spriteset = Spriteset_Map.new
    s1 = "Place"
    s2 = "Move"
    s3 = "Remove"
    s4 = "Exit"
    @command_window = Window_Command.new(192, [s1, s2, s3, s4])
    @command_window.back_opacity = 160
    @command_window.height = 480
    @command_window.disable_item(0) if Map.items == []
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @spriteset.dispose
    @command_window.dispose
  end
  #--------------------------------------------------------------------------
  def update
    @command_window.update
    @spriteset.update
    if @draw == true
      cursor
    elsif @place == true
      placement
    elsif @move == true
      movement
    elsif @remove == true
      removement
    elsif Input.trigger?(Input::C)
      case @command_window.index
      when 0
        return if Map.items == []
        $game_system.se_play($data_system.decision_se)
        @place = true
        @command_window.visible = false
        data = []
        for item in Map.items
          data.push(item.name)
        end
        @placement_window = Window_Command.new(192, data)
        @placement_window.back_opacity = 160
        @placement_window.height = 480
      when 1
        return if Map.mapdata == []
        $game_system.se_play($data_system.decision_se)
        @move = true
        @command_window.visible = false
        data = []
        for item in Map.mapdata
          data.push(item.name)
        end
        @moveement_window = Window_Command.new(192, data)
        @moveement_window.back_opacity = 160
        @moveement_window.height = 480
      when 2
        $game_system.se_play($data_system.decision_se)
        @remove = true
        @command_window.visible = false
        data = []
        for item in Map.mapdata
          data.push(item.name)
        end
        @removeement_window = Window_Command.new(192, data)
        @removeement_window.back_opacity = 160
        @removeement_window.height = 480
      when 3
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Map.new
      end
    elsif Input.trigger?(Input::B)
      $game_system.se_play($data_system.decision_se)
      $scene = Scene_Map.new
    end
  end
  #--------------------------------------------------------------------------
  def cursor
    if @place == true
      @cursor.y += 32 if Input.trigger?(Input::DOWN)
      @cursor.x -= 32 if Input.trigger?(Input::LEFT)
      @cursor.x += 32 if Input.trigger?(Input::RIGHT)
      @cursor.y -= 32 if Input.trigger?(Input::UP)
      if Input.trigger?(Input::L)
        @z = 1
        color = Color.new(0, 255, 0)
        @cursor.bitmap.fill_rect(0, 0, @item.width * 32, @item.height * 32, color)
      end
      if Input.trigger?(Input::R)
        @z = 2
        color = Color.new(0, 0, 255)
        @cursor.bitmap.fill_rect(0, 0, @item.width * 32, @item.height * 32, color)
      end
      @cursor.update
      if Input.trigger?(Input::B)
        @draw = false
        @cursor.bitmap.dispose
        @placement_window.visible = true
      end
      if Input.trigger?(Input::C)
        x = @cursor.x/32
        y = @cursor.y /32
        Map.draw(@item.z, @z, x, y, @item.x, @item.y, @item.width, @item.height)
        $game_system.se_play($data_system.decision_se)
        $game_party.lose_item(@item.id, 1)
        Map.remove_item(@item) if $game_party.item_number(@item.id) == 0
        item = Map::Item.new(@item.name, @item.id, x, y, @item.width, @item.height, @z+1)
        Map.mapdata.push(item)
        @cursor.bitmap.dispose
        $scene = Scene_Map.new
      end
    elsif @move == true
      @cursor.y += 32 if Input.trigger?(Input::DOWN)
      @cursor.x -= 32 if Input.trigger?(Input::LEFT)
      @cursor.x += 32 if Input.trigger?(Input::RIGHT)
      @cursor.y -= 32 if Input.trigger?(Input::UP)
      if Input.trigger?(Input::L)
        @z = 1
        color = Color.new(0, 255, 0)
        @cursor.bitmap.fill_rect(0, 0, @item.width * 32, @item.height * 32, color)
      end
      if Input.trigger?(Input::R)
        @z = 2
        color = Color.new(0, 0, 255)
        @cursor.bitmap.fill_rect(0, 0, @item.width * 32, @item.height * 32, color)
      end
      @cursor.update
      if Input.trigger?(Input::C)
        data = nil
        for item in Map.items
          if item.name == @item.name
            data = item
            break
          end 
        end
        x = @cursor.x/32
        y = @cursor.y /32
        Map.draw(data.z, @z, x, y, data.x, data.y, data.width, data.height)
        $game_system.se_play($data_system.decision_se)
        $game_party.lose_item(data.id, 1)
        Map.remove_item(data) if $game_party.item_number(data.id) == 0
        Map.mapdata.delete(@item)
        item = Map::Item.new(data.name, data.id, x, y, data.width, data.height, @z)
        Map.mapdata.push(item)
        @cursor.bitmap.dispose
        $scene = Scene_Map.new
      end
      if Input.trigger?(Input::B)
        @draw = false
        @cursor.bitmap.dispose
        @placement_window.visible = true
      end
    elsif @remove == true
      if Input.trigger?(Input::C)
        @cursor.bitmap.dispose
        $scene = Scene_Map.new
      end
      if Input.trigger?(Input::B)
        @cursor.bitmap.dispose
        $scene = Scene_Map.new
      end
    end
  end
  #--------------------------------------------------------------------------
  def placement
    @placement_window.update
    if Input.trigger?(Input::B)
      @place = false
      @placement_window.dispose
      @command_window.visible = true
    elsif Input.trigger?(Input::C)
      @draw = true
      @placement_window.visible = false
      @item = Map.items[@placement_window.index]
      @cursor.bitmap = Bitmap.new(@item.width * 32, @item.height * 32)
      color = Color.new(0, 255, 0)
      @cursor.bitmap.fill_rect(0, 0, @item.width * 32, @item.height * 32, color)
      @z = 1
    end
  end
  #--------------------------------------------------------------------------
  def movement
    @moveement_window.update
    if Input.trigger?(Input::B)
      @move = false
      @moveement_window.dispose
      @command_window.visible = true
    elsif Input.trigger?(Input::C)
      @draw = true
      @moveement_window.visible = false
      @item = Map.mapdata[@moveement_window.index]
      @z = @item.z
      @cursor.bitmap = Bitmap.new(@item.width * 32, @item.height * 32)
      if @z == 1
        color = Color.new(0, 255, 0)
        @cursor.bitmap.fill_rect(0, 0, @item.width * 32, @item.height * 32, color)
      elsif @z == 2
        color = Color.new(0, 0, 255)
        @cursor.bitmap.fill_rect(0, 0, @item.width * 32, @item.height * 32, color)
      end
      @cursor.x = @item.x*32
      @cursor.y = @item.y*32
      $game_party.gain_item(@item.id, 1)
      x,y = @item.x,@item.y
      @item.width.times do |w|
        @item.height.times do |h|
          $game_map.map.data[x+w, y+h, @z] = 0
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def removement
    @removeement_window.update
    if Input.trigger?(Input::B)
      @remove = false
      @removeement_window.dispose
      @command_window.visible = true
    elsif Input.trigger?(Input::C)
      @draw = true
      @removeement_window.visible = false
      @item = Map.mapdata[@removeement_window.index]
      @z = @item.z
      @cursor.bitmap = Bitmap.new(@item.width * 32, @item.height * 32)
      color = Color.new(255, 0, 0)
      @cursor.bitmap.fill_rect(0, 0, @item.width * 32, @item.height * 32, color) 
      @cursor.x = @item.x*32
      @cursor.y = @item.y*32
      $game_party.gain_item(@item.id, 1)
      x,y = @item.x,@item.y
      @item.width.times do |w|
        @item.height.times do |h|
          $game_map.map.data[x+w, y+h, @z] = 0
        end
      end
    end
  end
end

#------------------------------------------------------------------------------
# * End SDK Enable Test
#------------------------------------------------------------------------------
end

Can someone help me, please ?  :crazy:
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top