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

Project1

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

[RMVA发布] 地图名显示美化

[复制链接]

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
20935
在线时间
9332 小时
注册时间
2012-6-19
帖子
7106

开拓者短篇九导演组冠军

跳转到指定楼层
1
发表于 2013-9-26 11:35:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 喵呜喵5 于 2015-6-8 22:20 编辑

用法和说明请看脚本开头的注释,

点击这个地址获取脚本的最新版本

https://rpg.blue/home.php?mod=sp ... o=blog&id=12016

效果图:


如果你只是想要测试这个脚本的效果的话,脚本所需的素材图片可以使用这个


这个脚本搭配我的基础脚本共同使用能够拥有更强大的功能:https://rpg.blue/home.php?mod=sp ... o=blog&id=13513
  1. =begin
  2. ===============================================================================
  3.   地图名显示美化 By喵呜喵5
  4. ===============================================================================

  5. 【说明】

  6.   修改了默认的地图名显示方式

  7.   地图名的显示支持基本的转义字符,因此可以做出类似:
  8.     地图名:“\i[4]这里是\n[1]的家”
  9.     显示效果:【图标4】这里是艾里克的家
  10.   这样的效果

  11.   使用脚本需要将地图名的背景命名为“mapname”放在 Graphics\System 下

  12.   如果插入了我的基础脚本,可以通过给地图添加备注

  13.     <地图名 地图背景图片的文件名>

  14.   来为某张地图单独设置特定的背景图片(文件同样放在 Graphics\System 下)

  15. =end
  16. $m5script ||= {}; $m5script[:M5MN20150508] = 20150517
  17. module M5MN20150508
  18. #==============================================================================
  19. #  设定部分
  20. #==============================================================================

  21.   DEAFUT = 3
  22.   # 在这里设置地图名的显示模式
  23.   # 1:不显示地图名,2:地图名始终显示,3:一段时间内显示地图名

  24.     TIME = 120
  25.     #这里设置地图名显示模式为3时,地图名停留的时间

  26.   OPTION = 1
  27.   # 在这里设置控制地图名的变量ID
  28.   # 当变量的值分别为1、2、3时地图名显示模式将切换到对应的模式
  29.   # 不需要的话,填写0就好了

  30.   FADE = 40
  31.   # 这里设置地图名进入和离开的时间

  32.   FONT = ["黑体"]
  33.   # 地图名所使用的字体

  34.   SIZE = 20
  35.   # 地图名字体的大小

  36.   COLOR = Color.new(0,0,0, 210)
  37.   # 地图名的颜色,四个数值分别是R、G、B以及透明度

  38.   BOLD = false
  39.   # 地图名是否加粗

  40.   ITALIC = false
  41.   # 地图名是否斜体

  42.   SHADOW = false
  43.   # 地图名是否有阴影

  44.   OUT = true
  45.   # 地图名是否加边框

  46.   OUT_COLOR = Color.new(255, 255, 255, 100)
  47.   # 地图名边框的颜色,四个数值分别是R、G、B以及透明度

  48.   X = 87
  49.   # 这里调整地图名的X坐标

  50.   Y = 12
  51.   # 这里调整地图名的Y坐标

  52.   Z = 200
  53.   # 如果地图名被其他东西遮住或遮住其他东西了,请调整这个数值

  54. #==============================================================================
  55. #  设定结束
  56. #==============================================================================
  57. #--------------------------------------------------------------------------
  58. # ● 新的显示地图窗口类
  59. #--------------------------------------------------------------------------
  60. class Window_MapName < Window_Base
  61.   #--------------------------------------------------------------------------
  62.   # ● 类实例变量
  63.   #--------------------------------------------------------------------------
  64.   class << self; attr_accessor :show_end; end
  65.   #--------------------------------------------------------------------------
  66.   # ● 载入
  67.   #--------------------------------------------------------------------------
  68.   def initialize
  69.     super(Graphics.width, Y, Graphics.width, Graphics.height)
  70.     self.z = Z
  71.     self.opacity = 0
  72.     creat_background_sprite
  73.     update_mode_setting
  74.     clear_all_flag
  75.     if self.class.show_end
  76.       show_final
  77.     else
  78.       open unless @mode == 1
  79.     end
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 生成背景
  83.   #--------------------------------------------------------------------------
  84.   def creat_background_sprite
  85.     file = get_background_bitmap
  86.     if @background_file != file
  87.       @background_file = file
  88.       @background.dispose if @background
  89.       @background = Sprite.new
  90.       @background.bitmap = Cache.system(file)
  91.       @background.opacity = 0
  92.       @background.z = self.z - 1
  93.     end
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● 获取背景图片文件名
  97.   #--------------------------------------------------------------------------
  98.   def get_background_bitmap
  99.     if $m5script[:M5Base] && $m5script[:M5Base] >= 20150224
  100.       file = M5script.read_map_note($game_map.map_id, "地图名", nil)
  101.     end
  102.     file ||= "Mapname"
  103.     return file
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 显示效果遭到意外中断时,直接显示最终画面
  107.   #--------------------------------------------------------------------------
  108.   def show_final
  109.     if @mode == 2
  110.       refresh
  111.       @background.opacity = self.contents_opacity = 255
  112.       self.x = X
  113.       @state = :showing
  114.     else
  115.       close
  116.     end
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 更新
  120.   #--------------------------------------------------------------------------
  121.   def update
  122.     super
  123.     return if $game_map.display_name == ""
  124.     update_mode_setting
  125.     return update_disappear if @state == :disappear
  126.     update_coming if @state == :coming
  127.     @next_time -= 1 if @next_time > 0
  128.     return if @next_time > 0
  129.     update_leaving if @state == :showing
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 更新显示模式
  133.   #--------------------------------------------------------------------------
  134.   def update_mode_setting
  135.     if !$game_map.name_display then mode = 1
  136.     else
  137.       if OPTION != 0
  138.         mode = $game_variables[OPTION]
  139.         mode = nil unless mode.between?(1,3)
  140.       end
  141.       mode ||= DEAFUT
  142.     end
  143.     if @mode != mode
  144.       @state = :disappear if mode == 1
  145.       refresh if @state == :ready
  146.       @state = :coming if mode != 1
  147.       @mode = mode
  148.     end
  149.   end
  150.   #--------------------------------------------------------------------------
  151.   # ● 更新窗口的消失效果
  152.   #--------------------------------------------------------------------------
  153.   def update_disappear
  154.     @background.opacity -= (255 / FADE) * 2
  155.     self.contents_opacity = @background.opacity
  156.     close if @background.opacity == 0
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 更新窗口的进入效果
  160.   #--------------------------------------------------------------------------
  161.   def update_coming
  162.     @background.opacity += 255/FADE
  163.     return unless @background.opacity > 170
  164.     @background.opacity += 255/FADE
  165.     self.contents_opacity += 255/FADE
  166.     self.x = [self.x - Graphics.width/FADE, X].max
  167.     return unless self.x == X && @background.opacity ==255 &&
  168.       self.contents_opacity == 255
  169.     @next_time = TIME
  170.     @state = :showing
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 更新窗口的离开效果
  174.   #--------------------------------------------------------------------------
  175.   def update_leaving
  176.     return unless @mode == 3
  177.     @background.opacity -= ( 255 / FADE )/2
  178.     self.contents_opacity -= 255 / FADE
  179.     self.x = [self.x + Graphics.width/FADE , Graphics.width].min
  180.     @state = :ready if @background.opacity <= 0
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● 描绘窗口内容
  184.   #--------------------------------------------------------------------------
  185.   def refresh
  186.     contents.clear
  187.     return if $game_map.display_name == ""
  188.     creat_background_sprite
  189.     contents.font.name = FONT
  190.     contents.font.size = SIZE
  191.     contents.font.bold = BOLD
  192.     contents.font.italic = ITALIC
  193.     contents.font.outline = OUT
  194.     contents.font.shadow = SHADOW
  195.     contents.font.color = COLOR
  196.     contents.font.out_color = OUT_COLOR
  197.     draw_text_ex(0,0, $game_map.display_name)
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ● 打开窗口
  201.   #--------------------------------------------------------------------------
  202.   def open
  203.     refresh
  204.     self.x = Graphics.width
  205.     self.class.show_end = false
  206.     @mode = nil
  207.     self
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ● 关闭窗口
  211.   #--------------------------------------------------------------------------
  212.   def close
  213.     clear_all_flag
  214.     self
  215.   end
  216.   #--------------------------------------------------------------------------
  217.   # ● 清除窗口的设置
  218.   #--------------------------------------------------------------------------
  219.   def clear_all_flag
  220.     self.x = Graphics.width
  221.     @state = :ready
  222.     @next_time = 0
  223.     self.contents_opacity = @background.opacity = 0
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● 释放
  227.   #--------------------------------------------------------------------------
  228.   def dispose
  229.     super
  230.     @background.dispose
  231.   end
  232. end
  233. end # M5MN20150508
  234. class Scene_Map
  235.   #--------------------------------------------------------------------------
  236.   # ● 生成地图窗口(※覆盖了原生窗口)
  237.   #--------------------------------------------------------------------------
  238.   alias m5_20150508_create_location_window create_location_window
  239.   def create_location_window
  240.     m5_20150508_create_location_window
  241.     @map_name_window.dispose
  242.     @map_name_window = M5MN20150508::Window_MapName.new
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 窗口意外中断时的处理
  246.   #--------------------------------------------------------------------------
  247.   alias m5_20131130_terminate terminate
  248.   def terminate
  249.     m5_20131130_terminate
  250.     M5MN20150508::Window_MapName.show_end = true
  251.   end
  252. end
  253. class << DataManager
  254.   #--------------------------------------------------------------------------
  255.   # ● 关闭窗口意外中断的标志
  256.   #--------------------------------------------------------------------------
  257.   alias m5_20131130_setup_new_game setup_new_game
  258.   def setup_new_game
  259.     m5_20131130_setup_new_game
  260.     M5MN20150508::Window_MapName.show_end = false
  261.   end
  262.   alias m5_20131130_load_game load_game
  263.   def load_game(index)
  264.     result = m5_20131130_load_game(index)
  265.     M5MN20150508::Window_MapName.show_end = false
  266.     return result
  267.   end
  268. end
