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

Project1

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

[已经过期] 用了一个脚本出现的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
199
在线时间
248 小时
注册时间
2012-4-29
帖子
386
跳转到指定楼层
1
发表于 2013-10-30 22:57:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 魔力的觉醒 于 2013-10-30 23:26 编辑

用了这位大大的范例脚本http://rpg.blue/forum.php?mod=vi ... p;page=1#pid2351330
出现的问题如下  
不兼容物品描绘脚本。改怎么调
你的意思就是要打架咯?

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
2
发表于 2013-10-31 13:26:55 | 只看该作者
把2个脚本分别贴出来吧,你这样问我很难说……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
199
在线时间
248 小时
注册时间
2012-4-29
帖子
386
3
 楼主| 发表于 2013-10-31 17:06:57 | 只看该作者
本帖最后由 76213585 于 2013-10-31 20:12 编辑
tan12345 发表于 2013-10-31 13:26
把2个脚本分别贴出来吧,你这样问我很难说……

只是装备颜色描绘不兼容了  这是全部的脚本  麻烦帮我调一下
还有这里的字能否改成别的颜色么!
如果很麻烦的话就算了 !!
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ LBQ's Equip Randomization Script - Beta
  4. #------------------------------------------------------------------------------
  5. #  Author: LBQ                                                  lbq.mist.so
  6. #==============================================================================
  7. # ■ Version History
  8. #------------------------------------------------------------------------------
  9. #   - 10/21/2013 Started
  10. #   - 10/25/2013 Beta Version Finished
  11. #   - 10/26/2013 Patch 1 Finished
  12. #   - 10/26/2013 Finished Refoging and Enchanting
  13. #==============================================================================
  14. # ■ Compatibility
  15. #------------------------------------------------------------------------------
  16. #   - Because this almost rewrite the item system so do not expect any compati-
  17. #     bility
  18. #   - Only Works in RPG Maker VX Ace
  19. #==============================================================================
  20. # ■ Manual
  21. #------------------------------------------------------------------------------
  22. #   - Use these in event scripts
  23. #     -- gain_enchanted_armor(id,[possible_effects])
  24. #          - This can give you a randomnized armor
  25. #     -- gain_enchanted_weapon(id,[possible_effects])
  26. #==============================================================================
  27.  
  28.  
  29.  
  30. $imported ||= {}
  31. $imported[:lbq_equip_randomnization] = 'beta'
  32. module LBQ_Delegate
  33.   def delegate_item
  34.     self.object
  35.   end
  36.  
  37.  
  38.   def can_delegate?(id)
  39.     if self.object.respond_to? id
  40.       return true
  41.     end
  42.  
  43.     return false
  44.  
  45.   end
  46.  
  47.  
  48.  
  49.  
  50.   def method_missing(id,*args,&block)
  51.     return nil if is_nil?
  52.     return '' unless object
  53.     if can_delegate?(id)
  54.       delegate_item.send(id,*args,&block)
  55.     else
  56.       super
  57.     end
  58.  
  59.   end
  60.  
  61. end
  62.  
  63.  
  64. class Unique_Equip < Game_BaseItem
  65.  
  66.   attr_accessor :pos
  67.   def initialize
  68.     super
  69.     @pos = 0
  70.   end
  71.  
  72.   def etype_id
  73.     return self.object.etype_id
  74.   end
  75.  
  76.  
  77.  
  78.   def empty?
  79.     return true unless @class
  80.     return false
  81.   end
  82.  
  83.  
  84.   def icon_index
  85.     return 0 if is_nil?
  86.     return self.object.icon_index
  87.   end
  88.  
  89.  
  90.   def params
  91.     return_value = Marshal.load(Marshal.dump(self.object.params))
  92.  
  93.  
  94.     prefix_objects.each do |o|
  95.       o.params.each_with_index do |v,i|
  96.         return_value[i] += v
  97.       end
  98.     end
  99.  
  100.  
  101.     return_value.each_with_index do |v,i|
  102.       return_value[i]*=@param_randomness[i]
  103.       return_value[i] = return_value[i].to_i
  104.     end
  105.  
  106.  
  107.  
  108.  
  109.  
  110.     return [] if is_nil?
  111.     return return_value
  112.   end
  113.  
  114.  
  115.   def price
  116.     return 0 if is_nil?
  117.     return object.price
  118.   end
  119.  
  120. end
  121.  
  122. class Unique_Item < Game_BaseItem
  123.   include LBQ_Delegate
  124.   attr_accessor :pos
  125.   def initialize
  126.     super
  127.     @pos = 0
  128.   end
  129.  
  130.   def itype_id
  131.     return self.object.itype_id
  132.   end
  133.  
  134.  
  135.   def battle_ok?
  136.     return true
  137.   end
  138.  
  139.  
  140. end
  141.  
  142.  
  143. class Game_Actor
  144.   #--------------------------------------------------------------------------
  145.   # ● 初始化装备
  146.   #     equips : 初期装备的数组
  147.   #--------------------------------------------------------------------------
  148.   def init_equips(equips)
  149.     @equips = Array.new(equip_slots.size) { Unique_Equip.new }
  150.     equips.each_with_index do |item_id, i|
  151.       etype_id = index_to_etype_id(i)
  152.       slot_id = empty_slot(etype_id)
  153.       @equips[slot_id].set_equip(etype_id == 0, item_id) if slot_id
  154.     end
  155.     refresh
  156.   end
  157.  
  158.  
  159.   def change_equip(slot_id, item)
  160.     return unless trade_item_with_party(item, @equips[slot_id])
  161.     return if item && equip_slots[slot_id] != item.etype_id
  162.     if item.nil?
  163.       @equips[slot_id] = Unique_Equip.new
  164.     else
  165.       @equips[slot_id] = item
  166.     end
  167.     refresh
  168.   end
  169.  
  170.  
  171.   def trade_item_with_party(new_item, old_item)
  172.     $game_party.gain_item(old_item, 1)
  173.     $game_party.lose_item(new_item, 1)
  174.     return true
  175.   end
  176. end
  177.  
  178.  
  179.  
  180. class Game_Party
  181.   attr_reader :items,:weapons,:armors
  182.  
  183.   def items
  184.     @items = @items.select{|i| !i.is_nil?}
  185.     @items = @items.compact
  186.     return @items
  187.   end
  188.  
  189.   alias lbq_ue_init_items init_all_items
  190.   def init_all_items
  191.     lbq_ue_init_items
  192.     @items = []
  193.     @weapons = []
  194.     @armors = []
  195.   end
  196.  
  197.   alias lbq_ue_gain_item gain_item
  198.   def gain_item(item, amount, include_equip = false)
  199.     if item.class == RPG::Weapon
  200.       amount.times do
  201.         new_one = Unique_Equip.new
  202.         new_one.object = item
  203.         @weapons << new_one
  204.       end
  205.     elsif item.class == RPG::Armor
  206.       amount.times do
  207.         new_one = Unique_Equip.new
  208.         new_one.object = item
  209.         @armors << new_one
  210.       end
  211.     elsif item.class == Unique_Equip && item.is_armor?
  212.       if amount == 1
  213.         @armors.push item
  214.       else
  215.         @armors.delete(item)
  216.       end
  217.     elsif item.class == Unique_Equip && item.is_weapon?
  218.       if amount == 1
  219.         @weapons.push item
  220.       else
  221.         @weapons.delete(item)
  222.       end
  223.     elsif item.class == Unique_Item
  224.       puts amount
  225.       if amount ==1
  226.         @items.push item
  227.       else
  228.         @items.each do |i|
  229.  
  230.           if i.name == item.name
  231.             @items.delete(i)
  232.             break
  233.           end
  234.         end
  235.  
  236.       end
  237.  
  238.     else
  239.       amount.times do
  240.         new_one = Unique_Item.new
  241.         new_one.object = item
  242.         @items << new_one
  243.       end
  244.     end # if
  245.     sort_all
  246.   end
  247.  
  248.  
  249.  
  250.  
  251.   def sort(x)
  252.     #x.sort! { |a, b|  a.item_id <=> b.item_id }
  253.     x.each_with_index do |item,i|
  254.       x.delete(item) unless i.class
  255.       item.pos = i
  256.     end
  257.   end
  258.  
  259.   def sort_all
  260.     sort_weapon
  261.     sort_armor
  262.     sort_item
  263.   end
  264.  
  265.  
  266.   def sort_weapon
  267.     sort(@weapons)
  268.   end
  269.  
  270.  
  271.   def sort_armor
  272.     sort(@armors)
  273.   end
  274.  
  275.   def sort_item
  276.     sort(@items)
  277.   end
  278.  
  279.  
  280.   #--------------------------------------------------------------------------
  281.   # ● 消耗物品
  282.   #    减少 1 个持有数。
  283.   #--------------------------------------------------------------------------
  284.   def consume_item(item)
  285.     lose_item(item, 1) if item.is_a?(Unique_Item) && item.consumable
  286.   end
  287.  
  288. end
  289.  
  290. class Game_Battler < Game_BattlerBase
  291.   #--------------------------------------------------------------------------
  292.   # ● 技能/使用物品
  293.   #    对使用目标使用完毕后,应用对于使用目标以外的效果。
  294.   #--------------------------------------------------------------------------
  295.   def use_item(item)
  296.     pay_skill_cost(item) if item.is_a?(RPG::Skill)
  297.     consume_item(item)   if item.is_a?(Unique_Item)
  298.     item.effects.each {|effect| item_global_effect_apply(effect) }
  299.   end
  300. end
  301.  
  302.  
  303.  
  304. class Game_Action
  305.   #--------------------------------------------------------------------------
  306.   # ● 设置物品
  307.   #--------------------------------------------------------------------------
  308.   def set_item(item_id)
  309.     new_one = $data_items[item_id]
  310.     @item = Unique_Item.new
  311.     @item.object = new_one
  312.     self
  313.   end
  314. end
  315.  
  316.  
  317. #==============================================================================
  318. # ■ Game_BaseItem
  319. #------------------------------------------------------------------------------
  320. #  管理技能、物品、武器、护甲的统一类。会根据自己的所属类别而管理不同的数据。
  321. #==============================================================================
  322.  
  323. class Game_BaseItem
  324.  
  325.  
  326.   attr_reader  :item_id
  327.  
  328.  
  329.   def id
  330.     return nil if is_nil?
  331.     return object.id
  332.   end
  333. end
  334.  
  335.  
  336. class Window_ItemList < Window_Selectable
  337.   #--------------------------------------------------------------------------
  338.   # ● 查询列表中是否含有此物品
  339.   #--------------------------------------------------------------------------
  340.   def include?(item)
  341.     case @category
  342.     when :item
  343.       item.is_a?(Unique_Item) &&! item.is_nil?
  344.     when :weapon
  345.       item.is_a?(Unique_Equip) && item.object.is_a?(RPG::Weapon)
  346.     when :armor
  347.       item.is_a?(Unique_Equip) && item.object.is_a?(RPG::Armor)
  348.     when :key_item
  349.       false
  350.     else
  351.       false
  352.     end
  353.   end
  354.  
  355.   #--------------------------------------------------------------------------
  356.   # ● 绘制项目
  357.   #--------------------------------------------------------------------------
  358.   def draw_item(index)
  359.     item = @data[index]
  360.     if item
  361.       rect = item_rect(index)
  362.       rect.width -= 4
  363.       draw_item_name(item, rect.x, rect.y, enable?(item)) unless item.is_nil? || item.object.nil?
  364.     end
  365.   end
  366.  
  367. end
  368.  
  369.  
  370. class Window_EquipItem < Window_ItemList
  371.   #--------------------------------------------------------------------------
  372.   # ● 查询使用列表中是否含有此物品
  373.   #--------------------------------------------------------------------------
  374.   alias lbq_ue_we_include? include?
  375.   def include?(item)
  376.  
  377.     return true if item == nil
  378.     return false unless item.is_a?(Unique_Equip)
  379.     return lbq_ue_we_include?(item.object)
  380.   end
  381. end
  382.  
  383. class Game_BattlerBase
  384.   #--------------------------------------------------------------------------
  385.   # ● 判定技能/使用物品是否可用
  386.   #--------------------------------------------------------------------------
  387.   def usable?(item)
  388.     if item
  389.       puts item.name.to_s + " -- " + item.class.inspect if item.name
  390.     end
  391.  
  392.     #puts skill_conditions_met?(item) if item.is_a?(RPG::Sk
  393.     return skill_conditions_met?(item) if item.is_a?(RPG::Skill)
  394.     puts "Item Conditions Met? #{item_conditions_met?(item)  if item.is_a?(Unique_Item)}"
  395.     return item_conditions_met?(item)  if item.is_a?(Unique_Item)
  396.     return false
  397.   end
  398. end
  399.  
  400. class Game_Party
  401.   def has_item?(item, include_equip = false)
  402.     puts "Has Item Check Class: #{item.class}"
  403.     return false if item.name.nil?
  404.     puts "The Item has a Name"
  405.  
  406.     #puts "Items Array: #{items.collect{|i|i.name}}"
  407.     puts "This Item: #{item}"
  408.  
  409.  
  410.  
  411.     result = false
  412.     @items.each do |i|
  413.       puts "Comparing: #{i.name} vs #{item.name}"
  414.       if i.name == item.name
  415.  
  416.         result = true
  417.       end
  418.     end
  419.  
  420.  
  421.     puts "Found this Item in the item array" if result
  422.     puts "Does not have it in the item array" unless result
  423.  
  424.     return result if result
  425.  
  426.     return true if @items.include?(item) || @armors.include?(item) || @weapons.include?(item)
  427.     return include_equip ? members_equip_include?(item) : false
  428.   end
  429.  
  430. end
  431.  
  432. class Game_Action
  433.   #--------------------------------------------------------------------------
  434.   # ● 获取物品实例
  435.   #--------------------------------------------------------------------------
  436.   def item
  437.     puts @item.is_a?(Unique_Item)
  438.     return @item if @item.is_a?(Unique_Item)
  439.     return @item.object
  440.   end
  441. end
  442.  
  443.  
  444. class Window_ItemList
  445.   #--------------------------------------------------------------------------
  446.   # ● 查询此物品是否可用
  447.   #--------------------------------------------------------------------------
  448.   def enable?(item)
  449.     return false unless item
  450.     $game_party.usable?(item)
  451.   end
  452. end
  453.  
  454.  
  455.  
  456. module ADE
  457.   class << self
  458.     def get_all_prefix(mode = :weapon)
  459.       db = $data_weapons if mode == :weapon
  460.       db = $data_armors if mode == :armor
  461.       db = $data_items  if mode == :items
  462.       objects = db.select do |w|
  463.         if w
  464.           w.note.include? "<PREFIX>"
  465.         else
  466.           false
  467.         end
  468.  
  469.       end
  470.  
  471.       return objects.collect{|o| o.id}
  472.     end
  473.   end
  474. end
  475.  
  476.  
  477.  
  478.  
  479. class Unique_Equip
  480.   include LBQ_Delegate
  481.   attr_accessor :prefixes
  482.   alias lbq_unique_equip_prefix_init initialize
  483.   def initialize
  484.     lbq_unique_equip_prefix_init
  485.     # PREFIX - All Integers
  486.     @prefixes = []
  487.     @prefix_features = {}
  488.     @param_randomness = Array.new(8,1.0)
  489.     @price_randomness = 1.0
  490.     regenerate_prefix_features
  491.   end
  492.  
  493.   def generate_price_randomness
  494.     @price_randomness = the_rand_num
  495.   end
  496.  
  497.  
  498.   def generate_param_randomness
  499.     @param_randomness = @param_randomness.map{|v| the_rand_num}
  500.   end
  501.  
  502.   def the_rand_num
  503.     num = rand(40) + 80
  504.     return num/100.0
  505.   end
  506.  
  507.   def enchant(id)
  508.     @prefixes.push(id)
  509.     regenerate_prefix_feature_about id
  510.     puts "Prefixes: #{@prefix_features[id]}"
  511.   end
  512.  
  513.   def price
  514.     return 0 if is_nil?
  515.     value = object.price
  516.     self.prefix_objects.each do |o|
  517.       value+=o.price
  518.     end
  519.  
  520.     value*=@price_randomness
  521.     return value.to_i
  522.  
  523.   end
  524.  
  525.  
  526.  
  527.   def regenerate_prefix_features
  528.     self.prefix_objects.each_with_index do |o,i|
  529.       regenerate_prefix_feature_about(i)
  530.     end
  531.   end
  532.  
  533.  
  534.  
  535.   def regenerate_prefix_feature_about(id)
  536.     feature_arrays = []
  537.       object_thing = $data_weapons[id]
  538.       object_thing = $data_armors[id] if is_armor?
  539.  
  540.  
  541.  
  542.     object_thing.features.each do |f|
  543.       clone_f = Marshal.load(Marshal.dump(f))
  544.  
  545.       multi = (rand(40).to_f + 80.0)/100.0
  546.       multi = multi.round(2)
  547.       clone_f.value = clone_f.value*multi
  548.       clone_f.value = clone_f.value.round(2)
  549.       feature_arrays << clone_f
  550.     end
  551.     @prefix_features[id] = feature_arrays
  552.   end
  553.  
  554.  
  555.   def prefix_objects
  556.     @prefixes.collect {|p| db[p]}
  557.   end
  558.  
  559.  
  560.   def db
  561.     is_weapon? ? $data_weapons : $data_armors
  562.   end
  563.  
  564.  
  565.  
  566.  
  567.   def name
  568.     return nil if is_nil?
  569.     return '' unless object.respond_to? :name
  570.     return add_suffix(self.object.name)
  571.   end
  572.  
  573.   def add_suffix(str)
  574.  
  575.     s = ''
  576.  
  577.     @prefixes.each do |p|
  578.       name = db[p].name
  579.       s+=name
  580.     end
  581.  
  582.     s = s + "的" unless s.empty?
  583.     str = s + str
  584.     return str
  585.   end
  586.  
  587.  
  588.   def features
  589.     return @prefix_features.values.inject([]){|b,r| b+=r}
  590.     return weapon_features if is_weapon?
  591.     return armor_features  if is_armor?
  592.     return []
  593.   end
  594.  
  595.   def weapon_features
  596.     return_value = []
  597.     @prefixes.each do |x|
  598.       return_value += $data_weapons[x].features
  599.     end
  600.     return return_value
  601.   end
  602.  
  603.   def armor_features
  604.     return_value = []
  605.     @prefixes.each do |x|
  606.       return_value += $data_armors[x].features
  607.     end
  608.     return return_value
  609.   end
  610.  
  611.  
  612.  
  613. end
  614.  
  615. class Game_Actor
  616.   #--------------------------------------------------------------------------
  617.   # ● 获取装备实例的数组
  618.   #--------------------------------------------------------------------------
  619.   def equips
  620.     new_value = @equips.collect do |item|
  621.       item.object
  622.     end
  623.     return new_value
  624.   end
  625.  
  626.   #--------------------------------------------------------------------------
  627.   # ● 以数组方式获取拥有特性所有实例
  628.   #--------------------------------------------------------------------------
  629.   def feature_objects
  630.     super + [actor] + [self.class] + equips.compact + @equips
  631.   end
  632.  
  633.  
  634.   #--------------------------------------------------------------------------
  635.   # ● 获取武器实例的数组
  636.   #--------------------------------------------------------------------------
  637.   def weapons
  638.     @equips.select {|item| item.is_weapon? }.collect{|i| i.object}
  639.   end
  640.   #--------------------------------------------------------------------------
  641.   # ● 获取护甲实例的数组
  642.   #--------------------------------------------------------------------------
  643.   def armors
  644.     @equips.select {|item| item.is_armor? }.collect{|i| i.object}
  645.   end
  646. end
  647.  
  648. class Game_Actor
  649.   #--------------------------------------------------------------------------
  650.   # ● 获取装备实例的数组
  651.   #--------------------------------------------------------------------------
  652.   def drawn_equips
  653.     @equips.collect{|e| e}
  654.   end
  655. end
  656.  
  657. class Window_EquipSlot
  658.   #--------------------------------------------------------------------------
  659.   # ● 绘制项目
  660.   #--------------------------------------------------------------------------
  661.   def draw_item(index)
  662.     return unless @actor
  663.     rect = item_rect_for_text(index)
  664.     change_color(system_color, enable?(index))
  665.     draw_text(rect.x, rect.y, 92, line_height, slot_name(index))
  666.     draw_item_name(@actor.drawn_equips[index], rect.x + 92, rect.y, enable?(index))
  667.   end
  668. end
  669.  
  670. class Game_Actor
  671.   #--------------------------------------------------------------------------
  672.   # ● 强制更换装备
  673.   #     slot_id : 装备栏 ID
  674.   #     item    : 武器/护甲(为 nil 时装备解除)
  675.   #--------------------------------------------------------------------------
  676.   def force_change_equip(slot_id, item)
  677.     if item.nil?
  678.       @equips[slot_id] = Unique_Equip.new
  679.     else
  680.       @equips[slot_id] = item
  681.     end
  682.     release_unequippable_items(false)
  683.     refresh
  684.   end
  685. end
  686.  
  687. class Game_Party
  688.   def gain_enchanted_weapon(*args)
  689.     item_id = args[0]
  690.     new_one = Unique_Equip.new
  691.     new_one.object = $data_weapons[item_id]
  692.     if args.length == 1
  693. #~       case rand(10)
  694. #~       when 0..4
  695. #~         gp = [prefixes.sample]
  696. #~       when 5..7
  697. #~         gp = [prefixes.sample,prefixes.sample]
  698. #~         gp = gp.uniq
  699. #~       else
  700. #~         gp = []
  701. #~       end
  702.       gp = Prefix_Gen.generate_prefix(:weapon)
  703.     else
  704.       gp = args[1]
  705.     end
  706.     gp.each do |p|
  707.       new_one.enchant(p)
  708.     end
  709.  
  710.     new_one.generate_param_randomness
  711.     new_one.generate_price_randomness
  712.     @weapons << new_one
  713.   end
  714.  
  715.   def prefixes
  716.     return ADE.get_all_prefix
  717.   end
  718.  
  719.  
  720.   def armor_prefixes
  721.     return ADE.get_all_prefix(:armor)
  722.   end
  723.  
  724.  
  725.  
  726.   def gain_enchanted_armor(*args)
  727.     item_id = args[0]
  728.     new_one = Unique_Equip.new
  729.     new_one.object = $data_armors[item_id]
  730.     if args.length == 1
  731. #~       case rand(10)
  732. #~       when 0..4
  733. #~         gp = [armor_prefixes.sample]
  734. #~       when 5..7
  735. #~         gp = [armor_prefixes.sample,armor_prefixes.sample]
  736. #~         gp = gp.uniq
  737. #~       else
  738. #~         gp = []
  739. #~       end
  740.       gp = Prefix_Gen.generate_prefix(:armor)
  741.     else
  742.       gp = args[1]
  743.     end
  744.     gp.each do |p|
  745.       new_one.enchant(p)
  746.     end
  747.     new_one.generate_param_randomness
  748.     new_one.generate_price_randomness
  749.     @armors << new_one
  750.   end
  751.  
  752. end
  753.  
  754. class Unique_Item
  755.   attr_reader :prefixes
  756.  
  757.   alias lbq_ui_uni_i_init initialize
  758.   def initialize
  759.     lbq_ui_uni_i_init
  760.     @prefixes = []
  761.     @prefix_effects = {}
  762.     create_all_effects
  763.   end
  764.  
  765.  
  766.   def name
  767.     return nil if is_nil?
  768.     begin
  769.       object.name
  770.     rescue
  771.       return ''
  772.     end
  773.  
  774.     $game_party.items
  775.     ori_name = object.name
  776.     new_name = prefix_objects.inject('') do |o,n|
  777.       o+=n.name
  778.     end
  779.  
  780.     connect_string = ''
  781.     connect_string = '的' unless new_name.empty?
  782.  
  783.     final_name = new_name + connect_string + ori_name
  784.  
  785.     return final_name
  786.   end
  787.  
  788.  
  789.   def prefix_objects
  790.     @prefixes.collect{|p| $data_items[p]}
  791.   end
  792.  
  793.  
  794.  
  795.   def enchant(x)
  796.     @prefixes << x
  797.     create_single_effect(x)
  798.   end
  799.  
  800.  
  801.   def create_all_effects
  802.     @prefixes.each do |p|
  803.       create_single_effect(p)
  804.     end
  805.  
  806.   end
  807.  
  808.  
  809.   def create_single_effect(id)
  810.     clone_e = Marshal.load(Marshal.dump($data_items[id].effects))
  811.     clone_e.each do |e|
  812.       if e
  813.         e.value1*=the_rand_num
  814.         e.value2*=the_rand_num
  815.       end
  816.  
  817.     end
  818.  
  819.     @prefix_effects[id] = clone_e
  820.   end
  821.  
  822.   def the_rand_num
  823.     num = rand(40) + 80
  824.     return num/100.0
  825.   end
  826.  
  827.  
  828.  
  829.   def effects
  830.     return @prefix_effects.values.inject(object.effects) do |o,n|
  831.       o += n
  832.     end
  833.   end
  834.  
  835. end
  836.  
  837. class Game_Party
  838.   def item_prefixes
  839.     ADE.get_all_prefix(:items)
  840.   end
  841.  
  842.   def gain_enchanted_item(*args)
  843.     item_id = args[0]
  844.     new_one = Unique_Item.new
  845.     new_one.object = $data_items[item_id]
  846.     if args.length == 1
  847.       case rand(10)
  848.       when 0..4
  849.         gp = [item_prefixes.sample]
  850.       when 5..7
  851.         gp = [item_prefixes.sample,item_prefixes.sample]
  852.         gp = gp.uniq
  853.       else
  854.         gp = []
  855.       end
  856.     else
  857.       gp = args[1]
  858.     end
  859.  
  860.     gp = []
  861.  
  862.     puts "This thing's GP is #{gp}"
  863.     gp.each do |p|
  864.       new_one.enchant(p)
  865.     end
  866.  
  867.     @items << new_one
  868.   end
  869.  
  870. end
  871.  
  872. class Game_Interpreter
  873.   def gain_enchanted_item(*args)
  874.     $game_party.gain_enchanted_item(*args)
  875.   end
  876.  
  877.   def gain_enchanted_armor(*args)
  878.     $game_party.gain_enchanted_armor(*args)
  879.   end
  880.  
  881.   def gain_enchanted_weapon(*args)
  882.     $game_party.gain_enchanted_weapon(*args)
  883.   end
  884. end
  885.  
  886.  
  887. class Game_Actor
  888.   #--------------------------------------------------------------------------
  889.   # ● 获取普通能力的附加值
  890.   #--------------------------------------------------------------------------
  891.   def param_plus(param_id)
  892.     @equips.select{|e| e.name!=nil}.inject(super) do |r, item|
  893.       r += item.params[param_id]
  894.     end
  895.   end
  896.  
  897.  
  898.  
  899. end
  900. class Window_Base
  901.   #--------------------------------------------------------------------------
  902.   # ● 绘制物品名称
  903.   #     enabled : 有效的标志。false 的时候使用半透明效果绘制
  904.   #--------------------------------------------------------------------------
  905.   def draw_item_name(item, x, y, enabled = true, width = 250)
  906.     return unless item
  907.     draw_icon(item.icon_index, x, y, enabled)
  908.     change_color(normal_color, enabled)
  909.     draw_text(x + 24, y, width, line_height, item.name)
  910.   end
  911. end

