Project1

标题: 关于地图显示变量 [打印本页]

作者: r403736524    时间: 2014-8-19 09:43
标题: 关于地图显示变量
本帖最后由 r403736524 于 2014-8-19 10:02 编辑

使用这个脚本发现这种情况。。求修复。。


RUBY 代码复制
  1. #==============================================================================
  2. # ** 地图显示变量 v1.2
  3. #    作者:945127391
  4. #    使用说明:
  5. #    ①新建一个显示变量的精灵:
  6. #      事件 -> 脚本中输入:
  7. #        $game_map.new_variable_sprite(id, x, y, ini_var, [text_bitmap])
  8. #        id          - 要创建的变量精灵的ID
  9. #        x           - 要创建的变量精灵的X坐标
  10. #        y           - 要创建的变量精灵的Y坐标
  11. #        ini_var     - 要创建的变量精灵初始显示的数值
  12. #        text_bitmap - 要创建的变量精灵的文字图片文件
  13. #                      可以省略,如果为nil,则不用图片描绘文字;
  14. #                      默认为nil
  15. #    ②删除一个显示变量的精灵:
  16. #      事件 -> 脚本中输入:
  17. #        $game_map.map_variables[id] = nil
  18. #        id - 要删除的变量精灵的ID
  19. #    ③改变一个变量精灵的属性:
  20. #      (以下的 id 都是要改变的变量精灵的ID)
  21. #        $game_map.map_variables[id].x = n              # 改变id号变量精灵的X坐标
  22. #        $game_map.map_variables[id].y = n              # 改变id号变量精灵的Y坐标
  23. #        $game_map.map_variables[id].variable = n  # 改变id号变量精灵的显示的变量
  24. #        $game_map.map_variables[id].opacity = n       # 改变id号变量精灵的不透明
  25. #                                                                      度(0~255)
  26. #        $game_map.map_variables[id].visible = true/false # 改变id号变量精灵的可
  27. #                                                 见状态,true为可见,false为不可见
  28. #        $game_map.map_variables[id].text_bitmap = bitmap          # 改变文字图片
  29. #        以下是用来改变变量精灵的字体的:
  30. #        $game_map.map_variables[id].font[:name]
  31. #        $game_map.map_variables[id].font[:size]
  32. #        $game_map.map_variables[id].font[:bold]
  33. #        $game_map.map_variables[id].font[:italic]
  34. #        $game_map.map_variables[id].font[:shadow]
  35. #        $game_map.map_variables[id].font[:outline]
  36. #        $game_map.map_variables[id].font[:color]
  37. #        $game_map.map_variables[id].font[:out_color]
  38. #==============================================================================
  39. #------------------------------------------------------------------------------
  40. # ** Bitmap
  41. #------------------------------------------------------------------------------
  42. class Bitmap
  43.   #----------------------------------------------------------------------------
  44.   # * 描绘图片数字
  45.   #----------------------------------------------------------------------------
  46.   def draw_bitmap_number(bitmap, x, y, number)
  47.     number = number.to_s
  48.     aw = bitmap.width / 10
  49.     l = aw * number.size
  50.     b = Bitmap.new(l, bitmap.height)
  51.     for i in 0...number.size
  52.       src_rect = Rect.new(aw * number[i].to_i, 0, aw, bitmap.height)
  53.       b.blt(aw * i, 0, bitmap, src_rect)
  54.     end
  55.     blt(x, y, b, b.rect)
  56.     b.dispose
  57.   end
  58. end
  59.  
  60. #------------------------------------------------------------------------------
  61. # ** Sprite_Variable
  62. #------------------------------------------------------------------------------
  63. class Sprite_Variable < Sprite_Base
  64.   #----------------------------------------------------------------------------
  65.   # * 初始化
  66.   #----------------------------------------------------------------------------
  67.   def initialize(id)
  68.     super(nil)
  69.     @id = id
  70.     self.x = $game_map.map_variables[@id].x
  71.     self.y = $game_map.map_variables[@id].y
  72.     self.z = 9999
  73.     self.bitmap = Bitmap.new(Graphics.width - self.x, Graphics.height - self.y)
  74.     self.opacity = $game_map.map_variables[@id].opacity
  75.     self.visible = $game_map.map_variables[@id].visible
  76.     refresh
  77.   end
  78.   #----------------------------------------------------------------------------
  79.   # * 更新
  80.   #----------------------------------------------------------------------------
  81.   def update
  82.     super
  83.     self.x = $game_map.map_variables[@id].x
  84.     self.y = $game_map.map_variables[@id].y
  85.     self.bitmap = Bitmap.new(Graphics.width - self.x, Graphics.height - self.y)
  86.     self.opacity = $game_map.map_variables[@id].opacity
  87.     self.visible = $game_map.map_variables[@id].visible
  88.     refresh
  89.   end
  90.   #----------------------------------------------------------------------------
  91.   # * 更新内容
  92.   #----------------------------------------------------------------------------
  93.   def refresh
  94.     self.bitmap.clear
  95.     if $game_map.map_variables[@id].text_bitmap == nil
  96.       self.bitmap.font.name = $game_map.map_variables[@id].font[:name]
  97.       self.bitmap.font.size = $game_map.map_variables[@id].font[:size]
  98.       self.bitmap.font.bold = $game_map.map_variables[@id].font[:bold]
  99.       self.bitmap.font.italic = $game_map.map_variables[@id].font[:italic]
  100.       self.bitmap.font.shadow = $game_map.map_variables[@id].font[:shadow]
  101.       self.bitmap.font.outline = $game_map.map_variables[@id].font[:outilne]
  102.       self.bitmap.font.color = $game_map.map_variables[@id].font[:color]
  103.       self.bitmap.font.out_color = $game_map.map_variables[@id].font[:out_color]
  104.       p self.bitmap.rect
  105.       self.bitmap.draw_text(0, 0, self.bitmap.width, self.bitmap.text_size("1").height, $game_map.map_variables[@id].variable)
  106.     else self.bitmap.draw_bitmap_number($game_map.map_variables[@id].text_bitmap, 0, 0, $game_map.map_variables[@id].variable)
  107.     end
  108.   end
  109. end
  110.  
  111. #------------------------------------------------------------------------------
  112. # ** Game_MapVariable
  113. #------------------------------------------------------------------------------
  114. class Game_MapVariable
  115.   #----------------------------------------------------------------------------
  116.   # * 定义实例变量
  117.   #----------------------------------------------------------------------------
  118.   attr_reader   :id
  119.   attr_accessor :x
  120.   attr_accessor :y
  121.   attr_accessor :text_bitmap
  122.   attr_accessor :font
  123.   attr_accessor :variable
  124.   attr_accessor :opacity
  125.   attr_accessor :visible
  126.   #----------------------------------------------------------------------------
  127.   # * 初始化
  128.   #----------------------------------------------------------------------------
  129.   def initialize(id, x, y, ini_var, text_bitmap=nil)
  130.     @id = id
  131.     @x = x
  132.     @y = y
  133.     @text_bitmap = text_bitmap
  134.     @variable = ini_var
  135.     @font = {
  136.     :name => Font.default_name,
  137.     :size => Font.default_size,
  138.     :bold => Font.default_bold,
  139.     :italic => Font.default_italic,
  140.     :shadow => Font.default_shadow,
  141.     :outline => Font.default_outline,
  142.     :color => Font.default_color,
  143.     :out_color => Font.default_out_color
  144.     }
  145.     @opacity = 255
  146.     @visible = true
  147.   end
  148. end
  149.  
  150. #------------------------------------------------------------------------------
  151. # ** Game_Map
  152. #------------------------------------------------------------------------------
  153. class Game_Map
  154.   #----------------------------------------------------------------------------
  155.   # * 定义实例变量
  156.   #----------------------------------------------------------------------------
  157.   attr_accessor :map_variables
  158.   #----------------------------------------------------------------------------
  159.   # * 重命名方法
  160.   #----------------------------------------------------------------------------
  161.   alias oi initialize
  162.   #----------------------------------------------------------------------------
  163.   # * 初始化
  164.   #----------------------------------------------------------------------------
  165.   def initialize
  166.     oi
  167.     @map_variables = []
  168.   end
  169.   #----------------------------------------------------------------------------
  170.   # * 新建变量精灵
  171.   #----------------------------------------------------------------------------
  172.   def new_variable_sprite(id, x, y, ini_var, text_bit=nil)
  173.     if @map_variables[id] != nil
  174.       @map_variables[id] = nil
  175.     end
  176.     @map_variables[id] = Game_MapVariable.new(id, x, y, ini_var, text_bit)
  177.   end
  178.   #----------------------------------------------------------------------------
  179.   # * 删除变量精灵
  180.   #----------------------------------------------------------------------------
  181.   def del_variable_sprite(id)
  182.     @map_variables.delete_at(id)
  183.   end
  184. end
  185.  
  186. #------------------------------------------------------------------------------
  187. # ** Scene_Map
  188. #------------------------------------------------------------------------------
  189. class Scene_Map < Scene_Base
  190.   #----------------------------------------------------------------------------
  191.   # * 重命名方法
  192.   #----------------------------------------------------------------------------
  193.   alias os start
  194.   alias ou update
  195.   #----------------------------------------------------------------------------
  196.   # * 开始处理
  197.   #----------------------------------------------------------------------------
  198.   def start
  199.     os
  200.     @map_variable_sprites = []
  201.   end
  202.   #----------------------------------------------------------------------------
  203.   # * 释放
  204.   #----------------------------------------------------------------------------
  205.   def dispose
  206.     super
  207.     for i in [email]0...@map_variable_sprites.size[/email]
  208.       @map_variable_sprites.dispose if @map_variable_sprites.is_a?(Sprite)
  209.     end
  210.   end
  211.   #----------------------------------------------------------------------------
  212.   # * 刷新画面
  213.   #----------------------------------------------------------------------------
  214.   def update
  215.     ou
  216.     for i in 0...$game_map.map_variables.size
  217.       if $game_map.map_variables[i] != nil and @map_variable_sprites[i] == nil
  218.         @map_variable_sprites[i] = Sprite_Variable.new(i)
  219.       elsif $game_map.map_variables[i] == nil and @map_variable_sprites[i] != nil
  220.         @map_variable_sprites[i].dispose
  221.       end
  222.     end
  223.     for i in [email]0...@map_variable_sprites.size[/email]
  224.       @map_variable_sprites[i].update if $game_map.map_variables[i] != nil and @map_variable_sprites[i].is_a?(Sprite)
  225.     end
  226.   end
  227. end


