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

Project1

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

[已经解决] 用了随机脚本 盾的位置变成了衣服了..那帮忙改下..

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2012-4-5
帖子
117
跳转到指定楼层
1
发表于 2012-5-4 20:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 344143370 于 2012-5-5 08:41 编辑

用了随机脚本 盾的位置变成了衣服了.怎么装备都是衣服.谁帮忙改下..
  1.   #==============================================================================
  2. # 复杂装备系统之随机属性 by 沉影不器
  3. #------------------------------------------------------------------------------
  4. # 说明: 让装备类似暗黑那样附加随机属性,目前有17种属性元素可供组合,允许按
  5. #       能力百分比加成.
  6. #
  7. #       附加属性的名称允许多个(按能力从小大到排列),用英文逗号隔开,自动按
  8. #       附加能力大小选择词缀
  9. #
  10. #       极品爆率不影响物品掉落机率,而是指掉落的物品带附加属性的机率
  11. #
  12. # 获得随机属性装备的方法:
  13. #       事件脚本中输入 get_weapon(母版武器id, 数量, 附加属性1, 附加属性2...)
  14. #       或者直接指定附加属性数 get_weapon(母版武器id, 数量, 附加属性数)
  15. #       将随机生成指定附加属性数的装备
  16. #       获得防具方法是 get_armor() 参数含义同上
  17. #
  18. # 获得普通装备的方法:
  19. #       事件脚本中输入 get_weapon(母版武器id, 数量)
  20. #       获得防具方法是 get_armor() 参数含义同上
  21. #==============================================================================
  22. # 参数设定
  23. #==============================================================================
  24. module Game_Equip
  25.   ## 最大附加属性数
  26.   GiftMax = 6
  27.   ## 附加属性影响价格基数
  28.   GiftPrice = 10
  29.   ## 极品爆率最低值和最高值(0到100)
  30.   Equip_Chance = [94, 95]  
  31.   
  32.   ## 附加属性各参数:
  33.   ##     name    添加到装备前的修饰词
  34.   ##     max     该属性最大值
  35.   ##     weight  权重(最大值的权重,用于计算价值,用于计算颜色也行)
  36.   ##     percent 是否按百分比计算
  37.   Gift = Struct.new(:name, :max, :weight, :percent)
  38.   Gifts = [
  39.      # 攻击
  40.      Gift.new("锐利,伤害,霸道", 50, 25, false),
  41.      Gift.new("残忍,残酷,凶残", 50, 40, true),
  42.      # 防御
  43.      Gift.new("厚重,守卫,守护", 50, 10, false),
  44.      Gift.new("结实,防卫,防护", 50, 20, true),
  45.      # 精神
  46.      Gift.new("光荣", 50, 15, false),
  47.      Gift.new("祝福", 50, 25, true),
  48.      # 敏捷
  49.      Gift.new("敏捷", 50, 20, false),
  50.      Gift.new("灵巧", 50, 30, true),
  51.      # hp
  52.      Gift.new("落英", 80, 20, false),
  53.      Gift.new("武士", 15, 20, true),
  54.      # mp
  55.      Gift.new("神灵", 80, 15, false),
  56.      Gift.new("圣者", 15, 15, true),
  57.      # 命中
  58.      Gift.new("精确", 10, 10,false),
  59.      # 闪避
  60.      Gift.new("幻影", 10, 10, false),
  61.      # 暴击
  62.      Gift.new("暴击", 10, 10, false),
  63.      # 经验
  64.      Gift.new("贪婪", 20, 10, true),
  65.      # 极品爆率  ###(待定)
  66.      Gift.new("幸运", 50, 10, false)
  67.   ]
  68. end


  69. #==============================================================================
  70. # ■ Game_Equip 自定义装备模块
  71. #==============================================================================
  72. module Game_Equip
  73.   #--------------------------------------------------------------------------
  74.   # ● 物品(装备)重生
  75.   #    item:  物品
  76.   #    *gift: 附加属性(留空表示无属性,数字表示指定数量随机属性)
  77.   #--------------------------------------------------------------------------
  78.   def self.reini(item, *gift)
  79.     return if item.nil?
  80.     result = item.clone
  81.     gifts = *gift
  82.     gifts.flatten! if gifts.is_a? Array
  83.     ## 附加属性为空或指定为(0)时,直接返回母版
  84.     return self.result(result) if gifts.nil? or gifts == 0
  85.     ## 指定附加属性数量时
  86.     if gifts.is_a? Integer
  87.       ## 控制数量
  88.       num = [gifts, GiftMax].min
  89.       gifts = []
  90.       ## 随机生成指定数量的附加属性
  91.       rd = different_rand(Gifts.size-1, num)
  92.       rd.each{|n| gifts.push Game_Gift.new(n)}
  93.     end
  94.     gifts = [gifts].flatten
  95.     return self.result(result) if gifts.empty?
  96.     ## 处理数据
  97.     result.gifts = gifts
  98.     name = ""
  99.     price = 0
  100.     for gift in gifts
  101.       name  += gift.name
  102.       price += gift.weight * GiftPrice
  103.     end
  104.     ## 设定名称
  105.     result.name =  name + '的' + result.name
  106.     ## 设定价格
  107.     result.price += price.round
  108.     ## 设定颜色
  109.     result.text_color = gifts.size
  110.     return self.result(result)
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ● 返回结果
  114.   #    item: 物品
  115.   #--------------------------------------------------------------------------
  116.   def self.result(item)
  117.     case item
  118.     when RPG::Item
  119.       
  120.     when RPG::Weapon
  121.       item.base_id = item.id
  122.       item.id = $data_weapons.size
  123.       $data_weapons << item
  124.     when RPG::Armor
  125.       item.base_id = item.id
  126.       item.id = $data_armors.size
  127.       $data_armors << item
  128.     end
  129.     return item
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 物品(装备)重生
  133.   #    item_id: 物品id
  134.   #    type:    类型
  135.   #    *gift:   附加属性(留空表示无属性,数字表示指定数量随机属性)
  136.   #--------------------------------------------------------------------------
  137.   def self.reini_id(item_id, type, *gift)
  138.     ## 排除装备id为零的情况
  139.     return 0 if item_id == 0
  140.     case type
  141.     when 0
  142.       item = $base_weapons[item_id]
  143.     when 1
  144.       item = $base_armors[item_id]
  145.     end
  146.     return self.reini(item, *gift).id
  147.   end
  148. end

  149. #==============================================================================
  150. # ■ Game_Gift 装备附加能力
  151. #==============================================================================
  152. class Game_Gift
  153.   include Game_Equip
  154.   #--------------------------------------------------------------------------
  155.   # ● 读取口
  156.   #--------------------------------------------------------------------------
  157.   attr_reader   :type
  158.   attr_reader   :value
  159.   attr_reader   :name
  160.   #--------------------------------------------------------------------------
  161.   # ● 初始化
  162.   #--------------------------------------------------------------------------
  163.   def initialize(type = nil, value = nil)
  164.     get_type(type)
  165.     get_value(value)
  166.     get_name
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● 获取属性
  170.   #--------------------------------------------------------------------------
  171.   def get_type(type)
  172.     unless type.nil? or type > Gifts.size or type < 0
  173.       @type = type
  174.     else
  175.       @type = rand(Gifts.size - 1)
  176.     end
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● 获取品质值
  180.   #--------------------------------------------------------------------------
  181.   def get_value(value)
  182.     unless value.nil? or value.abs > max
  183.       @value = value
  184.     else
  185.       @value = linear_rand(max) + 1
  186.     end
  187.   end
  188.   #--------------------------------------------------------------------------
  189.   # ● 获取名称
  190.   #--------------------------------------------------------------------------
  191.   def get_name
  192.     names = Gifts[@type].name.split(/,/)
  193.     n = (@value.abs-1)/(max.to_f/names.size)
  194.     @name = names[n.truncate]
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● 获取最大值
  198.   #--------------------------------------------------------------------------
  199.   def max
  200.     return Gifts[@type].max
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # ● 获取权重
  204.   #--------------------------------------------------------------------------
  205.   def weight
  206.     return @value > 0 ? @value / max.to_f * Gifts[@type].weight : 0
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 获取是否百分比
  210.   #--------------------------------------------------------------------------
  211.   def percent
  212.     return Gifts[@type].percent
  213.   end
  214.   
  215.   #--------------------------------------------------------------------------
  216.   # ● 攻击力
  217.   #--------------------------------------------------------------------------
  218.   def atk(actor_id)
  219.     # 无角色信息时返回
  220.     return 0 unless actor_id
  221.     # 数据类型不符时返回
  222.     return 0 if @type != 0 and @type != 1
  223.     if percent
  224.       return $game_actors[actor_id].self_atk * @value / 100
  225.     else
  226.       return @value
  227.     end
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● 防御力
  231.   #--------------------------------------------------------------------------
  232.   def def(actor_id)
  233.     # 无角色信息时返回
  234.     return 0 unless actor_id
  235.     # 数据类型不符时返回
  236.     return 0 if @type != 2 and @type != 3
  237.     if percent
  238.       return $game_actors[actor_id].self_def * @value / 100
  239.     else
  240.       return @value
  241.     end
  242.   end
  243.   #--------------------------------------------------------------------------
  244.   # ● 精神
  245.   #--------------------------------------------------------------------------
  246.   def spi(actor_id)
  247.     # 无角色信息时返回
  248.     return 0 unless actor_id
  249.     # 数据类型不符时返回
  250.     return 0 if @type != 4 and @type != 5
  251.     if percent
  252.       return $game_actors[actor_id].self_spi * @value / 100
  253.     else
  254.       return @value
  255.     end
  256.   end
  257.   #--------------------------------------------------------------------------
  258.   # ● 敏捷
  259.   #--------------------------------------------------------------------------
  260.   def agi(actor_id)
  261.     # 无角色信息时返回
  262.     return 0 unless actor_id
  263.     # 数据类型不符时返回
  264.     return 0 if @type != 6 and @type != 7
  265.     if percent
  266.       return $game_actors[actor_id].self_agi * @value / 100
  267.     else
  268.       return @value
  269.     end
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ● maxhp
  273.   #--------------------------------------------------------------------------
  274.   def maxhp(actor_id)
  275.     # 无角色信息时返回
  276.     return 0 unless actor_id
  277.     # 数据类型不符时返回
  278.     return 0 if @type != 8 and @type != 9
  279.     if percent
  280.       return $game_actors[actor_id].self_maxhp * @value / 100
  281.     else
  282.       return @value
  283.     end
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ● maxmp
  287.   #--------------------------------------------------------------------------
  288.   def maxmp(actor_id)
  289.     # 无角色信息时返回
  290.     return 0 unless actor_id
  291.     # 数据类型不符时返回
  292.     return 0 if @type != 10 and @type != 11
  293.     if percent
  294.       return $game_actors[actor_id].self_maxmp * @value / 100
  295.     else
  296.       return @value
  297.     end
  298.   end
  299.   #--------------------------------------------------------------------------
  300.   # ● 命中
  301.   #--------------------------------------------------------------------------
  302.   def hit
  303.     # 数据类型不符时返回
  304.     return 0 if @type != 12
  305.     return @value
  306.   end
  307.   #--------------------------------------------------------------------------
  308.   # ● 闪避
  309.   #--------------------------------------------------------------------------
  310.   def eva
  311.     # 数据类型不符时返回
  312.     return 0 if @type != 13
  313.     return @value
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   # ● 暴击
  317.   #--------------------------------------------------------------------------
  318.   def cri
  319.     # 数据类型不符时返回
  320.     return 0 if @type != 14
  321.     return @value
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ● 经验(百分比)
  325.   #--------------------------------------------------------------------------
  326.   def exp
  327.     # 数据类型不符时返回
  328.     return 0 if @type != 15
  329.     return @value
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ● 高级装备暴率(百分比)
  333.   #--------------------------------------------------------------------------
  334.   def equip_chance
  335.     # 数据类型不符时返回
  336.     return 0 if @type != 16
  337.     return @value
  338.   end
  339. end
  340. #==============================================================================
  341. # ■ RPG::BaseItem
  342. #==============================================================================
  343. module RPG
  344.   class BaseItem
  345.     ## 颜色
  346.     attr_accessor :text_color
  347.   end
  348. end
  349. #==============================================================================
  350. # ■ RPG::Weapon
  351. #==============================================================================
  352. module RPG
  353.   class Weapon < BaseItem
  354.     #------------------------------------------------------------------------
  355.     # 附加属性
  356.     #------------------------------------------------------------------------
  357.     attr_accessor :base_id
  358.     attr_accessor :actor_id
  359.     attr_accessor :gifts
  360.     #------------------------------------------------------------------------
  361.     # 攻击力(合)
  362.     #------------------------------------------------------------------------
  363.     def atk
  364.       n = @atk
  365.       @gifts = [] if @gifts.nil?
  366.       for g in @gifts.compact do n += g.atk(actor_id) end
  367.       return n
  368.     end
  369.     #------------------------------------------------------------------------
  370.     # 防御力(合)
  371.     #------------------------------------------------------------------------
  372.     def def
  373.       n = @def
  374.       @gifts = [] if @gifts.nil?
  375.       for g in @gifts.compact do n += g.def(actor_id) end
  376.       return n
  377.     end
  378.     #------------------------------------------------------------------------
  379.     # 魔力(合)
  380.     #------------------------------------------------------------------------
  381.     def spi
  382.       n = @spi
  383.       @gifts = [] if @gifts.nil?
  384.       for g in @gifts.compact do n += g.spi(actor_id) end
  385.       return n
  386.     end
  387.     #------------------------------------------------------------------------
  388.     # 敏捷(合)
  389.     #------------------------------------------------------------------------
  390.     def agi
  391.       n = @agi
  392.       @gifts = [] if @gifts.nil?
  393.       for g in @gifts.compact do n += g.agi(actor_id) end
  394.       return n
  395.     end
  396.     #------------------------------------------------------------------------
  397.     # 最大hp(合)
  398.     #------------------------------------------------------------------------
  399.     def maxhp
  400.       n = 0
  401.       @gifts = [] if @gifts.nil?
  402.       for g in @gifts.compact do n += g.maxhp(actor_id) end
  403.       return n
  404.     end
  405.     #------------------------------------------------------------------------
  406.     # 最大mp(合)
  407.     #------------------------------------------------------------------------
  408.     def maxmp
  409.       n = 0
  410.       @gifts = [] if @gifts.nil?
  411.       for g in @gifts.compact do n += g.maxmp(actor_id) end
  412.       return n
  413.     end
  414.     #------------------------------------------------------------------------
  415.     # 命中率(合)
  416.     #------------------------------------------------------------------------
  417.     def hit
  418.       n = @hit
  419.       @gifts = [] if @gifts.nil?
  420.       for g in @gifts.compact do n += g.hit end
  421.       return n
  422.     end
  423.     #------------------------------------------------------------------------
  424.     # 闪避率(合)
  425.     #------------------------------------------------------------------------
  426.     def eva
  427.       n = 0
  428.       @gifts = [] if @gifts.nil?
  429.       for g in @gifts.compact do n += g.eva end
  430.       return n
  431.     end
  432.     #------------------------------------------------------------------------
  433.     # 暴击率(合)
  434.     #------------------------------------------------------------------------
  435.     def cri
  436.       n = 0
  437.       @gifts = [] if @gifts.nil?
  438.       for g in @gifts.compact do n += g.cri end
  439.       return n
  440.     end
  441.     #--------------------------------------------------------------------------
  442.     # ● 经验(百分比)
  443.     #--------------------------------------------------------------------------
  444.     def exp
  445.       n = 0
  446.       @gifts = [] if @gifts.nil?
  447.       for g in @gifts.compact do n += g.exp end
  448.       return n
  449.     end
  450.     #--------------------------------------------------------------------------
  451.     # ● 高级装备暴率(百分比)
  452.     #--------------------------------------------------------------------------
  453.     def equip_chance
  454.       n = 0
  455.       @gifts = [] if @gifts.nil?
  456.       for g in @gifts.compact do n += g.equip_chance end
  457.       return n
  458.     end
  459.   end
  460. end
  461. #==============================================================================
  462. # ■ RPG::Armor
  463. #==============================================================================
  464. module RPG
  465.   class Armor < BaseItem
  466.     #------------------------------------------------------------------------
  467.     # 附加属性
  468.     #------------------------------------------------------------------------
  469.     attr_accessor :base_id
  470.     attr_accessor :actor_id
  471.     attr_accessor :gifts
  472.     #------------------------------------------------------------------------
  473.     # 攻击力(合)
  474.     #------------------------------------------------------------------------
  475.     def atk
  476.       n = @atk
  477.       @gifts = [] if @gifts.nil?
  478.       for g in @gifts.compact do n += g.atk(actor_id) end
  479.       return n
  480.     end
  481.     #------------------------------------------------------------------------
  482.     # 防御力(合)
  483.     #------------------------------------------------------------------------
  484.     def def
  485.       n = @def
  486.       @gifts = [] if @gifts.nil?
  487.       for g in @gifts.compact do n += g.def(actor_id) end
  488.       return n
  489.     end
  490.     #------------------------------------------------------------------------
  491.     # 魔力(合)
  492.     #------------------------------------------------------------------------
  493.     def spi
  494.       n = @spi
  495.       @gifts = [] if @gifts.nil?
  496.       for g in @gifts.compact do n += g.spi(actor_id) end
  497.       return n
  498.     end
  499.     #------------------------------------------------------------------------
  500.     # 敏捷(合)
  501.     #------------------------------------------------------------------------
  502.     def agi
  503.       n = @agi
  504.       @gifts = [] if @gifts.nil?
  505.       for g in @gifts.compact do n += g.agi(actor_id) end
  506.       return n
  507.     end
  508.     #------------------------------------------------------------------------
  509.     # 最大hp(合)
  510.     #------------------------------------------------------------------------
  511.     def maxhp
  512.       n = 0
  513.       @gifts = [] if @gifts.nil?
  514.       for g in @gifts.compact do n += g.maxhp(actor_id) end
  515.       return n
  516.     end
  517.     #------------------------------------------------------------------------
  518.     # 最大mp(合)
  519.     #------------------------------------------------------------------------
  520.     def maxmp
  521.       n = 0
  522.       @gifts = [] if @gifts.nil?
  523.       for g in @gifts.compact do n += g.maxmp(actor_id) end
  524.       return n
  525.     end
  526.     #------------------------------------------------------------------------
  527.     # 命中率(合)
  528.     #------------------------------------------------------------------------
  529.     def hit
  530.       n = 0
  531.       @gifts = [] if @gifts.nil?
  532.       for g in @gifts.compact do n += g.hit end
  533.       return n
  534.     end
  535.     #------------------------------------------------------------------------
  536.     # 闪避率(合)
  537.     #------------------------------------------------------------------------
  538.     def eva
  539.       n = @eva
  540.       @gifts = [] if @gifts.nil?
  541.       for g in @gifts.compact do n += g.eva end
  542.       return n
  543.     end
  544.     #------------------------------------------------------------------------
  545.     # 暴击率(合)
  546.     #------------------------------------------------------------------------
  547.     def cri
  548.       n = 0
  549.       @gifts = [] if @gifts.nil?
  550.       for g in @gifts.compact do n += g.cri end
  551.       return n
  552.     end
  553.     #--------------------------------------------------------------------------
  554.     # ● 经验(百分比)
  555.     #--------------------------------------------------------------------------
  556.     def exp
  557.       n = 0
  558.       @gifts = [] if @gifts.nil?
  559.       for g in @gifts.compact do n += g.exp end
  560.       return n
  561.     end
  562.     #--------------------------------------------------------------------------
  563.     # ● 高级装备暴率(百分比)
  564.     #--------------------------------------------------------------------------
  565.     def equip_chance
  566.       n = 0
  567.       @gifts = [] if @gifts.nil?
  568.       for g in @gifts.compact do n += g.equip_chance end
  569.       return n
  570.     end
  571.   end
  572. end
  573. #==============================================================================
  574. # ■ Game_Actor
  575. #==============================================================================
  576. class Game_Actor < Game_Battler
  577.   #--------------------------------------------------------------------------
  578.   # ● 基本 MaxHP の取得
  579.   #--------------------------------------------------------------------------
  580.   def base_maxhp
  581.     n = actor.parameters[0, @level]
  582.     for item in equips.compact do n += item.maxhp end
  583.     return n
  584.   end
  585.   #--------------------------------------------------------------------------
  586.   # ● 获取基本 MaxMP
  587.   #--------------------------------------------------------------------------
  588.   def base_maxmp
  589.     n = actor.parameters[1, @level]
  590.     for item in equips.compact do n += item.maxmp end
  591.     return n
  592.   end
  593.   #--------------------------------------------------------------------------
  594.   # ● 获取自身 MaxHP
  595.   #--------------------------------------------------------------------------
  596.   def self_maxhp
  597.     return actor.parameters[0, @level]
  598.   end
  599.   #--------------------------------------------------------------------------
  600.   # ● 获取自身 MaxMP
  601.   #--------------------------------------------------------------------------
  602.   def self_maxmp
  603.     return actor.parameters[1, @level]
  604.   end
  605.   #--------------------------------------------------------------------------
  606.   # ● 获取自身攻击力
  607.   #--------------------------------------------------------------------------
  608.   def self_atk
  609.     return actor.parameters[2, @level]
  610.   end
  611.   #--------------------------------------------------------------------------
  612.   # ● 获取自身防御力
  613.   #--------------------------------------------------------------------------
  614.   def self_def
  615.     return actor.parameters[3, @level]
  616.   end
  617.   #--------------------------------------------------------------------------
  618.   # ● 获取自身精神力
  619.   #--------------------------------------------------------------------------
  620.   def self_spi
  621.     return actor.parameters[4, @level]
  622.   end
  623.   #--------------------------------------------------------------------------
  624.   # ● 获取自身敏捷性
  625.   #--------------------------------------------------------------------------
  626.   def self_agi
  627.     return actor.parameters[5, @level]
  628.   end
  629.   #--------------------------------------------------------------------------
  630.   # ● 获取命中率
  631.   #--------------------------------------------------------------------------
  632.   def hit
  633.     n = 95
  634.     for e in equips.compact do n += e.hit end
  635.     return n
  636.   end
  637.   #--------------------------------------------------------------------------
  638.   # ● 获取回避率
  639.   #--------------------------------------------------------------------------
  640.   def eva
  641.     n = 5
  642.     for e in equips.compact do n += e.eva end
  643.     return n
  644.   end
  645.   #--------------------------------------------------------------------------
  646.   # ● 获取会心一击概率
  647.   #--------------------------------------------------------------------------
  648.   def cri
  649.     n = 4
  650.     n += 4 if actor.critical_bonus
  651.     for e in equips.compact do n += e.cri end
  652.     return n
  653.   end
  654.   #--------------------------------------------------------------------------
  655.   # ● 获取更多经验值
  656.   #--------------------------------------------------------------------------
  657.   def exp_added
  658.     exp = 1
  659.     for equip in equips.compact
  660.       exp += equip.exp
  661.     end
  662.     return exp
  663.   end
  664.   #--------------------------------------------------------------------------
  665.   # ● 获取高级物品暴率
  666.   #--------------------------------------------------------------------------
  667.   def equip_chance
  668.     equip_chance = 0
  669.     for equip in equips.compact
  670.       equip_chance += equip.equip_chance
  671.     end
  672.     return equip_chance
  673.   end
  674.   #--------------------------------------------------------------------------
  675.   # ● 获得经验值 (考虑到附加经验值)
  676.   #     exp  : 经验值增加量
  677.   #     show : 显示升级标志
  678.   #--------------------------------------------------------------------------
  679.   def gain_exp(exp, show)
  680.     change_exp(@exp + exp * exp_added, show)
  681.   end
  682. end
  683. #==============================================================================
  684. # ■ Game_Actor
  685. #==============================================================================
  686. class Game_Actor < Game_Battler
  687.   #--------------------------------------------------------------------------
  688.   # ● 初始化对象
  689.   #     actor_id : 角色 ID
  690.   #--------------------------------------------------------------------------
  691.   def initialize(actor_id)
  692.     super()
  693.     setup(actor_id)
  694.     @last_skill_id = 0
  695.   end
  696.   #--------------------------------------------------------------------------
  697.   # ● 设置
  698.   #     actor_id : 角色 ID
  699.   #--------------------------------------------------------------------------
  700.   def setup(actor_id)
  701.     actor = $data_actors[actor_id]
  702.     @actor_id = actor_id
  703.     @name = actor.name
  704.     @character_name = actor.character_name
  705.     @character_index = actor.character_index
  706.     @face_name = actor.face_name
  707.     @face_index = actor.face_index
  708.     @class_id = actor.class_id
  709.     @weapon_id = actor.weapon_id
  710.     @armor1_id = actor.armor1_id
  711.     @armor2_id = actor.armor2_id
  712.     @armor3_id = actor.armor3_id
  713.     @armor4_id = actor.armor4_id
  714.     @level = actor.initial_level
  715.     @exp_list = Array.new(101)
  716.     make_exp_list
  717.     @exp = @exp_list[@level]
  718.     @skills = []
  719.     for i in self.class.learnings
  720.       learn_skill(i.skill_id) if i.level <= @level
  721.     end
  722.     clear_extra_values
  723.     recover_all
  724.     ## 生成新装备id
  725.     reset_equip_id
  726.   end
  727.   #--------------------------------------------------------------------------
  728.   # ● 装备重设
  729.   #--------------------------------------------------------------------------
  730.   def reset_equip_id
  731.     @weapon_id = Game_Equip.reini_id(@weapon_id, 0)
  732.     @armor1_id = Game_Equip.reini_id(@armor1_id, two_hands_legal? ? 0 : 1)
  733.     @armor2_id = Game_Equip.reini_id(@armor2_id, 1)
  734.     @armor3_id = Game_Equip.reini_id(@armor3_id, 1)
  735.     @armor4_id = Game_Equip.reini_id(@armor4_id, 1)
  736.   end
  737.   #--------------------------------------------------------------------------
  738.   # ● 判断是否可以装备
  739.   #     item : 物品
  740.   #     base : 是否读取母版数据
  741.   #--------------------------------------------------------------------------
  742.   def equippable?(item, base = true)
  743.     return true if item == nil
  744.     id = base ? item.base_id : item.id
  745.     if item.is_a?(RPG::Weapon)
  746.       return self.class.weapon_set.include?(id)
  747.     elsif item.is_a?(RPG::Armor)
  748.       return false if two_swords_style and item.kind == 0
  749.       return self.class.armor_set.include?(id)
  750.     end
  751.     return false
  752.   end
  753.   #--------------------------------------------------------------------------
  754.   # ● 更改装备 (指定对象)
  755.   #     equip_type : 装备部位 (0..4)
  756.   #     item       : 武器 or 防具 (nil 为解除装备)
  757.   #     test       : 测试标志 (战斗测试、以及装备画面的临时装备)
  758.   #--------------------------------------------------------------------------
  759.   def change_equip(equip_type, item, test = false)
  760.     last_item = equips[equip_type]
  761.     unless test
  762.       return if $game_party.item_number(item) == 0 if item != nil
  763.       $game_party.gain_item(last_item, 1)
  764.       $game_party.lose_item(item, 1)
  765.       last_item.actor_id = nil unless last_item.nil?
  766.     end
  767.     item_id = item == nil ? 0 : item.id
  768.     case equip_type
  769.     when 0  # 武器
  770.       @weapon_id = item_id
  771.       unless two_hands_legal?             # 违反双手拿取的情况下
  772.         change_equip(1, nil, test)        # 解除反手的装备
  773.       end
  774.     when 1  # 盾
  775.       @armor1_id = item_id
  776.       unless two_hands_legal?             # 违反双手拿取的情况下
  777.         change_equip(0, nil, test)        # 解除反手的装备
  778.       end
  779.     when 2  # 头
  780.       @armor2_id = item_id
  781.     when 3  # 身体
  782.       @armor3_id = item_id
  783.     when 4  # 装饰品
  784.       @armor4_id = item_id
  785.     end
  786.     item.actor_id = self.id unless item.nil?
  787.   end
  788. end
  789. #==============================================================================
  790. # ■ Game_Party
  791. #==============================================================================
  792. class Game_Party < Game_Unit
  793.   #--------------------------------------------------------------------------
  794.   # ● 判断持有的物品
  795.   #     item          : 物品
  796.   #     include_equip : 包括装备品
  797.   #--------------------------------------------------------------------------
  798.   def has_item_by_base_id?(item, include_equip = false)
  799.     for i in items
  800.       return true if i.base_id == item.id
  801.     end
  802.     if include_equip
  803.       for actor in members
  804.         for e in actor.equips
  805.           return true if e.base_id == item.id
  806.         end
  807.       end
  808.     end
  809.     return false
  810.   end
  811.   #--------------------------------------------------------------------------
  812.   # ● 获得物品
  813.   #     item          : 物品
  814.   #     n             : 个数
  815.   #--------------------------------------------------------------------------
  816.   def gain_reini(item, n, include_equip = false, *gift)
  817.     if n < 0
  818.       lose_item(item, -n, include_equip = false)
  819.     else
  820.       case item
  821.       when RPG::Item
  822.         number = item_number(item)
  823.         @items[item.id] = [[number + n, 0].max, 99].min
  824.       when RPG::Weapon
  825.         for i in 0...n
  826.           w = Game_Equip.reini(item, *gift)
  827.           @weapons[w.id] = 1
  828.         end
  829.       when RPG::Armor
  830.         for i in 0...n
  831.           a = Game_Equip.reini(item, *gift)
  832.           @armors[a.id] = 1
  833.         end
  834.       end
  835.     end
  836.   end
  837.   #--------------------------------------------------------------------------
  838.   # ● 减少物品 (减少)
  839.   #     item          : 物品
  840.   #     n             : 个数
  841.   #     include_equip : 包括装备品
  842.   #--------------------------------------------------------------------------
  843.   def lose_reini(item, n, include_equip = false)
  844.     number = item_number(item)
  845.     case item
  846.     when RPG::Item
  847.       @items[item.id] = [[number - n, 0].max, 99].min
  848.     when RPG::Weapon
  849.       @weapons[item.id] = [[number - n, 0].max, 99].min
  850.     when RPG::Armor
  851.       @armors[item.id] = [[number - n, 0].max, 99].min
  852.     end
  853.     n -= number
  854.     if include_equip and n > 0
  855.       for actor in members
  856.         while n > 0 and actor.equips.include?(item)
  857.           actor.discard_equip(item)
  858.           n -= 1
  859.         end
  860.       end
  861.     end
  862.   end
  863.   #--------------------------------------------------------------------------
  864.   # ● 获得物品
  865.   #     item_id       : 物品id
  866.   #     type          : 类型(0物品, 1武器, 2防具)
  867.   #     n             : 个数
  868.   #--------------------------------------------------------------------------
  869.   def gain_reini_byid(item_id, type, n, include_equip = false, *gift)
  870.     case type
  871.     when 0
  872.       item = $data_items[item_id]
  873.     when 1
  874.       item = $base_weapons[item_id]
  875.     when 2
  876.       item = $base_armors[item_id]
  877.     end
  878.     gain_reini(item, n, include_equip, *gift)
  879.   end
  880.   #--------------------------------------------------------------------------
  881.   # ● 极品爆率
  882.   #--------------------------------------------------------------------------
  883.   def equip_chance
  884.     chance = Game_Equip::Equip_Chance[0]
  885.     members.each {|actor| chance += actor.equip_chance}
  886.     return chance
  887.   end
  888. end
  889. #==============================================================================
  890. # ■ Game_Troop
  891. #==============================================================================
  892. class Game_Troop < Game_Unit
  893.   #--------------------------------------------------------------------------
  894.   # ● 敌人角色名称后的文字表
  895.   #--------------------------------------------------------------------------
  896.   LETTER_TABLE = [ 'A','B','C','D','E','F','G','H','I','J',
  897.                    'K','L','M','N','O','P','Q','R','S','T',
  898.                    'U','V','W','X','Y','Z']
  899.   #--------------------------------------------------------------------------
  900.   # ● 生成掉落物品队列
  901.   #--------------------------------------------------------------------------
  902.   def make_drop_items
  903.     drop_items = []
  904.     for enemy in dead_members
  905.       for di in [enemy.drop_item1, enemy.drop_item2]
  906.         next if di.kind == 0
  907.         next if rand(di.denominator) != 0
  908.         if di.kind == 1
  909.           drop_items.push($data_items[di.item_id])
  910.         elsif di.kind == 2
  911.           item = reini_chance($base_weapons[di.weapon_id], $game_party.equip_chance)
  912.           drop_items.push(item)
  913.         elsif di.kind == 3
  914.           item = reini_chance($base_armors[di.armor_id], $game_party.equip_chance)
  915.           drop_items.push(item)
  916.         end
  917.       end
  918.     end
  919.     return drop_items
  920.   end
  921.   #--------------------------------------------------------------------------
  922.   # ● 处理极品爆率
  923.   #--------------------------------------------------------------------------
  924.   def reini_chance(item, chance)
  925.     @item = item
  926.     @chance = [chance/100.0, Game_Equip::Equip_Chance[1]/100.0].min
  927.     @gifts = []
  928.     loop do
  929.       if rand(0) < @chance and @gifts.size < Game_Equip::GiftMax
  930.         @gifts << Game_Gift.new
  931.         @chance /= 2
  932.       else
  933.         return Game_Equip.reini(@item, @gifts)
  934.       end
  935.     end
  936.   end
  937. end
  938. #==============================================================================
  939. # ■ Game_Interpreter
  940. #==============================================================================
  941. class Game_Interpreter
  942.   #--------------------------------------------------------------------------
  943.   # ● 计算操作的值
  944.   #     operation    : 操作 (0:增加 1:减少)
  945.   #     operand_type : 运算域类型 (0:常量 1:变量)
  946.   #     operand      : 运算域 (数值为变量 ID)
  947.   #--------------------------------------------------------------------------
  948.   def operate_value(operation, operand_type, operand)
  949.     if operand_type == 0
  950.       value = operand
  951.     else
  952.       value = $game_variables[operand]
  953.     end
  954.     if operation == 1
  955.       value = -value
  956.     end
  957.     return value
  958.   end
  959.   #--------------------------------------------------------------------------
  960.   # ● 条件分歧
  961.   #--------------------------------------------------------------------------
  962.   def command_111
  963.     result = false
  964.     case @params[0]
  965.     when 0  # 开关
  966.       result = ($game_switches[@params[1]] == (@params[2] == 0))
  967.     when 1  # 变量
  968.       value1 = $game_variables[@params[1]]
  969.       if @params[2] == 0
  970.         value2 = @params[3]
  971.       else
  972.         value2 = $game_variables[@params[3]]
  973.       end
  974.       case @params[4]
  975.       when 0  # 相等
  976.         result = (value1 == value2)
  977.       when 1  # 大于等于
  978.         result = (value1 >= value2)
  979.       when 2  # 小于等于
  980.         result = (value1 <= value2)
  981.       when 3  # 大于
  982.         result = (value1 > value2)
  983.       when 4  # 小于
  984.         result = (value1 < value2)
  985.       when 5  # 不等于
  986.         result = (value1 != value2)
  987.       end
  988.     when 2  # 自我开关
  989.       if @original_event_id > 0
  990.         key = [@map_id, @original_event_id, @params[1]]
  991.         if @params[2] == 0
  992.           result = ($game_self_switches[key] == true)
  993.         else
  994.           result = ($game_self_switches[key] != true)
  995.         end
  996.       end
  997.     when 3  # 计时器
  998.       if $game_system.timer_working
  999.         sec = $game_system.timer / Graphics.frame_rate
  1000.         if @params[2] == 0
  1001.           result = (sec >= @params[1])
  1002.         else
  1003.           result = (sec <= @params[1])
  1004.         end
  1005.       end
  1006.     when 4  # 角色
  1007.       actor = $game_actors[@params[1]]
  1008.       if actor != nil
  1009.         case @params[2]
  1010.         when 0  # 是同伴
  1011.           result = ($game_party.members.include?(actor))
  1012.         when 1  # 姓名
  1013.           result = (actor.name == @params[3])
  1014.         when 2  # 特技
  1015.           result = (actor.skill_learn?($data_skills[@params[3]]))
  1016.         when 3  # 武器
  1017.           ## 判断是否符合母版id
  1018.           actor.weapons.each do |weapon|
  1019.             next if weapon.nil?
  1020.             if weapon.base_id == @params[3]
  1021.               result = true
  1022.               break
  1023.             end
  1024.           end
  1025.         when 4  # 防具
  1026.           ## 判断是否符合母版id
  1027.           actor.armors.each do |armor|
  1028.             next if armor.nil?
  1029.             if armor.base_id == @params[3]
  1030.               result = true
  1031.               break
  1032.             end
  1033.           end
  1034.         when 5  # 状态
  1035.           result = (actor.state?(@params[3]))
  1036.         end
  1037.       end
  1038.     when 5  # 敌方角色
  1039.       enemy = $game_troop.members[@params[1]]
  1040.       if enemy != nil
  1041.         case @params[2]
  1042.         when 0  # 出现
  1043.           result = (enemy.exist?)
  1044.         when 1  # 状态
  1045.           result = (enemy.state?(@params[3]))
  1046.         end
  1047.       end
  1048.     when 6  # 角色
  1049.       character = get_character(@params[1])
  1050.       if character != nil
  1051.         result = (character.direction == @params[2])
  1052.       end
  1053.     when 7  # 金钱
  1054.       if @params[2] == 0
  1055.         result = ($game_party.gold >= @params[1])
  1056.       else
  1057.         result = ($game_party.gold <= @params[1])
  1058.       end
  1059.     when 8  # 物品
  1060.       result = $game_party.has_item?($data_items[@params[1]])
  1061.     when 9  # 武器
  1062.       result = $game_party.has_item_by_base_id?($base_weapons[@params[1]], @params[2])
  1063.     when 10  # 防具
  1064.       result = $game_party.has_item_by_base_id?($base_armors[@params[1]], @params[2])
  1065.     when 11  # 按钮
  1066.       result = Input.press?(@params[1])
  1067.     when 12  # 脚本
  1068.       result = eval(@params[1])
  1069.     when 13  # 交通工具
  1070.       result = ($game_player.vehicle_type == @params[1])
  1071.     end
  1072.     @branch[@indent] = result     # 将判断结果放置在缓存中
  1073.     if @branch[@indent] == true
  1074.       @branch.delete(@indent)
  1075.       return true
  1076.     end
  1077.     return command_skip
  1078.   end
  1079.   
  1080.   
  1081.   #--------------------------------------------------------------------------
  1082.   # ● 计算装备操作的值
  1083.   #     operand_type : 运算域类型 (0:常量 1:变量)
  1084.   #     operand      : 运算域 (数值为变量 ID)
  1085.   #--------------------------------------------------------------------------
  1086.   def opera_equip_value(operation, operand_type, operand)
  1087.     if operand_type == 0
  1088.       value = operand
  1089.     else
  1090.       value = $game_variables[operand]
  1091.     end
  1092.     return value
  1093.   end
  1094.   #--------------------------------------------------------------------------
  1095.   # ● 增减武器
  1096.   #--------------------------------------------------------------------------
  1097.   def command_127
  1098.     value = operate_value(@params[1], @params[2], @params[3])
  1099.     if @params[1] == 0
  1100.       $game_party.gain_reini($base_weapons[@params[0]], value.abs, @params[4])
  1101.     else
  1102.       $game_party.lose_reini($base_weapons[@params[0]], value.abs, @params[4])
  1103.     end
  1104.     return true
  1105.   end
  1106.   #--------------------------------------------------------------------------
  1107.   # ● 增减防具
  1108.   #--------------------------------------------------------------------------
  1109.   def command_128
  1110.     value = operate_value(@params[1], @params[2], @params[3])
  1111.     if @params[1] == 0
  1112.       $game_party.gain_reini($base_armors[@params[0]], value.abs, @params[4])
  1113.     else
  1114.       $game_party.lose_reini($base_armors[@params[0]], value.abs, @params[4])
  1115.     end
  1116.     return true
  1117.   end
  1118.   #--------------------------------------------------------------------------
  1119.   # ● 更改装备
  1120.   #--------------------------------------------------------------------------
  1121.   def command_319
  1122.     actor = $game_actors[@params[0]]
  1123.     if actor != nil
  1124.       actor.change_equip_by_id(@params[1], @params[2])
  1125.     end
  1126.     return true
  1127.   end
  1128.   #--------------------------------------------------------------------------
  1129.   # ● 增减武器
  1130.   #--------------------------------------------------------------------------
  1131.   def get_weapon(id, n, *gift)
  1132.     $game_party.gain_reini($base_weapons[id], n, false, *gift)
  1133.   end
  1134.   #--------------------------------------------------------------------------
  1135.   # ● 增减防具
  1136.   #--------------------------------------------------------------------------
  1137.   def get_armor(id, n, *gift)
  1138.     $game_party.gain_reini($base_armors[id], n, false, *gift)
  1139.   end
  1140. end
  1141. #==============================================================================
  1142. # ■ Window_Base
  1143. #==============================================================================
  1144. class Window_Base < Window
  1145.   def draw_item_name(item, x, y, enabled = true)
  1146.     if item != nil
  1147.       draw_icon(item.icon_index, x, y, enabled)
  1148.       self.contents.font.color = text_color(item.text_color.to_i)
  1149.       self.contents.font.color.alpha = enabled ? 255 : 128
  1150.       self.contents.draw_text(x + 24, y, 172, WLH, item.name)
  1151.     end
  1152.   end
  1153. end
  1154. #==============================================================================
  1155. # ■ Window_ShopBuy
  1156. #==============================================================================
  1157. class Window_ShopBuy < Window_Selectable
  1158.   #--------------------------------------------------------------------------
  1159.   # ● 刷新
  1160.   #--------------------------------------------------------------------------
  1161.   def refresh
  1162.     @data = []
  1163.     for goods_item in @shop_goods
  1164.       case goods_item[0]
  1165.       when 0
  1166.         item = $data_items[goods_item[1]]
  1167.       when 1
  1168.         item = $data_weapons[goods_item[1]]
  1169.       when 2
  1170.         item = $data_armors[goods_item[1]]
  1171.       end
  1172.       if item != nil
  1173.         @data.push(item)
  1174.       end
  1175.     end
  1176.     @item_max = @data.size
  1177.     create_contents
  1178.     for i in 0...@item_max
  1179.       draw_item(i)
  1180.     end
  1181.   end
  1182. end
  1183. #==============================================================================
  1184. # ■ Window_ShopStatus
  1185. #==============================================================================
  1186. class Window_ShopStatus < Window_Base
  1187.   #--------------------------------------------------------------------------
  1188.   # ● 描绘角色现在装备的能力值变化
  1189.   #     actor : 角色
  1190.   #     x     : 描画目标 X 坐标
  1191.   #     y     : 描画目标 Y 坐标
  1192.   #--------------------------------------------------------------------------
  1193.   def draw_actor_parameter_change(actor, x, y)
  1194.     return if @item.is_a?(RPG::Item)
  1195.     enabled = actor.equippable?(@item, false)
  1196.     self.contents.font.color = normal_color
  1197.     self.contents.font.color.alpha = enabled ? 255 : 128
  1198.     self.contents.draw_text(x, y, 200, WLH, actor.name)
  1199.     if @item.is_a?(RPG::Weapon)
  1200.       item1 = weaker_weapon(actor)
  1201.     elsif actor.two_swords_style and @item.kind == 0
  1202.       item1 = nil
  1203.     else
  1204.       item1 = actor.equips[1 + @item.kind]
  1205.     end
  1206.     if enabled
  1207.       if @item.is_a?(RPG::Weapon)
  1208.         atk1 = item1 == nil ? 0 : item1.atk
  1209.         atk2 = @item == nil ? 0 : @item.atk
  1210.         change = atk2 - atk1
  1211.       else
  1212.         def1 = item1 == nil ? 0 : item1.def
  1213.         def2 = @item == nil ? 0 : @item.def
  1214.         change = def2 - def1
  1215.       end
  1216.       self.contents.draw_text(x, y, 200, WLH, sprintf("%+d", change), 2)
  1217.     end
  1218.     draw_item_name(item1, x, y + WLH, enabled)
  1219.   end
  1220. end
  1221. #==============================================================================
  1222. # ■ Scene_File
  1223. #==============================================================================
  1224. class Scene_File < Scene_Base
  1225.   #--------------------------------------------------------------------------
  1226.   # ● 写入存档数据
  1227.   #     file : 写入文件用对象 (已经打开)
  1228.   #--------------------------------------------------------------------------
  1229.   def write_save_data(file)
  1230.     characters = []
  1231.     for actor in $game_party.members
  1232.       characters.push([actor.character_name, actor.character_index])
  1233.     end
  1234.     $game_system.save_count += 1
  1235.     $game_system.version_id = $data_system.version_id
  1236.     @last_bgm = RPG::BGM::last
  1237.     @last_bgs = RPG::BGS::last
  1238.     Marshal.dump(characters,           file)
  1239.     Marshal.dump(Graphics.frame_count, file)
  1240.     Marshal.dump(@last_bgm,            file)
  1241.     Marshal.dump(@last_bgs,            file)
  1242.     Marshal.dump($game_system,         file)
  1243.     Marshal.dump($game_message,        file)
  1244.     Marshal.dump($game_switches,       file)
  1245.     Marshal.dump($game_variables,      file)
  1246.     Marshal.dump($game_self_switches,  file)
  1247.     Marshal.dump($game_actors,         file)
  1248.     Marshal.dump($game_party,          file)
  1249.     Marshal.dump($game_troop,          file)
  1250.     Marshal.dump($game_map,            file)
  1251.     Marshal.dump($game_player,         file)
  1252.     Marshal.dump($data_weapons,        file)
  1253.     Marshal.dump($data_armors,         file)
  1254.   end
  1255.   #--------------------------------------------------------------------------
  1256.   # ● 读取存档数据
  1257.   #     file : 读取文件用对象 (已经打开)
  1258.   #--------------------------------------------------------------------------
  1259.   def read_save_data(file)
  1260.     characters           = Marshal.load(file)
  1261.     Graphics.frame_count = Marshal.load(file)
  1262.     @last_bgm            = Marshal.load(file)
  1263.     @last_bgs            = Marshal.load(file)
  1264.     $game_system         = Marshal.load(file)
  1265.     $game_message        = Marshal.load(file)
  1266.     $game_switches       = Marshal.load(file)
  1267.     $game_variables      = Marshal.load(file)
  1268.     $game_self_switches  = Marshal.load(file)
  1269.     $game_actors         = Marshal.load(file)
  1270.     $game_party          = Marshal.load(file)
  1271.     $game_troop          = Marshal.load(file)
  1272.     $game_map            = Marshal.load(file)
  1273.     $game_player         = Marshal.load(file)
  1274.     $data_weapons        = Marshal.load(file)
  1275.     $data_armors         = Marshal.load(file)
  1276.     if $game_system.version_id != $data_system.version_id
  1277.       $game_map.setup($game_map.map_id)
  1278.       $game_player.center($game_player.x, $game_player.y)
  1279.     end
  1280.   end
  1281. end
  1282. #==============================================================================
  1283. # ■ Scene_Shop
  1284. #==============================================================================
  1285. class Scene_Shop < Scene_Base
  1286.   #--------------------------------------------------------------------------
  1287.   # ● 确定输入个数
  1288.   #--------------------------------------------------------------------------
  1289.   def decide_number_input
  1290.     Sound.play_shop
  1291.     @number_window.active = false
  1292.     @number_window.visible = false
  1293.     case @command_window.index
  1294.     when 0  # 购买
  1295.       $game_party.lose_gold(@number_window.number * @item.price)
  1296.       $game_party.gain_reini(@item, @number_window.number)
  1297.       @gold_window.refresh
  1298.       @buy_window.refresh
  1299.       @status_window.refresh
  1300.       @buy_window.active = true
  1301.       @buy_window.visible = true
  1302.     when 1  # 卖出
  1303.       $game_party.gain_gold(@number_window.number * (@item.price / 2))
  1304.       $game_party.lose_reini(@item, @number_window.number)
  1305.       @gold_window.refresh
  1306.       @sell_window.refresh
  1307.       @status_window.refresh
  1308.       @sell_window.active = true
  1309.       @sell_window.visible = true
  1310.       @status_window.visible = false
  1311.     end
  1312.   end
  1313. end
  1314. #==============================================================================
  1315. # ■ Scene_Title
  1316. #==============================================================================
  1317. class Scene_Title < Scene_Base
  1318.   #--------------------------------------------------------------------------
  1319.   # ● 载入数据库
  1320.   #--------------------------------------------------------------------------
  1321.   def load_database
  1322.     $data_actors        = load_data("Data/Actors.rvdata")
  1323.     $data_classes       = load_data("Data/Classes.rvdata")
  1324.     $data_skills        = load_data("Data/Skills.rvdata")
  1325.     $data_items         = load_data("Data/Items.rvdata")
  1326.     $base_weapons       = load_data("Data/Weapons.rvdata")
  1327.     $base_armors        = load_data("Data/Armors.rvdata")
  1328.     $data_enemies       = load_data("Data/Enemies.rvdata")
  1329.     $data_troops        = load_data("Data/Troops.rvdata")
  1330.     $data_states        = load_data("Data/States.rvdata")
  1331.     $data_animations    = load_data("Data/Animations.rvdata")
  1332.     $data_common_events = load_data("Data/CommonEvents.rvdata")
  1333.     $data_system        = load_data("Data/System.rvdata")
  1334.     $data_areas         = load_data("Data/Areas.rvdata")
  1335.     $data_weapons       = [nil]
  1336.     $data_armors        = [nil]
  1337.   end
  1338.   #--------------------------------------------------------------------------
  1339.   # ● 载入战斗测试用的数据库
  1340.   #--------------------------------------------------------------------------
  1341.   def load_bt_database
  1342.     $data_actors        = load_data("Data/BT_Actors.rvdata")
  1343.     $data_classes       = load_data("Data/BT_Classes.rvdata")
  1344.     $data_skills        = load_data("Data/BT_Skills.rvdata")
  1345.     $data_items         = load_data("Data/BT_Items.rvdata")
  1346.     $data_weapons       = load_data("Data/BT_Weapons.rvdata")
  1347.     $data_armors        = load_data("Data/BT_Armors.rvdata")
  1348.     $data_enemies       = load_data("Data/BT_Enemies.rvdata")
  1349.     $data_troops        = load_data("Data/BT_Troops.rvdata")
  1350.     $data_states        = load_data("Data/BT_States.rvdata")
  1351.     $data_animations    = load_data("Data/BT_Animations.rvdata")
  1352.     $data_common_events = load_data("Data/BT_CommonEvents.rvdata")
  1353.     $data_system        = load_data("Data/BT_System.rvdata")
  1354.     $base_weapons       = $data_weapons
  1355.     $base_armors        = $data_armors
  1356.   end
  1357. end


