Scratchpad

If you are new to Scratchpad, and want full access as a Scratchpad editor, create an account!
If you already have an account, log in and have fun!!

READ MORE

Scratchpad
Advertisement

Colocar: encima de main y llamarlo Scene_Tablero

Autor: sayonara-p

Traductor: Cogotxe

Funciona: Evento -> LLamar a evento -> $scene = Scene_Tablero.new

Script:

  1. ==============================================================================
  2. ■ Game_Event
  3. ==============================================================================

class Game_Event < Game_Character

  1. --------------------------------------------------------------------------
  2. ● name
  3. --------------------------------------------------------------------------

def name return @event.name end end

  1. ==============================================================================
  2. ■ Map_Base
  3. ------------------------------------------------------------------------------
  4.  Base class for mini maps
  5. made by squall // squall@loeher.zzn.com
  6. ==============================================================================

class Map_Base MP_VERSION = 5

  1. --------------------------------------------------------------------------
  2. ● Initialize
  3. --------------------------------------------------------------------------

def initialize(corner, use_windowskin) @tileset_name = $game_map.tileset_name @bg = Window_Base.new(0, 0, 144, 112) @bg.z = 9000 if no_display? @bg.windowskin = nil else unless use_windowskin @bg.dispose @bg = Window_Base.new(0, 0, 160, 128) @bg.contents = Bitmap.new(128, 96) @bg.windowskin = nil bmp = RPG::Cache.picture("mapback") @bg.contents.blt(0, 0, bmp, Rect.new(0, 0, 128, 96)) @bg.z = 9015 end end @map = Sprite.new @map.bitmap = Bitmap.new(map_width, map_height) @map.z = 9005 @event = Sprite.new @event.bitmap = Bitmap.new(map_width, map_height) @event.z = 9010 self.back_opacity = 180 self.opacity = 180 case corner when 1 self.x = 16 self.y = 16 when 2 self.x = 640 - width - 16 self.y = 16 when 3 self.x = 16 self.y = 480 - height - 16 when 4 self.x = 640 - width - 16 self.y = 480 - height - 16 else self.x = 16 self.y = 16 end end

  1. --------------------------------------------------------------------------
  2. ● display_map?
  3. --------------------------------------------------------------------------

def no_map_display? for event in $game_map.events.values if event.name.include?("[no map]") return true end end return false end

  1. --------------------------------------------------------------------------
  2. ● display_map?
  3. --------------------------------------------------------------------------

def no_event_display? for event in $game_map.events.values if event.name.include?("[no event]") return true end end return false end

  1. --------------------------------------------------------------------------
  2. ● display_map?
  3. --------------------------------------------------------------------------

def no_display? for event in $game_map.events.values if event.name.include?("[no map]") and event.name.include?("[no event]") return true end end return false end

  1. --------------------------------------------------------------------------
  2. ● dispose
  3. --------------------------------------------------------------------------

def dispose @bg.dispose @map.bitmap.dispose @map.dispose @event.bitmap.dispose @event.dispose end

  1. --------------------------------------------------------------------------
  2. ● map
  3. --------------------------------------------------------------------------

def map return @map end

  1. --------------------------------------------------------------------------
  2. ● event
  3. --------------------------------------------------------------------------

def event return @event end

  1. --------------------------------------------------------------------------
  2. ● width
  3. --------------------------------------------------------------------------

def width return 128 end

  1. --------------------------------------------------------------------------
  2. ● opacity=
  3. --------------------------------------------------------------------------

def height return 96 end

  1. --------------------------------------------------------------------------
  2. ● opacity=
  3. --------------------------------------------------------------------------

def visible=(bool) @bg.visible = bool @event.visible = bool @map.visible = bool end

  1. --------------------------------------------------------------------------
  2. ● opacity
  3. --------------------------------------------------------------------------

def visible return @bg.visible end

  1. --------------------------------------------------------------------------
  2. ● opacity=
  3. --------------------------------------------------------------------------

