设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 24|回复: 0
打印 上一主题 下一主题

[转载发布] (VX)如何显示特定地图名称?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
4 小时
注册时间
2026-6-21
帖子
4
跳转到指定楼层
1
发表于 前天 18:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 31号焦糖色 于 2026-6-23 19:27 编辑

地图名显示脚本
在Main的上方插入一个页,将本脚本复制到那页中即可(第26行、30行部分需手动调整)
  1. #==============================================================================
  2. # ————————————————————————————————————
  3. # 本脚本来自www.66rpg.com,转载和使用请保留此信息
  4. # ————————————————————————————————————
  5. #==============================================================================
  6. # ■ 地图名显示脚本
  7. #     by Yuee
  8. #   修改 龙魂 Q767444342
  9. #   再修改(31号焦糖色):增加白名单/黑名单模式,指定地图显示/不显示
  10. #==============================================================================
  11. # ■ Window_MapName
  12. #  显示地图名字的窗口。
  13. #==============================================================================

  14. class Window_MapName < Window_Base
  15.   #--------------------------------------------------------------------------
  16.   # ● 配置区
  17.   #--------------------------------------------------------------------------
  18.   # 总开关:61号开关ON时,所有地图都不显示
  19.   SWITCH = 61
  20.   
  21.   # 显示模式:
  22.   #   :blacklist = 黑名单(列表里的地图不显示,其他都显示)
  23.   #   :whitelist = 白名单(只有列表里的地图才显示)
  24.   # ↓↓↓默认初始状态为黑名单模式
  25.   MODE = :blacklist
  26.   
  27.   # 地图ID列表(改成你自己的地图ID)
  28.   # 比如 [2, 5, 7] 表示地图ID为2、5、7的地图
  29.   MAP_LIST = []   # 先放空,全部地图都显示,测试没问题再往里加
  30.   
  31.   # 窗口位置
  32.   NAME_X = 20
  33.   NAME_Y = 20
  34.   NAME_W = 200
  35.   NAME_H = 60
  36.   
  37.   # 显示时间(单位:帧,60帧=1秒)
  38.   SHOW_DELAY   = 5    # 出现前等多久
  39.   SHOW_FADEIN  = 30   # 淡入动画时间
  40.   SHOW_STAY    = 50   # 完全显示停留时间
  41.   SHOW_FADEOUT = 30   # 淡出动画时间
  42.   
  43.   # 透明度
  44.   OPACITY_BORDER = 244  # 边框
  45.   OPACITY_BG     = 244  # 背景
  46.   OPACITY_TEXT   = 255  # 文字
  47.   
  48.   # 文字颜色(红, 绿, 蓝, 透明度)
  49.   TEXT_COLOR = Color.new(255, 255, 255, 255)
  50.   
  51.   #--------------------------------------------------------------------------
  52.   # ● 初始化
  53.   #--------------------------------------------------------------------------
  54.   def initialize
  55.     super(NAME_X, NAME_Y, NAME_W, NAME_H)
  56.     self.opacity = 0
  57.     self.back_opacity = 0
  58.     self.contents_opacity = 0
  59.     self.contents = Bitmap.new(width - 32, height - 32)
  60.     @show_time = 0
  61.     @last_map_id = 0
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 更新显示
  65.   #--------------------------------------------------------------------------
  66.   def setname
  67.     # 总开关判断
  68.     return if $game_switches[SWITCH] == true
  69.    
  70.     current_map_id = $game_map.map_id
  71.    
  72.     # 地图变了 → 重置显示状态
  73.     if current_map_id != @last_map_id
  74.       @last_map_id = current_map_id
  75.       
  76.       # 判断这张地图是否应该显示地图名
  77.       if map_should_show?(current_map_id)
  78.         @show_time = SHOW_DELAY + SHOW_FADEIN + SHOW_STAY + SHOW_FADEOUT
  79.         refresh_text(current_map_id)
  80.       else
  81.         @show_time = 0
  82.         self.opacity = 0
  83.         self.back_opacity = 0
  84.         self.contents_opacity = 0
  85.         return
  86.       end
  87.     end
  88.    
  89.     # 显示时间到了就隐藏
  90.     if @show_time <= 0
  91.       self.opacity = 0
  92.       self.back_opacity = 0
  93.       self.contents_opacity = 0
  94.       return
  95.     end
  96.    
  97.     # 根据剩余帧数计算透明度
  98.     total = SHOW_FADEIN + SHOW_STAY + SHOW_FADEOUT
  99.     elapsed = total - (@show_time - SHOW_DELAY)
  100.    
  101.     if elapsed < 0
  102.       # 等待阶段,完全透明
  103.       self.opacity = 0
  104.       self.back_opacity = 0
  105.       self.contents_opacity = 0
  106.     elsif elapsed < SHOW_FADEIN
  107.       # 淡入阶段
  108.       rate = elapsed.to_f / SHOW_FADEIN
  109.       self.opacity = (OPACITY_BORDER * rate).to_i
  110.       self.back_opacity = (OPACITY_BG * rate).to_i
  111.       self.contents_opacity = (OPACITY_TEXT * rate).to_i
  112.     elsif elapsed < SHOW_FADEIN + SHOW_STAY
  113.       # 停留阶段,完全显示
  114.       self.opacity = OPACITY_BORDER
  115.       self.back_opacity = OPACITY_BG
  116.       self.contents_opacity = OPACITY_TEXT
  117.     else
  118.       # 淡出阶段
  119.       fade_elapsed = elapsed - SHOW_FADEIN - SHOW_STAY
  120.       rate = 1.0 - fade_elapsed.to_f / SHOW_FADEOUT
  121.       rate = 0 if rate < 0
  122.       self.opacity = (OPACITY_BORDER * rate).to_i
  123.       self.back_opacity = (OPACITY_BG * rate).to_i
  124.       self.contents_opacity = (OPACITY_TEXT * rate).to_i
  125.     end
  126.    
  127.     @show_time -= 1
  128.   end
  129.   
  130.   private
  131.   #--------------------------------------------------------------------------
  132.   # ● 判断地图是否应该显示
  133.   #--------------------------------------------------------------------------
  134.   def map_should_show?(map_id)
  135.     if MODE == :whitelist
  136.       return MAP_LIST.include?(map_id)
  137.     else
  138.       return !MAP_LIST.include?(map_id)
  139.     end
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 刷新文字内容
  143.   #--------------------------------------------------------------------------
  144.   def refresh_text(map_id)
  145.     self.contents.clear
  146.     self.contents.font.color = TEXT_COLOR
  147.     map_name = $data_mapinfos[map_id].name rescue "地图#{map_id}"
  148.     self.contents.draw_text(4, 0, width - 40, 32, map_name, 1)
  149.   end
  150. end

  151. #==============================================================================
  152. # ■ Scene_Map
  153. #==============================================================================

  154. class Scene_Map
  155.   alias smn_main main
  156.   def main
  157.     @mapname = Window_MapName.new
  158.     smn_main
  159.     @mapname.dispose
  160.   end
  161.   
  162.   alias smn_update update
  163.   def update
  164.     @mapname.setname
  165.     smn_update
  166.   end
  167. end

  168. #==============================================================================
  169. # ■ Scene_Title
  170. #==============================================================================

  171. class Scene_Title
  172.   alias smn_main main
  173.   def main
  174.     $data_mapinfos = load_data("Data/MapInfos.rvdata")
  175.     smn_main
  176.   end
  177. end
复制代码

关于黑名单/白名单模式区别
比如只有 地图 ID 为 3 和 5 的地图不显示名字,其他都显示(使用黑名单模式):

  1. MODE = :blacklist
  2. MAP_LIST = [3, 5]
复制代码
比如只有 地图 ID 为 2、7、10 的地图显示名字,其他都不显示(使用白名单模式)
  1. MODE = :whitelist
  2. MAP_LIST = [2, 7, 10]
复制代码

关于如何查看地图ID
在地图编辑器里,对左下角地图列表按右键,点击“地图属性”,弹窗最左上角显示即为地图ID。(系统显示地图ID为001,在脚本里直接用1指代即可)

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2026-6-25 04:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表