复制代码
和详尽帮助这个脚本
  1. #==============================================================================
  2. # ■ Window_Help
  3. #------------------------------------------------------------------------------
  4. # 原作:xuelong
  5. # 修正:水迭澜
  6. # 移植:禾西
  7. #==============================================================================
  8. class Window_Help < Window_Base
  9.   #--------------------------------------------------------------------------
  10.   # ● 定義
  11.   #--------------------------------------------------------------------------
  12.   def set
  13.     @phrase,@y= {}, 0
  14.     @scope, @parameter_type = [], []
  15. =begin
  16.     @name_size = 名字文字大小
  17.     @size = 描述文字大小
  18.     @word = 每行的描述文字數
  19. =end
  20.     @name_size = 18
  21.     @size = 14
  22.     @word = 11
  23.    
  24.     # 不顯示的 屬性 與 狀態 ID
  25.     @unshow_elements = [17, 18]
  26.     @unshow_states = []
  27.    
  28.     # 基本文字設定
  29.     @phrase[:price]          = "價格"
  30.     @phrase[:elements]       = "攻擊属性"
  31.     @phrase[:states]         = "付加狀態"
  32.     @phrase[:guard_elements] = "半減属性"
  33.     @phrase[:guard_states]   = "無効化狀態"
  34.     #------------------#
  35.     #   物品效果語句   #
  36.     #------------------#
  37.     @phrase[:recover]      = "回复"
  38.     @phrase[:hp]           = "HP"
  39.     @phrase[:mp]           = "MP"
  40.     @phrase[:plus_states]  = "狀態附加"
  41.     @phrase[:minus_states] = "狀態解除"
  42.     @phrase[:speed]        = "速度補正"
  43.     @phrase[:consumable]   = "消耗品"
  44.     @phrase[:base_damage]  = "基本傷害"
  45.     #------------------#
  46.     #   特殊效果語句   #
  47.     #------------------#
  48.     @phrase[:special]          = "特殊"
  49.     @phrase[:two_handed]       = "両手武器"
  50.     @phrase[:fast_attack]      = "回合内先制"
  51.     @phrase[:dual_attack]      = "連続攻撃"
  52.     @phrase[:critical_bonus]   = "會心頻発"
  53.     @phrase[:prevent_critical] = "會心防止"
  54.     @phrase[:half_mp_cost]     = "消費MP半分"
  55.     @phrase[:double_exp_gain]  = "取得経験値2倍"
  56.     @phrase[:auto_hp_recover]  = "HP自動回復"
  57.     @phrase[:physical_attack]  = "物理攻撃"
  58.     @phrase[:damage_to_mp]     = "MP傷害"
  59.     @phrase[:absorb_damage]    = "傷害吸収"
  60.     @phrase[:ignore_defense]   = "防御力無視"
  61.     #------------------#
  62.     #   技能描述語句   #
  63.     #------------------#
  64.     @phrase[:recovery] = "回復力"
  65.     @phrase[:mp_cost]  = "消耗SP"
  66.     @phrase[:hit]      = "命中率"
  67.     #------------------#
  68.     #   效果範圍語句   #
  69.     #------------------#
  70.     @phrase[:scope]    = "効果範囲"
  71.     @scope[0]  = "特殊"
  72.     @scope[1]  = "敵単体"
  73.     @scope[2]  = "敵全体"
  74.     @scope[3]  = "敵単体 連続"
  75.     @scope[4]  = "敵単体 隨機"
  76.     @scope[5]  = "敵二体 隨機"
  77.     @scope[6]  = "敵三体 隨機"
  78.     @scope[7]  = "味方単体"
  79.     @scope[8]  = "味方全体"
  80.     @scope[9]  = "味方戦闘不能(単)"
  81.     @scope[10] = "味方戦闘不能(全)"
  82.     @scope[11] = "使用者"
  83.     #------------------#
  84.     #   效果範圍語句   #
  85.     #------------------#
  86.     @parameter_type[1] = "MaxHP"
  87.     @parameter_type[2] = "MaxMP"
  88.     @parameter_type[3] = $data_system.terms.atk
  89.     @parameter_type[4] = $data_system.terms.def
  90.     @parameter_type[5] = $data_system.terms.spi
  91.     @parameter_type[6] = $data_system.terms.agi
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 初始化對象
  95.   #--------------------------------------------------------------------------
  96.   def initialize
  97.     super(0, 0, 544, WLH + 32)
  98.     self.opacity = 200
  99.     self.z = 150
  100.     self.visible = false
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 設置文本
  104.   #     data  : 窗口顯示的字符串/物品資料
  105.   #     align : 對齊方式 (0..左對齊、1..中間對齊、2..右對齊)
  106.   #--------------------------------------------------------------------------
  107.   def set_text(data, align=0)
  108.     #------------------------------------------------------------------------
  109.     # ● 當資料爲文字時候
  110.     #------------------------------------------------------------------------
  111.     if data != @text or align != @align
  112.       if data.is_a?(String)
  113.         draw_string(data,align)
  114.       end
  115.     end
  116.     return if data.is_a?(String)
  117.     #------------------------------------------------------------------------
  118.     # ● 當沒有資料時候
  119.     #------------------------------------------------------------------------
  120.     if data.nil?
  121.       self.visible=false
  122.     else
  123.       self.visible=true
  124.     end
  125.     #------------------------------------------------------------------------
  126.     # ● 當資料爲物品/技能時候
  127.     #------------------------------------------------------------------------
  128.     if data != nil && @data != data
  129.       self.width = 210
  130.       self.height = 430
  131.       self.x=0
  132.       self.y=200
  133.       set
  134.       draw_data(data)
  135.     else
  136.       return
  137.     end
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 更新帮助窗口
  141.   #--------------------------------------------------------------------------
  142.   def draw_string(data,align)
  143.     self.width = 544        #修正寬度
  144.     self.height = WLH + 32  #修正高度
  145.     self.x=0                #修正 x 坐標
  146.     self.y=0                #修正 y 坐標
  147.     @text = data            #記錄文本資料
  148.     @align = align          #記錄對齊方式
  149.     @actor = nil            #清空角色資料
  150.     self.contents = Bitmap.new(width - 32, height - 32) if self.contents.nil?
  151.     self.contents.clear
  152.     self.contents.font.color = normal_color
  153.     self.contents.font.size = 20
  154.     self.contents.draw_text(4, 0, self.width - 40, 32, data, align)
  155.     self.visible = true
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ● 更新帮助窗口
  159.   #--------------------------------------------------------------------------
  160.   def draw_data(data=@data)
  161.     self.width = 186        #修正寬度
  162.     self.height = 430       #修正高度
  163.     self.x=0                #修正 x 坐標
  164.     self.y=150              #修正 y 坐標
  165.     @data = data            #記錄 data 資料
  166.     case @data
  167.     when RPG::Item
  168.       set_item_text(@data)
  169.     when RPG::Weapon, RPG::Armor
  170.       set_equipment_text(@data)
  171.     when RPG::Skill
  172.       set_skill_text(@data)
  173.     end
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # ● 修正窗口位置
  177.   #--------------------------------------------------------------------------
  178.   def set_pos(x,y,width,oy,index,column_max)
  179.     cursor_width = width / column_max - 32
  180.     xx = index % column_max * (cursor_width + WLH)
  181.     yy = index / column_max * WLH - oy
  182.     self.x=xx+x+140
  183.     self.y=yy+y+35
  184.     if self.x+self.width>544
  185.       self.x=544-self.width
  186.     end
  187.     if self.y+self.height>416
  188.       self.y=416-self.height
  189.     end  
  190.   end
  191.   #------------------------------------------------------------------------
  192.   # ● 文字描繪
  193.   #------------------------------------------------------------------------
  194.   def draw_text(text, increase, move=0)
  195.     @y += increase
  196.     self.contents.font.color = normal_color
  197.     self.contents.font.size = @size
  198.     self.contents.draw_text(0+move, @y*@size+5, text.size*6, @size, text, 0)
  199.   end
  200. #-------------------------------------#
  201. # 子方法
  202. #-------------------------------------#
  203.   #--------------------------------------------------------------------------
  204.   # ● 裝備幫助窗口
  205.   #--------------------------------------------------------------------------
  206.   def set_equipment_text(equipment)
  207.     #------------------------------------------------------------------------
  208.     # ● 取得基本質料
  209.     #------------------------------------------------------------------------
  210.    
  211.     #----------------------------#
  212.     # 取得屬性、狀態、說明之副本 #
  213.     #----------------------------#
  214.     element_set = equipment.element_set.clone
  215.     state_set   = equipment.state_set.clone
  216.     description = equipment.description.clone
  217.     phrase      = @phrase
  218.     #----------------------------#
  219.     # 過濾不顯示的屬性與狀態描述 #
  220.     #----------------------------#
  221.     element_set -= @unshow_elements
  222.     state_set   -= @unshow_states
  223.     #----------------#
  224.     # 初始化數據設定 #
  225.     #----------------#
  226.     x, h, move = 0, 0, 0
  227.     #------------------#
  228.     # 取得特殊效果數據 #
  229.     #------------------#
  230.     special = []
  231.     gifts = equipment.gifts
  232.     gifts = [] if gifts.nil?
  233.     s = [
  234.     "攻击 + [s]",   "攻击 + [s]%",
  235.     "防御 + [s]",   "防御 + [s]%",
  236.     "精神 + [s]",   "精神 + [s]%",
  237.     "敏捷 + [s]",   "敏捷 + [s]%",
  238.     "最大HP + [s]", "最大HP + [s]%",
  239.     "最大MP + [s]", "最大MP + [s]%",
  240.     "命中率 + [s]",
  241.     "闪避率 + [s]",
  242.     "暴击率 + [s]",
  243.     "额外经验 + [s]%",
  244.     "极品爆率 + [s]%"
  245.     ]
  246.     for g in gifts
  247.       special << s[g.type].sub(/\[s\]/) {g.value}
  248.     end
  249.     #------------------------------------------------------------------------
  250.     # ● 確定背景圖片的高度
  251.     #------------------------------------------------------------------------
  252.     h += (description.size/3/@word)
  253.     h += 1 if (description.size/3%@word) > 0
  254.     now_h = h
  255.    
  256.     h += 1                               #價格
  257.    
  258.     h += 1 unless equipment.atk.zero?    #攻擊力
  259.     h += 1 unless equipment.def.zero?    #防禦力
  260.     h += 1 unless equipment.spi.zero?    #精神力
  261.     h += 1 unless equipment.agi.zero?    #敏捷力
  262.    
  263.     h += element_set.size + 1 if element_set.size > 0  #屬性
  264.     h += state_set.size   + 1 if state_set.size   > 0  #狀態
  265.     h += special.size     + 2 if special.size     > 0  #特殊效果
  266.    
  267.     #------------------------------------------------------------------------
  268.     # ● 圖片顯示保證高度
  269.     #------------------------------------------------------------------------
  270.     #h = 6 + now_h if (h - now_h) < 6
  271.     #------------------------------------------------------------------------
  272.     # ● 換算高度
  273.     #------------------------------------------------------------------------
  274.     self.height = h * @size + @name_size + 32
  275.     #------------------------------------------------------------------------
  276.     # ● 生成背景
  277.     #------------------------------------------------------------------------
  278.     self.contents = Bitmap.new(self.width - 32, self.height - 32)
  279.     self.contents.clear
  280.     #------------------------------------------------------------------------
  281.     # ● 名字描繪
  282.     #------------------------------------------------------------------------
  283.     text = equipment.name
  284.     self.contents.font.color = normal_color
  285.     self.contents.font.size = @name_size
  286.     if text.nil?
  287.       self.visible = false
  288.     else
  289.       self.visible = true
  290.       ###self.contents.draw_text(0, 0, text.size*7, @name_size, text, 0)
  291.       self.contents.draw_text(0, 0, contents.width-4, @name_size, text)
  292.     end
  293.     #------------------------------------------------------------------------
  294.     # ● 說明描繪
  295.     #------------------------------------------------------------------------
  296.     x = 0
  297.     @y += 1
  298.     while ((text = description.slice!(/./m)) != nil)
  299.       self.contents.font.color = normal_color
  300.       self.contents.font.size = @size
  301.       self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
  302.       x+=1
  303.       if x == @word
  304.         x=0
  305.         @y+=1
  306.       end
  307.     end
  308.     #------------------------------------------------------------------------
  309.     # ● 圖標描繪
  310.     #------------------------------------------------------------------------
  311.     #bitmap = Cache.system("Iconset")
  312.     #rect = Rect.new(equipment.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
  313.     #self.contents.blt(0, y*size + 20, bitmap, rect, 255)
  314.     #------------------------------------------------------------------------
  315.     # ● 價格描繪
  316.     #------------------------------------------------------------------------
  317.     unless equipment.price.zero?
  318.       text = phrase[:price] + ":" + equipment.price.to_s
  319.       draw_text(text, 1, move)
  320.     end
  321.     #------------------------------------------------------------------------
  322.     # ● 攻擊力
  323.     #------------------------------------------------------------------------
  324.     unless equipment.atk.zero?
  325.       text = $data_system.terms.atk + ":" + equipment.atk.to_s
  326.       draw_text(text, 1, move)
  327.     end
  328.     #------------------------------------------------------------------------
  329.     # ● 防禦力
  330.     #------------------------------------------------------------------------
  331.     unless equipment.def.zero?
  332.       text = $data_system.terms.def + ":" + equipment.def.to_s
  333.       draw_text(text, 1, move)
  334.     end
  335.     #------------------------------------------------------------------------
  336.     # ● 精神力
  337.     #------------------------------------------------------------------------
  338.     unless equipment.spi.zero?
  339.       text = $data_system.terms.spi + ":" + equipment.spi.to_s
  340.       draw_text(text, 1, move)
  341.     end
  342.     #------------------------------------------------------------------------
  343.     # ● 敏捷力
  344.     #------------------------------------------------------------------------
  345.     unless equipment.agi.zero?
  346.       text = $data_system.terms.agi + ":" + equipment.agi.to_s
  347.       draw_text(text, 1, move)
  348.     end
  349.     #------------------------------------------------------------------------
  350.     # ● 屬性
  351.     #------------------------------------------------------------------------
  352.     if element_set.size > 0
  353.       case equipment
  354.       when RPG::Weapon
  355.         text=phrase[:elements]+":"
  356.       when RPG::Armor
  357.         text=phrase[:guard_elements]+":"
  358.       end
  359.       draw_text(text, 1, move)
  360.       element_set.each do |i|
  361.         text = $data_system.elements[i]
  362.         draw_text(text, 1, move + @size)
  363.       end
  364.     end
  365.     #------------------------------------------------------------------------
  366.     # ● 狀態
  367.     #------------------------------------------------------------------------
  368.     if state_set.size > 0
  369.       case equipment
  370.       when RPG::Weapon
  371.         text=phrase[:states]+":"
  372.       when RPG::Armor
  373.         text=phrase[:guard_states]+":"
  374.       end
  375.       draw_text(text, 1, move)
  376.       state_set.each do |i|
  377.         text = $data_states[i].name
  378.         draw_text(text, 1, move + @size)
  379.       end
  380.     end
  381.     #------------------------------------------------------------------------
  382.     # ● 特殊效果
  383.     #------------------------------------------------------------------------
  384.     if special.size > 0
  385.       text = phrase[:special]+":"
  386.       draw_text(text, 1, move)
  387.       special.each {|text| draw_text(text, 1, move + @size)}
  388.     end
  389.   end
  390. #////////////////////////////////////////////////////////////////////////////
  391.   #--------------------------------------------------------------------------
  392.   # ● 物品幫助窗口
  393.   #--------------------------------------------------------------------------
  394.   def set_item_text(item)
  395.     #----------------------------#
  396.     # 取得屬性、狀態、說明之副本 #
  397.     #----------------------------#
  398.     description = item.description.clone
  399.     element_set = item.element_set.clone
  400.     plus_state_set = item.plus_state_set.clone
  401.     minus_state_set = item.minus_state_set.clone
  402.     # 過濾不顯示的描述
  403.     element_set -= @unshow_elements
  404.     plus_state_set -= @unshow_states
  405.     minus_state_set -= @unshow_states
  406.     # 初始化數據設定
  407.     x, h, move = 0, 0, 0
  408.     phrase = @phrase
  409.     scope = @scope
  410.     parameter_type = @parameter_type
  411.     occasion = @occasion
  412.     # 基本文字設定

  413.    
  414.     #------------------#
  415.     # 取得特殊效果數據 #
  416.     #------------------#
  417.     special = []
  418.     special << phrase[:physical_attack] if item.physical_attack #物理攻撃
  419.     special << phrase[:damage_to_mp]    if item.damage_to_mp    #MPにダメージ
  420.     special << phrase[:absorb_damage]   if item.absorb_damage   #ダメージを吸収
  421.     special << phrase[:ignore_defense]  if item.ignore_defense  #防御力無視
  422.    
  423.     #------------------------------------------------------------------------
  424.     # ● 確定背景圖片的高度
  425.     #------------------------------------------------------------------------
  426.     h += (description.size/3/@word)
  427.     h += 1 if (description.size/3%@word) > 0
  428.     now_h = h
  429.    
  430.     h += 2                                  #効果範囲,價格
  431.     h += 1 if item.consumable               #消耗品
  432.     h += 1 unless item.speed.zero?          #速度補正値
  433.    
  434.     h += 1 unless item.hp_recovery_rate==0 and item.hp_recovery==0 #HP 回復
  435.     h += 1 unless item.mp_recovery_rate==0 and item.mp_recovery==0 #MP 回復
  436.    
  437.     h += 1 unless item.parameter_type.zero? #能力値
  438.     h += 1 unless item.base_damage.zero?    #基本ダメージ
  439.    
  440.     h += element_set.size     + 1 if element_set.size     > 0  #屬性
  441.     h += plus_state_set.size  + 1 if plus_state_set.size  > 0  #附加狀態
  442.     h += minus_state_set.size + 1 if minus_state_set.size > 0  #解除狀態
  443.     h += special.size         + 1 if special.size         > 0  #特殊效果
  444.    
  445.     #------------------------------------------------------------------------
  446.     # ● 圖片顯示保證高度
  447.     #------------------------------------------------------------------------
  448.     #h = 6 + now_h if (h - now_h) < 6
  449.     #------------------------------------------------------------------------
  450.     # ● 換算高度
  451.     #------------------------------------------------------------------------
  452.     self.height = h * @size + @name_size + 32
  453.     #------------------------------------------------------------------------
  454.     # ● 生成背景
  455.     #------------------------------------------------------------------------
  456.     self.contents = Bitmap.new(self.width - 32, self.height - 32)
  457.     self.contents.clear
  458.     #------------------------------------------------------------------------
  459.     # ● 名字描繪
  460.     #------------------------------------------------------------------------
  461.     text = item.name
  462.     self.contents.font.color = normal_color#顔色腳本
  463.     self.contents.font.size = @name_size
  464.     if text.nil?
  465.       self.visible = false
  466.     else
  467.       self.visible = true
  468.       self.contents.draw_text(0,0, text.size*7, 20, text, 0)
  469.     end
  470.     #------------------------------------------------------------------------
  471.     # ● 說明描繪
  472.     #------------------------------------------------------------------------
  473.      x = 0
  474.     @y += 1
  475.     while ((text = description.slice!(/./m)) != nil)
  476.       self.contents.font.color = normal_color
  477.       self.contents.font.size = @size
  478.       self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
  479.       x+=1
  480.       if x == @word
  481.          x = 0
  482.         @y += 1
  483.       end
  484.     end
  485.     #------------------------------------------------------------------------
  486.     # ● 圖標描繪
  487.     #------------------------------------------------------------------------
  488.     #bitmap = Cache.system("Iconset")
  489.     #rect = Rect.new(item.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
  490.     #self.contents.blt(0, y*size + 20, bitmap, rect, 255)
  491.     #------------------------------------------------------------------------
  492.     # ● 效果範圍
  493.     #------------------------------------------------------------------------
  494.     text = phrase[:scope] +":"
  495.     draw_text(text, 1, move)
  496.     text = scope[item.scope]
  497.     draw_text(text, 1, move + @size)
  498.     #------------------------------------------------------------------------
  499.     # ● 價格
  500.     #------------------------------------------------------------------------
  501.     text = phrase[:price] + item.price.to_s
  502.     draw_text(text, 1, move)
  503.     #------------------------------------------------------------------------
  504.     # ● 消耗品
  505.     #------------------------------------------------------------------------
  506.     if item.consumable
  507.       text = phrase[:consumable]
  508.       draw_text(text, 1, move)
  509.     end
  510.     #------------------------------------------------------------------------
  511.     # ● 速度補正値
  512.     #------------------------------------------------------------------------
  513.     unless item.speed.zero?
  514.       text = phrase[:speed]
  515.       draw_text(text, 1, move)
  516.     end
  517.     #------------------------------------------------------------------------
  518.     # ● HP回復
  519.     #------------------------------------------------------------------------
  520.     unless item.hp_recovery_rate.zero? and item.hp_recovery.zero?
  521.       if item.hp_recovery_rate > 0 and item.hp_recovery > 0
  522.         text = " + "
  523.       else
  524.         text = ""
  525.       end
  526.       
  527.       unless item.hp_recovery_rate.zero?
  528.         text = item.hp_recovery_rate.to_s + "%" + text
  529.       end
  530.       unless item.hp_recovery.zero?
  531.         text += item.hp_recovery.to_s
  532.       end
  533.       text = phrase[:recover] +":" + phrase[:hp] + text
  534.       draw_text(text, 1, move)
  535.     end
  536.     #------------------------------------------------------------------------
  537.     # ● SP回復
  538.     #------------------------------------------------------------------------
  539.     unless item.mp_recovery_rate.zero? and item.mp_recovery.zero?
  540.       if item.mp_recovery_rate > 0 and item.mp_recovery > 0
  541.         text = " + "
  542.       else
  543.         text = ""
  544.       end
  545.       
  546.       unless item.mp_recovery_rate.zero?
  547.         text = item.mp_recovery_rate.to_s + "%" + text
  548.       end
  549.       unless item.mp_recovery.zero?
  550.         text += item.mp_recovery.to_s
  551.       end
  552.       text = phrase[:recover] +":" + phrase[:mp] + text
  553.       draw_text(text, 1, move)
  554.     end
  555.     #------------------------------------------------------------------------
  556.     # ● 能力值增加
  557.     #------------------------------------------------------------------------
  558.     unless item.parameter_type.zero?
  559.       text= parameter_type[item.parameter_type]+" +"+item.parameter_points.to_s
  560.       draw_text(text, 1, move)
  561.     end
  562.     #------------------------------------------------------------------------
  563.     # ● 基本ダメージ
  564.     #------------------------------------------------------------------------
  565.     unless item.base_damage.zero?
  566.       text = phrase[:base_damage] +":" + item.base_damage.to_s
  567.       draw_text(text, 1, move)
  568.     end
  569.     #------------------------------------------------------------------------
  570.     # ● 屬性
  571.     #------------------------------------------------------------------------
  572.     if element_set.size > 0
  573.       text = phrase[:elements]+":"
  574.       draw_text(text, 1, move)
  575.       element_set.each do |i|
  576.         text = $data_system.elements[i]
  577.         draw_text(text, 1, move + @size)
  578.       end
  579.     end
  580.     #------------------------------------------------------------------------
  581.     # ● 添加狀態
  582.     #------------------------------------------------------------------------
  583.     unless plus_state_set.empty?
  584.       text = phrase[:plus_states]+":"
  585.       draw_text(text, 1, move)
  586.       plus_state_set.each do |i|
  587.         text = $data_states[i].name
  588.         draw_text(text, 1, move + @size)
  589.       end
  590.     end
  591.     #------------------------------------------------------------------------
  592.     # ● 解除狀態
  593.     #------------------------------------------------------------------------
  594.     unless minus_state_set.empty?
  595.       text = phrase[:minus_states]+":"
  596.       draw_text(text, 1, move)
  597.       minus_state_set.each do |i|
  598.         text = $data_states[i].name
  599.         draw_text(text, 1, move + @size)
  600.       end
  601.     end
  602.     #------------------------------------------------------------------------
  603.     # ● 特殊效果
  604.     #------------------------------------------------------------------------
  605.     if special.size > 0
  606.       text = phrase[:special]+":"
  607.       draw_text(text, 1, move)
  608.       special.each {|text| draw_text(text, 1, move + @size)}
  609.     end
  610.   end
  611. #////////////////////////////////////////////////////////////////////////////
  612.   #--------------------------------------------------------------------------
  613.   # ● 技能帮助窗口
  614.   #--------------------------------------------------------------------------
  615.   def set_skill_text(skill)
  616.     #----------------------------#
  617.     # 取得屬性、狀態、說明之副本 #
  618.     #----------------------------#
  619.     description = skill.description.clone
  620.     element_set = skill.element_set.clone
  621.     plus_state_set = skill.plus_state_set.clone
  622.     minus_state_set = skill.minus_state_set.clone
  623.     # 過濾不顯示的描述
  624.     element_set -= @unshow_elements
  625.     plus_state_set -= @unshow_states
  626.     minus_state_set -= @unshow_states
  627.     # 初始化設定
  628.     x ,h, move = 0, 0, 0
  629.     phrase = @phrase
  630.     scope = @scope
  631.     #------------------#
  632.     # 取得特殊效果數據 #
  633.     #------------------#
  634.     special = []
  635.     special << phrase[:physical_attack] if skill.physical_attack #物理攻撃
  636.     special << phrase[:damage_to_mp]    if skill.damage_to_mp    #MPにダメージ
  637.     special << phrase[:absorb_damage]   if skill.absorb_damage   #ダメージを吸収
  638.     special << phrase[:ignore_defense]  if skill.ignore_defense  #防御力無視
  639.     #------------------------------------------------------------------------
  640.     # ● 確定背景圖片的高度
  641.     #------------------------------------------------------------------------
  642.     h += (description.size/3/@word)
  643.     h += 1 if (description.size/3%@word) > 0
  644.     now_h = h
  645.    
  646.     h += 4                                  #効果範囲,消費MP,命中率
  647.     h += 1 unless skill.speed.zero?         #速度補正値
  648.     h += 1 unless skill.base_damage.zero?   #基本ダメージ
  649.    
  650.    
  651.    
  652.     h += element_set.size     + 1 if element_set.size     > 0  #屬性
  653.     h += plus_state_set.size  + 1 if plus_state_set.size  > 0  #附加狀態
  654.     h += minus_state_set.size + 1 if minus_state_set.size > 0  #解除狀態
  655.     h += special.size         + 1 if special.size         > 0  #特殊效果
  656.     #------------------------------------------------------------------------
  657.     # ● 換算高度
  658.     #------------------------------------------------------------------------
  659.     self.height=h * @size + @name_size + 32  
  660.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  661.     self.contents.clear
  662.    
  663.     #------------------------------------------------------------------------
  664.     # ● 名字描述
  665.     #------------------------------------------------------------------------
  666.     text = skill.name
  667.     self.contents.font.color = Color.new(255, 255, 128, 255)
  668.     self.contents.font.size = @name_size
  669.     if text!=nil
  670.       self.visible = true
  671.       self.contents.draw_text(0,0, text.size*7, @name_size, text, 0)
  672.     else
  673.       self.visible = false
  674.     end
  675.    
  676.     #------------------------------------------------------------------------
  677.     # ● 說明描述
  678.     #------------------------------------------------------------------------
  679.     x = 0
  680.     @y += 1
  681.     text = description
  682.     while ((text = description.slice!(/./m)) != nil)
  683.       self.contents.font.color = normal_color
  684.       self.contents.font.size = @size
  685.       self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
  686.       x+=1
  687.       if x==@word
  688.         x = 0
  689.         @y += 1
  690.       end
  691.     end
  692.    
  693.     #------------------------------------------------------------------------
  694.     # ● 攻擊範圍
  695.     #------------------------------------------------------------------------
  696.     text = phrase[:scope] +":"
  697.     draw_text(text, 1, move)
  698.     text = scope[skill.scope]
  699.     draw_text(text, 1, move + @size)
  700.     #------------------------------------------------------------------------
  701.     # ● 基本ダメージ
  702.     #------------------------------------------------------------------------
  703.     unless skill.base_damage .zero?
  704.       text = skill.base_damage > 0 ? phrase[:base_damage] : phrase[:recovery]
  705.       text += ":" + skill.base_damage.abs.to_s
  706.       draw_text(text, 1, move)
  707.     end
  708.     #------------------------------------------------------------------------
  709.     # ● 消費SP描述
  710.     #------------------------------------------------------------------------
  711.     text = phrase[:mp_cost] +":"+ skill.mp_cost.to_s
  712.     draw_text(text, 1, move)
  713.     #------------------------------------------------------------------------
  714.     # ● 命中率描述
  715.     #------------------------------------------------------------------------
  716.     text = phrase[:hit] + ":" + skill.hit.to_s + "%"
  717.     draw_text(text, 1, move)
  718.     #------------------------------------------------------------------------
  719.     # ● 屬性
  720.     #------------------------------------------------------------------------
  721.     if element_set.size > 0
  722.       text = phrase[:elements]+":"
  723.       draw_text(text, 1, move)
  724.       element_set.each do |i|
  725.         text = $data_system.elements[i]
  726.         draw_text(text, 1, move + @size)
  727.       end
  728.     end
  729.     #------------------------------------------------------------------------
  730.     # ● 添加狀態
  731.     #------------------------------------------------------------------------
  732.     unless plus_state_set.empty?
  733.       text = phrase[:plus_states]+":"
  734.       draw_text(text, 1, move)
  735.       plus_state_set.each do |i|
  736.         text = $data_states[i].name
  737.         draw_text(text, 1, move + @size)
  738.       end
  739.     end
  740.     #------------------------------------------------------------------------
  741.     # ● 解除狀態
  742.     #------------------------------------------------------------------------
  743.     unless minus_state_set.empty?
  744.       text = phrase[:minus_states]+":"
  745.       draw_text(text, 1, move)
  746.       minus_state_set.each do |i|
  747.         text = $data_states[i].name
  748.         draw_text(text, 1, move + @size)
  749.       end
  750.     end
  751.     #------------------------------------------------------------------------
  752.     # ● 特殊效果
  753.     #------------------------------------------------------------------------
  754.     if special.size > 0
  755.       text = phrase[:special]+":"
  756.       draw_text(text, 1, move)
  757.       special.each {|text| draw_text(text, 1, move + @size)}
  758.     end  
  759.   end
  760. end

  761. #==============================================================================
  762. # ■ Window_Item
  763. #------------------------------------------------------------------------------
  764. #  アイテム画面などで、所持アイテムの一覧を表示するウィンドウです。
  765. #==============================================================================

  766. class Window_Item < Window_Selectable
  767.   #--------------------------------------------------------------------------
  768.   # ● ヘルプテキスト更新
  769.   #--------------------------------------------------------------------------
  770.   def update_help
  771.     @help_window.set_text(item)
  772.     #修正窗口位置
  773.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  774.   end
  775. end
  776. #==============================================================================
  777. # ■ Window_Skill
  778. #------------------------------------------------------------------------------
  779. #  スキル画面などで、使用できるスキルの一覧を表示するウィンドウです。
  780. #==============================================================================

  781. class Window_Skill < Window_Selectable
  782.   #--------------------------------------------------------------------------
  783.   # ● ヘルプテキスト更新
  784.   #--------------------------------------------------------------------------
  785.   def update_help
  786.     @help_window.set_text(skill)
  787.     #修正窗口位置
  788.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  789.   end
  790. end
  791. #==============================================================================
  792. # ■ Window_Equip
  793. #------------------------------------------------------------------------------
  794. #  装備画面で、アクターが現在装備しているアイテムを表示するウィンドウです。
  795. #==============================================================================

  796. class Window_Equip < Window_Selectable
  797.   #--------------------------------------------------------------------------
  798.   # ● ヘルプテキスト更新
  799.   #--------------------------------------------------------------------------
  800.   def update_help
  801.     @help_window.set_text(item)
  802.     #修正窗口位置
  803.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  804.   end
  805. end
  806. #==============================================================================
  807. # ■ Window_ShopBuy
  808. #------------------------------------------------------------------------------
  809. #  ショップ画面で、購入できる商品の一覧を表示するウィンドウです。
  810. #==============================================================================
  811. class Window_ShopBuy < Window_Selectable
  812.   #--------------------------------------------------------------------------
  813.   # ● ヘルプテキスト更新
  814.   #--------------------------------------------------------------------------
  815.   def update_help
  816.     @help_window.set_text(item)
  817.     #修正窗口位置
  818.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  819.   end
  820. end