def opacity=(opacity) @event.opacity = opacity @map.opacity = opacity end

  1. --------------------------------------------------------------------------
  2. ● opacity
  3. --------------------------------------------------------------------------

def opacity return @event.opacity end

  1. --------------------------------------------------------------------------
  2. ● back_opacity=
  3. --------------------------------------------------------------------------

def back_opacity=(opacity) @bg.opacity = opacity @bg.contents_opacity = opacity if @bg.contents != nil end

  1. --------------------------------------------------------------------------
  2. ● back_opacity
  3. --------------------------------------------------------------------------

def back_opacity return @bg.opacity end

  1. --------------------------------------------------------------------------
  2. ● x=
  3. --------------------------------------------------------------------------

def x=(x) @bg.x = x - (@bg.width - 128) / 2 @event.x = x + 8 @map.x = x + 8 end

  1. --------------------------------------------------------------------------
  2. ● x
  3. --------------------------------------------------------------------------

def x return @bg.x end

  1. --------------------------------------------------------------------------
  2. ● y=
  3. --------------------------------------------------------------------------

def y=(y) @bg.y = y - (@bg.height - 96) / 2 @event.y = y + 8 @map.y = y + 8 end

  1. --------------------------------------------------------------------------
  2. ● y
  3. --------------------------------------------------------------------------

def y return @bg.y end

  1. --------------------------------------------------------------------------
  2. ● map_width
  3. --------------------------------------------------------------------------

def map_width return $game_map.width * 112/20 end

  1. --------------------------------------------------------------------------
  2. ● map_height
  3. --------------------------------------------------------------------------

def map_height return $game_map.height * 80/15 end

  1. --------------------------------------------------------------------------
  2. ● display_x
  3. --------------------------------------------------------------------------

def display_x return $game_map.display_x / 128 * 112/20 end

  1. --------------------------------------------------------------------------
  2. ● map_height
  3. --------------------------------------------------------------------------

def display_y return $game_map.display_y / 128 * 80/15 end end

  1. ==============================================================================
  2. ■ Map_Mini
  3. ------------------------------------------------------------------------------
  4.  Base class for mini maps
  5. made by squall // squall@loeher.zzn.com
  6. ==============================================================================

class Map_Mini < Map_Base

  1. --------------------------------------------------------------------------
  2. ● initialize
  3. --------------------------------------------------------------------------

def initialize(corner, use_windowskin) super(corner, use_windowskin) unless no_map_display? draw_map end end

  1. --------------------------------------------------------------------------
  2. ● update
  3. --------------------------------------------------------------------------

def update map.src_rect.set(display_x, display_y, width - 16, height - 16) if @tileset_name != $game_map.tileset_name @tileset_name = $game_map.tileset_name unless no_map_display? map.bitmap.clear draw_map end end end

  1. --------------------------------------------------------------------------
  2. ● draw_map
  3. --------------------------------------------------------------------------

def draw_map bitmap = Bitmap.new($game_map.width * 32, $game_map.height * 32) for i in 0...($game_map.width * $game_map.height) x = i % $game_map.width y = i / $game_map.width for level in 0...3 tile_id = $game_map.data[x, y, level] if tile_id >= 384 tileset_bitmap = RPG::Cache.tile($game_map.tileset_name, tile_id, 0) src_rect = Rect.new(0, 0, 32, 32) bitmap.blt(x * 32, y * 32, tileset_bitmap, src_rect) end if tile_id >= 48 and tile_id < 384 id = tile_id / 48 - 1 tileset_bitmap = RPG::Cache.autotile($game_map.autotile_names[id]) src_rect = Rect.new(32, 64, 32, 32) bitmap.blt(x * 32, y * 32, tileset_bitmap, src_rect) end end end d_rect = Rect.new(0, 0, map_width, map_height) s_rect = Rect.new(0, 0, bitmap.width, bitmap.height) map.bitmap.stretch_blt(d_rect, bitmap, s_rect) bitmap.clear bitmap.dispose end end

  1. ==============================================================================
  2. ■ Map_Event
  3. ------------------------------------------------------------------------------
  4.  draw the events and hero position
  5. ==============================================================================

