Project1
标题:
怎么修改NPC名字的大小?
[打印本页]
作者:
dea343
时间:
2009-1-6 07:39
标题:
怎么修改NPC名字的大小?
RT
我在脚本改了下 结果 所有的名字都变大了。。
我只想要 一只NPC 名字变大 其他都是小的。
究竟要怎样弄才可以? 我使用的是这个脚本
#==============================================================================
# (新)显示NPC名和图标 v1.01 by 沉影不器
#------------------------------------------------------------------------------
# 功能: 在指定NPC头上显示名/图标,比如有任务的NPC头上多一个提示图标
# 使用方法:
# ① 在事件页里任意位置加注释,格式为 npc=名称,名称颜色,大小写不限
# ② 需要显示图标的事件,在注释任意位置增加/i[图标序号],大小写不限
# ③ 参数设定在脚本第15-20行
# 新增全局控制是否显示 NPC 名,当脚本第20行指定的开关打开时显示
# 默认第10号开关
#==============================================================================
# 参数设定
#==============================================================================
module NPC
NAME_FONT = "黑体"
NAME_SIZE = 14
NAME_COLOR = 0
NAME_SHADOW = true
NAME_WIDTH = 120
NAME_SWITCH = 10
end
class String
#-------------------------------------------------------------------------
# ○ 读取注释
# section : 字段名
# ignore_caps : 忽略大小写(仅字段名)
#-------------------------------------------------------------------------
def read_note(section, ignore_caps = true)
result = ''
# 忽略大小写时,全部转大写
section.upcase! if ignore_caps
# 转symbol方便比较
s = section.to_sym
self.each_line{|line|
temp = line.split(/=/)
# 去掉干扰字符
temp.each {|i| i.strip!}
temp[0].upcase! if ignore_caps
if temp[0].to_sym == s
unless temp[1] == nil
result = temp[1]
end
# 如果希望同名字段值覆盖前面的字段,去掉下一行
break
end
}
return result
end
end
#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ◎ 定义实例变量
#--------------------------------------------------------------------------
attr_accessor :npcname # NPC名
attr_accessor :npcicon # NPC图标
#--------------------------------------------------------------------------
# ◎ 初始化对象
#--------------------------------------------------------------------------
alias character_ini initialize
def initialize
character_ini
@npcname = ""
@npcicon = -1
end
#--------------------------------------------------------------------------
# ○ 更改名标志
#--------------------------------------------------------------------------
def name_changed
return false
end
end
#==============================================================================
# ■ Game_Event
#==============================================================================
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ◎ 定义实例变量
#--------------------------------------------------------------------------
attr_reader :erased # 暂时消除标志
attr_reader :npcname # NPC 名
attr_reader :npcicon # NPC 图标
attr_accessor :name_changed # 名更改标志
#--------------------------------------------------------------------------
# ◎ 刷新
#--------------------------------------------------------------------------
def refresh
new_page = nil
unless @erased # 无法暂时消失的情况下
for page in @event.pages.reverse # 按页面顺序
next unless conditions_met?(page) # 判断是否符合条件
new_page = page
break
end
end
if new_page != @page # 事件页是否被改变?
clear_starting # 清除启动中标志
setup(new_page) # 设置事件页
check_event_trigger_auto # 判断自动事件启动
### NPC名
get_npcinfo
@name_changed = true
end
end
#--------------------------------------------------------------------------
# ○ 获取 NPC 信息
#--------------------------------------------------------------------------
def get_npcinfo
@npcname = ""
@npcicon = -1
return if @list == nil
for line in @list
if line.code == 108 or 408
unless line.parameters.empty?
npcinfo = line.parameters.to_s.read_note('npc')
@npcname = npcinfo.gsub(/\\I\[(\d+)\]/i) {}
@npcicon = $1 == nil ? -1 : $1.to_i
return
end
end
end
end
end
#==============================================================================
# ■ Game_Player
#==============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# ○ NPC名
#--------------------------------------------------------------------------
def npcname
return $game_party.members[0].name
end
end
#==============================================================================
# ■ Sprite_Character
#==============================================================================
class Sprite_Character < Sprite_Base
#--------------------------------------------------------------------------
# ◎ 初始化对象
# viewport : 视区
# character : 角色 (Game_Character)
#--------------------------------------------------------------------------
def initialize(viewport, character = nil)
super(viewport)
@character = character
@balloon_duration = 0
### NPC 名
###@character.npcname
###@character.npcicon
set_name_sprite
update
end
#--------------------------------------------------------------------------
# ◎ 释放
#--------------------------------------------------------------------------
def dispose
dispose_balloon
super
###
return if @name_sprite == nil
@name_sprite.bitmap.dispose
@name_sprite.dispose
end
#--------------------------------------------------------------------------
# ◎ 更新画面
#--------------------------------------------------------------------------
alias npc_update update
def update
npc_update
### NPC 名
unless @name_sprite == nil or @name_sprite.disposed?
### 可视性
if $game_switches[NPC::NAME_SWITCH]
@name_sprite.visible = true
else
@name_sprite.visible = false
return
end
if @character.is_a?(Game_Event) and @character.erased
@name_sprite.visible = false
return
else
@name_sprite.visible = true
end
if @character.is_a?(Game_Player) and @character.in_vehicle?
@name_sprite.visible = false
return
else
@name_sprite.visible = true
end
return unless @name_sprite.visible
if @character.name_changed
@character.name_changed = false
refresh_name_sprite
end
### 坐标跟随
@name_sprite.x = self.x - NPC::NAME_WIDTH/2
@name_sprite.y = self.y - self.height-24-NPC::NAME_SIZE-2
@name_sprite.z = self.z+1
end
end
#--------------------------------------------------------------------------
# ○ 设定 NPC 名称
#--------------------------------------------------------------------------
def set_name_sprite
return if @character.is_a?(Game_Event) and @character.erased
return if @character.npcname == ""
return if @character.character_name == ""
@name_sprite = Sprite.new
@name_sprite.bitmap = Bitmap.new(NPC::NAME_WIDTH, 24+NPC::NAME_SIZE+2)
@name_sprite.bitmap.font.name = NPC::NAME_FONT
@name_sprite.bitmap.font.size = NPC::NAME_SIZE
@name_sprite.bitmap.font.shadow = NPC::NAME_SHADOW
refresh_name_sprite
end
#--------------------------------------------------------------------------
# ○ 更新 NPC 名称
#--------------------------------------------------------------------------
def refresh_name_sprite
name,color_index = @character.npcname.split(/,/)
color_index = NPC::NAME_COLOR if color_index == ""
@name_sprite.bitmap.font.color = text_color(color_index.to_i)
@name_sprite.bitmap.clear
## 描绘图标
if @character.npcicon > 0
icon_index = @character.npcicon
bitmap = Cache.system("Iconset")
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
@name_sprite.bitmap.blt(NPC::NAME_WIDTH/2-12, 0, bitmap, rect)
end
# 描绘名
@name_sprite.bitmap.draw_text(0,24,NPC::NAME_WIDTH,NPC::NAME_SIZE+2,name,1)
end
#--------------------------------------------------------------------------
# ○ 获取文字颜色色
# n : 文字颜色编号 (0~31)
#--------------------------------------------------------------------------
def text_color(n)
x = 64 + (n % 8) * 8
y = 96 + (n / 8) * 8
return Cache.system("Window").get_pixel(x, y)
end
end
复制代码
[LINE]1,#dddddd[/LINE]
此贴于 2009-1-9 11:31:31 被版主八云紫提醒,请楼主看到后对本贴做出回应。
[LINE]1,#dddddd[/LINE]
本贴由论坛斑竹八云紫结贴,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^
作者:
九夜神尊
时间:
2009-1-6 08:26
不知道为什么,我用你的脚本,除了角色之外的都不
显示名字个人的想法是解决后 当注释为 NPC= 名称时字较大
注释为 npc= 名称时,字较小
不过当前不知道怎么改!哈哈,后面看看
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1