查看: 1440|回复: 2

[有事请教] rpgmakerxp里的地图显示名称和图片标题脚本犯冲突

[复制链接]
梦石
0
星屑
265
在线时间
40 小时
注册时间
2023-10-9
回帖
1
发表于 2025-9-15 19:32:27 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
之前想给游戏加一些脚本进来,想丰富游戏的可玩性,结果我把地图显示名称和图片标题脚本一起加进去之后,每当开始新游戏,都会报错。
为了方便就不放游戏工程了,只放有这两个脚本的范例工程了。
[pre lang="ruby"]#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

#==============================================================================
# ■ 地图名显示脚本
#     by Yuee
#------------------------------------------------------------------------------
# 在Main的上方插入一个页,将本脚本复制到那页中即可
#==============================================================================

#==============================================================================
# ■ Window_MapName
#------------------------------------------------------------------------------
#  显示地图名字的窗口。
#==============================================================================

class Window_MapName < Window_Base
  #--------------------------------------------------------------------------
  # ● 类常量定义
  #--------------------------------------------------------------------------

  # 暂时屏蔽用的开关
  SWITCH = 35

  # 窗口位置设定
  NAME_X = 380      # 矩形左上顶点X坐标
  NAME_Y = 20       # 矩形左上顶点Y坐标
  NAME_W = 220      # 矩形宽
  NAME_H = 60       # 矩形高

  # 显示时间设置
  SHOW_TIME_0 = 10  # 地图名出现前等待的帧数
  SHOW_TIME_1 = 10  # 地图名从不可见变成可见的帧数
  SHOW_TIME_2 = 34  # 地图名完全可见的帧数
  SHOW_TIME_3 = 16  # 地图名从可见变成不可见的帧数

  # 完全可见时的透明度设置
  OPACITY_1 = 244   # 边框
  OPACITY_2 = 144   # 背景
  OPACITY_3 = 255   # 文字

  # 地图名字的颜色
  TEXT_COLOR = Color.new(255, 255, 255, 255)

  #--------------------------------------------------------------------------
  # ● 初始化状态
  #--------------------------------------------------------------------------
  def initialize
    super(NAME_X , NAME_Y, NAME_W, NAME_H)
    # 初始化窗口透明度
    self.opacity = 0
    self.back_opacity = 0
    self.contents_opacity = 0
    self.contents = Bitmap.new(width - 32, height - 32)
    # 剩余帧数初始化
    @show_time = 0
  end
  #--------------------------------------------------------------------------
  # ● 输出文字
  #--------------------------------------------------------------------------
  def setname   
    unless $game_switches[SWITCH]==true
      # 获取地图ID
      newid = $game_map.map_id
      time = SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3  
      # 如果现在的地图的ID不是刚才显示的地图ID则开始显示
      if newid != @id
        @id = newid
        @show_time = SHOW_TIME_0 + SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3
      # 剩余帧数为0是时,全部窗口透明
      elsif @show_time < 1
        self.opacity = 0
        self.back_opacity = 0
        self.contents_opacity = 0
        return
      end      
      self.contents.clear
      self.contents.font.color = TEXT_COLOR
      # 描绘地图名
      self.contents.draw_text(4, 0 , width - 40, 32, $data_mapinfos[@id].name, 1)
      # 根本帧数设定窗口透明度
      if @show_time > (SHOW_TIME_2 + SHOW_TIME_3)
        self.opacity = @show_time < time ? (((OPACITY_1 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
        self.back_opacity = @show_time < time ? (((OPACITY_2 / SHOW_TIME_1 )* (time - @show_time)).to_i) : 0
        self.contents_opacity = @show_time < time ? (((OPACITY_3 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
      else
        self.opacity = @show_time < (SHOW_TIME_3 / 16 * 14) ? ((OPACITY_1 / SHOW_TIME_3) * @show_time).to_i : OPACITY_1
        self.back_opacity = @show_time < (SHOW_TIME_3 / 16 * 9) ? ((OPACITY_2 / SHOW_TIME_3) * @show_time).to_i : OPACITY_2
        self.contents_opacity = @show_time < SHOW_TIME_3 ? ((OPACITY_3 / SHOW_TIME_3)* @show_time).to_i : OPACITY_3
      end      
      @show_time -= 1
    end
  end
end

#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#  处理地图画面的类。(追加定义)
#==============================================================================

class Scene_Map
  alias smn_main main
  def main
    @mapname = Window_MapName.new
    smn_main
    @mapname.dispose
  end

  alias smn_update update
  def update
    @mapname.setname
    smn_update
  end
end

#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  处理标题画面的类。(追加定义)
#==============================================================================

class Scene_Title
  alias smn_main main
  def main
    # 读取地图信息文件
    $data_mapinfos = load_data("Data/MapInfos.rxdata")
    smn_main
  end
end

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息[/pre]

[pre lang="ruby"]#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
#==============================================================================
# ■ 图片标题菜单1.0
# Scene_Title
#------------------------------------------------------------------------------
# 作者:chaochao
# http://zhuchao.go1.icpcn.com
#==============================================================================
class Scene_Title
  def main
    if $BTEST
      battle_test
      return
    end
    $data_actors = load_data("Data/Actors.rxdata")
    $data_classes = load_data("Data/Classes.rxdata")
    $data_skills = load_data("Data/Skills.rxdata")
    $data_items = load_data("Data/Items.rxdata")
    $data_weapons = load_data("Data/Weapons.rxdata")
    $data_armors = load_data("Data/Armors.rxdata")
    $data_enemies = load_data("Data/Enemies.rxdata")
    $data_troops = load_data("Data/Troops.rxdata")
    $data_states = load_data("Data/States.rxdata")
    $data_animations = load_data("Data/Animations.rxdata")
    $data_tilesets = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system = load_data("Data/System.rxdata")
    $game_system = Game_System.new
    # 生成标题图形
    @sprite = [Sprite.new]
    for i in 0..6
      @sprite = Sprite.new
      @sprite.opacity = 0
    end
    @sprite[0].bitmap = RPG::Cache.title($data_system.title_name)
    @sprite[0].opacity = 0
    #开始游戏的图片
    @sprite[1].bitmap = Bitmap.new("Graphics/Pictures/start-1.png")
    @sprite[2].bitmap = Bitmap.new("Graphics/Pictures/start-2.png")
    #继续游戏的图片
    @sprite[3].bitmap = Bitmap.new("Graphics/Pictures/continue-1.png")
    @sprite[4].bitmap = Bitmap.new("Graphics/Pictures/continue-2.png")
    #结束游戏的图片
    @sprite[5].bitmap = Bitmap.new("Graphics/Pictures/exit-1.png")
    @sprite[6].bitmap = Bitmap.new("Graphics/Pictures/exit-2.png")
    #图片位置
    for i in 1..6
      x=220
      y=(i+1)/2*50+240
      @sprite.x =x
      @sprite.y =y
    end
    @continue_enabled = false
    for i in 0..3
      if FileTest.exist?("Save#{i+1}.rxdata")
        @continue_enabled = true
      end
    end
    if @continue_enabled
      @command_index = 1
    else
      @command_index = 0
      @sprite[3].tone = Tone.new(0, 0, 0, 255)
      @sprite[4].tone = Tone.new(0, 0, 0, 255)
    end
    $game_system.bgm_play($data_system.title_bgm)
    Audio.me_stop
    Audio.bgs_stop
    Graphics.transition
    loop do
      Graphics.update
      #淡出背景圖形
      if @sprite[0].opacity <= 255
        @sprite[0].opacity += 15
      end
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    # 釋放圖形
    for i in 0..6
      @sprite.bitmap.dispose
      @sprite.dispose
    end
  end
  def update
  chaochaocommandchaochao
  if Input.trigger?(Input::C)
    case @command_index
      when 0
        command_new_game
      when 1
        command_continue
      when 2
        command_shutdown
      end
    end
  end
  def chaochaocommandchaochao
    if Input.trigger?(Input::UP)
      @command_index -= 1
      if @command_index < 0
        @command_index = 2
      end
      $game_system.se_play($data_system.cursor_se)
    end
    if Input.trigger?(Input::DOWN)
      @command_index += 1
      if @command_index > 2
        @command_index = 0
      end
      $game_system.se_play($data_system.cursor_se)
    end
    case @command_index
    when 0
      if @sprite[1].opacity >= 0
        @sprite[1].opacity -= 30
      end
      if @sprite[2].opacity <= 240
        @sprite[2].opacity += 30
      end
      if @sprite[3].opacity <= 210
        @sprite[3].opacity += 30
      end
      if @sprite[4].opacity >= 0
        @sprite[4].opacity -= 30
      end
      if @sprite[5].opacity <= 210
        @sprite[5].opacity += 30
      end
      if @sprite[6].opacity >= 0
        @sprite[6].opacity -= 30
      end
    when 1
      if @sprite[1].opacity <= 210
        @sprite[1].opacity += 30
      end
      if @sprite[2].opacity >= 0
        @sprite[2].opacity -= 30
      end
      if @sprite[3].opacity >= 0
        @sprite[3].opacity -= 30
      end
      if @sprite[4].opacity <= 240
        @sprite[4].opacity += 30
      end
      if @sprite[5].opacity <= 210
        @sprite[5].opacity += 30
      end
      if @sprite[6].opacity >= 0
        @sprite[6].opacity -= 30
      end
    when 2
      if @sprite[1].opacity <= 210
        @sprite[1].opacity += 30
      end
      if @sprite[2].opacity >= 0
        @sprite[2].opacity -= 30
      end
      if @sprite[3].opacity <= 210
        @sprite[3].opacity += 30
      end
      if @sprite[4].opacity >= 0
        @sprite[4].opacity -= 30
      end
      if @sprite[5].opacity >= 0
        @sprite[5].opacity -= 30
      end
      if @sprite[6].opacity <= 240
        @sprite[6].opacity += 30
      end
    end
  end
end
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================[/pre]
屏幕截图 2025-09-15 191643.png

地图名称和图片标题.zip

307.25 KB, 下载次数: 1

素材区好人

梦石
5
星屑
12559
在线时间
4345 小时
注册时间
2011-7-21
回帖
2264

超评测参与极短28参与极短27参与极短26参与极短25参与极短24参与极短23参与极短22参与极短21参与

发表于 2025-9-16 05:58:00 | 显示全部楼层
我怀疑你的地图名称显示被人改过,我把自用的换给你了
地图名称和图片标题.zip (304 KB, 下载次数: 2)

[fold=不想下载附件的话][pre lang="ruby"]#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================


#==============================================================================
# ■ 地图名显示脚本
#     by Yuee
#------------------------------------------------------------------------------
# 在Main的上方插入一个页,将本脚本复制到那页中即可
#==============================================================================

#==============================================================================
# ■ Window_MapName
#------------------------------------------------------------------------------
#  显示地图名字的窗口。
#==============================================================================

class Window_MapName < Window_Base
  #--------------------------------------------------------------------------
  # ● 类常量定义
  #--------------------------------------------------------------------------

  # 暂时屏蔽用的开关
  SWITCH = 4
  
  # 窗口位置设定
  NAME_X = 380      # 矩形左上顶点X坐标
  NAME_Y = 20       # 矩形左上顶点Y坐标
  NAME_W = 220      # 矩形宽
  NAME_H = 60       # 矩形高
  
  # 显示时间设置
  SHOW_TIME_0 = 10  # 地图名出现前等待的帧数
  SHOW_TIME_1 = 10  # 地图名从不可见变成可见的帧数
  SHOW_TIME_2 = 34  # 地图名完全可见的帧数
  SHOW_TIME_3 = 16  # 地图名从可见变成不可见的帧数
  
  # 完全可见时的透明度设置
  OPACITY_1 = 244   # 边框
  OPACITY_2 = 144   # 背景
  OPACITY_3 = 255   # 文字
  
  # 地图名字的颜色
  TEXT_COLOR = Color.new(255, 255, 255, 255)
   
  #--------------------------------------------------------------------------
  # ● 初始化状态
  #--------------------------------------------------------------------------
  def initialize
    super(NAME_X , NAME_Y, NAME_W, NAME_H)
    # 初始化窗口透明度
    self.opacity = 0
    self.back_opacity = 0
    self.contents_opacity = 0
    self.contents = Bitmap.new(width - 32, height - 32)
    # 剩余帧数初始化
    @show_time = 0
  end
  #--------------------------------------------------------------------------
  # ● 输出文字
  #--------------------------------------------------------------------------
  def setname   
    unless $game_switches[SWITCH]==true
      # 获取地图ID
      newid = $game_map.map_id
      time = SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3  
      # 如果现在的地图的ID不是刚才显示的地图ID则开始显示
      if newid != @id
        @id = newid
        @show_time = SHOW_TIME_0 + SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3
      # 剩余帧数为0是时,全部窗口透明
      elsif @show_time < 1
        self.opacity = 0
        self.back_opacity = 0
        self.contents_opacity = 0
        return
      end      
      self.contents.clear
      self.contents.font.color = TEXT_COLOR
      # 描绘地图名
      self.contents.draw_text(4, 0 , width - 40, 32, $data_mapinfos[@id].name, 1)
      # 根本帧数设定窗口透明度
      if @show_time > (SHOW_TIME_2 + SHOW_TIME_3)
        self.opacity = @show_time < time ? (((OPACITY_1 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
        self.back_opacity = @show_time < time ? (((OPACITY_2 / SHOW_TIME_1 )* (time - @show_time)).to_i) : 0
        self.contents_opacity = @show_time < time ? (((OPACITY_3 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
      else
        self.opacity = @show_time < (SHOW_TIME_3 / 16 * 14) ? ((OPACITY_1 / SHOW_TIME_3) * @show_time).to_i : OPACITY_1
        self.back_opacity = @show_time < (SHOW_TIME_3 / 16 * 9) ? ((OPACITY_2 / SHOW_TIME_3) * @show_time).to_i : OPACITY_2
        self.contents_opacity = @show_time < SHOW_TIME_3 ? ((OPACITY_3 / SHOW_TIME_3)* @show_time).to_i : OPACITY_3
      end      
      @show_time -= 1
    end
  end
end

#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#  处理地图画面的类。(追加定义)
#==============================================================================

class Scene_Map
  unless @alias_1
    @alias_1 = true
    alias smn_main main
  end
  def main
    @mapname = Window_MapName.new
    smn_main
    @mapname.dispose
  end
  
  unless @alias_2
    @alias_2 = true
    alias smn_update update
  end
  def update
    @mapname.setname
    smn_update
  end
end

#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  处理标题画面的类。(追加定义)
#==============================================================================

class Scene_Title
  unless @alias_3
    @alias_3 = true
    alias smn_main main
  end
  def main
    # 读取地图信息文件
    $data_mapinfos = load_data("Data/MapInfos.rxdata")
    smn_main
  end
end

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================[/pre][/fold]
回复

使用道具 举报

梦石
0
星屑
265
在线时间
40 小时
注册时间
2023-10-9
回帖
1
 楼主| 发表于 2025-9-16 10:03:22 | 显示全部楼层
无忧谷主幻 发表于 2025-9-16 05:58
我怀疑你的地图名称显示被人改过,我把自用的换给你了

谢谢谷主,问题已经解决了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部