复制代码

评分

参与人数 2星屑 +225 收起 理由
feizhaodan + 180 奖赏条例
晴兰 + 45 精品文章

查看全部评分

Lv2.观梦者

梦石
0
星屑
327
在线时间
1291 小时
注册时间
2013-1-12
帖子
3590

贵宾

2
发表于 2013-9-26 12:28:09 | 只看该作者
本帖最后由 76213585 于 2013-9-25 21:38 编辑

Nice, very nice........
Love all your script.....

================
But on roll 36, don't you mean Opacity instead of Transparency?

================
Also, you shouldn't capitalize the @Time, because it cause error
RUBY 代码复制
  1. def initialize
  2.     super(Graphics.width, M5MapName::Y, Graphics.width,Graphics.height)
  3.     self.opacity = 0
  4.     self.contents_opacity = 0   
  5.     @state = :S1
  6.     @mode = M5MapName::DEAFUT
  7.     @mapname = true
  8.     [url=home.php?mod=space&uid=453794]@Times[/url] = M5MapName::TIME
  9.     @background = Sprite.new
  10.     @background.bitmap = Cache.system("Map_name")
  11.     @background.opacity = 0
  12.   end


=================
Then, when I exit the menu, it shows again.........   maybe you want to fix that?

点评

请不要再用英文了!!!!!  发表于 2013-9-28 21:38

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
20935
在线时间
9332 小时
注册时间
2012-6-19
帖子
7106

