查看: 3066|回复: 9

[已经解决] 关于地图显示变量

[复制链接]
梦石
0
星屑
50
在线时间
184 小时
注册时间
2011-3-2
回帖
54
发表于 2014-8-19 09:43:24 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 r403736524 于 2014-8-19 10:02 编辑

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

[pre lang="ruby" line="1"]#==============================================================================
# ** 地图显示变量 v1.2
#    作者:945127391
#    使用说明:
#    ①新建一个显示变量的精灵:
#      事件 -> 脚本中输入:
#        $game_map.new_variable_sprite(id, x, y, ini_var, [text_bitmap])
#        id          - 要创建的变量精灵的ID
#        x           - 要创建的变量精灵的X坐标
#        y           - 要创建的变量精灵的Y坐标
#        ini_var     - 要创建的变量精灵初始显示的数值
#        text_bitmap - 要创建的变量精灵的文字图片文件
#                      可以省略,如果为nil,则不用图片描绘文字;
#                      默认为nil
#    ②删除一个显示变量的精灵:
#      事件 -> 脚本中输入:
#        $game_map.map_variables[id] = nil
#        id - 要删除的变量精灵的ID
#    ③改变一个变量精灵的属性:
#      (以下的 id 都是要改变的变量精灵的ID)
#        $game_map.map_variables[id].x = n              # 改变id号变量精灵的X坐标
#        $game_map.map_variables[id].y = n              # 改变id号变量精灵的Y坐标
#        $game_map.map_variables[id].variable = n  # 改变id号变量精灵的显示的变量
#        $game_map.map_variables[id].opacity = n       # 改变id号变量精灵的不透明
#                                                                      度(0~255)
#        $game_map.map_variables[id].visible = true/false # 改变id号变量精灵的可
#                                                 见状态,true为可见,false为不可见
#        $game_map.map_variables[id].text_bitmap = bitmap          # 改变文字图片
#        以下是用来改变变量精灵的字体的:
#        $game_map.map_variables[id].font[:name]
#        $game_map.map_variables[id].font[:size]
#        $game_map.map_variables[id].font[:bold]
#        $game_map.map_variables[id].font[:italic]
#        $game_map.map_variables[id].font[:shadow]
#        $game_map.map_variables[id].font[:outline]
#        $game_map.map_variables[id].font[:color]
#        $game_map.map_variables[id].font[:out_color]
#==============================================================================
#------------------------------------------------------------------------------
# ** Bitmap
#------------------------------------------------------------------------------
class Bitmap
  #----------------------------------------------------------------------------
  # * 描绘图片数字
  #----------------------------------------------------------------------------
  def draw_bitmap_number(bitmap, x, y, number)
    number = number.to_s
    aw = bitmap.width / 10
    l = aw * number.size
    b = Bitmap.new(l, bitmap.height)
    for i in 0...number.size
      src_rect = Rect.new(aw * number.to_i, 0, aw, bitmap.height)
      b.blt(aw * i, 0, bitmap, src_rect)
    end
    blt(x, y, b, b.rect)
    b.dispose
  end
end

#------------------------------------------------------------------------------
# ** Sprite_Variable
#------------------------------------------------------------------------------
class Sprite_Variable < Sprite_Base
  #----------------------------------------------------------------------------
  # * 初始化
  #----------------------------------------------------------------------------
  def initialize(id)
    super(nil)
    @id = id
    self.x = $game_map.map_variables[@id].x
    self.y = $game_map.map_variables[@id].y
    self.z = 9999
    self.bitmap = Bitmap.new(Graphics.width - self.x, Graphics.height - self.y)
    self.opacity = $game_map.map_variables[@id].opacity
    self.visible = $game_map.map_variables[@id].visible
    refresh
  end
  #----------------------------------------------------------------------------
  # * 更新
  #----------------------------------------------------------------------------
  def update
    super
    self.x = $game_map.map_variables[@id].x
    self.y = $game_map.map_variables[@id].y
    self.bitmap = Bitmap.new(Graphics.width - self.x, Graphics.height - self.y)
    self.opacity = $game_map.map_variables[@id].opacity
    self.visible = $game_map.map_variables[@id].visible
    refresh
  end
  #----------------------------------------------------------------------------
  # * 更新内容
  #----------------------------------------------------------------------------
  def refresh
    self.bitmap.clear
    if $game_map.map_variables[@id].text_bitmap == nil
      self.bitmap.font.name = $game_map.map_variables[@id].font[:name]
      self.bitmap.font.size = $game_map.map_variables[@id].font[:size]
      self.bitmap.font.bold = $game_map.map_variables[@id].font[:bold]
      self.bitmap.font.italic = $game_map.map_variables[@id].font[:italic]
      self.bitmap.font.shadow = $game_map.map_variables[@id].font[:shadow]
      self.bitmap.font.outline = $game_map.map_variables[@id].font[:outilne]
      self.bitmap.font.color = $game_map.map_variables[@id].font[:color]
      self.bitmap.font.out_color = $game_map.map_variables[@id].font[:out_color]
      p self.bitmap.rect
      self.bitmap.draw_text(0, 0, self.bitmap.width, self.bitmap.text_size("1").height, $game_map.map_variables[@id].variable)
    else self.bitmap.draw_bitmap_number($game_map.map_variables[@id].text_bitmap, 0, 0, $game_map.map_variables[@id].variable)
    end
  end
