| 赞 | 0 |
| VIP | 0 |
| 好人卡 | 0 |
| 积分 | 1 |
| 经验 | 0 |
| 最后登录 | 2026-6-24 |
| 在线时间 | 4 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 60
- 在线时间
- 4 小时
- 注册时间
- 2026-6-21
- 帖子
- 4
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 31号焦糖色 于 2026-6-23 19:27 编辑
地图名显示脚本
在Main的上方插入一个页,将本脚本复制到那页中即可(第26行、30行部分需手动调整):
- #==============================================================================
- # ————————————————————————————————————
- # 本脚本来自www.66rpg.com,转载和使用请保留此信息
- # ————————————————————————————————————
- #==============================================================================
- # ■ 地图名显示脚本
- # by Yuee
- # 修改 龙魂 Q767444342
- # 再修改(31号焦糖色):增加白名单/黑名单模式,指定地图显示/不显示
- #==============================================================================
- # ■ Window_MapName
- # 显示地图名字的窗口。
- #==============================================================================
- class Window_MapName < Window_Base
- #--------------------------------------------------------------------------
- # ● 配置区
- #--------------------------------------------------------------------------
- # 总开关:61号开关ON时,所有地图都不显示
- SWITCH = 61
-
- # 显示模式:
- # :blacklist = 黑名单(列表里的地图不显示,其他都显示)
- # :whitelist = 白名单(只有列表里的地图才显示)
- # ↓↓↓默认初始状态为黑名单模式
- MODE = :blacklist
-
- # 地图ID列表(改成你自己的地图ID)
- # 比如 [2, 5, 7] 表示地图ID为2、5、7的地图
- MAP_LIST = [] # 先放空,全部地图都显示,测试没问题再往里加
-
- # 窗口位置
- NAME_X = 20
- NAME_Y = 20
- NAME_W = 200
- NAME_H = 60
-
- # 显示时间(单位:帧,60帧=1秒)
- SHOW_DELAY = 5 # 出现前等多久
- SHOW_FADEIN = 30 # 淡入动画时间
- SHOW_STAY = 50 # 完全显示停留时间
- SHOW_FADEOUT = 30 # 淡出动画时间
-
- # 透明度
- OPACITY_BORDER = 244 # 边框
- OPACITY_BG = 244 # 背景
- OPACITY_TEXT = 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
- @last_map_id = 0
- end
- #--------------------------------------------------------------------------
- # ● 更新显示
- #--------------------------------------------------------------------------
- def setname
- # 总开关判断
- return if $game_switches[SWITCH] == true
-
- current_map_id = $game_map.map_id
-
- # 地图变了 → 重置显示状态
- if current_map_id != @last_map_id
- @last_map_id = current_map_id
-
- # 判断这张地图是否应该显示地图名
- if map_should_show?(current_map_id)
- @show_time = SHOW_DELAY + SHOW_FADEIN + SHOW_STAY + SHOW_FADEOUT
- refresh_text(current_map_id)
- else
- @show_time = 0
- self.opacity = 0
- self.back_opacity = 0
- self.contents_opacity = 0
- return
- end
- end
-
- # 显示时间到了就隐藏
- if @show_time <= 0
- self.opacity = 0
- self.back_opacity = 0
- self.contents_opacity = 0
- return
- end
-
- # 根据剩余帧数计算透明度
- total = SHOW_FADEIN + SHOW_STAY + SHOW_FADEOUT
- elapsed = total - (@show_time - SHOW_DELAY)
-
- if elapsed < 0
- # 等待阶段,完全透明
- self.opacity = 0
- self.back_opacity = 0
- self.contents_opacity = 0
- elsif elapsed < SHOW_FADEIN
- # 淡入阶段
- rate = elapsed.to_f / SHOW_FADEIN
- self.opacity = (OPACITY_BORDER * rate).to_i
- self.back_opacity = (OPACITY_BG * rate).to_i
- self.contents_opacity = (OPACITY_TEXT * rate).to_i
- elsif elapsed < SHOW_FADEIN + SHOW_STAY
- # 停留阶段,完全显示
- self.opacity = OPACITY_BORDER
- self.back_opacity = OPACITY_BG
- self.contents_opacity = OPACITY_TEXT
- else
- # 淡出阶段
- fade_elapsed = elapsed - SHOW_FADEIN - SHOW_STAY
- rate = 1.0 - fade_elapsed.to_f / SHOW_FADEOUT
- rate = 0 if rate < 0
- self.opacity = (OPACITY_BORDER * rate).to_i
- self.back_opacity = (OPACITY_BG * rate).to_i
- self.contents_opacity = (OPACITY_TEXT * rate).to_i
- end
-
- @show_time -= 1
- end
-
- private
- #--------------------------------------------------------------------------
- # ● 判断地图是否应该显示
- #--------------------------------------------------------------------------
- def map_should_show?(map_id)
- if MODE == :whitelist
- return MAP_LIST.include?(map_id)
- else
- return !MAP_LIST.include?(map_id)
- end
- end
- #--------------------------------------------------------------------------
- # ● 刷新文字内容
- #--------------------------------------------------------------------------
- def refresh_text(map_id)
- self.contents.clear
- self.contents.font.color = TEXT_COLOR
- map_name = $data_mapinfos[map_id].name rescue "地图#{map_id}"
- self.contents.draw_text(4, 0, width - 40, 32, map_name, 1)
- 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.rvdata")
- smn_main
- end
- end
复制代码
关于黑名单/白名单模式区别
比如只有 地图 ID 为 3 和 5 的地图不显示名字,其他都显示(使用黑名单模式):
- MODE = :blacklist
- MAP_LIST = [3, 5]
复制代码 比如只有 地图 ID 为 2、7、10 的地图显示名字,其他都不显示(使用白名单模式):
- MODE = :whitelist
- MAP_LIST = [2, 7, 10]
复制代码
关于如何查看地图ID
在地图编辑器里,对左下角地图列表按右键,点击“地图属性”,弹窗最左上角显示即为地图ID。(系统显示地图ID为001,在脚本里直接用1指代即可)
|
|