class Map_Event < Map_Mini

  1. --------------------------------------------------------------------------
  2. ● initialize
  3. --------------------------------------------------------------------------

def initialize(corner = 4, windowskin = true) super(corner, windowskin) @dots = [] end

  1. --------------------------------------------------------------------------
  2. ● refresh_dots
  3. --------------------------------------------------------------------------

def refresh_event_dots for event in $game_map.events.values bitmap = nil x = event.x * map_width / $game_map.width y = event.y * map_height / $game_map.height next if event.list == nil for i in 0...event.list.size if event.list[i].parameters[0].is_a?(String) if event.list[i].parameters[0] == "event" bitmap = RPG::Cache.picture(event.list[i].parameters[0]) break elsif event.list[i].parameters[0] == "enemy" bitmap = RPG::Cache.picture(event.list[i].parameters[0]) break elsif event.list[i].parameters[0].include?("teleport") bitmap = RPG::Cache.picture("teleport") break elsif event.list[i].parameters[0] == "chest" bitmap = RPG::Cache.picture(event.list[i].parameters[0]) break elsif event.list[i].parameters[0] == "npc" bitmap = RPG::Cache.picture(event.list[i].parameters[0]) break elsif event.list[i].parameters[0] == "savepoint" bitmap = RPG::Cache.picture(event.list[i].parameters[0]) break else bitmap = nil end end end @dots.push([x, y, bitmap]) end end

  1. --------------------------------------------------------------------------
  2. ● refresh_dots
  3. --------------------------------------------------------------------------

def refresh_player_dot x = $game_player.x * map_width / $game_map.width y = $game_player.y * map_height / $game_map.height bitmap = RPG::Cache.picture("hero") @dots.push([x, y, bitmap]) end

  1. --------------------------------------------------------------------------
  2. ● update
  3. --------------------------------------------------------------------------

def update super @dots.clear event.bitmap.clear refresh_event_dots unless no_event_display? refresh_player_dot unless no_display? for dot in @dots unless dot[2] == nil event.bitmap.blt(dot[0], dot[1], dot[2], Rect.new(0, 0, 4, 4)) end end event.src_rect.set(display_x, display_y, width - 16, height - 16) end end

  1. ==============================================================================
  2. ■ Map_Full
  3. ------------------------------------------------------------------------------
  4. made by squall // squall@loeher.zzn.com
  5. ==============================================================================

class Map_Full

  1. --------------------------------------------------------------------------
  2. ● Initialize
  3. --------------------------------------------------------------------------

def initialize @dots = [] @teleport_sprites = [] if $game_map.width > $game_map.height @map_width = 640 @map_height = $game_map.height * @map_width / $game_map.width if @map_height > 480 @map_height = 480 end else @map_height = 480 @map_width = $game_map.width * @map_height / $game_map.height if @map_width > 640 @map_width = 640 end end @map = Sprite.new @event = Sprite.new @map.bitmap = Bitmap.new(width, height) @event.bitmap = Bitmap.new(width, height) @map.x = @event.x = 320 - width / 2 @map.y = @event.y = 240 - height / 2 draw_map unless no_map_display? draw_event_dots unless no_event_display? draw_player_dot unless no_display? if no_display? @message = Window_Base.new(0, 208, 640, 64) message = "the map is not available" @message.contents = Bitmap.new(608, 32) @message.contents.font.name = $fontface @message.contents.font.size = 32 @message.contents.font.color.set(255, 255, 255, 100) @message.contents.draw_text(-1, -1, 608, 32, message, 1) @message.contents.draw_text(-1, 1, 608, 32, message, 1) @message.contents.draw_text(1, -1, 608, 32, message, 1) @message.contents.draw_text(1, 1, 608, 32, message, 1) @message.contents.font.color.set(255, 255, 255, 50) @message.contents.draw_text(-2, -2, 608, 32, message, 1) @message.contents.draw_text(-2, 2, 608, 32, message, 1) @message.contents.draw_text(2, -2, 608, 32, message, 1) @message.contents.draw_text(2, 2, 608, 32, message, 1) @message.contents.font.color.set(255, 255, 255) @message.contents.draw_text(0, 0, 608, 32, message, 1) @message.windowskin = nil end end

  1. --------------------------------------------------------------------------
  2. ● display_map?
  3. --------------------------------------------------------------------------