end

#------------------------------------------------------------------------------
# ** Game_MapVariable
#------------------------------------------------------------------------------
class Game_MapVariable
  #----------------------------------------------------------------------------
  # * 定义实例变量
  #----------------------------------------------------------------------------
  attr_reader   :id
  attr_accessor :x
  attr_accessor :y
  attr_accessor :text_bitmap
  attr_accessor :font
  attr_accessor :variable
  attr_accessor :opacity
  attr_accessor :visible
  #----------------------------------------------------------------------------
  # * 初始化
  #----------------------------------------------------------------------------
  def initialize(id, x, y, ini_var, text_bitmap=nil)
    @id = id
    @x = x
    @y = y
    @text_bitmap = text_bitmap
    @variable = ini_var
    @font = {
    :name => Font.default_name,
    :size => Font.default_size,
    :bold => Font.default_bold,
    :italic => Font.default_italic,
    :shadow => Font.default_shadow,
    :outline => Font.default_outline,
    :color => Font.default_color,
    :out_color => Font.default_out_color
    }
    @opacity = 255
    @visible = true
  end
end

#------------------------------------------------------------------------------
# ** Game_Map
#------------------------------------------------------------------------------
class Game_Map
  #----------------------------------------------------------------------------
  # * 定义实例变量
  #----------------------------------------------------------------------------
  attr_accessor :map_variables
  #----------------------------------------------------------------------------
  # * 重命名方法
  #----------------------------------------------------------------------------
  alias oi initialize
  #----------------------------------------------------------------------------
  # * 初始化
  #----------------------------------------------------------------------------
  def initialize
    oi
    @map_variables = []
  end
  #----------------------------------------------------------------------------
  # * 新建变量精灵
  #----------------------------------------------------------------------------
  def new_variable_sprite(id, x, y, ini_var, text_bit=nil)
    if @map_variables[id] != nil
      @map_variables[id] = nil
    end
    @map_variables[id] = Game_MapVariable.new(id, x, y, ini_var, text_bit)
  end
  #----------------------------------------------------------------------------
  # * 删除变量精灵
  #----------------------------------------------------------------------------
  def del_variable_sprite(id)
    @map_variables.delete_at(id)
  end
end

#------------------------------------------------------------------------------
# ** Scene_Map
#------------------------------------------------------------------------------
class Scene_Map < Scene_Base
  #----------------------------------------------------------------------------
  # * 重命名方法
  #----------------------------------------------------------------------------
  alias os start
  alias ou update
  #----------------------------------------------------------------------------
  # * 开始处理
  #----------------------------------------------------------------------------
  def start
    os
    @map_variable_sprites = []
  end
  #----------------------------------------------------------------------------
  # * 释放
  #----------------------------------------------------------------------------
  def dispose
    super
    for i in 0...@map_variable_sprites.size
      @map_variable_sprites.dispose if @map_variable_sprites.is_a?(Sprite)
    end
  end
  #----------------------------------------------------------------------------
  # * 刷新画面
  #----------------------------------------------------------------------------
  def update
    ou
    for i in 0...$game_map.map_variables.size
      if $game_map.map_variables != nil and @map_variable_sprites == nil
        @map_variable_sprites = Sprite_Variable.new(i)
      elsif $game_map.map_variables == nil and @map_variable_sprites != nil
        @map_variable_sprites.dispose
      end
    end
    for i in 0...@map_variable_sprites.size
      @map_variable_sprites.update if $game_map.map_variables != nil and @map_variable_sprites.is_a?(Sprite)
    end
  end
