搓了一个地图显示功能
类似于地图名显示,但加了一些功能,字体修改之类的,还加了各种地图风格的外观修改(?)以下是代码RUBY 代码
#传送到目的地时目的地名显示并维持一段时间再消失
#另外内容:地图特有的风格显示(?)
#示例:地图名显示:测试地图(主要的地图名显示),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
returnnilunless !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
defopen
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_Nameif !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.empty?
if note.size>1
size=note.size
rect_1=text_size(note)
rect_2=contents.rect
draw_mapborder_set(note,0, rect_1.width-(note.size-1)*90, rect_1.height-30, enabled = true)
draw_mapborder_set(note,1, rect_1.width+90, rect_1.height-30, enabled = true)
if !note.nil? || !note.empty?
title_rect=Rect.new(rect_2.x,rect_2.y+50,rect_2.width,rect_2.height)
draw_text(rect_2, note, 1)
p rect_1
title_text_font
draw_text(title_rect, note, 1)
else
draw_text(rect, note, 1)
end
else
draw_text(rect, note, 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
然后用鼠标抽象的画了个图()
本帖来自P1论坛作者chen12311,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=498520若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页:
[1]