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

Project1

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

[VIPArcher] 【装备帮助增强】——增强了兼容性版

[复制链接]

无限の剣制

梦石
0
星屑
9941
在线时间
5019 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

跳转到指定楼层
1
发表于 2014-10-7 23:53:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 VIPArcher 于 2014-11-19 22:39 编辑

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

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 好评~

查看全部评分

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

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

GMT+8, 2024-4-20 13:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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