第二个
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Equip Help by wyongcan - LBQ Equip Randomnization Special Version
  4. #------------------------------------------------------------------------------
  5. #  修改了说明窗口,增强了装备的说明 作者:wyongcan  发布于66RPG   转载请注明
  6. #==============================================================================
  7. module Help
  8.   CODE ={
  9.     11 => "属性抗性",
  10.     12 => "弱化抗性",
  11.     13 => "状态抗性",
  12.     14 => "状态免疫",
  13.     21 => "普通能力",
  14.     22 => "添加能力",
  15.     23 => "特殊能力",
  16.     31 => "攻击附带属性",
  17.     32 => "攻击附带状态",
  18.     33 => "修正攻击速度",
  19.     34 => "添加攻击次数",
  20.     41 => "添加技能类型",
  21.     42 => "禁用技能类型",
  22.     43 => "添加技能",
  23.     44 => "禁用技能",
  24.     51 => "可装备武器类型",
  25.     52 => "可装备护甲类型",
  26.     53 => "固定装备",
  27.     54 => "禁用装备",
  28.     55 => "装备风格",
  29.     61 => "添加行动次数",
  30.     62 => "特殊标志",
  31.     63 => "消失效果",
  32.     64 => "队伍能力"}
  33.   #特殊标志
  34.   FLAG ={
  35.                 0 => "自动战斗",
  36.                 1 => "擅长防御",
  37.                 2 => "保护弱者",
  38.                 3 => "特技专注"}
  39.   #普通能力
  40.         PARAM ={
  41.                 0 => "最大HP",
  42.                 1 => "最大MP",
  43.                 2 => "物理攻击",
  44.                 3 => "物理防御",
  45.                 4 => "魔法攻击",
  46.                 5 => "魔法防御",
  47.                 6 => "敏 捷 值",
  48.                 7 => "幸 运 值"}
  49.   #添加能力
  50.         XPARAM ={
  51.                 0 => "物理命中几率:",
  52.                 1 => "物理闪避几率:",
  53.                 2 => "必杀几率:",
  54.                 3 => "必杀闪避几率:",
  55.                 4 => "魔法闪避几率:",
  56.                 5 => "魔法反射几率:",
  57.                 6 => "物理反击几率:",
  58.                 7 => "体力值再生速度:",
  59.                 8 => "魔力值再生速度:",
  60.                 9 => "特技值再生速度:"}
  61.   #特殊能力
  62.         SPARAM ={
  63.                 0 => "受到攻击的几率",
  64.                 1 => "防御效果比率",
  65.                 2 => "恢复效果比率",
  66.                 3 => "药理知识",
  67.                 4 => "MP消费率",
  68.                 5 => "TP消耗率",
  69.                 6 => "物理伤害加成",
  70.                 7 => "魔法伤害加成",
  71.                 8 => "地形伤害加成",
  72.                 9 => "经验获得加成"}
  73. #~   #效果范围
  74. #~         SCOPE ={
  75. #~                 0 => "特殊",
  76. #~                 1 => "单个敌人",
  77. #~                 2 => "全体敌人" ,
  78. #~                 3 => "一个随机敌人",
  79. #~                 4 => "两个随机敌人",
  80. #~                 5 => "三个随机敌人",
  81. #~                 6 => "四个随机敌人",
  82. #~                 7 => "单个队友",
  83. #~                 8 => "全体队友",
  84. #~                 9 => "单个队友(无法战斗)",
  85. #~                 10 => "全体队友(无法战斗)",
  86. #~                 11 => "使用者"}
  87.         @队伍能力 ={
  88.                 0 => "遇敌几率减半",
  89.                 1 => "随机遇敌无效",
  90.                 2 => "敌人偷袭无效",
  91.                 3 => "先制攻击几率上升",
  92.                 4 => "获得金钱数量双倍",
  93.                 5 => "物品掉落几率双倍"}
  94.   def self.ready
  95.     @状态 = {}
  96.     @武器类型 = {}
  97.     @防具类型 = {}
  98.     @属性 = {}
  99.     $data_states.each{|x| @状态[x.id] = x.name if x != nil}
  100.     elements = $data_system.elements
  101.     weapon_types = $data_system.weapon_types
  102.     armor_types = $data_system.armor_types
  103.     elements.each_with_index{|x,y| @属性[y] = x if x != ""}
  104.     weapon_types.each_with_index{|x,y| @武器类型[y] = x if x != ""}
  105.     armor_types.each_with_index{|x,y| @防具类型[y] = x if x != ""}
  106.   end
  107.   def self.getequiphelp(equip)
  108.     help = ""
  109.     param = []
  110.     equip.params.each_with_index{|x,y| param.push([PARAM[y],x])}
  111.     param = param.select{|x| x[1] != 0}
  112.     param.each{|x| help += x[0] + ":" + x[1].to_s + "\n"}
  113.     features = equip.features
  114.     features.select{|x| x.code == 55}.each{|x| help += CODE[x.code] + ":双持武器" + "\n"}
  115.     features.select{|x| x.code == 11}.each{|x| help += CODE[x.code] + ":" + @属性[x.data_id] + "*" + x.value.to_s + "\n"}
  116.     features.select{|x| x.code == 12}.each{|x| help += CODE[x.code] + ":" + PARAM[x.data_id] + "*" + x.value.to_s + "\n"}
  117.     features.select{|x| x.code == 13}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "*" + x.value.to_s + "\n"}
  118.     features.select{|x| x.code == 14}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "\n"}
  119.     features.select{|x| x.code == 31}.each{|x| help += CODE[x.code] + ":" + @属性[x.data_id] + "\n"}
  120.     features.select{|x| x.code == 32}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "+" + x.value.to_s + "\n"}
  121.     features.select{|x| x.code == 33}.each{|x| help += CODE[x.code] + ":" + x.value.to_s + "\n"}
  122.     features.select{|x| x.code == 34}.each{|x| help += CODE[x.code] + ":" + x.value.to_s + "\n"}
  123.     features.select{|x| x.code == 41}.each{|x| help += CODE[x.code] + ":" + (x.data_id == 1 ? "特技" : "魔法")  + "\n"}
  124.     features.select{|x| x.code == 42}.each{|x| help += CODE[x.code] + ":" + (x.data_id == 1 ? "特技" : "魔法")  + "\n"}
  125.     features.select{|x| x.code == 43}.each{|x| help += CODE[x.code] + ":" + $data_skills[x.data_id].name  + "\n"}
  126.     features.select{|x| x.code == 44}.each{|x| help += CODE[x.code] + ":" + $data_skills[x.data_id].name  + "\n"}
  127.     features.select{|x| x.code == 51}.each{|x| help += CODE[x.code] + ":" + @武器类型[x.data_id]  + "\n"}
  128.     features.select{|x| x.code == 52}.each{|x| help += CODE[x.code] + ":" + @防具类型[x.data_id]  + "\n"}
  129.     features.select{|x| x.code == 61}.each{|x| help += CODE[x.code] + ":" + x.value.to_s  + "\n"}
  130.     features.select{|x| x.code == 62}.each{|x| help += CODE[x.code] + ":" + FLAG[x.data_id]  + "\n"}
  131.     features.select{|x| x.code == 64}.each{|x| help += CODE[x.code] + ":" + @队伍能力[x.data_id]  + "\n"}
  132.     featuresparam = []
  133.     featuresparam.push features.select{|x| x.code == 21}
  134.     featuresparam.push features.select{|x| x.code == 22}
  135.     featuresparam.push features.select{|x| x.code == 23}
  136.     featuresparam[0].each{|x| help += PARAM[x.data_id] + "*" + x.value.to_s + "\n"}
  137.     featuresparam[1].each{|x| help += XPARAM[x.data_id] + x.value.to_s + "\n"}
  138.     featuresparam[2].each{|x| help += SPARAM[x.data_id] + "*" + x.value.to_s + "\n"}
  139.     help
  140.   end
  141.   def self.getline(text,maxtext)
  142.     xtext = []
  143.     line = 0
  144.     text.each_line{|x| xtext.push x.sub(/\n/){}}
  145.     xtext.each{|x| x.size % maxtext != 0 ? line += x.size / maxtext + 1 : line += x.size / maxtext}
  146.     line
  147.   end
  148. end
  149. #==============================================================================
  150. # ■ Window_Help
  151. #------------------------------------------------------------------------------
  152. #  显示特技和物品等的说明、以及角色状态的窗口
  153. #==============================================================================
  154.  
  155. class Window_Help < Window_Base
  156.   #--------------------------------------------------------------------------
  157.   # ● 初始化对象
  158.   #--------------------------------------------------------------------------
  159.   def initialize(line_number = 0)
  160.     super(0, 0, 210, fitting_height(line_number))
  161.     self.z = 150
  162.     contents.font.size = 10
  163.     hide
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ● 设置内容
  167.   #--------------------------------------------------------------------------
  168.   def set_text(text)
  169.     if text != @text
  170.       @text = text
  171.       refresh
  172.     end
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● 清除
  176.   #--------------------------------------------------------------------------
  177.   def clear
  178.     set_text("")
  179.   end
  180.   #--------------------------------------------------------------------------
  181.   # ● 更新帮助位置
  182.   #--------------------------------------------------------------------------
  183.   def uppos(index,rect,window)
  184.     self.height = fitting_height2(Help.getline(@xtext,13))
  185.     create_contents
  186.     contents.font.size = 14
  187.     rect.x -= window.ox
  188.     rect.y -= window.oy
  189.     ax = rect.x + rect.width + 10
  190.     ax = rect.x - self.width + 10 if ax + self.width > window.width + 10
  191.     ax += window.x
  192.     ax = 0 if ax < 0
  193.     ay = rect.y + rect.height
  194.     ay = rect.y - self.height if ay + self.height > window.height
  195.     ay += window.y
  196.     ay = 0 if ay < 0
  197.     self.x = ax
  198.     self.y = ay
  199.     set_text(@xtext)
  200.     show
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # ● 设置物品
  204.   #     item : 技能、物品等
  205.   #--------------------------------------------------------------------------
  206.   def set_item(item)
  207.     if item == nil
  208.       set_text("")
  209.       return
  210.     end
  211.     @xtext = ""
  212.     @xtext = "名称:" + item.name + "\n"
  213.     @xtext += "介绍:" + item.description + "\n"
  214.     @xtext += "价格:" + item.price.to_s + "\n" if item.is_a?(Unique_Equip) || item.is_a?(Unique_Item)
  215.     @xtext += Help.getequiphelp(item) if item.is_a?(Unique_Equip)
  216.     @xtext = @xtext[0,@text.size - 2] if @xtext[@xtext.size - 2,2] == "\n"
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 刷新
  220.   #--------------------------------------------------------------------------
  221.   def refresh
  222.     contents.clear
  223.     hide if @text == ""
  224.     draw_text_ex(4, 0, @text,width,40,false)
  225.   end
  226. end
  227.  
  228. class Window_Base < Window
  229.   #--------------------------------------------------------------------------
  230.   # ● 计算窗口显示指定行数时的应用高度2*************************
  231.   #--------------------------------------------------------------------------
  232.   def fitting_height2(line_number)
  233.     line_number * contents.font.size + standard_padding * 2
  234.   end
  235. #~ draw_text_ex的增强,使其可以自动换行  原作者:叶子 修改:wyongcan
  236.   #--------------------------------------------------------------------------
  237.   # ● 绘制带有控制符的文本内容
  238.   #   如果传递了width参数的话,会自动换行
  239.   #--------------------------------------------------------------------------
  240.   def draw_text_ex(x, y, text, width = nil,textwidth = nil,normalfont = true)
  241.     reset_font_settings if normalfont == true
  242.     text = convert_escape_characters(text)
  243.     pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
  244.     if width != nil
  245.       pos[:height] = contents.font.size
  246.       pos[:width] = width
  247.       pos[:textwidth] = textwidth
  248.     end
  249.     process_character(text.slice!(0, 1), text, pos) until text.empty?
  250.   end
  251.   #--------------------------------------------------------------------------
  252.   # ● 文字的处理
  253.   #     c    : 文字
  254.   #     text : 绘制处理中的字符串缓存(字符串可能会被修改)
  255.   #     pos  : 绘制位置 {:x, :y, :new_x, :height}
  256.   #--------------------------------------------------------------------------
  257.   def process_character(c, text, pos)
  258.     case c
  259.     when "\r"   # 回车
  260.       return
  261.     when "\n"   # 换行
  262.       process_new_line(text, pos)
  263.     when "\f"   # 翻页
  264.       process_new_page(text, pos)
  265.     when "\e"   # 控制符
  266.       process_escape_character(obtain_escape_code(text), text, pos)
  267.     else        # 普通文字
  268.       pos[:textwidth] == nil ? text_width = text_size(c).width : text_width = pos[:textwidth]
  269.       if pos[:width] != nil && pos[:x] - pos[:new_x] + text_width > pos[:width]
  270.         process_new_line(text, pos)
  271.       end
  272.       process_normal_character(c, pos)
  273.     end
  274.   end
  275. end
  276.  
  277. class Window_ItemList < Window_Selectable
  278.   #--------------------------------------------------------------------------
  279.   # ● 更新帮助内容
  280.   #--------------------------------------------------------------------------
  281.   def update_help
  282.     @help_window.set_item(item)
  283.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil
  284.   end
  285. end
  286.  
  287. class Window_SkillList < Window_Selectable
  288.   #--------------------------------------------------------------------------
  289.   # ● 更新帮助内容
  290.   #--------------------------------------------------------------------------
  291.   def update_help
  292.     @help_window.set_item(item)
  293.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil
  294.   end
  295. end
  296.  
  297. class Window_ShopBuy < Window_Selectable
  298.   #--------------------------------------------------------------------------
  299.   # ● 更新帮助内容
  300.   #--------------------------------------------------------------------------
  301.   def update_help
  302.     @help_window.set_item(item) if @help_window
  303.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window
  304.     @status_window.item = item if @status_window
  305.   end
  306. end
  307.  
  308. class Window_EquipSlot < Window_Selectable
  309.   #--------------------------------------------------------------------------
  310.   # ● 更新帮助内容
  311.   #--------------------------------------------------------------------------
  312.   def update_help
  313.     super
  314.     @help_window.set_item(item) if @help_window
  315.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window
  316.     @status_window.set_temp_actor(nil) if @status_window
  317.   end
  318. end
  319.  
  320. class Scene_Shop < Scene_MenuBase
  321.         alias on_sell_ok_old on_sell_ok
  322.         def on_sell_ok
  323.                 on_sell_ok_old
  324.                 @help_window.hide
  325.         end
  326.         alias on_buy_ok_old on_buy_ok
  327.         def on_buy_ok
  328.                 on_buy_ok_old
  329.                 @help_window.hide
  330.         end
  331.         alias on_number_ok_old on_number_ok
  332.         def on_number_ok
  333.                 on_number_ok_old
  334.     @help_window.refresh
  335.                 @help_window.show
  336.         end
  337.         alias on_number_cancel_old on_number_cancel
  338.         def on_number_cancel
  339.                 on_number_cancel_old
  340.     @help_window.refresh
  341.                 @help_window.show
  342.         end
  343. end
  344.  
  345. class Scene_Title < Scene_Base
  346.   alias start_old start
  347.   def start
  348.     start_old
  349.     Help.ready
  350.   end
  351. end
  352.  
  353. class Window_Base < Window
  354.         alias old_process_new_line process_new_line
  355.         def process_new_line(text, pos)
  356.     old_process_new_line(text, pos)
  357.                 pos[:height] = contents.font.size if pos[:width] != nil
  358.         end
  359. end
  360. class Scene_ItemBase < Scene_MenuBase
  361.         alias old_on_actor_cancel on_actor_cancel
  362.   def on_actor_cancel
  363.     old_on_actor_cancel
  364.         @help_window.refresh
  365.   end
  366.         alias old_on_actor_ok on_actor_ok
  367.   def on_actor_ok
  368.     old_on_actor_ok
  369.         @help_window.refresh
  370.   end
  371. end