def no_map_display? for event in $game_map.events.values if event.name.include?("[full]") return false end if event.name.include?("[no map]") return true end end return false end

  1. --------------------------------------------------------------------------
  2. ● display_map?
  3. --------------------------------------------------------------------------

def no_event_display? for event in $game_map.events.values if event.name.include?("[full]") return false end if event.name.include?("[no event]") return true end end return false end

  1. --------------------------------------------------------------------------
  2. ● display_map?
  3. --------------------------------------------------------------------------

def no_display? for event in $game_map.events.values if event.name.include?("[full]") return false end if event.name.include?("[no map]") and event.name.include?("[no event]") return true end end return false end

  1. --------------------------------------------------------------------------
  2. ● dispose
  3. --------------------------------------------------------------------------

def dispose for sprite in @teleport_sprites sprite.dispose end @message.dispose if no_display? @map.bitmap.dispose @map.dispose @event.bitmap.dispose @event.dispose end

  1. --------------------------------------------------------------------------
  2. ● width
  3. --------------------------------------------------------------------------

def width return @map_width end

  1. --------------------------------------------------------------------------
  2. ● opacity=
  3. --------------------------------------------------------------------------

def height return @map_height end

  1. --------------------------------------------------------------------------
  2. ● draw_map
  3. --------------------------------------------------------------------------

def draw_map bitmap = Bitmap.new($game_map.width * 32, $game_map.height * 32) for i in 0...($game_map.width * $game_map.height) x = i % $game_map.width y = i / $game_map.width for level in 0...3 tile_id = $game_map.data[x, y, level] if tile_id >= 384 tileset_bitmap = RPG::Cache.tile($game_map.tileset_name, tile_id, 0) src_rect = Rect.new(0, 0, 32, 32) bitmap.blt(x * 32, y * 32, tileset_bitmap, src_rect) end if tile_id >= 48 and tile_id < 384 id = tile_id / 48 - 1 tileset_bitmap = RPG::Cache.autotile($game_map.autotile_names[id]) src_rect = Rect.new(32, 64, 32, 32) bitmap.blt(x * 32, y * 32, tileset_bitmap, src_rect) end end end d_rect = Rect.new(0, 0, width, height) s_rect = Rect.new(0, 0, bitmap.width, bitmap.height) @map.bitmap.stretch_blt(d_rect, bitmap, s_rect) bitmap.clear bitmap.dispose end

  1. --------------------------------------------------------------------------
  2. ● refresh_dots
  3. --------------------------------------------------------------------------