开拓者短篇九导演组冠军

3
 楼主| 发表于 2013-9-26 17:33:02 | 只看该作者
本帖最后由 喵呜喵5 于 2013-9-26 17:35 编辑
76213585 发表于 2013-9-26 12:28
Nice, very nice........
Love all your script.....

Nice, very nice........
Love all your script.....


Thanks : )
谢谢:)

================
But on roll 36, don't you mean Opacity instead of Transparency?


Sorry, I don't understand what the meaning of this question…
Opacity is an attribute of Sprite
抱歉,我看不懂你想问什么……
Opacity是精灵类对象的本身属性,控制精灵的透明度
opacity
スプライトの不透明度です。0 ~ 255 の範囲で指定します。範囲外の値は自動で修正されます。

Also, you shouldn't capitalize the @Time, because it cause error


This error is caused by forum
There is a user whose name is times so forum call him and add some code into my origin code
so the origin code is
这个是论坛的BUG造成的,因为有一名用户名叫times所以论坛自动修改了我的代码
正确的代码应该是下面这个
  1. @ times = M5MapName::TIME
复制代码
(without space)
(没有空格)

Then, when I exit the menu, it shows again.........   maybe you want to fix that?


Yes, I fix this bug, even though this is not perfect in the mode 3 that you need to wait until every effect has be done...
我修正了这个问题,不过如果地图名设置成了模式3的话必须等到所有的特效都完成以后打开关闭菜单时才不会重新显示特效……


