Project1

标题: 半手动显示地图名 [打印本页]

作者: feizhaodan    时间: 2011-10-24 19:52
标题: 半手动显示地图名
忘了第几个。大概是第八个吧,一个比较小的脚本。
  1. #============================================================================
  2. # ☆ 半手动显示地图名。
  3. #    由feizhaodan制作。
  4. #    发布于66RPG
  5. #    http://rpg.blue/
  6. #    版本号: 1.0.0
  7. #    2011/10/24
  8. #    转载时请连同这里一起转
  9. #============================================================================
  10. #==============================================================================
  11. # ■ Game_Interpreter
  12. #------------------------------------------------------------------------------
  13. #  执行事件命令的解释器。本类在 Game_Map 类、Game_Troop 类、与
  14. # Game_Event 类的内部使用。
  15. #==============================================================================

  16. class Game_Interpreter
  17.   def show_map_name(show_count = 60)
  18.     $game_system.show_map_name = true
  19.     $game_system.show_map_count = show_count
  20.     return true
  21.   end
  22.   def show_area_name(show_count = 60)
  23.     $game_system.show_area_name = true
  24.     $game_system.show_area_count = show_count
  25.     return true
  26.   end
  27.   def show_string(string = nil, show_count = 60, x = 24, y = 24)
  28.     $game_system.set_string(string, x, y, show_count)
  29.     return true
  30.   end
  31. end

  32. #==============================================================================
  33. # ■ Game_System
  34. #------------------------------------------------------------------------------
  35. #  处理系统附属数据的类。也可执行诸如交通工具、 BGM 等管理之类的功能。
  36. # 本类的实例请参考$game_system 。
  37. #==============================================================================

  38. class Game_System
  39.   #--------------------------------------------------------------------------
  40.   # ● 定义实例变量
  41.   #--------------------------------------------------------------------------
  42.   attr_accessor :show_map_name
  43.   attr_accessor :show_map_count
  44.   attr_accessor :show_area_name
  45.   attr_accessor :show_area_count
  46.   attr_accessor :show_string
  47.   
  48.   alias show_name_initialize initialize
  49.   #--------------------------------------------------------------------------
  50.   # ● 初始化对像
  51.   #--------------------------------------------------------------------------
  52.   def initialize
  53.     show_name_initialize
  54.     @show_map_name = false
  55.     @show_map_count = 60
  56.     @show_area_name = false
  57.     @show_area_count = 60
  58.     @show_string = []
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 设置显示内容
  62.   #--------------------------------------------------------------------------
  63.   def set_string(content, x, y, show_count)
  64.     return if content == nil
  65.     @show_string.push([content, x, y, show_count])
  66.   end
  67. end
  68. #==============================================================================
  69. # ■ Game_Player
  70. #------------------------------------------------------------------------------
  71. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  72. # 本类的实例请参考 $game_player。
  73. #==============================================================================

  74. class Game_Player < Game_Character
  75.   def at_area
  76.     for area in $data_areas.values
  77.       if in_area?(area)
  78.         return area
  79.       end
  80.     end
  81.     return nil
  82.   end
  83. end
  84. #==============================================================================
  85. # ■ Window_ShowName
  86. #------------------------------------------------------------------------------
  87. #  在地图显示地图,区域,任意字符穿用的窗口
  88. #==============================================================================

  89. class Window_ShowName < Window_Base  
  90.   #--------------------------------------------------------------------------
  91.   # ● 初始化对像
  92.   #--------------------------------------------------------------------------
  93.   def initialize
  94.     super(0, 0, 50, WLH+32)
  95.     self.openness = 0
  96.     self.visible = true
  97.     self.active = false
  98.     self.back_opacity = 150
  99.     self.opacity = 100
  100.     load_map_data
  101.     @show_count = 0
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 读取地图数据
  105.   #--------------------------------------------------------------------------
  106.   def load_map_data
  107.     @data = load_data("Data/MapInfos.rvdata")
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● 更新
  111.   #--------------------------------------------------------------------------
  112.   def update
  113.     super
  114.     @map_id = $game_map.map_id
  115.     if @show_count != 0
  116.       @show_count -= 1
  117.     elsif @show_count == 0 and self.openness != 0
  118.       self.close
  119.     else
  120.       if $game_system.show_map_name == true
  121.         self.x = 24
  122.         self.y = 24
  123.         name = @data[@map_id].name
  124.         width = contents.text_size(name).width
  125.         self.width = width + 32
  126.         create_contents
  127.         self.contents.draw_text(0, 0, width, WLH, name)
  128.         self.open
  129.         @show_count = $game_system.show_map_count
  130.         $game_system.show_map_count = 60
  131.         $game_system.show_map_name = false
  132.       elsif $game_system.show_area_name == true
  133.         self.x = 24
  134.         self.y = 24
  135.         @area = $game_player.at_area
  136.         if @area != nil
  137.           name = @area.name
  138.         else
  139.           name = "无"
  140.         end
  141.         width = contents.text_size(name).width
  142.         self.width = width + 32
  143.         create_contents
  144.         self.contents.draw_text(0, 0, width, WLH, name)
  145.         self.open
  146.         @show_count = $game_system.show_area_count
  147.         $game_system.show_area_count = 60
  148.         $game_system.show_area_name = false
  149.       elsif $game_system.show_string.empty? == false
  150.         self.x = $game_system.show_string[0][1]
  151.         self.y = $game_system.show_string[0][2]
  152.         string = $game_system.show_string[0][0]
  153.         width = contents.text_size(string).width
  154.         self.width = width + 32
  155.         create_contents
  156.         self.contents.draw_text(0, 0, width, WLH, string)
  157.         self.open
  158.         @show_count = $game_system.show_string[0][3]
  159.         $game_system.show_string.shift
  160.       end
  161.     end
  162.   end
  163. end
  164. #==============================================================================
  165. # ■ Scene_Map
  166. #------------------------------------------------------------------------------
  167. #  处理地图画面的类。
  168. #==============================================================================

  169. class Scene_Map < Scene_Base
  170.   alias show_name_initialize initialize
  171.   #--------------------------------------------------------------------------
  172.   # ● 初始化对像
  173.   #--------------------------------------------------------------------------
  174.   def initialize
  175.     show_name_initialize
  176.     create_showing_contents
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● 创建显示用内容
  180.   #--------------------------------------------------------------------------
  181.   def create_showing_contents
  182.     @showing_window = Window_ShowName.new
  183.   end
  184.   alias show_name_update update
  185.   #--------------------------------------------------------------------------
  186.   # ● 更新画面
  187.   #--------------------------------------------------------------------------
  188.   def update
  189.     show_name_update
  190.     unless $game_message.visible      # 信息窗口显示中除外
  191.       update_showing_contents
  192.     end
  193.   end
  194.   #--------------------------------------------------------------------------
  195.   # ● 更新显示用窗口
  196.   #--------------------------------------------------------------------------
  197.   def update_showing_contents
  198.     @showing_window.update
  199.   end
  200.   alias show_name_terminate terminate
  201.   #--------------------------------------------------------------------------
  202.   # ● 结束处理
  203.   #--------------------------------------------------------------------------
  204.   def terminate
  205.     @showing_window.dispose
  206.     show_name_terminate
  207.   end
  208. end
  209. #============================================================================
  210. # ☆ 半手动显示地图名。
  211. #    由feizhaodan制作。
  212. #    发布于66RPG
  213. #    http://rpg.blue/
  214. #    版本号: 1.0.0
  215. #    2011/10/24
  216. #    转载时请连同这里一起转
  217. #============================================================================
