#============================================================================== # ★RGSS2 # STR04_マップネーム表示 v1.0 # サポート:http://otsu.cool.ne.jp/strcatyou/ # ・マップ画面にマップ名を表示します。 # ・文字を縦グラデーション描画可能。 # ☆マップ名のコメントアウト(?)機能付き。 # マップ名の"#"以降の文字をカットして表示します。 # (例) 炎の洞窟/二階#小部屋その1 → 炎の洞窟/二階 # ・イベント中、歩行中に非表示にすることが出来ます。 #============================================================================== # ■ Sprite_Strmapname #============================================================================== class Sprite_Strmapname < Sprite # マップネーム表示位置 TEXT_RECT = Rect.new(20, 16, 240, 20) # 左揃い #TEXT_RECT = Rect.new(20, 16, 260, 24) # 中央揃い #TEXT_RECT = Rect.new(544-336, 416-40, 320, 24 # 右揃い # フォントネーム #TEXT_FONT = ["UmePlus Gothic", "MS Pゴシック"] # UmePlus優先 TEXT_FONT = ["迷你简卡通"] # MSPゴシック優先 # テキストサイズ TEXT_SIZE = 18 # 文字装飾 [マップネーム前の文字,マップネーム後ろの文字] TEXT_TEXT = [" 所在地:", ""] # 文字揃え 0:左揃い 1:中央揃い 2:右揃い TEXT_ALIGN = 0 # テキスト縁取り true = 有効 false = 無効 TEXT_FRAME = true # テキストグラデーション(縦) true = 有効 false = 無効 TEXT_GRADIENT = true # テキストカラー [グラデーション↑,グラデーション↓,縁取り] TEXT_COLOR = [Color.new(255,255,255), Color.new(255,224,80), Color.new(32,32,32)] # 斜体・太字 true = 有効 false = 無効 TEXT_ITAL = false TEXT_BOLD = false # 簡易背景表示 true = 有効 false = 無効 TEXT_BACK = true # 背景色 [グラデーション濃,グラデーション薄] TEXT_B_COLOR = [Color.new(0,0,0,160), Color.new(0,0,0,0)] # イベント中は非表示にする true = 有効 false = 無効 TEXT_EVENT_V = false # プレイヤー移動中は非表示にする true = 有効 false = 無効 TEXT_PMOVE_V = false # マップネームのコメントアウト文字 デフォルトは "#" TEXT_C_OUT = "#" #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(viewport) super(viewport) t = TEXT_TEXT[0] + map_name(TEXT_C_OUT) + TEXT_TEXT[1] self.visible = false if map_name(TEXT_C_OUT) == "" r = TEXT_RECT h = TEXT_SIZE + 2 bitmap = Bitmap.new(r.width, r.height) # 背景描画 if TEXT_BACK case TEXT_ALIGN when 0 bitmap.gradient_fill_rect(16, 0, r.width-32, r.height, TEXT_B_COLOR[0], TEXT_B_COLOR[1]) bitmap.gradient_fill_rect(0, 0, 16, r.height, TEXT_B_COLOR[1], TEXT_B_COLOR[0]) when 1 bitmap.gradient_fill_rect(r.width/2, 0, r.width/2, r.height, TEXT_B_COLOR[0], TEXT_B_COLOR[1]) bitmap.gradient_fill_rect(0, 0, r.width/2, r.height, TEXT_B_COLOR[1], TEXT_B_COLOR[0]) when 2 bitmap.gradient_fill_rect(r.width-16, 0, 16, r.height, TEXT_B_COLOR[0], TEXT_B_COLOR[1]) bitmap.gradient_fill_rect(32, 0, r.width-48, r.height, TEXT_B_COLOR[1], TEXT_B_COLOR[0]) end end # フォント設定 bitmap.font.name = TEXT_FONT bitmap.font.size = TEXT_SIZE bitmap.font.italic = TEXT_ITAL bitmap.font.bold = TEXT_BOLD # 縁取り bitmap.font.shadow = false if TEXT_FRAME bitmap.font.color = TEXT_COLOR[2] bitmap.draw_text(-1, 0, r.width, h, t, TEXT_ALIGN) bitmap.draw_text(1, 0, r.width, h, t, TEXT_ALIGN) bitmap.draw_text(0, 1, r.width, h, t, TEXT_ALIGN) bitmap.draw_text(0, -1, r.width, h, t, TEXT_ALIGN) bitmap.draw_text(+1, +1, r.width, h, t, TEXT_ALIGN) else bitmap.font.shadow = true end # 文字A b1 = Bitmap.new(r.width, r.height) # フォント設定 b1.font.name = TEXT_FONT b1.font.size = TEXT_SIZE b1.font.italic = TEXT_ITAL b1.font.bold = TEXT_BOLD b1.font.color = TEXT_COLOR[0] b1.draw_text(0, 0, r.width, h, t, TEXT_ALIGN) bitmap.font.shadow = false src = Rect.new(0, 0, r.width, r.height) d = Rect.new(0, 0, r.width, r.height) bitmap.stretch_blt(d, b1, src) # 文字B if TEXT_GRADIENT b2 = Bitmap.new(r.width, r.height) # フォント設定 b2.font.name = TEXT_FONT b2.font.size = TEXT_SIZE b2.font.italic = TEXT_ITAL b2.font.bold = TEXT_BOLD b2.font.color = TEXT_COLOR[1] b2.draw_text(0, 0, r.width, h, t, TEXT_ALIGN) y = TEXT_SIZE + 4 src.height = 1 d.height = 1 # グラデーション for yy in 1..y op = 260 * (yy/(y*1.0)) src.y = yy d.y = yy bitmap.stretch_blt(d, b2, src, op) end end self.bitmap = bitmap self.x = r.x self.y = r.y self.z = 100 @opacity = 0 self.opacity = @opacity update end #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- def dispose if self.bitmap != nil self.bitmap.dispose end super end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update if ($game_map.interpreter.running? and TEXT_EVENT_V) or (moving? and TEXT_PMOVE_V) @opacity = [[@opacity - 32, -64].max, 256].min else @opacity = [[@opacity + 32, -64].max, 256].min end self.opacity = @opacity end #-------------------------------------------------------------------------- # ● 移動判定 #-------------------------------------------------------------------------- def moving? return (not $game_player.stopping?) end #-------------------------------------------------------------------------- # ● マップネーム取得 #-------------------------------------------------------------------------- def map_name(out) n = $game_map.map_name.split('') t = "" for i in 0...n.size break if n == out t += n end return t end end #============================================================================== # ■ Spriteset_Map #============================================================================== class Spriteset_Map #-------------------------------------------------------------------------- # ★ 追加 #-------------------------------------------------------------------------- def create_strmapname @str_mapname = Sprite_Strmapname.new(@viewport2) end def dispose_strmapname @str_mapname.dispose end def update_strmapname @str_mapname.update end #-------------------------------------------------------------------------- # ★ エイリアス #-------------------------------------------------------------------------- alias initialize_str04 initialize def initialize create_strmapname initialize_str04 end alias dispose_str04 dispose def dispose dispose_str04 dispose_strmapname end alias update_str04 update def update update_str04 update_strmapname end end #============================================================================== # ■ Game_Map #============================================================================== class Game_Map #-------------------------------------------------------------------------- # ★ 追加 #-------------------------------------------------------------------------- def map_name map = load_data("Data/MapInfos.rvdata") return map[@map_id].name end end --------------------------------------------------------------------------------------------------------此行不复制 这次不用代码框看看,怕你看不懂(版主别扣经验)再说我忘了怎么弄代码框 |
本帖最后由 ali 于 2013-4-29 16:52 编辑 来了来了,这是VX的
|
|
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2025-7-27 04:58
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.