P.S
Can you speak Chinese? My English is learn form textbook and I’m poor in speaking and writing so my reply may be offence or has many grammar error, please forgive me...
And…where are you from?
你看的懂中文吗?我的英语是从教科书上学的所以对于口语和书写都不太擅长,我的回复在你眼中可能会让你感到冒犯或者在语法上错误百出,请原谅……
然后……你是外国人吗?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

○赛

梦石
0
星屑
1249
在线时间
1276 小时
注册时间
2013-1-22
帖子
2246

贵宾

4
发表于 2013-9-26 19:04:52 | 只看该作者
关于time神马的,@一下person应该可以了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

5
发表于 2013-9-26 22:09:20 | 只看该作者
本来这个小脚本没什么
重点是lz的回复太流弊了
(there's nothing difficult about the spirit but the comment LZ made, which is NB!)

  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2013-2-8
帖子
424
6
发表于 2013-9-26 23:59:06 手机端发表。 | 只看该作者
喵呜喵5 发表于 2013-9-26 17:33
Thanks : )
谢谢:)


他是剪刀手。85结尾的,就是他,错不了。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
327
在线时间
1291 小时
注册时间
2013-1-12
帖子
3590

贵宾

7
发表于 2013-9-27 06:27:54 | 只看该作者
喵呜喵5 发表于 2013-9-26 02:33
Thanks : )
谢谢:)

換了个头像就不認得我了.....  昨天只是輸入法傲嬌......
是指在36行的说明內  你說"地图名的颜色,四个数值分别是R、G、B以及透明度"
其中的透明度應該是指不透明度.....

点评

对我来说这两个概念没区别…  发表于 2013-9-27 09:05

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

8
发表于 2013-9-28 20:24:21 | 只看该作者

RE: 地图名显示美化

76213585 发表于 2013-9-27 06:27
換了个头像就不認得我了.....  昨天只是輸入法傲嬌......
是指在36行的说明內  你說"地图名的颜色,四个 ...

不,其实就是透明度(alpha)和opacity相反

点评

是不透明度 无论是alpha还是opacity都是指不透明度 怕混淆的话可以记为「存在感」  发表于 2013-9-29 12:26
恩... 我為了實驗調成了0 是透明了 所以應該是不透明度吧 在RUBY中好像沒有透明度的表示...?  发表于 2013-9-29 00:58

  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
68
在线时间
208 小时
注册时间
2013-8-8
帖子
1296
9
发表于 2013-9-28 21:40:01 | 只看该作者
本帖最后由 我在孤岛等你 于 2013-9-28 21:41 编辑

好吧我想说艾里克的家好奇葩!
还有能不能小一点?太大看上去怪那啥……

点评

已經沒在用了.... 你不要看一兩篇文章就這樣下定論......  发表于 2013-9-29 00:57
从字体到大小到颜色到阴影……在脚本开头那么多行的字体设置不要当摆设啊…  发表于 2013-9-28 22:52
我已经没有兴趣认真做游戏了……只能胡扯
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
675
在线时间
661 小时
注册时间
2012-10-21
帖子
350
10
发表于 2014-1-11 14:42:04 | 只看该作者
为什么每次进入游戏没问题,但是载入存档就会出错……

点评

是新存档  发表于 2014-1-11 18:10
脚本已修正,你看看现在BUG是否还会出现  发表于 2014-1-11 17:55
不是,是新档,新开档能正常运行,此时存档,会标题画面再载入也正常 但是,关闭游戏,在工程里面重新运行,载入就报错……  发表于 2014-1-11 16:55
载入的存档是没加入这个脚本前的旧存档么?  发表于 2014-1-11 16:47
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-24 17:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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