第三个
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Equip Randomnization - Quality Color based on PS0
  4. #------------------------------------------------------------------------------
  5. #  Author: 仲秋启明(PS0颜色绘制), LBQ
  6. #==============================================================================
  7.  
  8. unless $imported[:lbq_equip_randomnization]
  9.   msgbox "Require LBQ Equip Randomnization Script"
  10.   exit
  11. end
  12.  
  13.  
  14. class RPG::EquipItem
  15.   def good_quality?
  16.     return !self.note.include?("<BAD>")
  17.   end
  18.  
  19.   def great_quality?
  20.     return self.note.include?("<GREAT>")
  21.   end
  22.  
  23. end
  24.  
  25.  
  26. module Quality
  27.   def quality
  28.     value = 1
  29.     self.prefix_objects.each do |p|
  30.        if p.good_quality?
  31.          value += 1
  32.        else
  33.          value -= 1
  34.        end
  35.        value += 1 if p.great_quality?
  36.     end
  37.  
  38.     return value
  39.   end
  40. end
  41.  
  42.  
  43. class Unique_Equip
  44.   include Quality
  45. end
  46.  
  47.  
  48. #==============================================================================
  49. # [PS0]物品颜色描绘
  50. #      Window_Base_Itemcolor
  51. #------------------------------------------------------------------------------
  52. #     在物品、技能选项中显示物品品质并显示品质框和修改物品名颜色。
  53. #==============================================================================
  54. # [更新记录]
  55. #    - 2012.01.03 By 仲秋启明
  56. #      * 修改为VA定义
  57. #    - 2011.12.27 By 仲秋启明
  58. #      * 移植至RGSS3,遵循PS0协议;
  59. #      * 优化数据库备注中设定方法
  60. #    - 2011.08.22 By 冰舞蝶恋
  61. #      * 蓝本(实用·极简 -- 按品质,给物品描绘色彩边框)
  62. #    - 2010.08.06 By 仲秋启明
  63. #      * 蓝本(物品颜色描绘脚本(完整无冲突版))
  64. #------------------------------------------------------------------------------
  65. # [使用方法]
  66. #    - 替换原Window_Base中的draw_item_name定义或复制到Main之前
  67. #==============================================================================
  68. $_PS0 = {} if $_PS0 == nil  
  69. $_PS0["Window_Base_Itemcolor"] = 20111227
  70. #==============================================================================
  71. # [PS0] 通用配置模块  
  72. #==============================================================================
  73. module PS0
  74.   module Window_Base_Itemcolor
  75.     Color0 = Color.new(137, 137, 137)
  76.     Color1 = Color.new(255, 255, 255)  # 一般品质的色彩(白,1)
  77.     Color2 = Color.new(128, 255, 128)  # 平庸品质的色彩(绿,2)
  78.     Color3 = Color.new(128, 128, 255)  # 精良品质的色彩(蓝,3)
  79.     Color4 = Color.new(255, 0, 255)    # 卓越品质的色彩(紫,4)
  80.     Color5 = Color.new(255, 128, 128)  # 神秘品质的色彩(红,5)
  81.     Color6 = Color.new(255, 128, 0)    # 传说品质的色彩(橙,6)
  82.     Color7 = Color.new(255, 255, 128)  # 特殊品质的色彩(黄,7)
  83.   end
  84. end
  85. #==============================================================================
  86. # ■ Window_Base
  87. #==============================================================================
  88. class Window_Base < Window
  89.   def draw_item_name(item, x, y, enabled = true, width = 172)
  90.     if item != nil
  91.       n = item.note
  92.  
  93.       c = 1
  94.       c = item.quality if item.respond_to? :quality
  95.       if c <= 0
  96.         color = PS0::Window_Base_Itemcolor::Color0
  97.       elsif c == 1
  98.         color = PS0::Window_Base_Itemcolor::Color1
  99.       elsif c == 2
  100.         color = PS0::Window_Base_Itemcolor::Color2
  101.       elsif c == 3
  102.         color = PS0::Window_Base_Itemcolor::Color3
  103.       elsif c == 4
  104.         color = PS0::Window_Base_Itemcolor::Color4
  105.       elsif c == 5
  106.         color = PS0::Window_Base_Itemcolor::Color5
  107.       elsif c == 6
  108.         color = PS0::Window_Base_Itemcolor::Color6
  109.       elsif c == 7
  110.         color = PS0::Window_Base_Itemcolor::Color7
  111.       else
  112.         color = Color.new(0, 0, 0, 0)
  113.       end
  114.       draw_icon(item.icon_index, x, y, enabled)
  115.       change_color(color, enabled)
  116.       draw_text(x + 24, y, width, line_height, item.name)
  117.     end
  118.   end
  119. end
  120. #==============================================================================
  121. # [PS0] End of Script
  122. #==============================================================================

