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

Project1

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

[已经解决] 求高手给脚本加个开关控制

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-9-17
帖子
29
跳转到指定楼层
1
发表于 2012-11-17 08:52:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Zale 于 2012-11-17 08:57 编辑

该脚本源于Beside大大分享的“区域名及地图名自动显示”,苦于脚本盲我不知道如何添加语句让该脚本能受事件里的开关控制,一些黑屏场景都没法让地图名暂时不显示,特来求高手加个开关控制,在此提前拜谢了OTL

RUBY 代码复制
  1. #==============================================================================
  2. # 地图名及区域名显示 by Beside
  3. #------------------------------------------------------------------------------
  4. # 功能: 动态显示玩家所在区域及地图名。
  5. #==============================================================================
  6. class Window_Map < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 以下是窗口的相关设置
  9.   #--------------------------------------------------------------------------
  10. MWINDOW_X = 240                               # 窗口X坐标
  11. MWINDOW_Y = 25                                # 窗口Y坐标
  12. WEIGH = 160                                   # 窗口宽度      
  13. START_TIME = 30                               # 窗口出现时间
  14. COUN_TIME = 30                                # 窗口持续时间
  15. FADE_TIME = 30                                # 窗口淡去时间
  16. TEXT1_SIZE = 20                               # 地图名的字体大小
  17. TEXT2_SIZE = 18                               # 区域名的字体大小
  18. TEXT3_SIZE = 18                               # 附加名的字体大小
  19. TEXT1_COLOR = Color.new(255,60,60)            # 地图名的默认颜色
  20. TEXT2_COLOR = 3                               # 区域名的默认颜色代码(0-31)
  21. TEXT3_COLOR = 5                               # 附加名的默认颜色代码(0-31)
  22. SKIN = "window"                               # 窗口皮肤的文件名
  23. HEIGHT = TEXT1_SIZE + TEXT2_SIZE + TEXT3_SIZE + 32   
  24.   #--------------------------------------------------------------------------
  25.   # ● 初始化对像
  26.   #--------------------------------------------------------------------------
  27.   def initialize
  28.     @id = 0
  29.     @a_id = 0
  30.     super(MWINDOW_X, MWINDOW_Y, WEIGH, HEIGHT)
  31.     self.opacity = 0
  32.     self.contents_opacity = 0
  33.     self.windowskin = Cache.system(SKIN)
  34.     refresh
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 刷新
  38.   #--------------------------------------------------------------------------
  39.   def refresh
  40.     @map_id = $game_map.map_id
  41.     locationname = load_data("Data/MapInfos.rvdata")[@map_id].name
  42.     if $game_player.area_id.is_a?(Numeric)
  43.       if $game_player.area_id != @a_id or @map_id != @id
  44.         self.contents.clear
  45.         if @map_id != @id
  46.          @id = @map_id
  47.          @time_count = START_TIME + COUN_TIME + FADE_TIME  
  48.          self.contents.font.color = TEXT1_COLOR
  49.          self.contents.font.size = TEXT1_SIZE
  50.          self.contents.draw_text(0, 0, WEIGH-32, TEXT1_SIZE, locationname, 1)
  51.         end
  52.         @time_count = START_TIME + COUN_TIME + FADE_TIME
  53.         @a_id = $game_player.area_id
  54.         area_name = $data_areas[@a_id].name_p1
  55.         other_name = $data_areas[@a_id].name_p2
  56.         self.contents.font.size = TEXT2_SIZE
  57.         self.contents.font.color = text_color($data_areas[@a_id].color_1)
  58.         self.contents.draw_text(0, TEXT1_SIZE, WEIGH-32, TEXT2_SIZE, area_name, 1)
  59.         self.contents.font.size = TEXT3_SIZE
  60.         self.contents.font.color = text_color($data_areas[@a_id].color_2)
  61.         self.contents.draw_text(0, TEXT1_SIZE+TEXT2_SIZE, WEIGH-32, TEXT3_SIZE, other_name, 1)
  62.       end
  63.     elsif @map_id != @id
  64.       @id = @map_id
  65.       @time_count = START_TIME + COUN_TIME + FADE_TIME  
  66.       self.contents.clear
  67.       self.contents.font.color = TEXT1_COLOR
  68.       self.contents.font.size = TEXT1_SIZE
  69.       self.contents.draw_text(0, (HEIGHT-TEXT1_SIZE)/2-16, WEIGH-32, TEXT1_SIZE, locationname, 1)
  70.     elsif @a_id != 0
  71.       @a_id = 0
  72.       @time_count = START_TIME + COUN_TIME + FADE_TIME  
  73.       self.contents.clear
  74.       self.contents.font.color = TEXT1_COLOR
  75.       self.contents.font.size = TEXT1_SIZE
  76.       self.contents.draw_text(0, (HEIGHT-TEXT1_SIZE)/2-16, WEIGH-32, TEXT1_SIZE, locationname, 1)
  77.     end
  78.     if @time_count > COUN_TIME + FADE_TIME
  79.       self.opacity += 255 / START_TIME
  80.       self.contents_opacity += 255 / START_TIME
  81.       @time_count -= 1
  82.     elsif @time_count > FADE_TIME
  83.       self.opacity = 255
  84.       self.contents_opacity = 255
  85.       @time_count -= 1
  86.     elsif @time_count > 0
  87.       self.opacity -= 255 / FADE_TIME
  88.       self.contents_opacity -= 255 / FADE_TIME
  89.       @time_count -= 1
  90.     else
  91.       @time_count = 0
  92.       self.opacity = 0
  93.       self.contents_opacity = 0
  94.     end
  95.   end
  96. end
  97.  
  98. #==============================================================================
  99. # ■ Scene_Map
  100. #------------------------------------------------------------------------------
  101. #  处理地图画面的类。
  102. #==============================================================================
  103.  
  104. class Scene_Map < Scene_Base
  105.   alias _start start
  106.   #--------------------------------------------------------------------------
  107.   # ● 开始处理
  108.   #--------------------------------------------------------------------------
  109.   def start
  110.     @map_window = Window_Map.new
  111.     _start
  112.   end
  113.  
  114.   alias _terminate terminate
  115.   def terminate
  116.     @map_window.dispose
  117.     _terminate
  118.   end
  119.  
  120.   alias _update update
  121.   def update
  122.     @map_window.refresh
  123.     _update
  124.   end
  125. end
  126.  
  127. module RPG
  128.   class Area
  129.     def name_p1
  130.       name = @name.split(/#/)[0]
  131.       return name != nil ? name : ""
  132.     end
  133.     def name_p2
  134.       name = @name.split(/#/)[1]
  135.       return name != nil ? name : ""
  136.     end
  137.     def color_1
  138.       color = @name.split(/#/)[2]
  139.       return color != nil ? color.to_i : TEXT2_COLOR
  140.     end
  141.     def color_2
  142.       color = @name.split(/#/)[3]
  143.       return color != nil ? color.to_i : TEXT3_COLOR
  144.     end
  145.   end
  146. end
  147.  
  148. class Game_Character
  149.   def area_id
  150.     for area in $data_areas.values
  151.      if in_area?(area)
  152.      return area.id
  153.      end
  154.     end
  155.   end
  156. end

评分

参与人数 1星屑 +20 收起 理由
R-零 + 20 头像有爱~

查看全部评分

剑与电的浪漫由自己创造~

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-9-17
帖子
29
2
 楼主| 发表于 2012-11-17 08:58:03 | 只看该作者
该脚本源于Beside大大分享的“区域名及地图名自动显示”,苦于脚本盲我不知道如何添加语句让该脚本能受事件里的开关控制,一些黑屏场景都没法让地图名暂时不显示,特来求高手加个开关控制,在此提前拜谢了OTL

RUBY 代码复制
  1. #==============================================================================
  2. # 地图名及区域名显示 by Beside
  3. #------------------------------------------------------------------------------
  4. # 功能: 动态显示玩家所在区域及地图名。
  5. #==============================================================================
  6. class Window_Map < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 以下是窗口的相关设置
  9.   #--------------------------------------------------------------------------
  10. MWINDOW_X = 240                               # 窗口X坐标
  11. MWINDOW_Y = 25                                # 窗口Y坐标
  12. WEIGH = 160                                   # 窗口宽度      
  13. START_TIME = 30                               # 窗口出现时间
  14. COUN_TIME = 30                                # 窗口持续时间
  15. FADE_TIME = 30                                # 窗口淡去时间
  16. TEXT1_SIZE = 20                               # 地图名的字体大小
  17. TEXT2_SIZE = 18                               # 区域名的字体大小
  18. TEXT3_SIZE = 18                               # 附加名的字体大小
  19. TEXT1_COLOR = Color.new(255,60,60)            # 地图名的默认颜色
  20. TEXT2_COLOR = 3                               # 区域名的默认颜色代码(0-31)
  21. TEXT3_COLOR = 5                               # 附加名的默认颜色代码(0-31)
  22. SKIN = "window"                               # 窗口皮肤的文件名
  23. HEIGHT = TEXT1_SIZE + TEXT2_SIZE + TEXT3_SIZE + 32   
  24.   #--------------------------------------------------------------------------
  25.   # ● 初始化对像
  26.   #--------------------------------------------------------------------------
  27.   def initialize
  28.     @id = 0
  29.     @a_id = 0
  30.     super(MWINDOW_X, MWINDOW_Y, WEIGH, HEIGHT)
  31.     self.opacity = 0
  32.     self.contents_opacity = 0
  33.     self.windowskin = Cache.system(SKIN)
  34.     refresh
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 刷新
  38.   #--------------------------------------------------------------------------
  39.   def refresh
  40.     @map_id = $game_map.map_id
  41.     locationname = load_data("Data/MapInfos.rvdata")[@map_id].name
  42.     if $game_player.area_id.is_a?(Numeric)
  43.       if $game_player.area_id != @a_id or @map_id != @id
  44.         self.contents.clear
  45.         if @map_id != @id
  46.          @id = @map_id
  47.          @time_count = START_TIME + COUN_TIME + FADE_TIME  
  48.          self.contents.font.color = TEXT1_COLOR
  49.          self.contents.font.size = TEXT1_SIZE
  50.          self.contents.draw_text(0, 0, WEIGH-32, TEXT1_SIZE, locationname, 1)
  51.         end
  52.         @time_count = START_TIME + COUN_TIME + FADE_TIME
  53.         @a_id = $game_player.area_id
  54.         area_name = $data_areas[@a_id].name_p1
  55.         other_name = $data_areas[@a_id].name_p2
  56.         self.contents.font.size = TEXT2_SIZE
  57.         self.contents.font.color = text_color($data_areas[@a_id].color_1)
  58.         self.contents.draw_text(0, TEXT1_SIZE, WEIGH-32, TEXT2_SIZE, area_name, 1)
  59.         self.contents.font.size = TEXT3_SIZE
  60.         self.contents.font.color = text_color($data_areas[@a_id].color_2)
  61.         self.contents.draw_text(0, TEXT1_SIZE+TEXT2_SIZE, WEIGH-32, TEXT3_SIZE, other_name, 1)
  62.       end
  63.     elsif @map_id != @id
  64.       @id = @map_id
  65.       @time_count = START_TIME + COUN_TIME + FADE_TIME  
  66.       self.contents.clear
  67.       self.contents.font.color = TEXT1_COLOR
  68.       self.contents.font.size = TEXT1_SIZE
  69.       self.contents.draw_text(0, (HEIGHT-TEXT1_SIZE)/2-16, WEIGH-32, TEXT1_SIZE, locationname, 1)
  70.     elsif @a_id != 0
  71.       @a_id = 0
  72.       @time_count = START_TIME + COUN_TIME + FADE_TIME  
  73.       self.contents.clear
  74.       self.contents.font.color = TEXT1_COLOR
  75.       self.contents.font.size = TEXT1_SIZE
  76.       self.contents.draw_text(0, (HEIGHT-TEXT1_SIZE)/2-16, WEIGH-32, TEXT1_SIZE, locationname, 1)
  77.     end
  78.     if @time_count > COUN_TIME + FADE_TIME
  79.       self.opacity += 255 / START_TIME
  80.       self.contents_opacity += 255 / START_TIME
  81.       @time_count -= 1
  82.     elsif @time_count > FADE_TIME
  83.       self.opacity = 255
  84.       self.contents_opacity = 255
  85.       @time_count -= 1
  86.     elsif @time_count > 0
  87.       self.opacity -= 255 / FADE_TIME
  88.       self.contents_opacity -= 255 / FADE_TIME
  89.       @time_count -= 1
  90.     else
  91.       @time_count = 0
  92.       self.opacity = 0
  93.       self.contents_opacity = 0
  94.     end
  95.   end
  96. end
  97.  
  98. #==============================================================================
  99. # ■ Scene_Map
  100. #------------------------------------------------------------------------------
  101. #  处理地图画面的类。
  102. #==============================================================================
  103.  
  104. class Scene_Map < Scene_Base
  105.   alias _start start
  106.   #--------------------------------------------------------------------------
  107.   # ● 开始处理
  108.   #--------------------------------------------------------------------------
  109.   def start
  110.     @map_window = Window_Map.new
  111.     _start
  112.   end
  113.  
  114.   alias _terminate terminate
  115.   def terminate
  116.     @map_window.dispose
  117.     _terminate
  118.   end
  119.  
  120.   alias _update update
  121.   def update
  122.     @map_window.refresh
  123.     _update
  124.   end
  125. end
  126.  
  127. module RPG
  128.   class Area
  129.     def name_p1
  130.       name = @name.split(/#/)[0]
  131.       return name != nil ? name : ""
  132.     end
  133.     def name_p2
  134.       name = @name.split(/#/)[1]
  135.       return name != nil ? name : ""
  136.     end
  137.     def color_1
  138.       color = @name.split(/#/)[2]
  139.       return color != nil ? color.to_i : TEXT2_COLOR
  140.     end
  141.     def color_2
  142.       color = @name.split(/#/)[3]
  143.       return color != nil ? color.to_i : TEXT3_COLOR
  144.     end
  145.   end
  146. end
  147.  
  148. class Game_Character
  149.   def area_id
  150.     for area in $data_areas.values
  151.      if in_area?(area)
  152.      return area.id
  153.      end
  154.     end
  155.   end
  156. end
剑与电的浪漫由自己创造~
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
777
在线时间
1270 小时
注册时间
2011-2-14
帖子
5589
3
发表于 2012-11-17 10:51:26 | 只看该作者
改完的脚本在下面
说明:地图名中包含“MAP”字样的地图名称不予显示
         也就是说默认创建的地图,名字为MAPxxx,只要偷懒不改名就行了
我对脚本做的更改:
         在第41行的获得”locationname“(地图名称)之后
         插入了     return if locationname.include?("MAP")
                       (返回 如果 locationname的字符串里有MAP三个字母)
玩的愉快~
  1. #==============================================================================
  2. # 地图名及区域名显示 by Beside
  3. #------------------------------------------------------------------------------
  4. # 功能: 动态显示玩家所在区域及地图名。
  5. #==============================================================================
  6. class Window_Map < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 以下是窗口的相关设置
  9.   #--------------------------------------------------------------------------
  10. MWINDOW_X = 240                               # 窗口X坐标
  11. MWINDOW_Y = 25                                # 窗口Y坐标
  12. WEIGH = 160                                   # 窗口宽度      
  13. START_TIME = 30                               # 窗口出现时间
  14. COUN_TIME = 30                                # 窗口持续时间
  15. FADE_TIME = 30                                # 窗口淡去时间
  16. TEXT1_SIZE = 20                               # 地图名的字体大小
  17. TEXT2_SIZE = 18                               # 区域名的字体大小
  18. TEXT3_SIZE = 18                               # 附加名的字体大小
  19. TEXT1_COLOR = Color.new(255,60,60)            # 地图名的默认颜色
  20. TEXT2_COLOR = 3                               # 区域名的默认颜色代码(0-31)
  21. TEXT3_COLOR = 5                               # 附加名的默认颜色代码(0-31)
  22. SKIN = "window"                               # 窗口皮肤的文件名
  23. HEIGHT = TEXT1_SIZE + TEXT2_SIZE + TEXT3_SIZE + 32   
  24.   #--------------------------------------------------------------------------
  25.   # ● 初始化对像
  26.   #--------------------------------------------------------------------------
  27.   def initialize
  28.     @id = 0
  29.     @a_id = 0
  30.     super(MWINDOW_X, MWINDOW_Y, WEIGH, HEIGHT)
  31.     self.opacity = 0
  32.     self.contents_opacity = 0
  33.     self.windowskin = Cache.system(SKIN)
  34.     refresh
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 刷新
  38.   #--------------------------------------------------------------------------
  39.   def refresh
  40.     @map_id = $game_map.map_id
  41.     locationname = load_data("Data/MapInfos.rvdata")[@map_id].name
  42.     return if locationname.include?("MAP")
  43.     if $game_player.area_id.is_a?(Numeric)
  44.       if $game_player.area_id != @a_id or @map_id != @id
  45.         self.contents.clear
  46.         if @map_id != @id
  47.          @id = @map_id
  48.          @time_count = START_TIME + COUN_TIME + FADE_TIME  
  49.          self.contents.font.color = TEXT1_COLOR
  50.          self.contents.font.size = TEXT1_SIZE
  51.          self.contents.draw_text(0, 0, WEIGH-32, TEXT1_SIZE, locationname, 1)
  52.         end
  53.         @time_count = START_TIME + COUN_TIME + FADE_TIME
  54.         @a_id = $game_player.area_id
  55.         area_name = $data_areas[@a_id].name_p1
  56.         other_name = $data_areas[@a_id].name_p2
  57.         self.contents.font.size = TEXT2_SIZE
  58.         self.contents.font.color = text_color($data_areas[@a_id].color_1)
  59.         self.contents.draw_text(0, TEXT1_SIZE, WEIGH-32, TEXT2_SIZE, area_name, 1)
  60.         self.contents.font.size = TEXT3_SIZE
  61.         self.contents.font.color = text_color($data_areas[@a_id].color_2)
  62.         self.contents.draw_text(0, TEXT1_SIZE+TEXT2_SIZE, WEIGH-32, TEXT3_SIZE, other_name, 1)
  63.       end
  64.     elsif @map_id != @id
  65.       @id = @map_id
  66.       @time_count = START_TIME + COUN_TIME + FADE_TIME  
  67.       self.contents.clear
  68.       self.contents.font.color = TEXT1_COLOR
  69.       self.contents.font.size = TEXT1_SIZE
  70.       self.contents.draw_text(0, (HEIGHT-TEXT1_SIZE)/2-16, WEIGH-32, TEXT1_SIZE, locationname, 1)
  71.     elsif @a_id != 0
  72.       @a_id = 0
  73.       @time_count = START_TIME + COUN_TIME + FADE_TIME  
  74.       self.contents.clear
  75.       self.contents.font.color = TEXT1_COLOR
  76.       self.contents.font.size = TEXT1_SIZE
  77.       self.contents.draw_text(0, (HEIGHT-TEXT1_SIZE)/2-16, WEIGH-32, TEXT1_SIZE, locationname, 1)
  78.     end
  79.     if @time_count > COUN_TIME + FADE_TIME
  80.       self.opacity += 255 / START_TIME
  81.       self.contents_opacity += 255 / START_TIME
  82.       @time_count -= 1
  83.     elsif @time_count > FADE_TIME
  84.       self.opacity = 255
  85.       self.contents_opacity = 255
  86.       @time_count -= 1
  87.     elsif @time_count > 0
  88.       self.opacity -= 255 / FADE_TIME
  89.       self.contents_opacity -= 255 / FADE_TIME
  90.       @time_count -= 1
  91.     else
  92.       @time_count = 0
  93.       self.opacity = 0
  94.       self.contents_opacity = 0
  95.     end
  96.   end
  97. end

  98. #==============================================================================
  99. # ■ Scene_Map
  100. #------------------------------------------------------------------------------
  101. #  处理地图画面的类。
  102. #==============================================================================

  103. class Scene_Map < Scene_Base
  104.   alias _start start
  105.   #--------------------------------------------------------------------------
  106.   # ● 开始处理
  107.   #--------------------------------------------------------------------------
  108.   def start
  109.     @map_window = Window_Map.new
  110.     _start
  111.   end

  112.   alias _terminate terminate
  113.   def terminate
  114.     @map_window.dispose
  115.     _terminate
  116.   end

  117.   alias _update update
  118.   def update
  119.     @map_window.refresh
  120.     _update
  121.   end
  122. end

  123. module RPG
  124.   class Area
  125.     def name_p1
  126.       name = @name.split(/#/)[0]
  127.       return name != nil ? name : ""
  128.     end
  129.     def name_p2
  130.       name = @name.split(/#/)[1]
  131.       return name != nil ? name : ""
  132.     end
  133.     def color_1
  134.       color = @name.split(/#/)[2]
  135.       return color != nil ? color.to_i : TEXT2_COLOR
  136.     end
  137.     def color_2
  138.       color = @name.split(/#/)[3]
  139.       return color != nil ? color.to_i : TEXT3_COLOR
  140.     end
  141.   end
  142. end

  143. class Game_Character
  144.   def area_id
  145.     for area in $data_areas.values
  146.      if in_area?(area)
  147.      return area.id
  148.      end
  149.     end
  150.   end
  151. end
复制代码
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-9-17
帖子
29
4
 楼主| 发表于 2012-11-17 10:56:40 | 只看该作者
R-零 发表于 2012-11-17 10:51
改完的脚本在下面
说明:地图名中包含“MAP”字样的地图名称不予显示
         也就是说默认创建的地图,名 ...

灰常感谢 > <~
剑与电的浪漫由自己创造~
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 11:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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