赞 | 40 |
VIP | 0 |
好人卡 | 72 |
积分 | 66 |
经验 | 38967 |
最后登录 | 2024-11-5 |
在线时间 | 1481 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 6560
- 在线时间
- 1481 小时
- 注册时间
- 2015-7-25
- 帖子
- 652
|
本帖最后由 魔法丶小肉包 于 2024-3-10 18:29 编辑
情况1,按照默认不变
add_command("选项", :abc)
情况2,只改变字体
add_command("选项", :abc,true,[:size,8,"+"])
情况3,只识别技能类型
add_command(name, :skill, true, [:skill_type,stype_id])
情况4,2和3两个都要
add_command(name, :skill, true, [:skill_type,stype_id],[:size,8,"+"])
上述情况中,第三个参数的true可以为false,前三个参数的顺序必须固定
额外事项:
从第四项之后可以无限添加参数,且顺序无所谓(用于脚本扩展)
如果要添加自定义的参数,格式为[符号,参数1,参数2,....,参数n]
符号:任意名称,例如:abc,仅作为识别使用
参数1~参数n:最少1个,最多无限个,读取后用于脚本扩展
自定义之后在对应位置调用current_ext(符号,位置)来获取返回值,从而用于各种效果中
举例:
add_command(name, :skill, true, [:aaa,"aaa","bbb","ccc"])
current_ext(:aaa,3) => "ccc"
↑3为从:aaa之后的第一个参数开始数
关于额外事项的部分,仅在需要自行扩展功能的时候用,如果不确定该怎么做的话请忽略,只看情况1~4
class Window_Command alias dri draw_item def draw_item(index) reset_font_settings @list[index][:ext].each do |i| next unless @index == index if i.is_a?(Array) && i[0] == :size contents.font.size = contents.font.size.send(i[2],i[1]) end end dri(index) end alias pcm process_cursor_move def process_cursor_move last_index = @index pcm re_draw_all_items if @index != last_index end def re_draw_all_items item_max.times {|i| redraw_item(i) } end def add_command(*args) name,symbol,enabled,*ext = *args enabled ||= true unless enabled == false @list.push({:name=>name, :symbol=>symbol, :enabled=>enabled, :ext=>ext}) end def current_ext(type,index = 1) if current_data current_data[:ext].each do |i| if i.is_a?(Array) && i[0] == type return i[index] end end else nil end end end class Scene_Battle def command_skill @skill_window.actor = BattleManager.actor @skill_window.stype_id = @actor_command_window.current_ext(:skill_type) @skill_window.refresh @skill_window.show.activate end end class Window_SkillCommand def update super @skill_window.stype_id = current_ext(:skill_type) if @skill_window end end
class Window_Command
alias dri draw_item
def draw_item(index)
reset_font_settings
@list[index][:ext].each do |i|
next unless @index == index
if i.is_a?(Array) && i[0] == :size
contents.font.size = contents.font.size.send(i[2],i[1])
end
end
dri(index)
end
alias pcm process_cursor_move
def process_cursor_move
last_index = @index
pcm
re_draw_all_items if @index != last_index
end
def re_draw_all_items
item_max.times {|i| redraw_item(i) }
end
def add_command(*args)
name,symbol,enabled,*ext = *args
enabled ||= true unless enabled == false
@list.push({:name=>name, :symbol=>symbol, :enabled=>enabled, :ext=>ext})
end
def current_ext(type,index = 1)
if current_data
current_data[:ext].each do |i|
if i.is_a?(Array) && i[0] == type
return i[index]
end
end
else
nil
end
end
end
class Scene_Battle
def command_skill
@skill_window.actor = BattleManager.actor
@skill_window.stype_id = @actor_command_window.current_ext(:skill_type)
@skill_window.refresh
@skill_window.show.activate
end
end
class Window_SkillCommand
def update
super
@skill_window.stype_id = current_ext(:skill_type) if @skill_window
end
end
|
|