第四个
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Gain Enchanted Item after Battle - beta plugin
  4. #------------------------------------------------------------------------------
  5. #  Author: LBQ                                                  lbq.mist.so
  6. #==============================================================================
  7. unless $imported[:lbq_equip_randomnization]
  8.   msgbox "Require LBQ Equip Randomnization Script"
  9.   exit
  10. end
  11.  
  12. class << BattleManager
  13.   #--------------------------------------------------------------------------
  14.   # ● 显示获得的物品
  15.   #--------------------------------------------------------------------------
  16.   def gain_drop_items
  17.     $game_troop.make_drop_items.each do |item|
  18.       puts "The Class of the Item: #{item.class}"
  19.       if item.is_a? RPG::Weapon
  20.         $game_party.gain_enchanted_weapon(item.id)
  21.         new_item = $game_party.weapons.last
  22.       elsif item.is_a? RPG::Armor
  23.         $game_party.gain_enchanted_armor(item.id)
  24.         new_item = $game_party.armors.last
  25.       else
  26.         $game_party.gain_item(item, 1)
  27.         new_item = $game_party.items.last
  28.       end
  29.       $game_message.add(sprintf(Vocab::ObtainItem, new_item.name))
  30.     end
  31.     wait_for_message
  32.   end
  33. end

