Project1

标题: 怎么提高前缀装备的掉落几率。 [打印本页]

作者: 岚澈    时间: 2015-6-30 17:24
标题: 怎么提高前缀装备的掉落几率。
本帖最后由 岚澈 于 2015-6-30 18:42 编辑

如果最大前缀数只有1的话,怎么样提高前缀出现的几率,自己测试掉落的90%以上都是白板,
如何增加这个掉率呢,脚本怎么改,求教学。(o゚ω゚o)


RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ 随机属性装备 By wyongcan
  4. #==============================================================================
  5. module Equipplus
  6. #得到随机属性装备方法:gainequip(装备ID,属性数)
  7. #~ 前缀结构:
  8. #~ ①权重(1-100) 越大越重要
  9. #~ ②名称(多个名称用","分开,会随机取其中一个添加到武器名前)
  10. #~ ③属性数组  提供两种方式:
  11. #~ 1.[属性ID,增加值]    属性ID参考说明增强脚本 增加了9号属性“极品出现率” ID为8,影响前缀的好坏 1 - 100
  12. #~ 2.与装备特性相同[code,data_id,value]  code,data_id参考说明增强脚本
  13.   @maxparamplus = 1 #最大前缀数
  14.   @moneyrate = 10 #物品价格计算公式为:原价格 + 前缀权重 * @moneyrate
  15.   @transpose = [*1..100].reverse #用于把1变成100,100变成1
  16.   @paramsplus = [           #暂时只写了三个前缀,可以自己添加,参照前缀结构\
  17.   [2,"传说",[[0,4000],[1,60],[2,60],[3,60],[4,60],[5,60],[6,60],[7,60]]],
  18.   [1,"史诗",[[0,5000],[1,80],[2,80],[3,80],[4,80],[5,80],[6,80],[7,80]]],
  19.   [3,"卓越",[[0,3000],[1,50],[2,50],[3,50],[4,50],[5,50],[6,50],[7,50]]],
  20.   [4,"优质",[[0,1800],[1,30],[2,30],[3,30],[4,30],[5,30],[6,30],[7,30]]],
  21.   ]
  22.   $商店随机 = false #商店买装备时出随机属性
  23.   $战斗随机 = true #战斗后获得随机属性装备
  24.   def self.getname(paramsplus)
  25.     name = ""
  26.     paramsplus.is_a?(Array) ? paramsplus.each{|a| @temp = []; a[1].scan(/^[\u4e00-\u9fa5|\w]*|,[\u4e00-\u9fa5|\w]*/){|b| @temp.push b.gsub(","){}}; name += @temp[rand(@temp.size)]} : paramsplus[1].scan(/^[\u4e00-\u9fa5|\w]*|,[\u4e00-\u9fa5|\w]*/){|b| @temp = [] if @temp == nil ;@temp.push b.gsub(","){}}
  27.     name += @temp[rand(@temp.size)] if paramsplus.is_a?(Array) != true
  28.     name += "的"
  29.   end
  30.   def self.getluck #获得极品出现率
  31.     luck = 0
  32.     $game_party.all_members.each{|a| a.weapons.each{|a| luck += a.params[8] if a.params.size == 9};a.armors.each{|a| luck += a.params[8] if a.params.size == 9}}
  33.     luck
  34.   end
  35.   def self.getnewequip(xequip,params = nil) #提供两个参数  装备(RPG::Equip类下的)和附加前缀数,不填则为随机
  36.     return unless xequip.is_a?(RPG::EquipItem)
  37.     #xparamplus为前缀数
  38.     xequip.paramsplus = [] if xequip.paramsplus == nil
  39.     return if xequip.paramsplus.size >= @maxparamplus
  40.     params != nil ? xparamplus = params :  xparamplus = rand(@maxparamplus * 105) / 100
  41.     xparamplus = xparamplus.to_int
  42.     return xequip if xparamplus == 0
  43.     equip = xequip.dup
  44.     paramsplus = equip.paramsplus.dup  #无奈的方法,不这样改一个装备所有同父装备的装备都会变
  45.     newparams = equip.params.dup
  46.     newfeatures = equip.features.dup
  47.     aparamsplus = @paramsplus.collect{|a| [a[0] = @transpose[a[0]-1],a[1],a[2]]}.sort_by{|a| a[0]}
  48.     while paramsplus.size < xparamplus
  49.       temp = rand(aparamsplus[-1][0])
  50.       temp = [temp - getluck,0].max
  51.       x = []
  52.       for i in aparamsplus
  53.         x.push i if i[0] >= temp && paramsplus.include?(i) != true
  54.       end
  55.       if x != []
  56.         a = [(x.size-1)*100 - getluck,0].max
  57.         a = (rand(a)/100).to_int
  58.         paramsplus.push x[a]
  59.       end
  60.     end
  61.      equip.name = getname(paramsplus) + equip.name #更新名称
  62.     paramsplus.each{|a| equip.price += @transpose[a[0] - 1] * @moneyrate} #更新价格
  63.     paramsplus.select{|a| a[2].select{|a| a.size == 2}.each{|a| newparams[a[0]] += a[1]}} #更新属性
  64.     #以下为更新特性
  65.     features = []
  66.     paramsplus.each{|a| a[2].each{|a| features.push a if a.size == 3}}
  67.     while features.size > 0
  68.       i = features.pop
  69.       newfeatures.select{|a| a.code == i[0] && a.data_id == i[1]}.size == 0 ? newfeatures.push(RPG::BaseItem::Feature.new(i[0],i[1],i[2])) : newfeatures.each_with_index{|a,b| newfeatures[b].value += i[2] if a.code == i[0] && a.data_id == i[1]}
  70.     end
  71.     if equip.is_a?(RPG::Weapon)
  72.       equip.id = $data_weapons.size
  73.       $data_weapons.insert $data_weapons.size,equip
  74.       $data_weapons[equip.id].paramsplus = paramsplus
  75.       $data_weapons[equip.id].params = newparams
  76.       $data_weapons[equip.id].features = newfeatures
  77.     else
  78.       equip.id = $data_armors.size
  79.       $data_armors.insert $data_armors.size,equip
  80.       $data_armors[equip.id].paramsplus = paramsplus
  81.       $data_armors[equip.id].params = newparams
  82.       $data_armors[equip.id].features = newfeatures
  83.     end
  84.     equip
  85.   end
  86.   def self.gainequip(id,params = nil)
  87.     $game_party.gain_item(Equipplus.getnewequip($data_weapons[id],params),1,true)
  88.   end
  89. end
  90. if $商店随机 == true
  91.   class Scene_Shop < Scene_MenuBase
  92.     def do_buy(number)
  93.       $game_party.lose_gold(number * buying_price)
  94.       if @item.is_a?(RPG::EquipItem)
  95.         x = number
  96.         loop do
  97.           break if x <= 0
  98.           x -= 1
  99.           $game_party.gain_item(Equipplus.getnewequip(@item), 1)
  100.         end
  101.       else
  102.         $game_party.gain_item(@item, number)
  103.       end
  104.     end
  105.   end
  106. end
  107. if $战斗随机 == true
  108.   module BattleManager
  109.     def self.gain_drop_items
  110.       $game_troop.make_drop_items.each do |item|
  111.         item.is_a?(RPG::EquipItem) ? xitem = Equipplus.getnewequip(item) : xitem = item
  112.         $game_party.gain_item(xitem, 1)
  113.         $game_message.add(sprintf(Vocab::ObtainItem, xitem.name))
  114.       end
  115.       wait_for_message
  116.     end
  117.   end
  118. end
  119. class RPG::EquipItem < RPG::BaseItem
  120.   alias old initialize
  121.   def initialize
  122.     old
  123.     @paramsplus #前缀
  124.   end
  125.   attr_accessor :paramsplus
  126. end

