赞 | 1 |
VIP | 57 |
好人卡 | 17 |
积分 | 1 |
经验 | 57584 |
最后登录 | 2019-10-17 |
在线时间 | 832 小时 |
Lv1.梦旅人 沉睡的八宝粥 
- 梦石
- 0
- 星屑
- 64
- 在线时间
- 832 小时
- 注册时间
- 2011-4-22
- 帖子
- 2996
|
1星屑
第一次找到了能在地图上显示变量和文字的脚本,感觉很好,但是BUG
还是太大了... 这是脚本:- #==============================================================================
- # 快捷显示系统 by 沉影不器
- #
- # 在地图上用事件脚本指定显示内容,并以编号管理
- #------------------------------------------------------------------------------
- # 可用功能:
- # set_us(显示内容, 编号#可省略, 横坐标#可省略, 纵坐标#可省略)
- # 功能: 设定一个显示版,如果编号相同,表示重新设定
- # 参数[显示内容]规定: 参数为数字时,表示该数字对应的系统变量
- # 此时显示内容随系统变量自动更新
- # 如显示1号变量: set_us(1)
- # 参数为文本时,直接显示文本内容
- # 如直接显示数字10: set_us("10")
- # 参数[编号]的规定: 编号从0开始,省略参数时,表示在缓存最后添加一个新的显示板
- # 如当前最后一个显示板编号为10,则新建一个编号11的显示板
- #
- # move_us(编号, 横坐标, 纵坐标)
- # 功能: 移动指定编号的显示版
- #
- # show_us(编号#可省略)
- # 功能: 显示指定编号的显示板
- # 省略编号表示全部显示
- #
- # hide_us(编号#可省略)
- # 功能: 隐藏指定编号的显示板
- # 省略编号表示全部隐藏
- #
- # clear_us(编号#可省略)
- # 功能: 清除指定编号的显示板
- # 省略编号表示全部清除
- #
- # us_font(编号, 类型, 新属性值)
- # 功能: 为指定编号的显示板设定显示类型
- # 类型列表 0:透明度 1:字色 2:字号 3:粗体 4:斜体 5:阴影
- # 如修改0号显示板的字色为红色: us_font(0,1,Color.new(255,0,0))
- # 如修改0号显示板的字体为斜体: us_font(0,4,true)
- #
- # 字色的特殊输入: 允许使用颜色对象如 us_font(0,1,Color.new(255,0,0))#表示红色
- # 直接输入整数表示启用vx皮肤素材上的颜色格子,如 us_font(0,1,5)#表示启用Window皮肤第6格颜色
- # 允许使用颜色代码,格式: "#FF00D5",如 us_font(0,1,"#FF0000")#表示红色
- #
- # 参数设定在脚本第45~52行
- #==============================================================================
- module UserSprite
- DefX = 0 # 默认横坐标
- DefY = 0 # 默认纵坐标
- DefOpacity = 255 # 默认透明度
- DefColor = Color.new(255,255,255) # 默认字色
- DefSize = 20 # 默认字号
- DefBold = false # 默认粗体情况
- DefItalic = false # 默认斜体情况
- DefShadow = true # 默认阴影情况
- end
- #==============================================================================
- # ■ Game_Interpreter
- #==============================================================================
- class Game_Interpreter
- include UserSprite
- #--------------------------------------------------------------------------
- # 设定用户精灵
- #--------------------------------------------------------------------------
- def set_us(obj, id = nil, x = DefX, y = DefY)
- i = id.nil? ? user_sprites.size : id
- user_sprites[i].dispose unless user_sprites[i].nil? or user_sprites[i].disposed?
- user_sprites[i] = Sprite_User_Sprite.new(obj)
- move_us(i, x, y)
- end
- #--------------------------------------------------------------------------
- # 移动用户精灵
- #--------------------------------------------------------------------------
- def move_us(id, x, y)
- user_sprites[id].pos = [x,y]
- end
- #--------------------------------------------------------------------------
- # 显示用户精灵
- #--------------------------------------------------------------------------
- def show_us(id = nil)
- if id == nil
- for sprite in user_sprites
- sprite.visible = true
- end
- else
- user_sprites[id].visible = true if user_sprites[id] != nil
- end
- end
- #--------------------------------------------------------------------------
- # 隐藏用户精灵
- #--------------------------------------------------------------------------
- def hide_us(id = nil)
- if id == nil
- for sprite in user_sprites
- sprite.visible = false
- end
- else
- user_sprites[id].visible = false if user_sprites[id] != nil
- end
- end
- #--------------------------------------------------------------------------
- # 清除用户精灵
- #--------------------------------------------------------------------------
- def clear_us(id = nil)
- if id == nil
- for sprite in user_sprites
- sprite.dispose
- end
- else
- user_sprites[id].dispose if user_sprites[id] != nil
- end
- end
- #--------------------------------------------------------------------------
- # ● 获取文字颜色色
- # n : 文字颜色编号 (0~31)
- #--------------------------------------------------------------------------
- def text_color(n)
- x = 64 + (n % 8) * 8
- y = 96 + (n / 8) * 8
- return windowskin.get_pixel(x, y)
- end
- #--------------------------------------------------------------------------
- # 设定用户精灵字体
- #--------------------------------------------------------------------------
- def us_font(id, kind, arg)
- case kind
- when 0 ## 透明度
- user_sprites[id].opacity = arg
- when 1 ## 字色
- case arg
- when Color
- c = arg
- when Integer
- x = 64 + (arg % 8) * 8
- y = 96 + (arg / 8) * 8
- c = Cache.system("Window").get_pixel(x, y)
- when String
- c = Color.new(arg[1,2].to_i(16), arg[3,2].to_i(16), arg[5,2].to_i(16))
- end
- user_sprites[id].color = c
- when 2 ## 字号
- user_sprites[id].size = arg
- when 3 ## 粗体
- user_sprites[id].bold = arg
- when 4 ## 斜体
- user_sprites[id].italic = arg
- when 5 ## 阴影
- user_sprites[id].shadow = arg
- end
- end
- #--------------------------------------------------------------------------
- # 提取用户精灵
- #--------------------------------------------------------------------------
- def user_sprites
- return nil unless $scene.is_a? Scene_Map
- return $user_sprites
- end
- end
- #==============================================================================
- # Spriteset_Map
- #==============================================================================
- class Spriteset_Map
- attr_accessor :user_sprites
- #--------------------------------------------------------------------------
- # ● 初始化对象
- #--------------------------------------------------------------------------
- def initialize
- create_viewports
- create_tilemap
- create_parallax
- create_characters
- create_shadow
- create_weather
- create_pictures
- create_timer
- ##
- create_user_sprites
- update
- end
- #--------------------------------------------------------------------------
- # 生成用户精灵
- #--------------------------------------------------------------------------
- def create_user_sprites
- $user_sprites ||= []
- for sprite in $user_sprites
- next if sprite.nil?
- sprite.visible = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 释放
- #--------------------------------------------------------------------------
- def dispose
- ##
- dispose_user_sprites
- dispose_tilemap
- dispose_parallax
- dispose_characters
- dispose_shadow
- dispose_weather
- dispose_pictures
- dispose_timer
- dispose_viewports
- end
- #--------------------------------------------------------------------------
- # 释放用户精灵
- #--------------------------------------------------------------------------
- def dispose_user_sprites
- for sprite in $user_sprites
- next if sprite.nil?
- sprite.visible = false
- ##sprite.dispose
- end
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面
- #--------------------------------------------------------------------------
- def update
- update_user_sprites
- update_tilemap
- update_parallax
- update_characters
- update_shadow
- update_weather
- update_pictures
- update_timer
- update_viewports
- end
- #--------------------------------------------------------------------------
- # 刷新用户精灵
- #--------------------------------------------------------------------------
- def update_user_sprites
- for sprite in $user_sprites
- next if sprite.nil?
- sprite.update
- end
- end
- end
- #==============================================================================
- # Sprite_User_Sprite
- #==============================================================================
- class Sprite_User_Sprite < Sprite
- include UserSprite
- #--------------------------------------------------------------------------
- # 初始化
- #--------------------------------------------------------------------------
- def initialize(obj = nil)
- super()
- ###self.bitmap = Bitmap.new(Graphics.width, Graphics.height)
- self.bitmap = Bitmap.new(1,1)
- self.x = 0; self.y = 0; self.z = 9999
- @obj = obj
- self.opacity = DefOpacity
- self.bitmap.font.color = DefColor
- self.bitmap.font.size = DefSize
- self.bitmap.font.bold = DefBold
- self.bitmap.font.italic = DefItalic
- self.bitmap.font.shadow = DefShadow
- update
- end
- #--------------------------------------------------------------------------
- # 释放
- #--------------------------------------------------------------------------
- def dispose
- if self.bitmap != nil
- self.bitmap.dispose
- end
- super
- end
- #--------------------------------------------------------------------------
- # 更新
- #--------------------------------------------------------------------------
- def update
- super
- return unless self.visible
- return unless @obj
- case @obj
- when String
- if @obj != @objc
- @objc = @obj.clone
- refresh
- end
- when Integer
- if $game_variables[@obj] != @objc
- @objc = $game_variables[@obj]
- refresh
- end
- end
- end
- #--------------------------------------------------------------------------
- # 设定坐标
- #--------------------------------------------------------------------------
- def pos=(*arg)
- temp = *arg
- self.x = temp[0]
- self.y = temp[1]
- end
- #--------------------------------------------------------------------------
- # 设定透明度
- #--------------------------------------------------------------------------
- def opacity=(o)
- super(o)
- refresh
- end
- #--------------------------------------------------------------------------
- # 设定字色
- #--------------------------------------------------------------------------
- def color=(c)
- self.bitmap.font.color = c
- refresh
- end
- #--------------------------------------------------------------------------
- # 设定字号
- #--------------------------------------------------------------------------
- def size=(z)
- self.bitmap.font.size = z
- refresh
- end
- #--------------------------------------------------------------------------
- # 设定粗体
- #--------------------------------------------------------------------------
- def bold=(b)
- self.bitmap.font.bold = b
- refresh
- end
- #--------------------------------------------------------------------------
- # 设定斜体
- #--------------------------------------------------------------------------
- def italic=(i)
- self.bitmap.font.italic = i
- refresh
- end
- #--------------------------------------------------------------------------
- # 设定阴影
- #--------------------------------------------------------------------------
- def shadow=(s)
- self.bitmap.font.shadow = s
- refresh
- end
- #--------------------------------------------------------------------------
- # 重绘
- #--------------------------------------------------------------------------
- def refresh
- if @objc.to_s.size > 0
- rect = self.bitmap.text_size(@objc.to_s)
- font = self.bitmap.font.clone
- self.bitmap.dispose
- self.bitmap = Bitmap.new(rect.width, rect.height)
- self.bitmap.font = font
- self.bitmap.draw_text(rect, @objc.to_s)
- else
- self.bitmap.clear
- end
- end
- end
复制代码 在我用set_us(1, 1, 250, 200)显示1号显示板的变量后再用clear_us(1)清除其内容会出现错误。
这是图片:
这是错误范例:
Project1.rar
(240.65 KB, 下载次数: 93)
(人家是新手,才上初一,高手勿喷...) |
最佳答案
查看完整内容
在210行那边也加上那样的两句 和刚刚的结构一样的
|