第5个  
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Prefix Generator - Beta : Generate the prefix according to f(x)=log2(x)
  4. #------------------------------------------------------------------------------
  5. #  Author: LBQ                                                  lbq.mist.so
  6. #==============================================================================
  7. unless $imported[:lbq_equip_randomnization]
  8.   msgbox "Require LBQ Equip Randomnization Script"
  9.   exit
  10. end
  11.  
  12. module Prefix_Gen
  13.   class << self
  14.     def generate_prefix(type)
  15.       num = function
  16.       if num>=3
  17.         num -=1
  18.         num = 3 if num>3
  19.       end
  20.  
  21.       dic = ADE.get_all_prefix(type)
  22.       return_value = Array.new(num,0)
  23.       return_value.map! do |v|
  24.         dic.sample
  25.       end
  26.       return_value = return_value.uniq
  27.       return return_value
  28.     end
  29.  
  30.  
  31.     def function
  32.       return (-Math.log(rand,2)).round
  33.     end
  34.   end
  35. end

第6个[pre lang="ruby" line="1" file=" - Patch 1"]#encoding:utf-8
#==============================================================================
# ■ LBQ's Equip Randomnization Patch 1 - The Gate to Beta 2
#------------------------------------------------------------------------------
#  Author: LBQ                                                  lbq.mist.so
#==============================================================================
unless $imported[:lbq_equip_randomnization]
  msgbox "Require LBQ Equip Randomnization Script"
  exit
