Project1
标题: 怎么能让在光标内战斗指令中的某指令文字被放大? [打印本页]
作者: shengfeng 时间: 2024-3-6 22:12
标题: 怎么能让在光标内战斗指令中的某指令文字被放大?
比如:光标在攻击指令上的攻击文字就被放大,光标到了其它指令上攻击文字就恢复原样,其它指令也同攻击一样
作者: 魔法丶小肉包 时间: 2024-3-7 19:00
本帖最后由 魔法丶小肉包 于 2024-3-9 19:47 编辑
使用方法,放在main的上方
指令设定的时候分为两种情况
1.如果该指令不需要放大,那么
add_command("不会放大的指令", :abc)
add_command("不会放大的指令", :abc)
2.如果该指令需要放大,那么
add_command("会放大的指令", :abc,true,[8,"+"])
add_command("会放大的指令", :abc,true,[8,"+"])
情况2中,[8,"+"]其中8代表字体变动大小,"+"代表加法运算,比如默认字体大小24,那么[8,"+"]放大后为32
同样的,如果你想缩小,那么就是[尺寸,"-"]
按照比例变大就是[尺寸,"*"]
3.如果你不是默认系统,并且有脚本已经修改过了相关描绘函数,那么有几率会无效果,遇到这种情况的话请自行处理
class Window_Command
alias dri draw_item
def draw_item(index)
if @list[index][:ext] && @list[index][:ext].is_a?(Array) && @index == index
contents.font.size = contents.font.size.send(@list[index][:ext][1],@list[index][:ext][0])
else
reset_font_settings
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
end
class Window_Command
alias dri draw_item
def draw_item(index)
if @list[index][:ext] && @list[index][:ext].is_a?(Array) && @index == index
contents.font.size = contents.font.size.send(@list[index][:ext][1],@list[index][:ext][0])
else
reset_font_settings
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
end
作者: shengfeng 时间: 2024-3-8 14:19
这个add_command("会放大的指令", :abc,true,[8,"+"])放在哪里?还是对原来的add_command进行修改?
作者: shengfeng 时间: 2024-3-8 19:48
add_command("攻击", :attack , true, [8,"+"] , @actor.attack_usable?)
如果这样用出现报错(5 for 4)
作者: shengfeng 时间: 2024-3-10 13:54
用在技能上行不通,add_command(name, :skill, true, stype_id),四个一个也少不了,[8,"+"]没地方放了
作者: 魔法丶小肉包 时间: 2024-3-10 18:21
本帖最后由 魔法丶小肉包 于 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
作者: shengfeng 时间: 2024-3-10 19:57
情况4,2和3两个都要
add_command(name, :skill, true, [:skill_type,stype_id],[:size,8,"+"])这个行不通
作者: shengfeng 时间: 2024-3-10 22:36
本帖最后由 shengfeng 于 2024-3-11 13:42 编辑
找到问题了与其它脚本不兼容
作者: shengfeng 时间: 2024-4-8 00:01
一直没有发现这个恶性bug,但是在菜单中打开技能时发现不显示技能
作者: 魔法丶小肉包 时间: 2024-4-8 17:40
把之前的current_ext替换掉
def current_ext(type,index = 1)
if current_data
current_data[:ext].each do |i|
return i unless i.is_a?(Array)
if i.is_a?(Array) && i[0] == type
return i[index]
end
end
else
nil
end
end
def current_ext(type,index = 1)
if current_data
current_data[:ext].each do |i|
return i unless i.is_a?(Array)
if i.is_a?(Array) && i[0] == type
return i[index]
end
end
else
nil
end
end
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |