Project1

标题: 怎么能让在光标内战斗指令中的某指令文字被放大? [打印本页]

作者: shengfeng    时间: 2024-3-6 22:12
标题: 怎么能让在光标内战斗指令中的某指令文字被放大?
比如:光标在攻击指令上的攻击文字就被放大,光标到了其它指令上攻击文字就恢复原样,其它指令也同攻击一样
作者: 魔法丶小肉包    时间: 2024-3-7 19:00
本帖最后由 魔法丶小肉包 于 2024-3-9 19:47 编辑

使用方法,放在main的上方
指令设定的时候分为两种情况
1.如果该指令不需要放大,那么
RUBY 代码复制
  1. add_command("不会放大的指令", :abc)

2.如果该指令需要放大,那么
RUBY 代码复制
  1. add_command("会放大的指令", :abc,true,[8,"+"])

情况2中,[8,"+"]其中8代表字体变动大小,"+"代表加法运算,比如默认字体大小24,那么[8,"+"]放大后为32
同样的,如果你想缩小,那么就是[尺寸,"-"]
按照比例变大就是[尺寸,"*"]
3.如果你不是默认系统,并且有脚本已经修改过了相关描绘函数,那么有几率会无效果,遇到这种情况的话请自行处理

RUBY 代码复制
  1. class Window_Command
  2.   alias dri draw_item
  3.   def draw_item(index)
  4.     if @list[index][:ext] && @list[index][:ext].is_a?(Array) && @index == index
  5.       contents.font.size = contents.font.size.send(@list[index][:ext][1],@list[index][:ext][0])
  6.     else
  7.       reset_font_settings
  8.     end
  9.     dri(index)
  10.   end
  11.   alias pcm process_cursor_move
  12.   def process_cursor_move
  13.     last_index = @index
  14.     pcm
  15.     re_draw_all_items if @index != last_index
  16.   end
  17.   def re_draw_all_items
  18.     item_max.times {|i| redraw_item(i) }
  19.   end
  20. end

作者: shengfeng    时间: 2024-3-8 14:19
魔法丶小肉包 发表于 2024-3-7 19:00
使用方法,放在main的上方
指令设定的时候分为两种情况
1.如果该指令不需要放大,那么

这个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 编辑
shengfeng 发表于 2024-3-10 13:54
用在技能上行不通,add_command(name, :skill, true, stype_id),四个一个也少不了,[8,"+"]没地方放了 ...


情况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

RUBY 代码复制
  1. class Window_Command
  2.   alias dri draw_item
  3.   def draw_item(index)
  4.     reset_font_settings
  5.     @list[index][:ext].each do |i|
  6.       next unless @index == index
  7.       if i.is_a?(Array) && i[0] == :size
  8.         contents.font.size = contents.font.size.send(i[2],i[1])
  9.       end
  10.     end
  11.     dri(index)
  12.   end
  13.   alias pcm process_cursor_move
  14.   def process_cursor_move
  15.     last_index = @index
  16.     pcm
  17.     re_draw_all_items if @index != last_index
  18.   end
  19.   def re_draw_all_items
  20.     item_max.times {|i| redraw_item(i) }
  21.   end
  22.   def add_command(*args)
  23.     name,symbol,enabled,*ext = *args
  24.     enabled ||= true unless enabled == false
  25.     @list.push({:name=>name, :symbol=>symbol, :enabled=>enabled, :ext=>ext})
  26.   end
  27.   def current_ext(type,index = 1)
  28.     if current_data
  29.       current_data[:ext].each do |i|
  30.         if i.is_a?(Array) && i[0] == type
  31.           return i[index]
  32.         end
  33.       end
  34.     else
  35.       nil
  36.     end
  37.   end
  38. end
  39. class Scene_Battle
  40.   def command_skill
  41.     @skill_window.actor = BattleManager.actor
  42.     @skill_window.stype_id = @actor_command_window.current_ext(:skill_type)
  43.     @skill_window.refresh
  44.     @skill_window.show.activate
  45.   end
  46. end
  47. class Window_SkillCommand
  48.   def update
  49.     super
  50.     @skill_window.stype_id = current_ext(:skill_type) if @skill_window
  51.   end
  52. 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
shengfeng 发表于 2024-4-8 00:01
一直没有发现这个恶性bug,但是在菜单中打开技能时发现不显示技能

把之前的current_ext替换掉
RUBY 代码复制
  1. def current_ext(type,index = 1)
  2.     if current_data
  3.       current_data[:ext].each do |i|
  4.         return i unless i.is_a?(Array)
  5.         if i.is_a?(Array) && i[0] == type
  6.           return i[index]
  7.         end
  8.       end
  9.     else
  10.       nil
  11.     end
  12.   end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1