查看: 918|回复: 1

[原创发布] 搓了一个地图显示功能

[复制链接]
梦石
0
星屑
719
在线时间
124 小时
注册时间
2024-4-13
回帖
25
发表于 2026-1-26 00:47:28 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 chen12311 于 2026-1-26 14:24 编辑

类似于地图名显示,但加了一些功能,字体修改之类的,还加了各种地图风格的外观修改(?)
以下是代码[pre lang="ruby"]#传送到目的地时目的地名显示并维持一段时间再消失
#另外内容:地图特有的风格显示(?)
#图片大小可以设置,但对应的图片也要设置成一样的大小
#图片名为:map_border+号数
#示例:地图名显示:测试地图(主要的地图名显示),2(需要的图片名的号数),测试中.....(下面的小标题)
module Show_Map_Set
        Note=/地图名显示[::](\S+)/
        Text_Font_Size=90
        #地图名未设置不会显示
        Text_Font_Name="kaiti"#地图名字体
        Title_Font_Name=""#地图描述字体名
        Title_Font_Size=20
        Map_Border=90
        Time_Set=125#保留的帧数
end
class Game_Map
        def map_set_note
                @map.note=~ Show_Map_Set::Note ? note=$1 : note= nil
                return nil unless !note.nil?
                note_l=note.split(/\s*,\s*/)
        end
end
class Window_Base < Window
  def draw_mapborder_set(name,index, x, y, enabled = true)
    bitmap = Cache.system("map_border"+name)
                size=Show_Map_Set::Map_Border
    rect = Rect.new(index % 2 * size, index / 2 * size, size, size)
    contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
  end
end
class Window_Mapset_Show < Window_Base
  def initialize
    super(0,80, Graphics.width, Graphics.height/2)
    self.opacity = 0
    self.contents_opacity = 0
    @show_count = 0
    refresh
  end
  def close
    @show_count = 0
    self
  end
  def open
    refresh
    @show_count = Show_Map_Set::Time_Set
    self.contents_opacity = 0
    self
  end
  def update
    super
    if @show_count > 0 && $game_map.name_display
      update_fadein
      @show_count -= 1
    else
      update_fadeout
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新淡入
  #--------------------------------------------------------------------------
  def update_fadein
    self.contents_opacity += 16
  end
  #--------------------------------------------------------------------------
  # ● 更新淡出
  #--------------------------------------------------------------------------
  def update_fadeout
    self.contents_opacity -= 16
  end
        def map_text_font
                contents.font.name=Show_Map_Set::Text_Font_Name
                contents.font.size=Show_Map_Set::Text_Font_Size
        end
        def title_text_font
                contents.font.name=Show_Map_Set::Title_Font_Name if !Show_Map_Set::Title_Font_Name.empty?
                contents.font.size=Show_Map_Set::Title_Font_Size
        end
  def refresh
    contents.clear
                map_text_font
                note=$game_map.map_set_note
    unless note[0].empty?
                        if note.size>1
                                size=note[0].size
                                rect_1=text_size(note[0])
                                rect_2=contents.rect
                                draw_mapborder_set(note[1],0, rect_1.width-(note[0].size-1)*90, rect_1.height-30, enabled = true)
                                draw_mapborder_set(note[1],1, rect_1.width+90, rect_1.height-30, enabled = true)
                                if !note[2].nil? || !note[2].empty?
                                        title_rect=Rect.new(rect_2.x,rect_2.y+50,rect_2.width,rect_2.height)
                                        draw_text(rect_2, note[0], 1)
                                        p rect_1
                                        title_text_font
                                        draw_text(title_rect, note[2], 1)
                                else
                                        draw_text(rect, note[0], 1)
                                end
                        else
                                draw_text(rect, note[0], 1)
                        end
    end
  end
end
class Scene_Map < Scene_Base
  alias create_all_windows_mapset create_all_windows
        def create_all_windows
                create_all_windows_mapset
                create_mapset_show_window
        end
        def create_mapset_show_window
    @mapset_show_window = Window_Mapset_Show.new
        end
        alias post_transfer_mapset post_transfer
  def post_transfer
    post_transfer_mapset
                @mapset_show_window.open
  end
        alias pre_transfer_mapset pre_transfer
  def pre_transfer
    @mapset_show_window.close
    pre_transfer_mapset
  end
end[/pre]
然后用鼠标抽象的画了个图()
Screenshot 2026-01-26 005202.png

评分

参与人数 1赞 +1 收起 理由
白小荟 + 1 我很赞同

查看全部评分

好累,想摸鱼.......
梦石
0
星屑
1934
在线时间
296 小时
注册时间
2020-8-9
回帖
21

极短28参与极短27参与

发表于 2026-1-26 09:23:22 | 显示全部楼层
有意思!我回头就试试看,感觉能做出很漂亮的效果
春夏秋冬接踵而至。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部