end

class Window_ShopStatus
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    draw_possession(4, 0)
    draw_equip_info(4, line_height * 2) if @item.is_a?(Unique_Equip)
  end
end


class Game_Party
  alias lbq_patch_1_item_number item_number
  def item_number(item)
    if item.class == RPG::Weapon or item.class == RPG::Armor or item.class == RPG::Item
      (@armors + @items + @weapons).select do |i|
        if i.object
          i.object.name == item.name
        else
          false
        end
        
      end.length
    else
      return lbq_patch_1_item_number(item)
    end
  end
end

class Game_Actor
  #--------------------------------------------------------------------------
  # ● 判定物品是否可以装备
  #--------------------------------------------------------------------------
  alias lbq_patch_1_unique_engine_equippable? equippable?
  def equippable?(item)
    return lbq_patch_1_unique_engine_equippable?(item.object) if item.is_a?(Unique_Equip)
    lbq_patch_1_unique_engine_equippable?(item)
  end
end


class Unique_Equip
  def performance
    return 0 if is_nil?
    return performance_objects.inject(0) do |o,n|
      o+=n.performance
    end
   
  end
  
  def performance_objects
    return [object] + prefix_objects
  end
  
  
end

class Game_Actor
  def true_equips
    return @equips
  end
  
end



class Window_EquipSlot
  #--------------------------------------------------------------------------
  # ● 获取物品
  #--------------------------------------------------------------------------
  def item
    return nil unless @actor
    if @actor.true_equips[index]
      if @actor.true_equips[index].name
        return @actor.true_equips[index]
      else
        return nil
      end
    end
  end
end
[/pre]
[pre lang="ruby" line="1" file=" - Reforge"]#encoding:utf-8
#==============================================================================
# ■ Reforging - LBQ Equip Randmnization plugin
#------------------------------------------------------------------------------
#  Author: LBQ                                                  lbq.mist.so
#==============================================================================
# SceneManager.call Scene_Reforge
#==============================================================================
unless $imported[:lbq_equip_randomnization]
  msgbox "Require LBQ Equip Randomnization Script"
  exit
end

class Unique_Equip
  def type
    return :weapon if is_weapon?
    return :armor  if is_armor?
    return nil     if is_nil?
    raise
  end
end