复制代码
看站里的显示地图好多都是进入地图时自动显示。
虽然这样很方便,但是有些比如开头黑图等等不需要的地图也会显示,所以我就做了这个脚本。
使用方法很简单,在事件里的脚本项内输入以下内容即可:
  1. show_map_name([duration])
复制代码
用来显示地图名。在左上方显示。duration代表显示的时间,省略的话默认为60帧即一秒。
图:
  1. show_area_name([duration])
复制代码
用来显示区域名,在左上方显示。duration代表显示的时间,省略的话默认为60帧即一秒。
图:
而当主角所在位置没有在任何区域,则会显示无。
图:

最后就是这个脚本的重头戏(因该)
自由定义字符串!
可以任意指定显示的内容,位置,时间!
而且还可以一次性指定很多,来轮流显示!
使用方法很简单:
只要在事件里的脚本项里输入:
  1. show_string([string, duration, x, y])
复制代码
在string里填你想要显示的内容,用""括起来,
在duration理天你想要显示的时间,省略的话默认为60帧即一秒,
x, y分别指定窗口出现的X坐标,Y坐标。省略的话默认为[24, 24]
发图:

裁图A.jpg (1.82 KB, 下载次数: 14)

裁图A.jpg

作者: zzxxaspqw    时间: 2011-10-24 20:01
话说用显示图片也能做到,说不定还能自由一些,功能方面不太强大,不过能
减少一些重复工作,恩,鉴定完毕。——LZ不要吐槽我,虽然我吐槽了你^0^




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