def draw_event_dots for event in $game_map.events.values bitmap = nil x = event.x * width / $game_map.width y = event.y * height / $game_map.height next if event.list == nil for i in 0...event.list.size if event.list[i].parameters[0].is_a?(String) if event.list[i].parameters[0] == "event" bitmap = RPG::Cache.picture(event.list[i].parameters[0]) break elsif event.list[i].parameters[0] == "enemy" bitmap = RPG::Cache.picture(event.list[i].parameters[0]) break elsif event.list[i].parameters[0].include?("teleport") bitmap = RPG::Cache.picture("teleport") name = event.list[i].parameters[0].dup name.slice!("teleport, ") @teleport_sprites.push(new_name_sprite(name, x, y)) break elsif event.list[i].parameters[0] == "chest" bitmap = RPG::Cache.picture(event.list[i].parameters[0]) break elsif event.list[i].parameters[0] == "npc" bitmap = RPG::Cache.picture(event.list[i].parameters[0]) break elsif event.list[i].parameters[0] == "savepoint" bitmap = RPG::Cache.picture(event.list[i].parameters[0]) break else bitmap = nil end end end @dots.push([x, y, bitmap]) end for dot in @dots unless dot[2] == nil @event.bitmap.blt(dot[0], dot[1], dot[2], Rect.new(0, 0, 4, 4)) end end end

  1. --------------------------------------------------------------------------
  2. ● new_name_sprite
  3. --------------------------------------------------------------------------

def new_name_sprite(name, x, y) sprite = Sprite.new sprite.y = y + 240 - height / 2 x + 128 > 640 ? sprite.x = 512 : sprite.x = x + 320 - width / 2 bitmap = Bitmap.new(128, 32) bitmap.font.name, bitmap.font.size = $fontface, 20 bitmap.font.color.set(255, 255, 255) bitmap.draw_text(0, 0, 128, 32, name) sprite.bitmap = bitmap return sprite end

  1. --------------------------------------------------------------------------
  2. ● refresh_dots
  3. --------------------------------------------------------------------------

def draw_player_dot x = $game_player.x * width / $game_map.width y = $game_player.y * height / $game_map.height bitmap = RPG::Cache.picture("hero") @event.bitmap.blt(x, y, bitmap, Rect.new(0, 0, 4, 4)) end end

  1. ==============================================================================
  2. ■ Scene_MiniMap
  3. ------------------------------------------------------------------------------
  4.  draw the map full screen
  5. ==============================================================================

class Scene_MiniMap

  1. --------------------------------------------------------------------------
  2. ● main
  3. --------------------------------------------------------------------------

def main @map = Map_Full.new Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @map.dispose end

  1. --------------------------------------------------------------------------
  2. ● Update the contents of all five windows on the main menu
  3. --------------------------------------------------------------------------

def update if Input.trigger?(Input::B) | Input.trigger?(Input::ALT) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new return end end end

  1. ==============================================================================
  2. ■ Scene_Map
  3. ------------------------------------------------------------------------------
  4.  draw the mini map
  5. @corner is the corner you want the mini map to be displayed in.
  6. 1 is upper left, 2 is upper right, 3 is bottom left and 4 is bottom right
  7. @use_windowskin is whether true or false. true if you want to use the
  8. the current windowskin for the minimap background.
  9. or false if you want to use the picture named mapback in your picture folder.
  10. ==============================================================================

class Scene_Map alias main_minimap main alias update_minimap update alias transfer_minimap transfer_player

  1. --------------------------------------------------------------------------
  2. ● initialize
  3. --------------------------------------------------------------------------

def initialize @corner = 4 # 1 or 2 or 3 or 4 @use_windowskin = false # true or false end

  1. --------------------------------------------------------------------------
  2. ● main
  3. --------------------------------------------------------------------------

def main @event_map = Map_Event.new(@corner, @use_windowskin) main_minimap @event_map.dispose end

  1. --------------------------------------------------------------------------
  2. ● update
  3. --------------------------------------------------------------------------

def update @event_map.update if $game_system.map_interpreter.running? @event_map.visible = false else @event_map.visible = true end if Input.trigger?(Input::ALT) $game_system.se_play($data_system.decision_se) $scene = Scene_MiniMap.new return end update_minimap end

  1. --------------------------------------------------------------------------
  2. ● transfer_player
  3. --------------------------------------------------------------------------

def transfer_player transfer_minimap @event_map.dispose @event_map = Map_Event.new(@corner, @use_windowskin) end end

Advertisement