复制代码

2_副本.png (48.05 KB, 下载次数: 23)

2_副本.png

3.png (68.24 KB, 下载次数: 24)

3.png

Project9.rar

250.14 KB, 下载次数: 44

点评

把工程上傳看看  发表于 2012-5-4 20:21

Lv4.逐梦者 (超级版主)

嗜谎者

梦石
2
星屑
17455
在线时间
3912 小时
注册时间
2010-9-12
帖子
9655

极短25评委极短24评委极短23评委极短22评委极短21评委开拓者

2
发表于 2012-5-4 20:18:10 | 只看该作者
问题肯定不在脚本上,这两个我都用过的,肯定是术语什么的被你搞错了。。。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2012-4-5
帖子
117
3
 楼主| 发表于 2012-5-5 08:43:34 | 只看该作者
上传了  那个给我看下!!!

点评

看下 我給你的消息提醒  发表于 2012-5-5 09:14
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2188 小时
注册时间
2011-6-23
帖子
1044
4
发表于 2012-5-5 09:11:21 | 只看该作者
本帖最后由 lsu666666 于 2012-5-5 09:14 编辑
344143370 发表于 2012-5-5 08:43
上传了  那个给我看下!!!

套用看看
Project9.rar (250.68 KB, 下载次数: 168)
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2012-4-5
帖子
117
5
 楼主| 发表于 2012-5-5 11:04:04 | 只看该作者
lsu666666 发表于 2012-5-5 09:11
套用看看

不知道为什么  我名字的装备 就是不行 麻烦你在给我看下是那里出错了?

Project9.rar

251.25 KB, 下载次数: 38

点评

看我給你的消息  发表于 2012-5-5 11:09
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-24 20:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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