设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2392|回复: 4
打印 上一主题 下一主题

[已经解决] 求一个技能描述窗口脚本

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1422
在线时间
245 小时
注册时间
2019-1-18
帖子
190
跳转到指定楼层
1
发表于 2019-4-11 19:01:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
20星屑
就是当我光标在技能上的时候,按下特点建就能够弹出一个小框来描述一下技能效果,不要全窗口就是一个小框在技能名字的后面,换一个技能则新的技能描述。求各位大神们帮忙哈!!先谢谢了

最佳答案

查看完整内容

……别人的,物品说明技能说明打包一起

Lv3.寻梦者

梦石
0
星屑
2323
在线时间
274 小时
注册时间
2017-7-25
帖子
163
2
发表于 2019-4-11 19:01:35 | 只看该作者
  1. #==============================================================================
  2. # ■ 技能物品说明增强 蓝本:wyongcan
  3. # 修改 :VIPArcher [email: [email protected]]
  4. #
  5. # 改动说明:
  6. # 改用新的帮助窗口和新定义draw_text_vip方法来增强兼容性
  7. # 更改初始化数据时机以支持跳过标题
  8. # 追加对普通物品和技能的说明内容
  9. # 修改了对帮助窗口行数的计算以支持控制符
  10. # 加上了各种颜色的设置,具体更高级的玩法自己领悟吧
  11. # 改成光标不动一段时间后才会出现帮助窗口
  12. # 2015.01.25 : 无聊的的修改(重写)[划掉]可以无视[划掉]
  13. #  -- 本脚本来自 http://rm.66rpg.com 使用或转载请保留以上信息。
  14. #==============================================================================
  15. $VIPArcherScript ||= {};$VIPArcherScript[:help_ex] = __FILE__ #20141007
  16. $VIPArcherScript[:equip_limit] = false #是否使用了后知后觉的装备能力限制
  17. module VIPArcher end
  18. #-------------------------------------------------------------------------------
  19. class << DataManager
  20.   alias_method :vip_load_database, :load_database
  21.   #--------------------------------------------------------------------------
  22.   # ● 读取数据库
  23.   #--------------------------------------------------------------------------
  24.   def load_database
  25.     vip_load_database ; VIPArcher::Help_Ex.init_ready
  26.   end
  27. end
  28. #==============================================================================
  29. # ★ 设定项目 - BEGIN Setting ★
  30. #==============================================================================
  31. module VIPArcher::Help_Ex
  32.   #--------------------------------------------------------------------------
  33.   # ● 常量设置
  34.   #--------------------------------------------------------------------------
  35.   TIME = 30 #帮助窗口自动出现的时间(单位帧
  36.   Font_Name = Font.default_name # 推荐"微软雅黑"
  37.   Font_Size = 18                # "微软雅黑"的话就20号字体
  38.   UP   = 24 #能力值提升颜色编号
  39.   DOWN = 25 #能力值下降颜色编号
  40.   VIP  = 14 #特殊能力颜色编号
  41.   MP   = 23 #消耗MP的颜色编号
  42.   TP   = 29 #消耗TP的颜色编号
  43.   #--------------------------------------------------------------------------
  44.   # ● 用语设置
  45.   #--------------------------------------------------------------------------
  46.   CODE ={
  47.     11 => "属性抗性",
  48.     12 => "弱化抗性",
  49.     13 => "状态抗性",
  50.     14 => "状态免疫",
  51.     21 => "普通能力",
  52.     22 => "添加能力",
  53.     23 => "特殊能力",
  54.     31 => "附带属性",
  55.     32 => "附带状态",
  56.     33 => "攻击速度",
  57.     34 => "添加攻击次数",
  58.     41 => "添加技能类型",
  59.     42 => "禁用技能类型",
  60.     43 => "添加技能",
  61.     44 => "禁用技能",
  62.     51 => "可装备武器类型",
  63.     52 => "可装备护甲类型",
  64.     53 => "固定装备",
  65.     54 => "禁用装备",
  66.     55 => "装备风格",
  67.     61 => "添加行动次数",
  68.     62 => "特殊标志",
  69.     63 => "消失效果",
  70.     64 => "队伍能力"
  71.   }
  72.   #特殊标志
  73.   FLAG ={
  74.     0 => "自动战斗  ",
  75.     1 => "擅长防御  ",
  76.     2 => "保护弱者  ",
  77.     3 => "特技专注  "
  78.   }
  79.   #技能效果范围
  80.   SCOPE ={
  81.     0 => "无",
  82.     1 => "单个敌人  ",
  83.     2 => "全体敌人  ",
  84.     3 => "一个随机敌人  ",
  85.     4 => "两个随机敌人  ",
  86.     5 => "三个随机敌人  ",
  87.     6 => "四个随机敌人  ",
  88.     7 => "单个队友  ",
  89.     8 => "全体队友  ",
  90.     9 => "单个队友(战斗不能)  ",
  91.     10 => "全体队友(战斗不能)  ",
  92.     11 => "使用者  "
  93.   }
  94.   #技能命中类型
  95.   HIT ={
  96.     0 => "必定命中  ",
  97.     1 => "物理攻击  ",
  98.     2 => "魔法攻击  "
  99.   }
  100.   #使用限制
  101.   OCCASION ={
  102.     0 => "随时可用  ",
  103.     1 => "仅战斗中  ",
  104.     2 => "仅菜单中  ",
  105.     3 => "不能使用  "
  106.   }
  107.   #添加能力
  108.   XPARAM ={
  109.     0 => "物理命中几率:",
  110.     1 => "物理闪避几率:",
  111.     2 => "必杀几率:",
  112.     3 => "必杀闪避几率:",
  113.     4 => "魔法闪避几率:",
  114.     5 => "魔法反射几率:",
  115.     6 => "物理反击几率:",
  116.     7 => "体力值再生速度:",
  117.     8 => "魔力值再生速度:",
  118.     9 => "经验值获得加成:"
  119.   }
  120.   #特殊能力
  121.   SPARAM ={
  122.     0 => "受到攻击的几率",
  123.     1 => "防御效果比率",
  124.     2 => "恢复效果比率",
  125.     3 => "药理知识",
  126.     4 => "MP消费率",
  127.     5 => "TP消耗率",
  128.     6 => "物理伤害加成",
  129.     7 => "魔法伤害加成",
  130.     8 => "地形伤害加成",
  131.     9 => "经验获得加成"
  132.   }
  133.   #装备风格  require 装备风格扩展脚本 by:VIPArcher
  134.   SLOT_TYPE ={
  135.     0 => "普通",
  136.     1 => "双持武器",
  137.     2 => "索爷三刀流",
  138.     3 => "NPC",
  139.     4 => "233",
  140.     5 => "论坛@的BUG好烦啊"
  141.   }
  142.   #队伍能力
  143.   PARTY_ABILITY ={
  144.     0 => "遇敌几率减半",
  145.     1 => "随机遇敌无效",
  146.     2 => "敌人偷袭无效",
  147.     3 => "先制攻击几率上升",
  148.     4 => "获得金钱数量双倍",
  149.     5 => "物品掉落几率双倍"
  150.   }
  151.   #伤害类型
  152.   DAMAGE_TYPE = {
  153.     0 => "无",
  154.     1 => "体力值伤害  ",
  155.     2 => "魔力值伤害  ",
  156.     3 => "体力值恢复  ",
  157.     4 => "魔力值恢复  ",
  158.     5 => "体力值吸收  ",
  159.     6 => "魔力值吸收  "
  160.   }
  161.   #普通能力
  162.   #这只是个示范,你也可以依照个人喜好对这些用语添加颜色控制符
  163.   @params ={
  164.     0 => "\\c[17]最大HP",
  165.     1 => "\\c[16]最大MP",
  166.     2 => "\\c[20]物攻",
  167.     3 => "\\c[21]物防",
  168.     4 => "\\c[30]魔攻",
  169.     5 => "\\c[31]魔防",
  170.     6 => "\\c[14]敏捷",
  171.     7 => "\\c[17]幸运"
  172.   }
  173.   #我举例技能类型的原因就是因为它 短
  174.   @skill_types = { # 这个和下面equiphelpready里注释掉的做的是一样的事
  175.                    # 只是下面是读取数据库添加用语,这里是手动枚举
  176.     1 => "\\c[1]特技",
  177.     2 => "\\c[2]魔法",
  178.     3 => "\\c[3]必杀",
  179.     4 => "\\c[5]卖萌"
  180.   }
  181. end
  182. #==============================================================================
  183. # ☆ 设定完成 - END Setting ☆
  184. #==============================================================================
  185. module VIPArcher::Help_Ex
  186.   #--------------------------------------------------------------------------
  187.   # ● 读取数据库
  188.   #       初始化数据,当然如果你要用上面那样的控制符改变颜色的话
  189.   #       欢迎枚举,格式就是上面这样用Hash,用ID做键把用语对应起来
  190.   #--------------------------------------------------------------------------
  191.   def self.init_ready
  192.     init_variable
  193.     init_states
  194.     init_params
  195.     init_elements
  196.     init_weapon_types
  197.     init_armor_types
  198.     init_skill_types
  199.     init_etypes
  200.   end
  201.   #--------------------------------------------------------------------------
  202.   # ● 初始化用语的实例变量
  203.   #--------------------------------------------------------------------------
  204.   def self.init_variable
  205.     @states       ||= {}
  206.     @params       ||= {}
  207.     @weapon_types ||= {}
  208.     @armor_types  ||= {}
  209.     @etypes       ||= {}
  210.     @skill_types  ||= {}
  211.     @elements     ||= {}
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ● 读取状态名称
  215.   #--------------------------------------------------------------------------
  216.   def self.init_states
  217.     return unless @states.empty?
  218.     $data_states.each_with_index do |state,i|
  219.       @states[i] = state.name unless state.nil?
  220.     end
  221.   end
  222.   #--------------------------------------------------------------------------
  223.   # ● 读取能力用语
  224.   #--------------------------------------------------------------------------
  225.   def self.init_params
  226.     return unless @params.empty?
  227.     $data_system.terms.params.each_with_index do |param,i|
  228.       @params[i] = param
  229.     end
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ● 读取属性名称用语
  233.   #--------------------------------------------------------------------------
  234.   def self.init_elements
  235.     return unless @elements.empty?
  236.     $data_system.elements.each_with_index do |element,i|
  237.       @elements[i] = element unless element.nil?
  238.     end
  239.   end
  240.   #--------------------------------------------------------------------------
  241.   # ● 读取武器类型用语
  242.   #--------------------------------------------------------------------------
  243.   def self.init_weapon_types
  244.     return unless @weapon_types.empty?
  245.     $data_system.weapon_types.each_with_index do |type,i|
  246.       @weapon_types[i] = type unless type.nil?
  247.     end
  248.   end
  249.   #--------------------------------------------------------------------------
  250.   # ● 读取防具类型用语
  251.   #--------------------------------------------------------------------------
  252.   def self.init_armor_types
  253.     return unless @armor_types.empty?
  254.     $data_system.armor_types.each_with_index do |type,i|
  255.       @armor_types[i] = type unless type.nil?
  256.     end
  257.   end
  258.   #--------------------------------------------------------------------------
  259.   # ● 读取技能类型用语
  260.   #--------------------------------------------------------------------------
  261.   def self.init_skill_types
  262.     return unless @skill_types.empty?
  263.     $data_system.skill_types.each_with_index do |type,i|
  264.       @skill_types[i] = type unless type.nil?
  265.     end
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # ● 读取装备位置用语
  269.   #--------------------------------------------------------------------------
  270.   def self.init_etypes
  271.     return unless @etypes.empty?
  272.     $data_system.terms.etypes.each_with_index do |type,i|
  273.       @etypes[i] = type unless type.nil?
  274.     end
  275.   end
  276.   #--------------------------------------------------------------------------
  277.   # ● 获取指定code的特性信息
  278.   #--------------------------------------------------------------------------
  279.   def self.select_features(item,code)
  280.     item.features.select {|f| f.code == code}.each {|index| yield index }
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ● 获取指定code的使用效果信息
  284.   #--------------------------------------------------------------------------
  285.   def self.select_effects(item,code)
  286.     item.effects.select {|e| e.code == code}.each {|index| yield index }
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ● 获取物品帮助说明
  290.   #--------------------------------------------------------------------------
  291.   def self.get_item_help(item)
  292.     name(item) + description(item) + skill_cost(item) + occasion(item) +
  293.     price(item) + skill_speed(item) + success_rate(item) + item_type(item) +
  294.     damage_scope(item) + buff_params(item) + atk_states(item) +
  295.     special_flag(item) + (item.is_a?(RPG::Skill) ? required_wtype(item) : "")
  296.   end
  297.   #--------------------------------------------------------------------------
  298.   # ● 获取物品帮助说明
  299.   #--------------------------------------------------------------------------
  300.   def self.get_equip_help(equip)
  301.     name(equip) + description(equip) + price(equip) + etype_id(equip) +
  302.     exdrop(equip) + equip_limit(equip) + equip_param(equip) + equip_slot(equip) +
  303.     features_param(equip) + features_rate(equip) + state_attack(equip) +
  304.     equip_skill(equip) + flag_ability(equip)
  305.   end
  306.   #--------------------------------------------------------------------------
  307.   # ● 获取物品技能名字
  308.   #--------------------------------------------------------------------------
  309.   def self.name(item)
  310.     if $VIPArcherScript[:itemcolor] # require 物品描绘颜色脚本 by:VIPArcher
  311.       "\\c[16]名称:\\c[#{VIPArcher::ItemColor::Color_Lv[item.color]}]" +
  312.       "#{item.name}  #{(item.color.to_s + "★") if item.color != 0}\\c[0]\n"
  313.     else
  314.       "\\c[16]名称:\\c[0]#{item.name}\n"
  315.     end
  316.   end
  317.   #--------------------------------------------------------------------------
  318.   # ● 获取物品技能背景说明
  319.   #--------------------------------------------------------------------------
  320.   def self.description(item)
  321.     "\\c[16]介绍:\\c[0]#{item.description}\n"
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ● 获取技能物品使用场合
  325.   #--------------------------------------------------------------------------
  326.   def self.occasion(item)
  327.     return "" if item.occasion == 0
  328.     "\\c[16]可用场合:#{OCCASION[item.occasion]}\\c[0]\n"
  329.   end
  330.   #--------------------------------------------------------------------------
  331.   # ● 获取物品价格信息
  332.   #--------------------------------------------------------------------------
  333.   def self.price(item)
  334.     return "" if item.is_a?(RPG::Skill)
  335.     price = item.price == 0 ? "\\c[14]无法出售\\c[0]" : item.price.to_s
  336.     if $VIPArcherScript[:load]      # require 队伍负重脚本
  337.       "\\c[16]售价:#{price} 重量:#{item.load}\\c[0]\n"
  338.     else
  339.       "\\c[16]售价:#{price}\\c[0]\n"
  340.     end
  341.   end
  342.   #--------------------------------------------------------------------------
  343.   # ● 获取掉率扩展信息
  344.   #--------------------------------------------------------------------------
  345.   def self.exdrop(equip)
  346.     return "" if equip.is_a?(RPG::Item)
  347.     return "" unless $VIPArcherScript[:exdrop_rate]   # require 队伍掉率扩展
  348.     equip.note =~ /<(\W+)掉率:\s*([0-9+.-]+)%>/i ?
  349.     "\\c[#{$2.to_i > 0 ? UP : DOWN}]#{$1}掉率: #{$2}%\\c[0]\n" : ""
  350.   end
  351.   #--------------------------------------------------------------------------
  352.   # ● 获取装备能力限制数据 require 装备能力限制 by 后知后觉
  353.   #--------------------------------------------------------------------------
  354.   def self.equip_limit(equip)
  355.     help = ""
  356.     return help unless $VIPArcherScript[:equip_limit] #装备能力限制
  357.     help += "\\c[16]等级需求:#{equip.level_limit}\n" if equip.level_limit > 0
  358.     0..7.each do |i|
  359.       if equip.params_limit(i) != 0
  360.         help += "\\c[16]#{@params[i]}需求:#{equip.params_limit(i)}\\c[0]\n"
  361.       end
  362.     end ; help
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # ● 获取装备能力附加值
  366.   #--------------------------------------------------------------------------
  367.   def self.equip_param(equip)
  368.     help = ""
  369.     equip.params.each_with_index do |param,i|
  370.       value_color = "\\c[#{param > 0 ? UP : DOWN}]"
  371.       value_string = "#{"+"if param > 0}#{param.to_int.to_s}\\c[0]\n"
  372.       help += "#{@params[i]}: #{value_color}#{value_string}" if param != 0
  373.     end ; help
  374.   end
  375.   #--------------------------------------------------------------------------
  376.   # ● 获取装备风格信息
  377.   #--------------------------------------------------------------------------
  378.   def self.equip_slot(equip)
  379.     if $VIPArcherScript[:slot_type] # require 装备风格扩展 by VIPArcher
  380.       equip.note =~ /<slot_type\s*[:](.*)>/i ?
  381.       "\\c[#{VIP}]#{CODE[55]}:#{SLOT_TYPE[$1.to_i]}\\c[0]\n" : ""
  382.     else
  383.       equip.features.any? {|f|f.code == 55} ?
  384.       "\\c[#{VIP}]#{CODE[55]}:双持武器\\c[0]\n" : ""
  385.     end
  386.   end
  387.   #--------------------------------------------------------------------------
  388.   # ● 获取装备位置信息
  389.   #--------------------------------------------------------------------------
  390.   def self.etype_id(equip)
  391.     "\\c[16]装备位置:\\c[0]#{Vocab::etype(equip.etype_id)}\\c[0]\n"
  392.   end
  393.   #--------------------------------------------------------------------------
  394.   # ● 获取技能装备限制
  395.   #--------------------------------------------------------------------------
  396.   def self.required_wtype(skill)
  397.     w_1 = $data_system.weapon_types[skill.required_wtype_id1]
  398.     w_2 = $data_system.weapon_types[skill.required_wtype_id2]
  399.     (w_1 + w_2).empty? ? "" : "\\c[#{DOWN}]武器限制:#{w_1} #{w_2}\\c[0]\n"
  400.   end
  401.   #--------------------------------------------------------------------------
  402.   # ● 获取技能消耗信息
  403.   #--------------------------------------------------------------------------
  404.   def self.skill_cost(skill)
  405.     return "" if skill.is_a?(RPG::Item)
  406.     mp = skill.mp_cost > 0 ? "\\c[#{MP}]MP:#{skill.mp_cost}\\c[0]\n" : ""
  407.     tp = skill.tp_cost > 0 ? "\\c[#{TP}]TP:#{skill.tp_cost}\\c[0]\n" : ""
  408.     (mp + tp).empty? ? "" : "\\c[16]消耗:#{mp} #{tp}"
  409.   end
  410.   #--------------------------------------------------------------------------
  411.   # ● 获取技能物品速度修正
  412.   #--------------------------------------------------------------------------
  413.   def self.skill_speed(skill)
  414.     return "" if skill.speed == 0
  415.     "\\c[#{skill.speed < 0 ? DOWN : UP}]速度修正:#{skill.speed}\\c[0]\n"
  416.   end
  417.   #--------------------------------------------------------------------------
  418.   # ● 获取技能物品成功率
  419.   #--------------------------------------------------------------------------
  420.   def self.success_rate(skill)
  421.     return "" if skill.success_rate == 100
  422.     "\\c[#{DOWN}]成功率:#{skill.success_rate}%\\c[0]\n"
  423.   end
  424.   #--------------------------------------------------------------------------
  425.   # ● 获取技能伤害类型或者物品类型
  426.   #--------------------------------------------------------------------------
  427.   def self.item_type(item)
  428.     if item.is_a?(RPG::Skill)
  429.       "\\c[16]伤害类型:#{HIT[item.hit_type]}\\c[0]\n"
  430.     elsif item.is_a?(RPG::Item)
  431.       "\\c[16]物品类型:\\c[#{VIP}]#{"贵重物品  " if item.itype_id != 1}" +
  432.       "\\c[#{DOWN}]#{item.consumable ? "消耗品" : "非消耗品"}\\c[0]\n"
  433.     else ; ""
  434.     end
  435.   end
  436.   #--------------------------------------------------------------------------
  437.   # ● 获取技能物品效果范围
  438.   #--------------------------------------------------------------------------
  439.   def self.damage_scope(item)
  440.     scope = item.scope == 0 ? "" : "\\c[16]范围:#{SCOPE[item.scope]}\\c[0]\n"
  441.     type,id = DAMAGE_TYPE[item.damage.type],@elements[item.damage.element_id]
  442.     damage = item.damage.type == 0 ? "" : "\\c[16]效果:#{id}#{type}\\c[0]\n"
  443.     scope + damage
  444.   end
  445.   #--------------------------------------------------------------------------
  446.   # ● 获取技能物品强化弱化效果
  447.   #--------------------------------------------------------------------------
  448.   def self.buff_params(item)
  449.     help = ""
  450.     select_effects(item,31) do |e|
  451.       help += "\\c[#{UP}]强化:#{@params[e.data_id]} #{e.value1.to_i}回合\\c[0]\n"
  452.     end
  453.     select_effects(item,32) do |e|
  454.       help += "\\c[#{UP}]弱化:#{@params[e.data_id]} #{e.value1.to_i}回合\\c[0]\n"
  455.     end
  456.     select_effects(item,33) do |e|
  457.       help += "\\c[#{UP}]解除:强化#{@params[e.data_id]}\\c[0]\n"
  458.     end
  459.     select_effects(item,34) do |e|
  460.       help += "\\c[#{UP}]解除:弱化#{@params[e.data_id]}\\c[0]\n"
  461.     end ; help
  462.   end
  463.   #--------------------------------------------------------------------------
  464.   # ● 获取技能物品附加移除状态
  465.   #--------------------------------------------------------------------------
  466.   def self.atk_states(item)
  467.     help = ""
  468.     select_effects(item,21) do |e|
  469.       state = e.data_id == 0 ? "普通攻击" : @states[e.data_id]
  470.       help += ""#\\c[#{UP}]附加:#{state} #{(e.value1*100).to_i}%\\c[0]\n
  471.     end
  472.     select_effects(item,22) do |e|
  473.       help += ""#\\c[#{UP}]解除:#{@states[e.data_id]} #{(e.value1 * 100).to_i}%\\c[0]\n
  474.     end ; help
  475.   end
  476.   #--------------------------------------------------------------------------
  477.   # ● 获取技能物品特殊效果内容
  478.   #--------------------------------------------------------------------------
  479.   def self.special_flag(item)
  480.     help = ""
  481.     select_effects(item,41) {|e| help += "\\c[#{VIP}]特殊效果:撤退\\c[0]\n"}
  482.     select_effects(item,42) do |e|
  483.       help += "\\c[#{UP}]提升:#{@params[e.data_id]}#{e.value1.to_i}点\\c[0]\n"
  484.     end
  485.     select_effects(item,43) do |e|
  486.       help += "\\c[#{VIP}]学会:#{$data_skills[e.data_id].name}\\c[0]\n"
  487.     end ; help
  488.   end
  489.   #--------------------------------------------------------------------------
  490.   # ● 获取装备特性能力值
  491.   #--------------------------------------------------------------------------
  492.   def self.features_param(equip)
  493.     help = ""
  494.     equip.features.each do |f|
  495.       value = "#{f.value < 0 ? "﹣" : "﹢"}#{(f.value.abs*100).to_i}%\\c[0]"
  496.       params = case f.code
  497.       when 21 then @params[f.data_id]
  498.       when 22,23 then XPARAM[f.data_id]
  499.       else ; next ; end
  500.       help += "\\c[#{f.value < 0 ? DOWN : UP}]#{params}#{value}\n"
  501.     end ; help
  502.   end
  503.   #--------------------------------------------------------------------------
  504.   # ● 获取装备状态抗性
  505.   #--------------------------------------------------------------------------
  506.   def self.features_rate(equip)
  507.     help = ""
  508.     equip.features.each do |f|
  509.       name,value = "#{CODE[f.code]}:","#{(f.value*100).to_i}%\\c[0]"
  510.       params = case f.code
  511.       when 11 then @elements[f.data_id]
  512.       when 12 then @params[f.data_id]
  513.       when 13 then @states[f.data_id]
  514.       when 14
  515.         help += "\\c[#{VIP}]#{name}#{@states[f.data_id]}\\c[0]\n" ; next
  516.       else ; next ; end
  517.       help += "\\c[#{UP}]#{name}#{params}×#{value}\\c[0]\n"
  518.     end ; help
  519.   end
  520.   #--------------------------------------------------------------------------
  521.   # ● 获取装备附加状态攻击效果
  522.   #--------------------------------------------------------------------------
  523.   def self.state_attack(equip)
  524.     help = ""
  525.     equip.features.each do |f|
  526.       text = case f.code
  527.       when 31 then "#{@elements[f.data_id]}"
  528.       when 32 then "#{@states[f.data_id]}#{(f.value * 100).to_i}%"
  529.       when 34 then help += "\\c[#{UP}]#{CODE[f.code]}:#{f.value}\\c[0]\n" ; next
  530.       when 33 then color = f.value > 0 ? UP : DOWN
  531.         help += "\\c[#{color}]#{CODE[f.code]}:#{f.value}\\c[0]\n" ; next
  532.       else ; next ; end
  533.       help += "\\c[#{UP}]#{CODE[f.code]}:#{text}\\c[0]\n"
  534.     end ; help
  535.   end
  536.   #--------------------------------------------------------------------------
  537.   # ● 获取装备附加装备效果技能
  538.   #--------------------------------------------------------------------------
  539.   def self.equip_skill(equip)
  540.     help = ""
  541.     if $VIPArcherScript[:slot_type]       # require 装备风格扩展 by VIPArcher
  542.       equip.note.split(/[\r\n]+/).each do |line|
  543.         help += line =~ /<fix_equips\s*[:](\d+)>/i ?
  544.         "\\c[#{DOWN}]#{CODE[53]}:#{Vocab.etype($1.to_i)}\\c[0]\n" : ""
  545.         help += line =~ /<seal_equips\s*[:](\d+)>/i ?
  546.         "\\c[#{DOWN}]#{CODE[54]}:#{Vocab.etype($1.to_i)}\\c[0]\n" : ""
  547.       end
  548.     end
  549.     equip.features.each do |f|
  550.       text = case f.code
  551.       when 41,42 then "#{CODE[f.code]}:#{@skill_types[f.data_id]}"
  552.       when 43,44 then "#{CODE[f.code]}:#{$data_skills[f.data_id].name}"
  553.       when 51
  554.         help += "\\c[#{UP}]#{CODE[f.code]}:#{@weapon_types[f.data_id]}\\c[0]\n" ; next
  555.       when 52
  556.         help += "\\c[#{UP}]#{CODE[f.code]}:#{@armor_types[f.data_id]}\\c[0]\n" ; next
  557.       when 53,54
  558.         help += "\\c[#{DOWN}]#{CODE[f.code]}:#{@etypes[f.data_id]}\\c[0]\n" ; next
  559.       else ; next ; end
  560.       help += "\\c[#{f.code % 2 == 0 ? DOWN : UP}]#{text}\\c[0]\n"
  561.     end ; help
  562.   end
  563.   #--------------------------------------------------------------------------
  564.   # ● 获取装备标志和队伍能力
  565.   #--------------------------------------------------------------------------
  566.   def self.flag_ability(equip)
  567.     help = ""
  568.     equip.features.each do |f|
  569.       flag_party = case f.code
  570.       when 61
  571.         help += "\\c[#{VIP}]#{CODE[f.code]}:#{(f.value * 100).to_i}%\\c[0]\n" ; next
  572.       when 62 then FLAG[f.data_id]
  573.       when 64 then PARTY_ABILITY[f.data_id]
  574.       else ; next ; end
  575.       help += "\\c[#{VIP}]#{CODE[f.code]}:#{flag_party}\\c[0]\n"
  576.     end ; help
  577.   end
  578.   #--------------------------------------------------------------------------
  579.   # ● 计算行数  有些字体的汉字和[字母,数字,符号]的宽度不同,
  580.   #             有可能会照成行数计算不对,尽量用宽度相同的字体吧
  581.   #--------------------------------------------------------------------------
  582.   def self.get_line(text,max_size)
  583.     xtext,line,text_new = [],0,""
  584.     text.each_line{|x| text_new += x.gsub(/\\\S\[\d+\]/i){}} #去掉控制符
  585.     text_new.each_line{|x| xtext.push x.gsub(/\n/){}} #去掉换行符
  586.     xtext.each{|x| line += (x.size / (max_size.to_f + 1).to_i) + 1}
  587.     line
  588.   end
  589. end
  590. #==============================================================================
  591. # ■ Window_Help_Ex
  592. #------------------------------------------------------------------------------
  593. #  加强显示特技和物品等的说明
  594. #==============================================================================
  595. class Window_Help_Ex < Window_Help
  596.   include VIPArcher
  597.   #--------------------------------------------------------------------------
  598.   # ● 初始化对象
  599.   #--------------------------------------------------------------------------
  600.   def initialize(viewport)
  601.     super(0) ; self.viewport ,self.width ,self.height = viewport ,210 ,0
  602.     contents.font.size ,self.z ,@time = 14 ,150 ,0
  603.   end
  604.   #--------------------------------------------------------------------------
  605.   # ● ***********计算窗口显示指定行数时的应用高度(适应字体大小)***********
  606.   #--------------------------------------------------------------------------
  607.   def fitting_height_vip(line_number)
  608.     line_number * contents.font.size + standard_padding * 2
  609.   end
  610.   #--------------------------------------------------------------------------
  611.   # ● 绘制带有控制符的文本内容
  612.   #   如果传递了width参数的话,会自动换行
  613.   #   draw_text_ex的增强,使其可以自动换行  原作者:叶子 修改:wyongcan
  614.   #--------------------------------------------------------------------------
  615.   def draw_text_ex(x, y, text, width = nil,text_width = nil,normalfont = true)
  616.     reset_font_settings if normalfont == true
  617.     text = convert_escape_characters(text)
  618.     pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
  619.     unless width.nil?
  620.       pos[:height],pos[:width],pos[:text_width] = contents.font.size,width,text_width
  621.     end
  622.     process_character(text.slice!(0, 1), text, pos) until text.empty?
  623.   end
  624.   #--------------------------------------------------------------------------
  625.   # ● 文字的处理
  626.   #     c    : 文字
  627.   #     text : 绘制处理中的字符串缓存(字符串可能会被修改)
  628.   #     pos  : 绘制位置 {:x, :y, :new_x, :height}
  629.   #--------------------------------------------------------------------------
  630.   def process_character(c, text, pos)
  631.     super(c, text, pos)
  632.     text_width = pos[:text_width].nil? ? text_size(c).width : pos[:text_width]
  633.     process_new_line(text, pos) if pos[:width] != nil &&
  634.     pos[:x] - pos[:new_x] + text_width > pos[:width]
  635.   end
  636.   #--------------------------------------------------------------------------
  637.   # ● 处理换行文字
  638.   #--------------------------------------------------------------------------
  639.   def process_new_line(text, pos)
  640.     super(text, pos)
  641.     pos[:height] = contents.font.size unless pos[:width].nil?
  642.   end
  643.   #--------------------------------------------------------------------------
  644.   # ● 设置内容
  645.   #--------------------------------------------------------------------------
  646.   def set_text(text)
  647.     @text = text if text != @text
  648.   end
  649.   #--------------------------------------------------------------------------
  650.   # ● 更新帮助位置
  651.   #--------------------------------------------------------------------------
  652.   def uppos(index,rect,window)
  653.     self.height = fitting_height_vip(Help_Ex.get_line(@text,13))
  654.     create_contents
  655.     contents.font.name,contents.font.size = Help_Ex::Font_Name,Help_Ex::Font_Size
  656.     rect.x -= window.ox ; rect.y -= window.oy
  657.     ax = rect.x + rect.width + 10
  658.     ax = rect.x - self.width + 10 if ax + self.width > window.width + 10
  659.     ax = 0 if ax < 0 ; ay = rect.y + rect.height
  660.     ay = rect.y - self.height if ay + self.height > window.height
  661.     ax += window.x ; ay += window.y
  662.     ay = 0 if ay < 0 ; self.show
  663.     self.x , self.y , self.openness, @time = ax , ay , 0 , Help_Ex::TIME
  664.     refresh
  665.   end
  666.   #--------------------------------------------------------------------------
  667.   # ● 设置物品
  668.   #     item : 技能、物品等
  669.   #--------------------------------------------------------------------------
  670.   def set_item(item)
  671.     return self.hide unless item ; text = ""
  672.     text += if item.is_a?(RPG::EquipItem) then Help_Ex.get_equip_help(item)
  673.     else ; Help_Ex.get_item_help(item) ; end
  674.     text = text[0,text.size - 2] if text[text.size - 2,2] == "\n"
  675.     set_text(text)
  676.   end
  677.   #--------------------------------------------------------------------------
  678.   # ● 刷新
  679.   #--------------------------------------------------------------------------
  680.   def refresh
  681.     contents.clear
  682.     self.hide if @text == ""
  683.     draw_text_ex(4, 0, @text,width,40,false)
  684.   end
  685.   #--------------------------------------------------------------------------
  686.   # ● 更新画面
  687.   #--------------------------------------------------------------------------
  688.   def update
  689.     super ; @time -= 1 if @time > 0 ; self.open if @time == 0
  690.   end
  691. end
  692. #==============================================================================
  693. # ■ 设置帮助增强窗口
  694. #==============================================================================
  695. class Window_Selectable < Window_Base


  696.   attr_reader   :help_ex_window
  697.   

  698.   #--------------------------------------------------------------------------
  699.   # ● 调用帮助窗口的更新方法
  700.   #--------------------------------------------------------------------------
  701.   alias help_ex_call_update_help call_update_help
  702.   def call_update_help
  703.     help_ex_call_update_help ; update_ex_help if active && @help_ex_window
  704.   end
  705.   #--------------------------------------------------------------------------
  706.   # ● 更新帮助内容
  707.   #--------------------------------------------------------------------------
  708.   def update_ex_help
  709.     @help_ex_window.set_item(item) if @help_ex_window
  710.     @help_ex_window.uppos(index,item_rect(index),self) if index != -1 && item
  711.   end
  712.   #--------------------------------------------------------------------------
  713.   # ● 设置帮助增强窗口
  714.   #--------------------------------------------------------------------------
  715.   def help_ex_window=(help_ex_window)
  716.     @help_ex_window = help_ex_window
  717.   end
  718. end
  719. #==============================================================================
  720. # ■ 在各场景处理帮助窗口
  721. #==============================================================================
  722. class Scene_Base
  723.   #--------------------------------------------------------------------------
  724.   # ● 生成帮助增强窗口
  725.   #--------------------------------------------------------------------------
  726.   def create_help_ex
  727.     @help_ex_window  = Window_Help_Ex.new(@viewport)
  728.     @item_window.help_ex_window  = @help_ex_window if @item_window
  729.     @slot_window.help_ex_window  = @help_ex_window if @slot_window
  730.     @skill_window.help_ex_window = @help_ex_window if @skill_window
  731.     @buy_window.help_ex_window   = @help_ex_window if @buy_window
  732.     @sell_window.help_ex_window  = @help_ex_window if @sell_window
  733.   end
  734. end
  735. #道具栏
  736. class Scene_Item < Scene_ItemBase
  737.   #--------------------------------------------------------------------------
  738.   # ● 开始处理
  739.   #--------------------------------------------------------------------------
  740.   alias help_ex_start start
  741.   def start
  742.     help_ex_start ; create_help_ex
  743.   end
  744.   #--------------------------------------------------------------------------
  745.   # ● 物品“取消”
  746.   #--------------------------------------------------------------------------
  747.   alias help_ex_on_item_cancel on_item_cancel
  748.   def on_item_cancel
  749.     help_ex_on_item_cancel ; @help_ex_window.hide
  750.   end
  751. end
  752. #装备栏
  753. class Scene_Equip < Scene_MenuBase
  754.   #--------------------------------------------------------------------------
  755.   # ● 开始处理
  756.   #--------------------------------------------------------------------------
  757.   alias help_ex_start start
  758.   def start
  759.     help_ex_start ; create_help_ex
  760.   end
  761.   #--------------------------------------------------------------------------
  762.   # ● 装备栏“取消”
  763.   #--------------------------------------------------------------------------
  764.   alias help_ex_on_slot_cancel on_slot_cancel
  765.   def on_slot_cancel
  766.     help_ex_on_slot_cancel ; @help_ex_window.hide
  767.   end
  768. end
  769. #技能栏
  770. class Scene_Skill < Scene_ItemBase
  771.   #--------------------------------------------------------------------------
  772.   # ● 开始处理
  773.   #--------------------------------------------------------------------------
  774.   alias help_ex_start start
  775.   def start
  776.     help_ex_start ; create_help_ex
  777.   end
  778.   #--------------------------------------------------------------------------
  779.   # ● 物品“确定”
  780.   #--------------------------------------------------------------------------
  781.   alias help_ex_on_item_ok on_item_ok
  782.   def on_item_ok
  783.     help_ex_on_item_ok ; @help_ex_window.hide
  784.   end
  785.   #--------------------------------------------------------------------------
  786.   # ● 物品“取消”
  787.   #--------------------------------------------------------------------------
  788.   alias help_ex_on_item_cancel on_item_cancel
  789.   def on_item_cancel
  790.     help_ex_on_item_cancel ; @help_ex_window.hide
  791.   end
  792. end
  793. #战斗界面
  794. class Scene_Battle < Scene_Base
  795.   #--------------------------------------------------------------------------
  796.   # ● 开始处理
  797.   #--------------------------------------------------------------------------
  798.   alias help_ex_start start
  799.   def start
  800.     help_ex_start ; create_help_ex
  801.   end
  802.   #--------------------------------------------------------------------------
  803.   # ● 技能“确定”
  804.   #--------------------------------------------------------------------------
  805.   alias help_ex_on_skill_ok on_skill_ok
  806.   def on_skill_ok
  807.     help_ex_on_skill_ok ; @help_ex_window.hide
  808.   end
  809.   #--------------------------------------------------------------------------
  810.   # ● 技能“取消”
  811.   #--------------------------------------------------------------------------
  812.   alias help_ex_on_skill_cancel on_skill_cancel
  813.   def on_skill_cancel
  814.     help_ex_on_skill_cancel ; @help_ex_window.hide
  815.   end
  816.   #--------------------------------------------------------------------------
  817.   # ● 物品“确定”
  818.   #--------------------------------------------------------------------------
  819.   alias help_ex_on_item_ok on_item_ok
  820.   def on_item_ok
  821.     help_ex_on_item_ok ; @help_ex_window.hide
  822.   end
  823.   #--------------------------------------------------------------------------
  824.   # ● 物品“取消”
  825.   #--------------------------------------------------------------------------
  826.   alias help_ex_on_item_cancel on_item_cancel
  827.   def on_item_cancel
  828.     help_ex_on_item_cancel ; @help_ex_window.hide
  829.   end
  830. end
  831. #商店界面
  832. class Scene_Shop < Scene_MenuBase
  833.   #--------------------------------------------------------------------------
  834.   # ● 开始处理
  835.   #--------------------------------------------------------------------------
  836.   alias help_ex_start start
  837.   def start
  838.     help_ex_start ; create_help_ex
  839.   end
  840.   #--------------------------------------------------------------------------
  841.   # ● 买入“确定”
  842.   #--------------------------------------------------------------------------
  843.   alias help_ex_on_buy_ok on_buy_ok
  844.   def on_buy_ok
  845.     help_ex_on_buy_ok ; @help_ex_window.hide
  846.   end
  847.   #--------------------------------------------------------------------------
  848.   # ● 买入“取消”
  849.   #--------------------------------------------------------------------------
  850.   alias help_ex_on_buy_cancel on_buy_cancel
  851.   def on_buy_cancel
  852.     help_ex_on_buy_cancel ; @help_ex_window.hide
  853.   end
  854.   #--------------------------------------------------------------------------
  855.   # ● 卖出“确定”
  856.   #--------------------------------------------------------------------------
  857.   alias help_ex_on_sell_ok on_sell_ok
  858.   def on_sell_ok
  859.     help_ex_on_sell_ok ; @help_ex_window.hide
  860.   end
  861.   #--------------------------------------------------------------------------
  862.   # ● 卖出“取消”
  863.   #--------------------------------------------------------------------------
  864.   alias help_ex_on_sell_cancel on_sell_cancel
  865.   def on_sell_cancel
  866.     help_ex_on_sell_cancel ; @help_ex_window.hide
  867.   end
  868. end
  869. #==============================================================================
  870. # ★ 脚本顺序检查 ★
  871. #==============================================================================
  872. msgbox "物品描绘颜色脚本需置于物品帮助增强脚本之下" if $VIPArcherScript[:itemcolor] &&
  873.   $VIPArcherScript[:help_ex] > $VIPArcherScript[:itemcolor]
  874. msgbox "队伍掉率扩展脚本需置于物品帮助增强脚本之下" if $VIPArcherScript[:exdrop_rate] &&
  875.   $VIPArcherScript[:help_ex] > $VIPArcherScript[:exdrop_rate]
  876. msgbox "装备风格扩展脚本需置于物品帮助增强脚本之下" if $VIPArcherScript[:slot_type] &&
  877.   $VIPArcherScript[:help_ex] > $VIPArcherScript[:slot_type]
  878. msgbox "队伍负重脚本需置于物品帮助增强脚本之下" if $VIPArcherScript[:load] &&
  879.   $VIPArcherScript[:help_ex] > $VIPArcherScript[:load]
复制代码

……别人的,物品说明技能说明打包一起

点评

是指第一次触发的时候会被其他窗口遮挡吗……那个在用鼠标脚本的情况几乎不影响体感我直接忽略了,其他方面暂时没发现什么问题  发表于 2019-4-26 19:51
阿茶的这个脚本我记得有个显示上的小bug不知道你们使用的时候微调过没有  发表于 2019-4-25 21:48
回复

使用道具 举报

Lv2.观梦者

永无止境的旅程

梦石
0
星屑
503
在线时间
1552 小时
注册时间
2012-6-19
帖子
1226

开拓者贵宾

3
发表于 2019-4-13 01:05:19 | 只看该作者
可以先把你想要描述的样子发上来
[url=https://rpg.blue/thread-389697-1-1.html]https://rpg.blue/https://rpg.blue/data/attachment/forum/201602/26/220128cfbxxs47xth4xkz4.jpg[/url]
&lt;font size=&quot;5&quot;&gt;[color=Green][url=https://rpg.blue/forum.php?mod=viewthread&amp;tid=396208&amp;extra=page%3D1][color=DeepSkyBlue]全新配套ACT系统,每周末一大更新,尽请期待。[/color][/url][/color]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-27 01:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表