| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 17 |
| 经验 | |
| 最后登录 | 2026-7-8 |
| 在线时间 | 761 小时 |
- 梦石
- 0
- 星屑
- 1736
- 在线时间
- 761 小时
- 注册时间
- 2013-9-23
- 回帖
- 180

|
发表于 2015-6-18 15:59:18
|
显示全部楼层
本帖最后由 午睡的风铃 于 2015-6-18 16:06 编辑
胡乱折腾了一通,总算折腾出来了,不会写,改的默认脚本,行家见笑了。
显示队伍领队的肖像画,
这个不能即时刷新的,如果编队后光标默认在原本是领队的角色身上,那么关了菜单再打开后肖像画还是那个人的,默认在别人身上时,关了再开会刷新。
不过貌似编队是被丢掉的功能(─.─|||
同样,由于Window_MenuActor是Window_MenuStatus的子类,当在物品和技能界面选择目标时的窗口也和下图中放角色名字和等级的窗口尺寸一样。
需要个性化一下Window_MenuActor
正常情况下角色等级数值代表年龄
等级99时年龄变为不明(可在脚本内改)
等级98时,用变量表示年龄(变量号可在脚本内改),这个比如你的主角99岁了就给变量赋值99,或者更多,250岁,5211314岁什么的都行。
默认是窗口的优先级高于肖像画,如果需要肖像画高于窗口,把相关的注释掉就行。
脚本内相关行有说明,很容易找到,因为一共没几行,呃。
由于只是局部修改了默认脚本的某些部分,所以请保证以下类未做过改动。
Window_MenuCommand
Window_MenuStatus
Scene_Menu
效果图
脚本
放在默认脚本和Main之间
[pre lang="ruby"]#==============================================================================
# ■ Window_MenuCommand
#==============================================================================
class Window_MenuCommand < Window_Command
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize
super(0, Graphics.height - 72)
select_last
end
#--------------------------------------------------------------------------
# ● 生成指令列表
#--------------------------------------------------------------------------
def make_command_list
add_main_commands
add_game_end_command
end
#--------------------------------------------------------------------------
# ● 向指令列表添加主要的指令
#--------------------------------------------------------------------------
def add_main_commands
add_command(Vocab::item, :item, main_commands_enabled)
end
end
#==============================================================================
# ■ Window_MenuStatus
#==============================================================================
class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# ● 获取窗口的高度
#--------------------------------------------------------------------------
def window_height
Graphics.height / 3
end
#--------------------------------------------------------------------------
# ● 获取显示行数
#--------------------------------------------------------------------------
def visible_line_number
return 1
end
#--------------------------------------------------------------------------
# ● 获取显示列数
#--------------------------------------------------------------------------
def col_max
return 1
end
#--------------------------------------------------------------------------
# ● 获取项目的高度
#--------------------------------------------------------------------------
def item_height
height - standard_padding * 2
end
#--------------------------------------------------------------------------
# ● 获取项目的高度
#--------------------------------------------------------------------------
def item_height
height - standard_padding * 2
end
#--------------------------------------------------------------------------
# ● 绘制项目
#--------------------------------------------------------------------------
def draw_item(index)
actor = $game_party.members[index]
enabled = $game_party.battle_members.include?(actor)
rect = item_rect(index)
draw_item_background(index)
draw_actor_name(actor, rect.x + 4, rect.y + 4, 180)
change_color(system_color)
draw_text(rect.x + 4, rect.y + 30, 72, line_height, "年龄")
change_color(normal_color)
# (↓)这里调整年龄数值的位置
aw = 72 # 宽度 字数太多被挤扁时改这里
ax = rect.x - aw + 126 # 位置X
# (↓)当角色99级时 年龄显示为:你猜 通常不会有人把99岁的长辈尊为主人公吧
if actor.level == 99
draw_text(ax, rect.y + 30, aw, line_height, "你猜", 2)
# (↓)当角色98级时 用2号(可更改)变量来表示年龄
# 如果你打算把99岁的长辈尊为主人公
# 或者你的主人公是个寿星啊精灵啊恶魔啊什么的 可以活到三位数年龄
elsif actor.level == 98 # (↓)变量号
draw_text(ax, rect.y + 30, aw, line_height, $game_variables[2], 2)
# (↓)不满足以上两种情况 以等级的数值表示年龄
else
draw_text(ax, rect.y + 30, aw, line_height, actor.level, 2)
end
end
end
#==============================================================================
# ■ Window_ActorPortrait
#==============================================================================
class Window_ActorPortrait < Window_Base
#--------------------------------------------------------------------------
# ● 初始化
#--------------------------------------------------------------------------
def initialize(x, y)
super(-12, -12, Graphics.width + 24, Graphics.height + 24)
self.opacity = 0
refresh
end
#--------------------------------------------------------------------------
# ● 角色
#--------------------------------------------------------------------------
def actor=(actor)
return if @actor == actor
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
contents.clear
return unless @actor
draw_player
end
#--------------------------------------------------------------------------
# ● 绘制角色肖像画
#--------------------------------------------------------------------------
def draw_player
# (↓)这里未调整肖像画位置
px = 20 # 位置X
py = 0 # 位置Y
# (↓)肖像画路径 \Graphics\Pictures
# 文件名为: ActorPortrait + 角色ID 例如20号角色: ActorPortrait20
bitmap = Cache.picture("ActorPortrait" + @actor.id.to_s)
rect = Rect.new(0, 0, bitmap.width, bitmap.height)
contents.blt(contents_width - bitmap.width - px,
contents_height - bitmap.height - py, bitmap, rect)
bitmap.dispose
end
end
#==============================================================================
# ■ Scene_Menu
#==============================================================================
class Scene_Menu < Scene_MenuBase
#--------------------------------------------------------------------------
# ● 开始处理
#--------------------------------------------------------------------------
def start
super
create_portrait_window
create_command_window
create_status_window
end
#--------------------------------------------------------------------------
# ● 生成肖像画窗口
#--------------------------------------------------------------------------
def create_portrait_window
@actorportrait_window = Window_ActorPortrait.new(0, 0)
@actorportrait_window.z = 999 # 优先级 需要肖像画遮住窗口就注释掉这一行
@actorportrait_window.viewport = @viewport
@actorportrait_window.actor = @actor
end
#--------------------------------------------------------------------------
# ● 生成状态窗口
#--------------------------------------------------------------------------
def create_status_window
wy = Graphics.height - Graphics.height / 3
@status_window = Window_MenuStatus.new(@command_window.width, wy)
@status_window.z = 1000 # 优先级 需要肖像画遮住窗口就注释掉这一行
end
#--------------------------------------------------------------------------
# ● 生成指令窗口
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_MenuCommand.new
@command_window.z = 1000 # 优先级 需要肖像画遮住窗口就注释掉这一行
@command_window.set_handler(:item, method(:command_item))
@command_window.set_handler(:game_end, method(:command_game_end))
@command_window.set_handler(:cancel, method(:return_scene))
end
end[/pre] |
评分
-
查看全部评分
|