赞 | 3 |
VIP | 109 |
好人卡 | 208 |
积分 | 3 |
经验 | 22037 |
最后登录 | 2025-4-27 |
在线时间 | 1196 小时 |
Lv2.观梦者 虚構歪曲
- 梦石
- 0
- 星屑
- 334
- 在线时间
- 1196 小时
- 注册时间
- 2010-12-18
- 帖子
- 3928

|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 忧雪の伤 于 2011-8-25 04:06 编辑
关于:
这并非一个独立的脚本,这是一个 script project ,脚本工程。(虽然目前只有 1 个部件,不过我相信在不遥远的将来它将会是一个完善的工程)。这个工程用于整合与收录在 ISA 中发布的对于地图上的角色相关的脚本,如果你有想要加入这个工程的脚本,请使用论坛的 PM 功能,或者询问我的 QQ 号码。如果你不知道 ISA,想要了解它,请点击这里。
作者可能不愿意一直更改这个帖子,如果想得到最新的脚本请移步:http://rpg.blue/thread-206856-1-1.html 。
列表(当前收录数:1):
DisplayName:显示角色名称。(使用请参见脚本注释。)
参考截图:
(虽然是 VX 的画面,但是 XP 同样适用。)
参考工程:
CharEx.zip
(207.83 KB, 下载次数: 483)
(虽然是 XP 的工程,但是 VX 同样适用。)
脚本:
[white line]
- #==============================================================================
- # 中文名称: 角色功能扩展
- # 英文名称: Expansion of Character
- #------------------------------------------------------------------------------
- # 协议: Ideal Script Association(ISA)
- # 引用: http://rpg.blue/group-215-1.html
- #------------------------------------------------------------------------------
- # 作者: 忧雪の伤
- # 版本: 1.0.0.2
- # 更新日期: 2011.8.23
- #==============================================================================
- #==============================================================================
- # ** 记录这个脚本的信息。
- #==============================================================================
- $imported = {} if $imported.nil?
- $imported['CharEx'] = '1.0.0.2'
- #==============================================================================
- # ** 通用配置模块。
- #==============================================================================
- module IdealScript
- CharEx = Module.new unless IdealScript.constants.include? 'CharEx'
- end
- #==============================================================================
- # ** DisplayName
- #==============================================================================
- module IdealScript::CharEx::DisplayName
- #--------------------------------------------------------------------------
- # * 用三个常量来设置默认字体的属性。
- #--------------------------------------------------------------------------
- # DefaultFontSize 只能是一个整数。
- # DefaultFontName 只能是一个字符串或者一个数组。
- # DefaultFontColor 只能是一个 Color 类的实例。
- #--------------------------------------------------------------------------
- DefaultFontSize = 18
- DefaultFontName = ['方正粗倩简体', '黑体', '宋体']
- DefaultFontColor = Color.new(255, 255, 255)
- #--------------------------------------------------------------------------
- # * 用一个常量来设置描绘文字的对齐方式。
- #--------------------------------------------------------------------------
- # Alignment 可以是 'Head' 或者 'Feet'。
- # 'Head':文字会出现在角色的头上。
- # 'Feet':文字会出现在角色的脚下。
- #--------------------------------------------------------------------------
- Alignment = 'Head'
- #--------------------------------------------------------------------------
- # * 用一个常量来设置描绘文字的美化方式。
- #--------------------------------------------------------------------------
- # Beautify 可以是 nil,'Shadow' 或者 'Outline'。
- # nil:采用默认的方法描绘文字。
- # 'Shadow':采用带有影子的方法描绘文字。
- # 'Outline':采用带有边缘的方法描绘文字。
- #--------------------------------------------------------------------------
- Beautify = 'Outline'
- #--------------------------------------------------------------------------
- # * 关于事件、角色的名称标识的介绍。
- #--------------------------------------------------------------------------
- # EV:如果以此开头,视为取消显示。
- # <font bold>:如果带有的场合,会以粗体显示。
- # <no display>:如果带有的场合,视为取消显示。
- # <font italic>:如果带有的场合,会以斜体显示。
- # <not beautify>:如果带有的场合,会以默认方法描绘文字。
- # <font name(string)>:如果带有的场合,会以 string 作为字体名称。
- # <font size(integer)>:如果带有的场合,会以 integer 的数值作为字体大小。
- # <font color(red, green, blue)>:
- # 如果带有的场合,会以 red, green, blue 作为文字的 RGBA 颜色的参数。
- #--------------------------------------------------------------------------
- end
- #==============================================================================
- # ** Sprite
- #==============================================================================
- class IdealScript::CharEx::DisplayName::Sprite < Object::Sprite
- #--------------------------------------------------------------------------
- # * 定义实例变量。
- #--------------------------------------------------------------------------
- attr_reader :character
- #--------------------------------------------------------------------------
- # * 初始化对象。
- # character : 显示的对象。
- #--------------------------------------------------------------------------
- def initialize(viewport, character)
- super(viewport)
- @character = character
- self.x = @character.screen_x
- self.y = @character.screen_y
- refresh
- end
- #--------------------------------------------------------------------------
- # * 刷新画面。
- #--------------------------------------------------------------------------
- def update
- super
- self.x = @character.screen_x
- self.y = @character.screen_y
- self.ox = self.bitmap.rect.width / 2
- refresh unless @character.name.eql? @original_name
- end
- #--------------------------------------------------------------------------
- # * 释放。
- #--------------------------------------------------------------------------
- def dispose
- super
- self.bitmap.dispose
- end
- #--------------------------------------------------------------------------
- # * 刷新。
- #--------------------------------------------------------------------------
- def refresh
- self.bitmap.dispose unless self.bitmap.nil?
- font = Font.new
- font.name = IdealScript::CharEx::DisplayName::DefaultFontName
- font.size = IdealScript::CharEx::DisplayName::DefaultFontSize
- font.color = IdealScript::CharEx::DisplayName::DefaultFontColor
- name = @character.name.dup
- @original_name = name.dup
- font.bold = !!name[/<font bold>/]
- beautify = !name[/<not beautify>/]
- font.italic = !!name[/<font italic>/]
- name.sub!(/<font bold>/, '')
- name.sub!(/<font italic>/, '')
- name.sub!(/<not beautify>/, '')
- name.sub!(/<font name\((.*)\)>/, '')
- font.name = $1 unless $1.nil?
- name.sub!(/<font size\((.*)\)>/, '')
- font.size = Integer $1 unless $1.nil?
- name.sub!(/<font color\((.*)\)>/, '')
- args = $1.split(/,/).map {|str| Float(str) } unless $1.nil?
- font.color.set(*args) rescue nil
- bitmap = Bitmap.new(32, 32)
- bitmap.font, rect = font, bitmap.text_size(name)
- bitmap, size = nil, [rect.width + 2, rect.height + 2]
- self.bitmap, self.bitmap.font = Bitmap.new(*size), font
- return self.bitmap.draw_text(1, 1, size[0], size[1], name, 1) if !beautify
- original_color = self.bitmap.font.color.dup
- self.bitmap.font.color = Color.new(0, 0, 0)
- case IdealScript::CharEx::DisplayName::Beautify
- when 'Outline'
- self.bitmap.draw_text(2, 0, size[0], size[1], name, 1)
- self.bitmap.draw_text(0, 2, size[0], size[1], name, 1)
- self.bitmap.draw_text(2, 2, size[0], size[1], name, 1)
- self.bitmap.draw_text(0, 0, size[0], size[1], name, 1)
- self.bitmap.draw_text(2, 1, size[0], size[1], name, 1)
- self.bitmap.draw_text(1, 2, size[0], size[1], name, 1)
- self.bitmap.draw_text(0, 1, size[0], size[1], name, 1)
- self.bitmap.draw_text(1, 0, size[0], size[1], name, 1)
- when 'Shadow'
- self.bitmap.draw_text(2, 2, size[0], size[1], name, 1)
- end
- self.bitmap.font.color = original_color
- self.bitmap.draw_text(1, 1, size[0], size[1], name, 1)
- nil
- end
- end
- #==============================================================================
- # ** Game_Actor
- #==============================================================================
- class Game_Actor
- #--------------------------------------------------------------------------
- # * 获取名称。
- #--------------------------------------------------------------------------
- alias ideal_script_name_for_characterex name
- def name(*args)
- original_name = ideal_script_name_for_characterex(*args).dup
- original_name.sub!(/<font color\(.*\)>/, '')
- original_name.sub!(/<font name\(.*\)>/, '')
- original_name.sub!(/<font size\(.*\)>/, '')
- original_name.sub!(/<not beautify>/, '')
- original_name.sub!(/<font italic>/, '')
- original_name.sub!(/<no display>/, '')
- original_name.sub!(/<font bold>/, '')
- original_name
- end
- end
- #==============================================================================
- # ** Game_Character
- #==============================================================================
- class Game_Character
- #--------------------------------------------------------------------------
- # * 定义实例变量。
- #--------------------------------------------------------------------------
- attr_accessor :charex_display_name
- #--------------------------------------------------------------------------
- # * 初始化对象。
- #--------------------------------------------------------------------------
- alias ideal_script_initialize_for_characterex initialize
- def initialize(*args)
- @charex_display_name = true
- ideal_script_initialize_for_characterex *args
- end
- end
- #==============================================================================
- # ** Game_Event
- #==============================================================================
- class Game_Event
- #--------------------------------------------------------------------------
- # * 获取名称。
- #--------------------------------------------------------------------------
- unless method_defined? :name
- def name
- return @event.name.dup unless @charex_name
- @charex_name
- end
- end
- unless method_defined? :name=
- def name=(name)
- @charex_name = name
- end
- end
- end
- #==============================================================================
- # ** Game_Vehicle
- #==============================================================================
- class Game_Vehicle
- #------------------------------------------------------------------------
- # * 获取名称。
- #------------------------------------------------------------------------
- unless method_defined? :name
- def name
- '<no display>'
- end
- end
- end
- #==============================================================================
- # ** Game_Player
- #==============================================================================
- class Game_Player
- #--------------------------------------------------------------------------
- # * 获取名称。
- #--------------------------------------------------------------------------
- unless method_defined? :name
- def name
- if Game_Party.method_defined? :actors
- actor = $game_party.actors[0]
- elsif Game_Party.method_defined? :members
- actor = $game_party.members[0]
- else
- return ''
- end
- actor.ideal_script_name_for_characterex
- end
- end
- end
- #==============================================================================
- # ** Sprite_Character
- #==============================================================================
- class Sprite_Character
- #--------------------------------------------------------------------------
- # * 初始化对象。
- #--------------------------------------------------------------------------
- alias ideal_script_initialize_for_characterex initialize
- def initialize(*args)
- viewport = args.find {|arg| arg.is_a? Viewport }
- character = args.find {|arg| arg.is_a? Game_Character }
- sprite = IdealScript::CharEx::DisplayName::Sprite
- @charex_display_name = sprite.new(viewport, character)
- ideal_script_initialize_for_characterex *args
- end
- #--------------------------------------------------------------------------
- # * 释放。
- #--------------------------------------------------------------------------
- alias ideal_script_dispose_for_characterex dispose
- def dispose(*args)
- @charex_display_name.dispose
- ideal_script_dispose_for_characterex *args
- end
- #--------------------------------------------------------------------------
- # * 刷新画面。
- #--------------------------------------------------------------------------
- alias ideal_script_update_for_characterex update
- def update(*args)
- ideal_script_update_for_characterex *args
- boolean = !(character.name[/<no display>/] || character.name[0, 2][/EV/])
- boolean = boolean && visible && character.charex_display_name
- @charex_display_name.visible = boolean
- @charex_display_name.z = self.z + 32
- @charex_display_name.update
- if IdealScript::CharEx::DisplayName::Alignment.eql? 'Head'
- oy = self.src_rect.height + @charex_display_name.src_rect.height
- @charex_display_name.oy = oy
- end
- end
- end
复制代码 |
评分
-
查看全部评分
|