这是范例,进入游戏后跟上面那个人对话,然后打开菜单就能看到变量覆盖了菜单窗口

地图显示变量 v1.21.rar (1.49 MB, 下载次数: 58)


作者: taroxd    时间: 2014-8-19 09:50
什么情况?没看出来。
上一下范例吧?
作者: 千夙    时间: 2014-8-19 09:50
把问题再说清楚点,ps:lz你的海贼王行走图求共享,,,,
作者: r403736524    时间: 2014-8-19 09:54
taroxd 发表于 2014-8-19 09:50
什么情况?没看出来。
上一下范例吧?

就是地图上显示变量,打开菜单后显示出来的变量盖住了菜单,
这样子问题应该清楚了吧。。。


作者: r403736524    时间: 2014-8-19 09:57
千夙 发表于 2014-8-19 09:50
把问题再说清楚点,ps:lz你的海贼王行走图求共享,,,,

你确定要么- -是我用PS填了两个小时才出来的- -画的不是很好。

作者: taroxd    时间: 2014-8-19 10:01
本帖最后由 taroxd 于 2014-8-19 10:03 编辑

插入到显示变量脚本下方,Main上方

这是脚本本身的bug

RUBY 代码复制
  1. class Scene_Map < Scene_Base
  2.   alias tm_20140809 terminate
  3.   def terminate
  4.     @map_variable_sprites.each {|s| s.dispose if s }
  5.     tm_20140809
  6.   end
  7. end

作者: 千夙    时间: 2014-8-19 11:00
。。我这渣想出来的方法,,,你可以把坐标弄到这个空白的地方,,

QQ图片20140819105835.jpg (6.78 KB, 下载次数: 43)

QQ图片20140819105835.jpg

作者: 小小西    时间: 2014-8-19 12:31
范例:http://pan.baidu.com/s/1qWCxaEw

2b274324ab18972b7e11c513e4cd7b899f510af6.png (78.79 KB, 下载次数: 46)

2b274324ab18972b7e11c513e4cd7b899f510af6.png

4a0479fa828ba61ed3d20df64334970a314e59d9.png (148.83 KB, 下载次数: 42)

4a0479fa828ba61ed3d20df64334970a314e59d9.png

作者: viva0072008    时间: 2014-8-19 16:51
LZ这个脚本效率优化似乎不太好,点进去开启变量显示后,直接卡到只有几帧,动都动不了……
作者: 喵kano    时间: 2014-8-19 17:00
推荐试试喵呜大触的这个地图变量脚本
https://rpg.blue/home.php?mod=sp ... o=blog&id=12023




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