module Reforge
  def shallow_reforge
    self.generate_param_randomness
    self.regenerate_prefix_features
  end
  
  
  def deep_reforge
    gp = Prefix_Gen.generate_prefix(self.type)
    @prefixes = []
    @prefix_features = {}
    gp.each do |p|
      self.enchant(p)
    end
    self.generate_price_randomness
  end
  alias reforge deep_reforge
end

class Unique_Equip
  include Reforge
  
  def reforge_price
    return self.price*2
  end
  
  
  def shallow_price
    return self.price/10
  end
  
end

class Reforge_ItemWindow < Window_ItemList
  #--------------------------------------------------------------------------
  # ● 生成物品列表
  #--------------------------------------------------------------------------
  def make_item_list
    @data = $game_party.all_items.select {|item| item.is_a? Unique_Equip }
    @data.push(nil) if include?(nil)
  end
  
  #--------------------------------------------------------------------------
  # ● 获取列数
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end
  
  
  def draw_item_reforge_price(rect,item)
    str = "#{item.reforge_price}"
    draw_text(rect, str, 2)
  end
  
  
  #--------------------------------------------------------------------------
  # ● 绘制项目
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    if item
      rect = item_rect(index)
      rect.width -= 4
      draw_item_name(item, rect.x, rect.y, enable?(item),350)
      draw_item_reforge_price(rect, item)
    end
  end
  
  def enable?(item)
    enable = false
    enable = true if $game_party.gold>item.reforge_price
    return enable
  end
  

end



class Scene_Reforge < Scene_MenuBase
  def start
    super
    create_gold_window
    create_reforge_window
    create_info_window
    create_background
  end
  
  def create_gold_window
    @gold_window = Window_Gold.new
    @gold_window.x = Graphics.width - @gold_window.width
    @gold_window.y = Graphics.height - @gold_window.height
    @gold_window.refresh
  end
  
  
  def create_info_window
    a = 0
    b = @reforge_window.height
    c = @reforge_window.width - @gold_window.width
    d = @gold_window.height
    @info_window = Window_Base.new(a,b,c,d)
    refresh_info_window
  end
  
  
  def refresh_info_window
    @info_window.contents.clear
    return unless @reforge_window.item
    @info_window.draw_item_name(@reforge_window.item,0,0)
    str = " 评价:#{@reforge_window.item.performance}"
    @info_window.draw_text(0,0,@info_window.contents.width,@info_window.contents.height,str,2)
  end
  
  
  def create_reforge_window
   
    @help_window = Window_Help.new
    w = Graphics.width
    h = Graphics.height - @gold_window.height
    @reforge_window = Reforge_ItemWindow.new(0,0,w,h)
    @reforge_window.make_item_list
    @reforge_window.activate
    @reforge_window.select(0)
    @reforge_window.refresh
    @reforge_window.help_window = @help_window
  end
  
  
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    draw_all_items
  end
  
  
  def update
    super
    if Input.press?(:DOWN) || Input.press?(:UP)
      refresh_info_window
    end
   
     if Input.trigger?(:B)
       Sound.play_cancel
      SceneManager.return
    end
   
    if Input.trigger?(:C) && @reforge_window.item
      if @reforge_window.item.reforge_price <= $game_party.gold
        $game_party.gain_gold(-@reforge_window.item.reforge_price)
        Sound.play_reflection
        @reforge_window.item.reforge
        @reforge_window.refresh
        
        @help_window.dispose
        @help_window = Window_Help.new
        @reforge_window.help_window = @help_window
        @help_window.refresh
        @gold_window.refresh
        
        refresh_info_window
      end
    end
  end
  
end
[/pre]

[pre lang="ruby" line="1" file=" - Enchanter"]#encoding:utf-8
#==============================================================================
# ■ Enchanter - LBQ Equip Randomnization Plugin
#------------------------------------------------------------------------------
#  Author: LBQ                                                  lbq.mist.so
#==============================================================================
# SceneManager.call Scene_Enchanter
#==============================================================================
unless $imported[:lbq_equip_randomnization]
  msgbox "Require LBQ Equip Randomnization Script"
  exit
end

class Unique_Equip
  def remove_enchant(id)
    @prefixes.delete id
    @prefix_features.delete id
  end
end

class Game_Temp
  DEFAULT_ENCHANTS = {
    :weapon   => [63,64,65,66],
    :armor    => [62,64,68],
  }
  attr_accessor :ava_enchants
  def ava_enchants
    @ava_enchants || DEFAULT_ENCHANTS
  end
  
end

class Enchant_ItemWindow < Window_ItemList
  attr_accessor :add_window
  attr_accessor :remove_window
  #--------------------------------------------------------------------------
  # ● 生成物品列表
  #--------------------------------------------------------------------------
  def make_item_list
    @data = $game_party.all_items.select {|item| item.is_a? Unique_Equip }
    @data.push(nil) if include?(nil)
  end
  
  #--------------------------------------------------------------------------
  # ● 获取列数
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end
  

  #--------------------------------------------------------------------------
  # ● 处理光标的移动
  #--------------------------------------------------------------------------
  def process_cursor_move
    last_index = @index
    super
    refresh_my_windows if @index != last_index
  end
  
  
  def refresh_my_windows
    return unless self.item
    @add_window.enchant_item = self.item
    @remove_window.enchant_item = self.item
    @add_window.db = $data_weapons if self.item.is_weapon?
    @add_window.db = $data_armors if self.item.is_armor?
    raise unless @add_window.db
    @add_window.refresh
    @remove_window.refresh
  end
  
  
  #--------------------------------------------------------------------------
  # ● 绘制项目
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    if item
      rect = item_rect(index)
      rect.width -= 4
      draw_item_name(item, rect.x, rect.y, enable?(item))
    end
  end
  
  def enable?(item)
    return true
  end
  

end


class Window_PrefixWindow < Window_ItemList
  attr_accessor :db
  attr_accessor :prefixes
  def initialize(prefix)
    super(0,0,Graphics.width,Graphics.height)
    yield self if block_given?
    @prefixes = $game_temp.ava_enchants
    @prefixes = prefix if prefix
  end
  
  def prefixes=(array)
    @prefixes = array
    refresh
  end
  
  def draw_item(index)
    item = @data[index]
    if item
      rect = item_rect(index)
      rect.width -= 4
      draw_item_name(item, rect.x, rect.y, enable?(item))
      draw_item_price(rect, item)
    end
  end
  
  
  #--------------------------------------------------------------------------
  # ● 绘制物品个数
  #--------------------------------------------------------------------------
  def draw_item_price(rect, item)
    draw_text(rect,"#{get_price(item)}", 2)
  end
  
  
  def get_price(item)
    0
  end
  
  
  def enable?(item)
    return get_price(item) <= $game_party.gold
  end
  
  # From PS0
  def draw_item_name(item, x, y, enabled = true, width = 172)
    if item != nil
      n = item.note
      
      c = 1
      c = item.quality if item.respond_to? :quality
      if c <= 0
        color = PS0::Window_Base_Itemcolor::Color0
      elsif c == 1
        color = PS0::Window_Base_Itemcolor::Color1
      elsif c == 2
        color = PS0::Window_Base_Itemcolor::Color2
      elsif c == 3
        color = PS0::Window_Base_Itemcolor::Color3
      elsif c == 4
        color = PS0::Window_Base_Itemcolor::Color4
      elsif c == 5
        color = PS0::Window_Base_Itemcolor::Color5
      elsif c == 6
        color = PS0::Window_Base_Itemcolor::Color6
      elsif c == 7
        color = PS0::Window_Base_Itemcolor::Color7
      else
        color = Color.new(0, 0, 0, 0)
      end
      change_color(color, enabled)
      draw_text(x, y, width, line_height, item.name)
    end
  end
  
end

class Enchant_InfoWindow < Window_Base
  def initialize(*args)
    super(*args)
  end
  
  def item=(x)
    @item = item
    refresh
  end
  
  def display(x)
    self.contents.clear
    draw_text_ex(0,0,x)
  end
  
end


class Prefix_AddWindow < Window_PrefixWindow
  attr_accessor :enchant_item
  #--------------------------------------------------------------------------
  # ● 生成物品列表
  #--------------------------------------------------------------------------
  def make_item_list
    return unless @db
    @data = @prefixes[db==$data_weapons ? :weapon : :armor].collect{|p| @db[p]}
    @data.push(nil) if include?(nil)
  end
  
  def get_price(item)
    price = 0
    price += @enchant_item.price unless @enchant_item
   
    if item.good_quality?
      price+= (@enchant_item.price/5) * (@enchant_item.prefix_objects.length + 1)
    else
      price = @enchant_item.price/10 * (@enchant_item.prefix_objects.length + 1)
    end
   
    price+=item.price
   
    if price<=40
      price += 40
    end
   
    return price
  end
  
  
  def enable?(item)
    return false if @enchant_item.prefixes.include?(item.id)
    super
  end
  
end