作者: blueeyescyj    时间: 2015-6-30 17:36
看下这个能不能满足你的要求
https://rpg.blue/forum.php?mod=viewthread&tid=376633
作者: 岚澈    时间: 2015-6-30 17:38
blueeyescyj 发表于 2015-6-30 17:36
看下这个能不能满足你的要求
https://rpg.blue/forum.php?mod=viewthread&tid=376633

这个怎么用,直接插入随机属性装备的脚本里吗?
作者: blueeyescyj    时间: 2015-6-30 18:40

def self.getluck #获得极品出现率
    luck = 0  #大概更改这里可以调整概率(把0改成1),但会影响所有的极品出现概率
    $game_party.all_members.each{|a| a.weapons.each{|a| luck += a.params[8] if a.params.size == 9};a.armors.each{|a| luck += a.params[8] if a.params.size == 9}}
作者: 岚澈    时间: 2015-6-30 18:44
blueeyescyj 发表于 2015-6-30 18:40
def self.getluck #获得极品出现率
    luck = 0  #大概更改这里可以调整概率(把0改成1),但会影响所有 ...

这个我更改了试过- - 没啥用 掉的装备还是白板。
如果最大前缀数改成2或者3,基本掉的都是带前缀的,但是多前缀的也少。
这个前缀掉落的概率不知道在哪能改。




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