end[/pre]

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

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

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-8-19 09:50:43 | 显示全部楼层
什么情况?没看出来。
上一下范例吧?
回复

使用道具 举报

梦石
0
星屑
250
在线时间
233 小时
注册时间
2013-8-2
回帖
544
发表于 2014-8-19 09:50:59 | 显示全部楼层
把问题再说清楚点,ps:lz你的海贼王行走图求共享,,,,
我忘了,我要怎么遗忘。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
184 小时
注册时间
2011-3-2
回帖
54
 楼主| 发表于 2014-8-19 09:54:54 | 显示全部楼层
taroxd 发表于 2014-8-19 09:50
什么情况?没看出来。
上一下范例吧?

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

2.jpg
回复

使用道具 举报

梦石
0
星屑
50
在线时间
184 小时
注册时间
2011-3-2
回帖
54
 楼主| 发表于 2014-8-19 09:57:49 | 显示全部楼层
千夙 发表于 2014-8-19 09:50
把问题再说清楚点,ps:lz你的海贼王行走图求共享,,,,

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

点评

看上去好有喜感の谢谢贡献╭(╯3╰)╮  发表于 2014-8-19 10:54

评分

参与人数 1星屑 +20 收起 理由
喜阳阳 + 20 抱走了

查看全部评分

回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-8-19 10:01:17 | 显示全部楼层
本帖最后由 taroxd 于 2014-8-19 10:03 编辑

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

这是脚本本身的bug

[pre lang="ruby" line="1"]class Scene_Map < Scene_Base
  alias tm_20140809 terminate
  def terminate
    @map_variable_sprites.each {|s| s.dispose if s }
    tm_20140809
  end
end[/pre]

点评

额,算了,不会弄  发表于 2014-8-19 10:16
用 [img][/img]代码  发表于 2014-8-19 10:10
我知道在哪里设置个性签名,怎么添加个动态图上去呢?  发表于 2014-8-19 10:08
友情提醒:等级太低的话签名只能1字节  发表于 2014-8-19 10:07
太棒了,3Q  发表于 2014-8-19 10:06

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
250
在线时间
233 小时
注册时间
2013-8-2
回帖
544
发表于 2014-8-19 11:00:53 | 显示全部楼层
。。我这渣想出来的方法,,,你可以把坐标弄到这个空白的地方,,
QQ图片20140819105835.jpg

点评

heh  发表于 2014-8-19 11:14
我也想过这样做,但是不能根本的解决问题,不过版主已经修复这个BUG了  发表于 2014-8-19 11:12
我忘了,我要怎么遗忘。
回复

使用道具 举报

梦石
0
星屑
1461
在线时间
815 小时
注册时间
2013-8-3
回帖
355
发表于 2014-8-19 12:31:13 | 显示全部楼层

点评

虽然问题已经解决了,还是感谢你的回答  发表于 2014-8-19 13:26

【同人游戏】勇者斗恶龙TG
欢迎加入游戏测试群333599798
如有需私聊请加QQ:516425000
回复

使用道具 举报

梦石
0
星屑
50
在线时间
366 小时
注册时间
2009-7-14
回帖
102
发表于 2014-8-19 16:51:51 | 显示全部楼层
LZ这个脚本效率优化似乎不太好,点进去开启变量显示后,直接卡到只有几帧,动都动不了……

点评

岂止是不太好,那简直是相当不好  发表于 2014-8-19 17:02
回复

使用道具 举报

运否天赋

梦石
10
星屑
5246
在线时间
3568 小时
注册时间
2014-5-15
回帖
1441

开拓者

发表于 2014-8-19 17:00:40 | 显示全部楼层
推荐试试喵呜大触的这个地图变量脚本
https://rpg.blue/home.php?mod=sp ... o=blog&id=12023
土猫三国开发完成
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部