Project1

标题: 关于显示地图名的问题 [打印本页]

作者: 嚴子    时间: 2011-4-24 10:55
标题: 关于显示地图名的问题
本帖最后由 嚴子 于 2011-4-24 16:29 编辑

用了显示地图名脚本后,在进入地图、战斗结束后、从菜单回到地图后都会显示一次地图名。求教如何让该脚本只在进入地图时显示一次以及让地图名显示在中间。
  1. #==============================================================================
  2. # ■ Window_MapName
  3. #------------------------------------------------------------------------------
  4. #  显示地图名字的窗口。
  5. #==============================================================================
  6. class Window_MapName < Window_Base
  7. #--------------------------------------------------------------------------
  8. # ● 类常量定义
  9. #--------------------------------------------------------------------------
  10. # 暂时屏蔽用的开关
  11. SWITCH = 35
  12.   
  13. # 窗口位置设定
  14. NAME_X = 380      # 矩形左上顶点X坐标
  15. NAME_Y = 20       # 矩形左上顶点Y坐标
  16. NAME_W = 220      # 矩形宽
  17. NAME_H = 60       # 矩形高
  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 = 244   # 边框
  27. OPACITY_2 = 144   # 背景
  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.     unless $game_switches[SWITCH]==true
  51.       # 获取地图ID
  52.       newid = $game_map.map_id
  53.       time = SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3  
  54.       # 如果现在的地图的ID不是刚才显示的地图ID则开始显示
  55.       if newid != @id
  56.         @id = newid
  57.         @show_time = SHOW_TIME_0 + SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3
  58.       # 剩余帧数为0是时,全部窗口透明
  59.       elsif @show_time < 1
  60.         self.opacity = 0
  61.         self.back_opacity = 0
  62.         self.contents_opacity = 0
  63.         return
  64.       end      
  65.       self.contents.clear
  66.       self.contents.font.color = TEXT_COLOR
  67.       # 描绘地图名
  68.       self.contents.draw_text(4, 0 , width - 40, 32, $data_mapinfos[@id].name, 1)
  69.       # 根本帧数设定窗口透明度
  70.       if @show_time > (SHOW_TIME_2 + SHOW_TIME_3)
  71.         self.opacity = @show_time < time ? (((OPACITY_1 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
  72.         self.back_opacity = @show_time < time ? (((OPACITY_2 / SHOW_TIME_1 )* (time - @show_time)).to_i) : 0
  73.         self.contents_opacity = @show_time < time ? (((OPACITY_3 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
  74.       else
  75.         self.opacity = @show_time < (SHOW_TIME_3 / 16 * 14) ? ((OPACITY_1 / SHOW_TIME_3) * @show_time).to_i : OPACITY_1
  76.         self.back_opacity = @show_time < (SHOW_TIME_3 / 16 * 9) ? ((OPACITY_2 / SHOW_TIME_3) * @show_time).to_i : OPACITY_2
  77.         self.contents_opacity = @show_time < SHOW_TIME_3 ? ((OPACITY_3 / SHOW_TIME_3)* @show_time).to_i : OPACITY_3
  78.       end      
  79.       @show_time -= 1
  80.     end
  81. end
  82. end
  83. #==============================================================================
  84. # ■ Scene_Map
  85. #------------------------------------------------------------------------------
  86. #  处理地图画面的类。(追加定义)
  87. #==============================================================================
  88. class Scene_Map
  89. alias smn_main main
  90. def main
  91.     @mapname = Window_MapName.new
  92.     smn_main
  93.     @mapname.dispose
  94. end
  95.   
  96. alias smn_update update
  97. def update
  98.     @mapname.setname
  99.     smn_update
  100. end
  101. end
  102. #==============================================================================
  103. # ■ Scene_Title
  104. #------------------------------------------------------------------------------
  105. #  处理标题画面的类。(追加定义)
  106. #==============================================================================
  107. class Scene_Title
  108. alias smn_main main
  109. def main
  110.     # 读取地图信息文件
  111.     $data_mapinfos = load_data("Data/MapInfos.rxdata")
  112.     smn_main
  113. end
  114. end
复制代码

作者: 忧雪の伤    时间: 2011-4-24 11:03
为initialize添加一个新的参数来判别是否显示地图名吧……伸手求脚本……
作者: 烁灵    时间: 2011-4-24 12:48
本帖最后由 烁灵 于 2011-4-24 13:13 编辑

回复 嚴子 的帖子

咱方法有错喵> <
编辑...

作者: 个快快    时间: 2011-4-24 12:54
这个恐怕不能实现,这个脚本是加载地图的时候运行的

作者: 禾西    时间: 2011-4-24 13:00
把事件中的場所移動方法截一下就行了
作者: 烁灵    时间: 2011-4-24 13:02
本帖最后由 烁灵 于 2011-4-24 13:03 编辑

回复 个快快 的帖子

编辑。。我错了T_T
作者: 嚴子    时间: 2011-4-24 13:17
光说不练假把式。诸位热心前辈,小弟对脚本一窍不通,请诸位前辈直接帮我该脚本。
作者: Wind2010    时间: 2011-4-24 13:30
14——17行:
  1. NAME_X = 210      # 矩形左上顶点X坐标
  2. NAME_Y = 210       # 矩形左上顶点Y坐标
  3. NAME_W = 220      # 矩形宽
  4. NAME_H = 60       # 矩形高
复制代码
55——56行改成:
  1.       if newid != $虱子_地图ID显示
  2.         $虱子_地图ID显示 = newid
复制代码

作者: 嚴子    时间: 2011-4-24 13:50
回复 Wind2010 的帖子

显示错误
作者: Wind2010    时间: 2011-4-24 14:03
回复 嚴子 的帖子

这样试试
  1. #==============================================================================
  2. # ■ Window_MapName
  3. #------------------------------------------------------------------------------
  4. #  显示地图名字的窗口。
  5. #==============================================================================
  6. class Window_MapName < Window_Base
  7. #--------------------------------------------------------------------------
  8. # ● 类常量定义
  9. #--------------------------------------------------------------------------
  10. # 暂时屏蔽用的开关
  11. SWITCH = 35
  12.   
  13. # 窗口位置设定
  14. NAME_X = 210      # 矩形左上顶点X坐标
  15. NAME_Y = 210       # 矩形左上顶点Y坐标
  16. NAME_W = 220      # 矩形宽
  17. NAME_H = 60       # 矩形高
  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 = 244   # 边框
  27. OPACITY_2 = 144   # 背景
  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.     unless $game_switches[SWITCH]==true
  51.       # 获取地图ID
  52.       newid = $game_map.map_id
  53.       time = SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3  
  54.       # 如果现在的地图的ID不是刚才显示的地图ID则开始显示
  55.       if newid != $虱子_当前地图id
  56.         $虱子_当前地图id = newid
  57.         @show_time = SHOW_TIME_0 + SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3
  58.       # 剩余帧数为0是时,全部窗口透明
  59.       elsif @show_time < 1
  60.         self.opacity = 0
  61.         self.back_opacity = 0
  62.         self.contents_opacity = 0
  63.         return
  64.       end      
  65.       self.contents.clear
  66.       self.contents.font.color = TEXT_COLOR
  67.       # 描绘地图名
  68.       self.contents.draw_text(4, 0 , width - 40, 32, $data_mapinfos[$虱子_当前地图id].name, 1)
  69.       # 根本帧数设定窗口透明度
  70.       if @show_time > (SHOW_TIME_2 + SHOW_TIME_3)
  71.         self.opacity = @show_time < time ? (((OPACITY_1 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
  72.         self.back_opacity = @show_time < time ? (((OPACITY_2 / SHOW_TIME_1 )* (time - @show_time)).to_i) : 0
  73.         self.contents_opacity = @show_time < time ? (((OPACITY_3 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
  74.       else
  75.         self.opacity = @show_time < (SHOW_TIME_3 / 16 * 14) ? ((OPACITY_1 / SHOW_TIME_3) * @show_time).to_i : OPACITY_1
  76.         self.back_opacity = @show_time < (SHOW_TIME_3 / 16 * 9) ? ((OPACITY_2 / SHOW_TIME_3) * @show_time).to_i : OPACITY_2
  77.         self.contents_opacity = @show_time < SHOW_TIME_3 ? ((OPACITY_3 / SHOW_TIME_3)* @show_time).to_i : OPACITY_3
  78.       end      
  79.       @show_time -= 1
  80.     end
  81.   end
  82. end
  83. #==============================================================================
  84. # ■ Scene_Map
  85. #------------------------------------------------------------------------------
  86. #  处理地图画面的类。(追加定义)
  87. #==============================================================================
  88. class Scene_Map
  89. unless @alias_5
  90.   @alias_5 = true
  91.   alias smn_main main
  92. end
  93. def main
  94.     @mapname = Window_MapName.new
  95.     smn_main
  96.     @mapname.dispose
  97. end
  98.   
  99. alias smn_update update
  100. def update
  101.     @mapname.setname
  102.     smn_update
  103. end
  104. end
  105. #==============================================================================
  106. # ■ Scene_Title
  107. #------------------------------------------------------------------------------
  108. #  处理标题画面的类。(追加定义)
  109. #==============================================================================
  110. class Scene_Title
  111. unless @alias_4
  112.   @alias_4 = true
  113.   alias smn_main main
  114. end
  115. def main
  116.     # 读取地图信息文件
  117.     $data_mapinfos = load_data("Data/MapInfos.rxdata")
  118.     smn_main
  119. end
  120. end
复制代码

作者: 嚴子    时间: 2011-4-24 16:28
回复 Wind2010 的帖子

貌似可以了,感谢前辈。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1