class Prefix_RemoveWindow < Window_PrefixWindow
  attr_accessor :enchant_item
  #--------------------------------------------------------------------------
  # ● 生成物品列表
  #--------------------------------------------------------------------------
  def make_item_list
    return unless @enchant_item
    @data = @enchant_item.prefix_objects
    @data.push(nil) if include?(nil)
  end
  

  
  
  def get_price(item)
    price = 0
    if item.good_quality?
      price = @enchant_item.price/20
    else
      price = @enchant_item.price/5
    end
    return price
  end
  
  
end

class Scene_Enchanter < Scene_MenuBase
  def start
    super
    create_all_windows
    activate_select_window
    @select_window.select(0)
    deal_with_enchant_item
    @add_window.refresh
    @remove_window.refresh
    remove_all_bug_cursors
  end
  
  
  def create_all_windows
    create_gold_window
    create_remove_window
    create_add_window
    create_select_window
    @select_window.add_window = @add_window
    @select_window.remove_window = @remove_window
    create_info_window
  end
  
  
  def create_select_window
    a = 0
    b = 0
    c = Graphics.width/2
    d = Graphics.height - @gold_window.height
    @select_window = Enchant_ItemWindow.new(a,b,c,d)
   
  end

  
  def create_remove_window
    a = Graphics.width/2
    b = 0
    c = Graphics.width/2
    d = (Graphics.height - @gold_window.height)/2
    @remove_window = Prefix_RemoveWindow.new(nil) do |w|
      w.x = a
      w.y = b
      w.width = c
      w.height = d
    end
  end
  
  def create_add_window
    a = Graphics.width/2
    b = @remove_window.height
    c = Graphics.width/2
    d = (Graphics.height - @gold_window.height)/2
    @add_window = Prefix_AddWindow.new(nil) do |w|
      w.x = a
      w.y = b
      w.width = c
      w.height = d
    end
  end
  
  
  def create_gold_window
    @gold_window = Window_Gold.new
    @gold_window.x = Graphics.width - @gold_window.width
    @gold_window.y = Graphics.height - @gold_window.height
    @gold_window.refresh
  end
  
  def create_info_window
    a = 0
    b = @select_window.height
    c = Graphics.width - @gold_window.width
    d = @gold_window.height
    @info_window = Enchant_InfoWindow.new(a,b,c,d)
  end
  
  
  
  def update
    super
    if Input.trigger?(:B)
      Sound.play_cancel
      if @select_window.active
        SceneManager.return
      else
        activate_select_window
      end
    end
   
    return unless @select_window.item
   
    if Input.trigger?(:X) && @select_window.active
      if @select_window.item.prefixes.length>=3
        Sound.play_buzzer
        @info_window.display "Too many prefixes!"
        return
      end
      Sound.play_ok
      activate_add_window
    elsif Input.trigger?(:Z) && @select_window.active
      Sound.play_ok
      activate_remove_window
    elsif Input.trigger?(:C) && (@add_window.active || @remove_window.active)
      if @add_window.active
        do_add_prefix
      else
        do_remove_prefix
      end
      Sound.play_magic_evasion
    end
  end
  
  def do_add_prefix
    return unless @add_window.item
    @select_window.item.enchant(@add_window.item.id)
    $game_party.gain_gold(-@add_window.get_price(@select_window.item))
    @gold_window.refresh
   
    @add_window.enchant_item = @select_window.item
    activate_select_window
  end
  
  
  def do_remove_prefix
    return unless @remove_window.item
    @select_window.item.remove_enchant(@remove_window.item.id)
    $game_party.gain_gold(-@remove_window.get_price(@select_window.item))
    @gold_window.refresh
    activate_select_window
  end
  
  
  
  def activate_select_window
    disactivate_all_windows
    deal_with_all_activate(@select_window)
   
    @info_window.display "A - Add Enchants; D - Remove Enchants"
  end
  
  
  def deal_with_enchant_item
    return unless @select_window.item
    @add_window.enchant_item = @select_window.item
    @remove_window.enchant_item = @select_window.item
    @add_window.db = $data_weapons if @select_window.item.is_weapon?
    @add_window.db = $data_armors if @select_window.item.is_armor?
  end
  
  
  
  def activate_add_window
    @add_window.enchant_item = @select_window.item
    @add_window.db = $data_weapons if @select_window.item.is_weapon?
    @add_window.db = $data_armors if @select_window.item.is_armor?
    disactivate_all_windows
    deal_with_all_activate(@add_window)
    @info_window.display "Press Space to Confirm Adding"
  end
  
  
  def deal_with_all_activate(target)
    raise unless target.respond_to?(:make_item_list)
    target.activate
    target.select(0) unless target == @select_window
    target.refresh
  end
  
  
  def activate_remove_window
    @remove_window.enchant_item = @select_window.item
    disactivate_all_windows
    deal_with_all_activate(@remove_window)
    @info_window.display "Press Space to Confirm Removing"
  end
  
  def remove_all_bug_cursors
  end
  
  
  def disactivate_all_windows
    @select_window.active, @add_window.active, @remove_window.active = false,false,false
    @add_window.select(-1)
    @remove_window.select(-1)
    @remove_window.contents.clear
    @add_window.select(-1)
    @add_window.contents.clear
   
    @select_window.refresh_my_windows if @select_window.item
  end
  
end[/pre]  

JTIXBLKMFZHPA`UZI_5GV88.jpg (14.14 KB, 下载次数: 31)

装备颜色无法描绘

装备颜色无法描绘

7[]8YUH4P~~E]G}}O2D}W~B.jpg (94.02 KB, 下载次数: 30)

需要改颜色的地方

需要改颜色的地方
你的意思就是要打架咯?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
199
在线时间
248 小时
注册时间
2012-4-29
帖子
386
4
 楼主| 发表于 2013-10-31 17:17:06 | 只看该作者
魔力的觉醒 发表于 2013-10-31 17:06
只是装备颜色描绘不兼容了  这是全部的脚本  麻烦帮我调一下
还有这里的字能否改成别的颜色么! ...

感觉代码乱的话   

脚本.zip

15.42 KB, 下载次数: 47

脚本

你的意思就是要打架咯?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
5
发表于 2013-10-31 17:27:13 | 只看该作者
恩恩,脚本看起来很乱,不过你都说了是颜色代码有问题,我就只弄那个好了。
- Quality.zip (1.41 KB, 下载次数: 51)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
199
在线时间
248 小时
注册时间
2012-4-29
帖子
386
6
 楼主| 发表于 2013-10-31 17:34:49 | 只看该作者
tan12345 发表于 2013-10-31 17:27
恩恩,脚本看起来很乱,不过你都说了是颜色代码有问题,我就只弄那个好了。
...


非常感谢  哪个请问下这里的字可以调成别的颜色吗?应该怎么调!!!

AB82AE89-18C3-401B-9FAE-6D44C4866D15.jpg (21.69 KB, 下载次数: 31)

AB82AE89-18C3-401B-9FAE-6D44C4866D15.jpg
你的意思就是要打架咯?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
7
发表于 2013-10-31 20:14:15 | 只看该作者
修改了下明细显示脚本。
- Help.zip (3.46 KB, 下载次数: 46)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
199
在线时间
248 小时
注册时间
2012-4-29
帖子
386
8
 楼主| 发表于 2013-10-31 21:16:38 | 只看该作者
本帖最后由 魔力的觉醒 于 2013-10-31 21:21 编辑
tan12345 发表于 2013-10-31 20:14
修改了下明细显示脚本。


又出现了一个bug!!!!   麻烦了!!!!在选择装备的时候出现的!!
还有字体刷新也有一点问题。!!!
最后就是测试战斗的话一直是黑屏不出现   只有在图里设置才会出现。如图!
麻烦麻烦麻烦了!!!

7`8LIRU2D[1R5__F5CV23R7.jpg (18.96 KB, 下载次数: 31)

7`8LIRU2D[1R5__F5CV23R7.jpg

2H9BB@PS)QFFV@{[email protected] (89.55 KB, 下载次数: 29)

字体刷新

字体刷新

CA7RFRZ$G$O9}56W9X[X7EO.jpg (91.43 KB, 下载次数: 29)

黑屏

黑屏
你的意思就是要打架咯?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
9
发表于 2013-10-31 21:36:28 | 只看该作者
不好意思,我的失误,之前忙没注意看,之前的那个错了,不要用。这个才对
- Help.zip (3.45 KB, 下载次数: 50)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
199
在线时间
248 小时
注册时间
2012-4-29
帖子
386
10
 楼主| 发表于 2013-10-31 21:43:10 | 只看该作者
tan12345 发表于 2013-10-31 21:36
不好意思,我的失误,之前忙没注意看,之前的那个错了,不要用。这个才对
...

有颜色了  哈哈  最后最后一个故障!!!
哪个用了这几个脚本测试战斗一直不显示   一直黑屏  ,    可以解决吗!!!

87@APAP04IURJ(I{3A5d6.jpg (89.88 KB, 下载次数: 29)

87@APAP04IURJ(I{3A5d6.jpg
你的意思就是要打架咯?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 11:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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