赞 | 0 |
VIP | 19 |
好人卡 | 5 |
积分 | 1 |
经验 | 3404 |
最后登录 | 2021-12-1 |
在线时间 | 79 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 60
- 在线时间
- 79 小时
- 注册时间
- 2007-2-11
- 帖子
- 140
|
本帖最后由 asd11000 于 2012-5-29 21:23 编辑
给你写了个。。
范例请无视里面的史莱姆,那是给别个的范例。。
添加新的称号:$game_actors[成员ID].get_new_nickname("真心人,这里是称号名称","灰常真心的人,这里是称号介绍")
我是放在菜单里调用的,因为要先选择成员,然后每个成员有相应的称号,不同成员的称号不能互相使用。
所以要给以下2个方法添加几句(红字):
1 Scene_Menu
#--------------------------------------------------------------------------
# ● 生成指令窗口
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_MenuCommand.new
@command_window.set_handler(:item, method(:command_item))
@command_window.set_handler(:skill, method(:command_personal))
@command_window.set_handler(:equip, method(:command_personal))
@command_window.set_handler(:status, method(:command_personal))
@command_window.set_handler(:nickname, method(:command_personal))
@command_window.set_handler(:formation, method(:command_formation))
@command_window.set_handler(:save, method(:command_save))
@command_window.set_handler(:game_end, method(:command_game_end))
@command_window.set_handler(:cancel, method(:return_scene))
end
#--------------------------------------------------------------------------
# ● 个人指令“确定”
#--------------------------------------------------------------------------
def on_personal_ok
case @command_window.current_symbol
when :skill
SceneManager.call(Scene_Skill)
when :equip
SceneManager.call(Scene_Equip)
when :status
SceneManager.call(Scene_Status)
when :nickname
SceneManager.call(Scene_Nickname)
end
end
2 Window_MenuCommand
#--------------------------------------------------------------------------
# ● 向指令列表添加主要的指令
#--------------------------------------------------------------------------
def add_main_commands
add_command(Vocab::item, :item, main_commands_enabled)
add_command(Vocab::skill, :skill, main_commands_enabled)
add_command(Vocab::equip, :equip, main_commands_enabled)
add_command(Vocab::status, :status, main_commands_enabled)
add_command("称号", :nickname, main_commands_enabled)
end
以下是代码部分- #encoding:utf-8
- class Nickname
- attr_reader :name
- attr_reader :description
- #--------------------------------------------------------------------------
- # ● 初始化对象
- #--------------------------------------------------------------------------
- def initialize(name, description)
- @name = name
- @description = description
- end
- #--------------------------------------------------------------------------
- # ● 称号菜单中的显示
- #--------------------------------------------------------------------------
- def default_nickname?(name)
- return @name == name
- end
- end
- #==============================================================================
- # ■ Game_Actor
- #------------------------------------------------------------------------------
- # 管理角色的类。
- # 本类在 Game_Actors 类 ($game_actors) 的内部使用。
- # 具体使用请查看 Game_Party 类 ($game_party) 。
- #==============================================================================
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # ● 初始化对象
- #--------------------------------------------------------------------------
- alias old_initialize initialize
- def initialize(actor_id)
- old_initialize(actor_id)
- @nickname_list = []
- @nickname_list.push(Nickname.new(@nickname,"默认称号"))
- end
- #--------------------------------------------------------------------------
- # ● 获得新称号
- #--------------------------------------------------------------------------
- def get_new_nickname(nickname,description)
- @nickname_list.push(Nickname.new(nickname,description)) if !nickname?(nickname)
- end
- #--------------------------------------------------------------------------
- # ● 称号是否存在
- #--------------------------------------------------------------------------
- def nickname?(nickname)
- @nickname_list.each do |name|
- return true if nickname == name
- end
- return false
- end
- #--------------------------------------------------------------------------
- # ● 设置称号
- #--------------------------------------------------------------------------
- def set_nickname(index)
- @nickname = @nickname_list[index].name
- end
- #--------------------------------------------------------------------------
- # ● 获得所有称号
- #--------------------------------------------------------------------------
- def get_nickname_list
- @nickname_list
- end
- end
- #==============================================================================
- # ■ Scene_Nickname
- #------------------------------------------------------------------------------
- # 称号画面
- #==============================================================================
- class Scene_Nickname < Scene_ItemBase
- #--------------------------------------------------------------------------
- # ● 开始处理
- #--------------------------------------------------------------------------
- def start
- super
- create_help_window
- create_status_window
- create_names_window
- end
- #--------------------------------------------------------------------------
- # ● 生成状态窗口
- #--------------------------------------------------------------------------
- def create_status_window
- y = @help_window.height
- @status_window = Window_NicknameStatus.new(0, y)
- @status_window.viewport = @viewport
- @status_window.actor = @actor
- end
- #--------------------------------------------------------------------------
- # ● 生成称号窗口
- #--------------------------------------------------------------------------
- def create_names_window
- wy = @status_window.y + @status_window.height
- wh = Graphics.height - wy
- @item_window = Window_Nickname.new(0, wy, Graphics.width, wh)
- @item_window.set_actor(@actor)
- @item_window.viewport = @viewport
- @item_window.help_window = @help_window
- @item_window.refresh
- @item_window.activate
- @item_window.select_last
- @item_window.set_handler(:ok, method(:on_item_ok))
- @item_window.set_handler(:cancel, method(:return_scene))
- end
- #--------------------------------------------------------------------------
- # ● 称号“确定”
- #--------------------------------------------------------------------------
- def on_item_ok
- @item_window.set_nickname(item)
- @status_window.refresh
- activate_item_window
- end
- end
- #==============================================================================
- # ■ Window_Nickname
- #------------------------------------------------------------------------------
- # 称号画面中,显示已获得称号的窗口。
- #==============================================================================
- class Window_Nickname < Window_Selectable
- #--------------------------------------------------------------------------
- # ● 初始化对象
- #--------------------------------------------------------------------------
- def initialize(x, y, width, height)
- super
- @data = []
- @actor = nil
- @default_name = ""
- end
- #--------------------------------------------------------------------------
- # ● 获取列数
- #--------------------------------------------------------------------------
- def col_max
- return 2
- end
- #--------------------------------------------------------------------------
- # ● 设置当前角色
- #--------------------------------------------------------------------------
- def set_actor(actor)
- @actor = actor
- @default_name = actor.nickname
- end
- #--------------------------------------------------------------------------
- # ● 设置当前称号
- #--------------------------------------------------------------------------
- def set_nickname(item)
- @default_name = item.name
- @actor.nickname = item.name
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 获取项目数
- #--------------------------------------------------------------------------
- def item_max
- @data ? @data.size : 1
- end
- #--------------------------------------------------------------------------
- # ● 获取任务
- #--------------------------------------------------------------------------
- def item
- @data && index >= 0 ? @data[index] : nil
- end
- #--------------------------------------------------------------------------
- # ● 获取选择称号的有效状态
- #--------------------------------------------------------------------------
- def enable?(index)
- !@data[index].default_nickname?(@default_name)
- end
- #--------------------------------------------------------------------------
- # ● 生成称号列表
- #--------------------------------------------------------------------------
- def make_item_list
- @data = @actor.get_nickname_list
- end
- #--------------------------------------------------------------------------
- # ● 返回上一个选择的位置
- #--------------------------------------------------------------------------
- def select_last
- select(0)
- end
- #--------------------------------------------------------------------------
- # ● 绘制项目
- #--------------------------------------------------------------------------
- def draw_item(index)
- item = @data[index]
- if item
- rect = item_rect(index)
- rect.width -= 4
- draw_item_name(item, rect.x, rect.y, enable?(index), rect.width)
- end
- end
- #--------------------------------------------------------------------------
- # ● 绘制名称
- # enabled : 有效的标志。false 的时候使用半透明效果绘制
- #--------------------------------------------------------------------------
- def draw_item_name(item, x, y, enabled = true, width = 230)
- return unless item
- text = item.name
- change_color(normal_color, enabled)
- draw_text(x, y, width, line_height, text)
- end
- #--------------------------------------------------------------------------
- # ● 更新帮助内容
- #--------------------------------------------------------------------------
- def update_help
- @help_window.set_item(item)
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- make_item_list
- create_contents
- draw_all_items
- end
- end
- #==============================================================================
- # ■ Window_SkillStatus
- #------------------------------------------------------------------------------
- # 技能画面中,显示技能使用者状态的窗口。
- #==============================================================================
- class Window_SkillStatus < Window_Base
- end
- #==============================================================================
- # ■ Window_NicknameStatus
- #------------------------------------------------------------------------------
- # 技能画面中,显示技能使用者状态的窗口。
- #==============================================================================
- class Window_NicknameStatus < Window_Base
- #--------------------------------------------------------------------------
- # ● 初始化对象 overwrite
- #--------------------------------------------------------------------------
- def initialize(x, y)
- super(x, y, window_width, fitting_height(4))
- @actor = nil
- end
- #--------------------------------------------------------------------------
- # ● 获取窗口的宽度
- #--------------------------------------------------------------------------
- def window_width
- Graphics.width
- end
- #--------------------------------------------------------------------------
- # ● 设置角色
- #--------------------------------------------------------------------------
- def actor=(actor)
- return if @actor == actor
- @actor = actor
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- contents.clear
- return unless @actor
- draw_actor_face(@actor, 0, 0)
- draw_actor_simple_status(@actor, 108, line_height / 2)
- end
- #--------------------------------------------------------------------------
- # ● 绘制简单的状态
- #--------------------------------------------------------------------------
- def draw_actor_simple_status(actor, x, y)
- draw_actor_name(actor, x, y)
- draw_actor_level(actor, x, y + line_height * 1)
- draw_actor_icons(actor, x, y + line_height * 2)
- draw_actor_class(actor, x + 140, y, 280)
- draw_actor_nickname(actor, x + 140, y + line_height * 1, 280)
- end
- #--------------------------------------------------------------------------
- # ● 绘制职业
- #--------------------------------------------------------------------------
- def draw_actor_class(actor, x, y, width = 180)
- change_color(normal_color)
- draw_text(x, y, width, line_height, "职业:" + actor.class.name)
- end
- #--------------------------------------------------------------------------
- # ● 绘制称号
- #--------------------------------------------------------------------------
- def draw_actor_nickname(actor, x, y, width = 180)
- change_color(normal_color)
- draw_text(x, y, width, line_height, "称号:" + actor.nickname)
- end
- end
复制代码 |
评分
-
查看全部评分
|