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

Project1

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

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

[复制链接]

Lv2.观梦者

梦石
0
星屑
643
在线时间
113 小时
注册时间
2024-4-13
帖子
29
跳转到指定楼层
1
发表于 2026-1-26 00:47:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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

类似于地图名显示,但加了一些功能,字体修改之类的,还加了各种地图风格的外观修改(?)
以下是代码
RUBY 代码复制
  1. #传送到目的地时目的地名显示并维持一段时间再消失
  2. #另外内容:地图特有的风格显示(?)
  3. #图片大小可以设置,但对应的图片也要设置成一样的大小
  4. #图片名为:map_border+号数
  5. #示例:地图名显示:测试地图(主要的地图名显示),2(需要的图片名的号数),测试中.....(下面的小标题)
  6. module Show_Map_Set
  7.         Note=/地图名显示[::](\S+)/
  8.         Text_Font_Size=90
  9.         #地图名未设置不会显示
  10.         Text_Font_Name="kaiti"#地图名字体
  11.         Title_Font_Name=""#地图描述字体名
  12.         Title_Font_Size=20
  13.         Map_Border=90
  14.         Time_Set=125#保留的帧数
  15. end
  16. class Game_Map
  17.         def map_set_note
  18.                 @map.note=~ Show_Map_Set::Note ? note=$1 : note= nil
  19.                 return nil unless !note.nil?
  20.                 note_l=note.split(/\s*,\s*/)
  21.         end
  22. end
  23. class Window_Base < Window
  24.   def draw_mapborder_set(name,index, x, y, enabled = true)
  25.     bitmap = Cache.system("map_border"+name)
  26.                 size=Show_Map_Set::Map_Border
  27.     rect = Rect.new(index % 2 * size, index / 2 * size, size, size)
  28.     contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
  29.   end
  30. end
  31. class Window_Mapset_Show < Window_Base
  32.   def initialize
  33.     super(0,80, Graphics.width, Graphics.height/2)
  34.     self.opacity = 0
  35.     self.contents_opacity = 0
  36.     @show_count = 0
  37.     refresh
  38.   end
  39.   def close
  40.     @show_count = 0
  41.     self
  42.   end
  43.   def open
  44.     refresh
  45.     @show_count = Show_Map_Set::Time_Set
  46.     self.contents_opacity = 0
  47.     self
  48.   end
  49.   def update
  50.     super
  51.     if @show_count > 0 && $game_map.name_display
  52.       update_fadein
  53.       @show_count -= 1
  54.     else
  55.       update_fadeout
  56.     end
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 更新淡入
  60.   #--------------------------------------------------------------------------
  61.   def update_fadein
  62.     self.contents_opacity += 16
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 更新淡出
  66.   #--------------------------------------------------------------------------
  67.   def update_fadeout
  68.     self.contents_opacity -= 16
  69.   end
  70.         def map_text_font
  71.                 contents.font.name=Show_Map_Set::Text_Font_Name
  72.                 contents.font.size=Show_Map_Set::Text_Font_Size
  73.         end
  74.         def title_text_font
  75.                 contents.font.name=Show_Map_Set::Title_Font_Name if !Show_Map_Set::Title_Font_Name.empty?
  76.                 contents.font.size=Show_Map_Set::Title_Font_Size
  77.         end
  78.   def refresh
  79.     contents.clear
  80.                 map_text_font
  81.                 note=$game_map.map_set_note
  82.     unless note[0].empty?
  83.                         if note.size>1
  84.                                 size=note[0].size
  85.                                 rect_1=text_size(note[0])
  86.                                 rect_2=contents.rect
  87.                                 draw_mapborder_set(note[1],0, rect_1.width-(note[0].size-1)*90, rect_1.height-30, enabled = true)
  88.                                 draw_mapborder_set(note[1],1, rect_1.width+90, rect_1.height-30, enabled = true)
  89.                                 if !note[2].nil? || !note[2].empty?
  90.                                         title_rect=Rect.new(rect_2.x,rect_2.y+50,rect_2.width,rect_2.height)
  91.                                         draw_text(rect_2, note[0], 1)
  92.                                         p rect_1
  93.                                         title_text_font
  94.                                         draw_text(title_rect, note[2], 1)
  95.                                 else
  96.                                         draw_text(rect, note[0], 1)
  97.                                 end
  98.                         else
  99.                                 draw_text(rect, note[0], 1)
  100.                         end
  101.     end
  102.   end
  103. end
  104. class Scene_Map < Scene_Base
  105.   alias create_all_windows_mapset create_all_windows
  106.         def create_all_windows
  107.                 create_all_windows_mapset
  108.                 create_mapset_show_window
  109.         end
  110.         def create_mapset_show_window
  111.     @mapset_show_window = Window_Mapset_Show.new
  112.         end
  113.         alias post_transfer_mapset post_transfer
  114.   def post_transfer
  115.     post_transfer_mapset
  116.                 @mapset_show_window.open
  117.   end
  118.         alias pre_transfer_mapset pre_transfer
  119.   def pre_transfer
  120.     @mapset_show_window.close
  121.     pre_transfer_mapset
  122.   end
  123. end

然后用鼠标抽象的画了个图()

Screenshot 2026-01-26 005202.png (187.09 KB, 下载次数: 25)

Screenshot 2026-01-26 005202.png

评分

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

查看全部评分

Lv3.寻梦者

梦石
0
星屑
1535
在线时间
279 小时
注册时间
2020-8-9
帖子
24

极短27参与

2
发表于 2026-1-26 09:23:22 | 只看该作者
有意思!我回头就试试看,感觉能做出很漂亮的效果
春夏秋冬接踵而至。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-4 13:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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