赞 | 0 |
VIP | 30 |
好人卡 | 0 |
积分 | 1 |
经验 | 16142 |
最后登录 | 2019-4-26 |
在线时间 | 317 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 60
- 在线时间
- 317 小时
- 注册时间
- 2009-1-18
- 帖子
- 177
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 Sion 于 2013-12-17 16:06 编辑
Ace有默认的地图名显示功能,但是自己觉得有点不是非常好看,所以自己修改了一下。
先上代码:- # encoding: utf-8
- #==============================================================================
- # ** Window_MapNamePlus
- #------------------------------------------------------------------------------
- # This window displays the map name.
- #------------------------------------------------------------------------------
- # 使用方法:
- # 新建脚本页,复制粘贴
- # 在“Scene_Map”中找到“Window_MapName.new”,改成"Window_MapNamePlus.new"(大概在
- # 159行左右)
- # 在地图属性的设置窗口,“显示名称”中的地图名格式:“中文名@EnglishName”,即用“@”分割中文
- # 和英文地图名
- #==============================================================================
- class Window_MapNamePlus < Window_Base
- #--------------------------------------------------------------------------
- # * Settings
- #--------------------------------------------------------------------------
- FONT_NAME_CH = ["PMingLiU", "FangSong"] # Chinese Font Name
- FONT_SIZE_CH = 42 # Chinese Font Size
- FONT_NAME_EN = ["Monotype Corsiva"] # English Font Name
- FONT_SIZE_EN = 28 # English Font Size
- FONT_BOLD = false # True if Font in Bold
- FONT_COLOR = Color.new(255, 255, 255, 255) # Color of Font
- FONT_OUT = true # True if Font Has Outline
- OUT_COLOR = Color.new(0, 0, 0, 200) # Color of Outline Color of Font
- FONT_SHADOW = false # True if Text Drops Shadow
- MODIFIER = "~" # Modifier Added beside Map Name
- PADDING = 8 # Padding between Window's Frame and Contents
- LINE_HEIGHT = 6 # Height of Split Line
- #--------------------------------------------------------------------------
- # * Public Instance Variables
- #--------------------------------------------------------------------------
- attr_reader :map_name_ch # Chinese Map Name
- attr_reader :map_name_en # English Map Name
- attr_reader :line_x # Split Line X Coordinate
- attr_reader :line_y # Split Line Y Coordinate
- #--------------------------------------------------------------------------
- # * Object Initialization
- #--------------------------------------------------------------------------
- def initialize
- #----------------------------------------------------------------------
- # * Set the window in the middle of screen.
- #----------------------------------------------------------------------
- super(((Graphics.width - window_width) / 2),
- ((Graphics.height - (FONT_SIZE_CH + FONT_SIZE_EN + PADDING * 4 + LINE_HEIGHT)) / 2),
- window_width, FONT_SIZE_CH + FONT_SIZE_EN + PADDING * 4 + LINE_HEIGHT)
- #----------------------------------------------------------------------
- # * Custom font and style.
- #----------------------------------------------------------------------
- contents.font.bold = FONT_BOLD
- contents.font.color = FONT_COLOR
- contents.font.outline = FONT_OUT
- contents.font.out_color = OUT_COLOR
- contents.font.shadow = FONT_SHADOW
- #----------------------------------------------------------------------
- # * Set Window Opacity
- #----------------------------------------------------------------------
- self.opacity = 0
- self.contents_opacity = 0
- @show_count = 0
- refresh
- end
- #--------------------------------------------------------------------------
- # * Get Window Width
- #--------------------------------------------------------------------------
- def window_width
- return Graphics.width
- end
- #--------------------------------------------------------------------------
- # * Frame Update
- #--------------------------------------------------------------------------
- def update
- super
- if @show_count > 0 && $game_map.name_display
- update_fadein
- @show_count -= 1
- else
- update_fadeout
- end
- end
- #--------------------------------------------------------------------------
- # * Update Fadein
- #--------------------------------------------------------------------------
- def update_fadein
- self.contents_opacity += 16
- end
- #--------------------------------------------------------------------------
- # * Update Fadeout
- #--------------------------------------------------------------------------
- def update_fadeout
- self.contents_opacity -= 16
- end
- #--------------------------------------------------------------------------
- # * Open Window
- #--------------------------------------------------------------------------
- def open
- refresh
- @show_count = 150
- self.contents_opacity = 0
- self
- end
- #--------------------------------------------------------------------------
- # * Close Window
- #--------------------------------------------------------------------------
- def close
- @show_count = 0
- self
- end
- #--------------------------------------------------------------------------
- # * Refresh
- #--------------------------------------------------------------------------
- def refresh
- contents.clear
- set_map_name
- unless $game_map.display_name.empty?
- draw_map_name
- end
- end
- #--------------------------------------------------------------------------
- # * Draw Line
- #--------------------------------------------------------------------------
- def draw_line(rect)
- temp_rect = rect.clone
- temp_rect.height = LINE_HEIGHT
- temp_rect.width /= 4
- contents.gradient_fill_rect(temp_rect, color2, color1)
- temp_rect.x += temp_rect.width
- temp_rect.width *= 2
- contents.fill_rect(temp_rect, color1)
- temp_rect.x += temp_rect.width
- temp_rect.width /= 2
- contents.gradient_fill_rect(temp_rect, color1, color2)
- end
- #--------------------------------------------------------------------------
- # * Set Map Name
- #--------------------------------------------------------------------------
- def set_map_name
- temp_map_name = $game_map.display_name.split("@")
- @map_name_ch = temp_map_name[0].to_s
- @map_name_en = MODIFIER + " " + temp_map_name[1].to_s + " " + MODIFIER
- end
- #--------------------------------------------------------------------------
- # * Draw Map Name
- #--------------------------------------------------------------------------
- def draw_map_name
- set_line_position
- set_line_width
- temp_line_rect = Rect.new(@line_x, @line_y, set_line_width, LINE_HEIGHT)
- draw_line(temp_line_rect)
- temp_name_rect_ch = Rect.new(0, 0, contents.width, FONT_SIZE_CH)
- contents.font.name = FONT_NAME_CH
- contents.font.size = FONT_SIZE_CH
- draw_text(temp_name_rect_ch, @map_name_ch, 1)
- temp_name_rect_en = Rect.new(0, FONT_SIZE_CH, contents.width, FONT_SIZE_EN)
- contents.font.size = FONT_SIZE_EN
- contents.font.name = FONT_NAME_EN
- draw_text(temp_name_rect_en, @map_name_en, 1)
- end
- #--------------------------------------------------------------------------
- # * Set Line Width
- #--------------------------------------------------------------------------
- def set_line_width
- text_width_ch = text_size(@map_name_ch).width * 1.5
- text_width_en = text_size(@map_name_en).width * 1.5
- (text_width_ch >= text_width_en) ?
- (text_width_ch) : (text_width_en)
- end
- #--------------------------------------------------------------------------
- # * Set Line Position
- #--------------------------------------------------------------------------
- def set_line_position
- @line_x = (contents.width - set_line_width) / 2
- @line_y = (contents.height - LINE_HEIGHT) / 2
- end
- #--------------------------------------------------------------------------
- # * Get Color 1
- #--------------------------------------------------------------------------
- def color1
- Color.new(255, 255, 255, 255)
- end
- #--------------------------------------------------------------------------
- # * Get Color 2
- #--------------------------------------------------------------------------
- def color2
- Color.new(255, 255, 255, 0)
- end
- end
复制代码 详细的设置在脚本的一开始,注释虽然是英文但是也看得懂吧。
不过,真正的目的……{:2_250:}
还是希望有人指出错误不足鞭策一下的……
就这样,有问题就说吧,尽量修改……第一次写……
PS:中文字体大概大家都有,英文这个,改成大家喜欢的就OK~~~
范例工程:
AceTest.7z
(279.83 KB, 下载次数: 1989)
|
评分
-
查看全部评分
|