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

Project1

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

[已经解决] 显示地图名脚本怎么控制它在该显示的时候显示

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
33 小时
注册时间
2015-7-4
帖子
27
跳转到指定楼层
1
发表于 2015-8-9 18:43:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
我在做事件标题,不过因为有了地图名脚本,在标题的时候也会蹦出一个地图名,那么怎么控制它在该显示的时候显示比如设置一个开关来控制
  1. # ————————————————————————————————————
  2. # 本脚本来自[url]http://www.66rpg.com/[/url],转载自[url]http://www.phylomortis.com/[/url],转载请保留此信息
  3. # ————————————————————————————————————

  4. #==============================================================================
  5. # ■ Window_MapName
  6. #------------------------------------------------------------------------------
  7. #  显示地图名字的窗口。
  8. #==============================================================================

  9. class Window_MapName < Window_Base
  10.   #--------------------------------------------------------------------------
  11.   # ● 类常量定义
  12.   #--------------------------------------------------------------------------

  13.   # 窗口位置设定
  14.   NAME_X = 210                  # 矩形左上顶点X坐标
  15.   NAME_Y = 180             # 矩形左上顶点Y坐标
  16.   NAME_W = 250          # 矩形宽
  17.   NAME_H = 120           # 矩形高
  18.   
  19.   # 显示时间设置
  20.   SHOW_TIME_0 = 10  # 地图名出现前等待的帧数
  21.   SHOW_TIME_1 = 10  # 地图名从不可见变成可见的帧数
  22.   SHOW_TIME_2 = 34  # 地图名完全可见的帧数
  23.   SHOW_TIME_3 = 16  # 地图名从可见变成不可见的帧数
  24.   
  25.   # 完全可见时的透明度设置
  26.   OPACITY_1 = 0   # 边框
  27.   OPACITY_2 = 0   # 背景
  28.   OPACITY_3 = 255   # 文字
  29.   
  30.   # 地图名字的颜色
  31.   TEXT_COLOR = Color.new(255, 255, 255, 255)
  32.    
  33.   #--------------------------------------------------------------------------
  34.   # ● 初始化状态
  35.   #--------------------------------------------------------------------------
  36.   def initialize
  37.     super(NAME_X , NAME_Y, NAME_W, NAME_H)
  38.     # 初始化窗口透明度
  39.     self.opacity = 0
  40.     self.back_opacity = 0
  41.     self.contents_opacity = 0
  42.     self.contents = Bitmap.new(width - 32, height - 32)
  43.     # 剩余帧数初始化
  44.     @show_time = 0
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 输出文字
  48.   #--------------------------------------------------------------------------
  49.   def setname

  50.     # 获取地图ID
  51.     newid = $game_map.map_id
  52.     time = SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3

  53.     # 如果现在的地图的ID不是刚才显示的地图ID则开始显示
  54.     if newid != @id
  55.       @id = newid
  56.       @show_time = SHOW_TIME_0 + SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3
  57.     # 剩余帧数为0是时,全部窗口透明
  58.     elsif @show_time < 1
  59.       self.opacity = 0
  60.       self.back_opacity = 0
  61.       self.contents_opacity = 0
  62.       return
  63.     end
  64.    
  65.     self.contents.clear
  66.     self.contents.font.color = TEXT_COLOR
  67.     # 描绘地图名

  68.    
  69.     self.contents.font.size = 22
  70.     self.contents.draw_text(4, 0 , width - 40, 32, $data_mapinfos[@id].name.split(/#/)[0], 1)
  71.     self.contents.font.size = 15
  72.     self.contents.draw_text(4, 0 , width - 40, 62, "------------------------", 1)
  73.     self.contents.draw_text(4, 0 , width - 40, 81, $data_mapinfos[@id].name.split(/#/)[1], 1)
  74.    
  75.     # 根本帧数设定窗口透明度
  76.     if @show_time > (SHOW_TIME_2 + SHOW_TIME_3)
  77.       self.opacity = @show_time < time ? (((OPACITY_1 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
  78.       self.back_opacity = @show_time < time ? (((OPACITY_2 / SHOW_TIME_1 )* (time - @show_time)).to_i) : 0
  79.       self.contents_opacity = @show_time < time ? (((OPACITY_3 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
  80.     else
  81.       self.opacity = @show_time < (SHOW_TIME_3 / 16 * 14) ? ((OPACITY_1 / SHOW_TIME_3) * @show_time).to_i : OPACITY_1
  82.       self.back_opacity = @show_time < (SHOW_TIME_3 / 16 * 9) ? ((OPACITY_2 / SHOW_TIME_3) * @show_time).to_i : OPACITY_2
  83.       self.contents_opacity = @show_time < SHOW_TIME_3 ? ((OPACITY_3 / SHOW_TIME_3)* @show_time).to_i : OPACITY_3
  84.     end
  85.    
  86.     @show_time -= 1
  87.   end
  88. end

  89. #==============================================================================
  90. # ■ Scene_Map
  91. #------------------------------------------------------------------------------
  92. #  处理地图画面的类。(追加定义)
  93. #==============================================================================

  94. class Scene_Map
  95.   alias smn_main main
  96.   def main
  97.     @mapname = Window_MapName.new
  98.     smn_main
  99.     @mapname.dispose
  100.   end
  101.   
  102.   alias smn_update update
  103.   def update
  104.     @mapname.setname
  105.     smn_update
  106.   end
  107. end

  108. #==============================================================================
  109. # ■ Scene_Title
  110. #------------------------------------------------------------------------------
  111. #  处理标题画面的类。(追加定义)
  112. #==============================================================================

  113. class Scene_Title
  114.   alias smn_main main
  115.   def main
  116.     # 读取地图信息文件
  117.     $data_mapinfos = load_data("Data/MapInfos.rxdata")
  118.     smn_main
  119.   end
  120. end
复制代码

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

Lv1.梦旅人

梦石
0
星屑
50
在线时间
33 小时
注册时间
2015-7-4
帖子
27
6
 楼主| 发表于 2015-8-12 10:07:06 | 只看该作者
天地有正气 发表于 2015-8-10 14:03
在我那句后面加上 and @mapname != nil 试试看

谢谢,解决了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

○赛

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

贵宾

5
发表于 2015-8-10 14:03:24 | 只看该作者
在我那句后面加上 and @mapname != nil 试试看
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
33 小时
注册时间
2015-7-4
帖子
27
4
 楼主| 发表于 2015-8-10 13:58:05 | 只看该作者
天地有正气 发表于 2015-8-9 18:57
@mapname = Window_MapName.new
@mapname.dispose
@mapname.setname

好吧,刚才太急忘记全部测试一遍了……
我已经修改脚本了,不过在事件标题完了场所移动到下一个场景时弹出:
“地图名美化”的112行发生了nomethoderror。undefined method'setname' for nil NilClass
  1. # ————————————————————————————————————
  2. # 本脚本来自[url]http://www.66rpg.com/[/url],转载自[url]http://www.phylomortis.com/[/url],转载请保留此信息
  3. # ————————————————————————————————————

  4. #==============================================================================
  5. # ■ Window_MapName
  6. #------------------------------------------------------------------------------
  7. #  显示地图名字的窗口。
  8. #==============================================================================

  9. class Window_MapName < Window_Base
  10.   #--------------------------------------------------------------------------
  11.   # ● 类常量定义
  12.   #--------------------------------------------------------------------------

  13.   # 窗口位置设定
  14.   NAME_X = 210                  # 矩形左上顶点X坐标
  15.   NAME_Y = 180             # 矩形左上顶点Y坐标
  16.   NAME_W = 250          # 矩形宽
  17.   NAME_H = 120           # 矩形高
  18.   
  19.   # 显示时间设置
  20.   SHOW_TIME_0 = 10  # 地图名出现前等待的帧数
  21.   SHOW_TIME_1 = 10  # 地图名从不可见变成可见的帧数
  22.   SHOW_TIME_2 = 34  # 地图名完全可见的帧数
  23.   SHOW_TIME_3 = 16  # 地图名从可见变成不可见的帧数
  24.   
  25.   # 完全可见时的透明度设置
  26.   OPACITY_1 = 0   # 边框
  27.   OPACITY_2 = 0   # 背景
  28.   OPACITY_3 = 255   # 文字
  29.   
  30.   # 地图名字的颜色
  31.   TEXT_COLOR = Color.new(255, 255, 255, 255)
  32.    
  33.   #--------------------------------------------------------------------------
  34.   # ● 初始化状态
  35.   #--------------------------------------------------------------------------
  36.   def initialize
  37.     super(NAME_X , NAME_Y, NAME_W, NAME_H)
  38.     # 初始化窗口透明度
  39.     self.opacity = 0
  40.     self.back_opacity = 0
  41.     self.contents_opacity = 0
  42.     self.contents = Bitmap.new(width - 32, height - 32)
  43.     # 剩余帧数初始化
  44.     @show_time = 0
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 输出文字
  48.   #--------------------------------------------------------------------------
  49.   def setname

  50.     # 获取地图ID
  51.     newid = $game_map.map_id
  52.     time = SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3

  53.     # 如果现在的地图的ID不是刚才显示的地图ID则开始显示
  54.     if newid != @id
  55.       @id = newid
  56.       @show_time = SHOW_TIME_0 + SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3
  57.     # 剩余帧数为0是时,全部窗口透明
  58.     elsif @show_time < 1
  59.       self.opacity = 0
  60.       self.back_opacity = 0
  61.       self.contents_opacity = 0
  62.       return
  63.     end
  64.    
  65.     self.contents.clear
  66.     self.contents.font.color = TEXT_COLOR
  67.     # 描绘地图名

  68.    
  69.     self.contents.font.size = 22
  70.     self.contents.draw_text(4, 0 , width - 40, 32, $data_mapinfos[@id].name.split(/#/)[0], 1)
  71.     self.contents.font.size = 15
  72.     self.contents.draw_text(4, 0 , width - 40, 62, "------------------------", 1)
  73.     self.contents.draw_text(4, 0 , width - 40, 81, $data_mapinfos[@id].name.split(/#/)[1], 1)
  74.    
  75.     # 根本帧数设定窗口透明度
  76.     if @show_time > (SHOW_TIME_2 + SHOW_TIME_3)
  77.       self.opacity = @show_time < time ? (((OPACITY_1 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
  78.       self.back_opacity = @show_time < time ? (((OPACITY_2 / SHOW_TIME_1 )* (time - @show_time)).to_i) : 0
  79.       self.contents_opacity = @show_time < time ? (((OPACITY_3 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
  80.     else
  81.       self.opacity = @show_time < (SHOW_TIME_3 / 16 * 14) ? ((OPACITY_1 / SHOW_TIME_3) * @show_time).to_i : OPACITY_1
  82.       self.back_opacity = @show_time < (SHOW_TIME_3 / 16 * 9) ? ((OPACITY_2 / SHOW_TIME_3) * @show_time).to_i : OPACITY_2
  83.       self.contents_opacity = @show_time < SHOW_TIME_3 ? ((OPACITY_3 / SHOW_TIME_3)* @show_time).to_i : OPACITY_3
  84.     end
  85.    
  86.     @show_time -= 1
  87.   end
  88. end

  89. #==============================================================================
  90. # ■ Scene_Map
  91. #------------------------------------------------------------------------------
  92. #  处理地图画面的类。(追加定义)
  93. #==============================================================================

  94. class Scene_Map
  95.   alias smn_main main
  96.   def main
  97.     @mapname = Window_MapName.new if $game_map.map_id !=4
  98.     smn_main
  99.     @mapname.dispose if $game_map.map_id !=4
  100.   end
  101.   
  102.   alias smn_update update
  103.   def update
  104.     @mapname.setname if $game_map.map_id !=4
  105.     smn_update
  106.   end
  107. end

  108. #==============================================================================
  109. # ■ Scene_Title
  110. #------------------------------------------------------------------------------
  111. #  处理标题画面的类。(追加定义)
  112. #==============================================================================

  113. class Scene_Title
  114.   alias smn_main main
  115.   def main
  116.     # 读取地图信息文件
  117.     $data_mapinfos = load_data("Data/MapInfos.rxdata")
  118.     smn_main
  119.   end
  120. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
33 小时
注册时间
2015-7-4
帖子
27
3
 楼主| 发表于 2015-8-10 11:34:06 | 只看该作者
天地有正气 发表于 2015-8-9 18:57
@mapname = Window_MapName.new
@mapname.dispose
@mapname.setname

问题解决,多谢
回复 支持 反对

使用道具 举报

Lv3.寻梦者

○赛

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

贵宾

2
发表于 2015-8-9 18:57:02 | 只看该作者
@mapname = Window_MapName.new
@mapname.dispose
@mapname.setname
找到这三行,在后面都加上 if $game_map.map_id != 事件标题的地图id

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 13:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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