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

Project1

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

[已经过期] 请教装备随机属性脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
45
在线时间
6 小时
注册时间
2017-8-23
帖子
5
跳转到指定楼层
1
发表于 2017-8-24 23:14:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 wgsispig5 于 2017-8-24 23:38 编辑

首先感谢提供脚本的大大,这里有几个问题

1.我的随机属性,最前的数字是越小概率越大还是越大概率越大?

2.如何控制装备出特殊属性的概率呢,后面的概率控制部分看不大懂,好像只和幸运有关

#encoding:utf-8
#==============================================================================
# ■ 随机属性装备 By wyongcan
#==============================================================================
module Equipplus
#得到随机属性装备方法:gainequip(装备ID,属性数)
#~ 前缀结构:
#~ ①权重(1-100) 越大越重要
#~ ②名称(多个名称用","分开,会随机取其中一个添加到武器名前)
#~ ③属性数组  提供两种方式:
#~ 1.[属性ID,增加值]    属性ID参考说明增强脚本 增加了9号属性“极品出现率” ID为8,影响前缀的好坏 1 - 100
#~ 2.与装备特性相同[code,data_id,value]  code,data_id参考说明增强脚本
  @maxparamplus = 3 #最大前缀数
  @moneyrate = 10 #物品价格计算公式为:原价格 + 前缀权重 * @moneyrate
  @transpose = [*1..100].reverse #用于把1变成100,100变成1
  @paramsplus = [           #暂时只写了三个前缀,可以自己添加,参照前缀结构
  [1,"勇猛1",[[2,8]]], #物理攻击加8
  [2,"勇猛2",[[2,13]]], #物理攻击加13
  [4,"勇猛3",[[2,19]]], #物理攻击加19
  [8,"勇猛4",[[2,27]]], #物理攻击加27
  [16,"勇猛5",[[2,36]]], #物理攻击加36
  [32,"勇猛6",[[2,45]]], #物理攻击加45
  [48,"勇猛7",[[2,58]]], #物理攻击加58
  [64,"勇猛8",[[2,71]]], #物理攻击加71
  [80,"勇猛9",[[2,88]]], #物理攻击加88
  [12,"智慧1",[[4,8]]], #魔法攻击加8
  [12,"智慧2",[[4,13]]], #魔法攻击加13
  [12,"智慧3",[[4,19]]], #魔法攻击加19
  [12,"智慧4",[[4,27]]], #魔法攻击加27
  [12,"智慧5",[[4,36]]], #魔法攻击加36
  [12,"智慧6",[[4,45]]], #魔法攻击加45
  [12,"智慧7",[[4,58]]], #魔法攻击加58
  [12,"智慧8",[[4,71]]], #魔法攻击加71
  [12,"智慧9",[[4,88]]], #魔法攻击加88
  [1,"强壮1",[[0,32]]], #生命增加32
  [2,"强壮2",[[0,48]]], #生命增加48
  [4,"强壮3",[[0,64]]], #生命增加64
  [8,"强壮4",[[0,99]]], #生命增加99
  [16,"强壮5",[[0,127]]], #生命增加127
  [32,"强壮6",[[0,159]]], #生命增加159
  [48,"强壮7",[[0,184]]], #生命增加184
  [64,"强壮8",[[0,223]]], #生命增加223
  [80,"强壮9",[[0,256]]], #生命增加256
  [1,"战争1",[[3,2],[5,2]]], #防御和魔抗增加2
  [2,"战争2",[[3,4],[5,4]]], #防御和魔抗增加4
  [4,"战争3",[[3,7],[5,7]]], #防御和魔抗增加7
  [8,"战争4",[[3,10],[5,10]]], #防御和魔抗增加10
  [16,"战争5",[[3,13],[5,13]]], #防御和魔抗增加13
  [32,"战争6",[[3,16],[5,16]]], #防御和魔抗增加16
  [48,"战争7",[[3,20],[5,20]]], #防御和魔抗增加20
  [64,"战争8",[[3,25],[5,25]]], #防御和魔抗增加25
  [80,"战争9",[[3,30],[5,30]]], #防御和魔抗增加30
  [1,"幸运1",[[7,1],[7,1]]], #幸运增加1
  [2,"幸运2",[[7,2],[7,2]]], #幸运增加2
  [4,"幸运3",[[7,3],[7,3]]], #幸运增加3
  [8,"幸运4",[[7,4],[7,4]]], #幸运增加4
  [16,"幸运5",[[7,6],[7,6]]], #幸运增加6
  [32,"幸运6",[[7,8],[7,8]]], #幸运增加8
  [48,"幸运7",[[7,10],[7,10]]], #幸运增加10
  [64,"幸运8",[[7,13],[7,13]]], #幸运增加13
  [80,"幸运9",[[7,16],[7,6]]], #幸运增加16
  [1,"敏捷1",[[6,1],[6,1]]], #敏捷增加1
  [2,"敏捷2",[[6,2],[6,2]]], #敏捷增加2
  [4,"敏捷3",[[6,3],[6,3]]], #敏捷增加3
  [8,"敏捷4",[[6,4],[6,4]]], #敏捷增加4
  [16,"敏捷5",[[6,6],[6,6]]], #敏捷增加6
  [32,"敏捷6",[[6,8],[6,8]]], #敏捷增加8
  [48,"敏捷7",[[6,10],[6,10]]], #敏捷增加10
  [64,"敏捷8",[[6,13],[6,13]]], #敏捷增加13
  [80,"敏捷9",[[6,16],[6,6]]], #敏捷增加16
  ]
  $商店随机 = false #商店买装备时出随机属性
  $战斗随机 = true #战斗后获得随机属性装备
def self.getname(paramsplus)
    name = ""
    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(","){}}
    name += @temp[rand(@temp.size)] if paramsplus.is_a?(Array) != true
    name += "的"
  end
  def self.getluck #获得极品出现率
    luck = 0
    $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}}
    luck
  end
  def self.getnewequip(xequip,params = nil) #提供两个参数  装备(RPG::Equip类下的)和附加前缀数,不填则为随机
    return unless xequip.is_a?(RPG::EquipItem)
    #xparamplus为前缀数
    xequip.paramsplus = [] if xequip.paramsplus == nil
    return if xequip.paramsplus.size >= @maxparamplus
    params != nil ? xparamplus = params :  xparamplus = rand(@maxparamplus * 110) / 100
    xparamplus = xparamplus.to_int
    return xequip if xparamplus == 0
    equip = xequip.dup
    paramsplus = equip.paramsplus.dup  #无奈的方法,不这样改一个装备所有同父装备的装备都会变
    newparams = equip.params.dup
    newfeatures = equip.features.dup
    aparamsplus = @paramsplus.collect{|a| [a[0] = @transpose[a[0]-1],a[1],a[2]]}.sort_by{|a| a[0]}
    while paramsplus.size < xparamplus
      temp = rand(aparamsplus[-1][0])
      temp = [temp - getluck,0].max
      x = []
      for i in aparamsplus
        x.push i if i[0] >= temp && paramsplus.include?(i) != true
      end
      if x != []
        a = [(x.size-1)*100 - getluck,0].max
        a = (rand(a)/100).to_int
        paramsplus.push x[a]
      end
    end
    equip.name = getname(paramsplus) + equip.name #更新名称
    paramsplus.each{|a| equip.price += @transpose[a[0] - 1] * @moneyrate} #更新价格
    paramsplus.select{|a| a[2].select{|a| a.size == 2}.each{|a| newparams[a[0]] += a[1]}} #更新属性
    #以下为更新特性
    features = []
    paramsplus.each{|a| a[2].each{|a| features.push a if a.size == 3}}
    while features.size > 0
      i = features.pop
      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.value += i[2] if a.code == i[0] && a.data_id == i[1]}
    end
    if equip.is_a?(RPG::Weapon)
      equip.id = $data_weapons.size
      $data_weapons.insert $data_weapons.size,equip
      $data_weapons[equip.id].paramsplus = paramsplus
      $data_weapons[equip.id].params = newparams
      $data_weapons[equip.id].features = newfeatures
    else
      equip.id = $data_armors.size
      $data_armors.insert $data_armors.size,equip
      $data_armors[equip.id].paramsplus = paramsplus
      $data_armors[equip.id].params = newparams
      $data_armors[equip.id].features = newfeatures
    end
    equip
  end
  def self.gainequip(id,params = nil)
    $game_party.gain_item(Equipplus.getnewequip($data_weapons[id],params),1,true)
  end
end
if $商店随机 == true
  class Scene_Shop < Scene_MenuBase
    def do_buy(number)
      $game_party.lose_gold(number * buying_price)
      if @item.is_a?(RPG::EquipItem)
        x = number
        loop do
          break if x <= 0
          x -= 1
          $game_party.gain_item(Equipplus.getnewequip(@item), 1)
        end
      else
        $game_party.gain_item(@item, number)

Lv1.梦旅人

梦石
0
星屑
45
在线时间
6 小时
注册时间
2017-8-23
帖子
5
2
 楼主| 发表于 2017-8-24 23:15:38 | 只看该作者
设置错了。。。还以为是我付费给别人

一楼别付费

首先感谢提供脚本的大大,这里有几个问题

1.我的随机属性,最前的数字是越小概率越大还是越大概率越大?

2.如何控制装备出特殊属性的概率呢,后面的概率控制部分看不大懂,好像只和幸运有关

#encoding:utf-8
#==============================================================================
# ■ 随机属性装备 By wyongcan
#==============================================================================
module Equipplus
#得到随机属性装备方法:gainequip(装备ID,属性数)
#~ 前缀结构:
#~ ①权重(1-100) 越大越重要
#~ ②名称(多个名称用","分开,会随机取其中一个添加到武器名前)
#~ ③属性数组  提供两种方式:
#~ 1.[属性ID,增加值]    属性ID参考说明增强脚本 增加了9号属性“极品出现率” ID为8,影响前缀的好坏 1 - 100
#~ 2.与装备特性相同[code,data_id,value]  code,data_id参考说明增强脚本
  @maxparamplus = 3 #最大前缀数
  @moneyrate = 10 #物品价格计算公式为:原价格 + 前缀权重 * @moneyrate
  @transpose = [*1..100].reverse #用于把1变成100,100变成1
  @paramsplus = [           #暂时只写了三个前缀,可以自己添加,参照前缀结构
  [1,"勇猛1",[[2,8]]], #物理攻击加8
  [2,"勇猛2",[[2,13]]], #物理攻击加13
  [4,"勇猛3",[[2,19]]], #物理攻击加19
  [8,"勇猛4",[[2,27]]], #物理攻击加27
  [16,"勇猛5",[[2,36]]], #物理攻击加36
  [32,"勇猛6",[[2,45]]], #物理攻击加45
  [48,"勇猛7",[[2,58]]], #物理攻击加58
  [64,"勇猛8",[[2,71]]], #物理攻击加71
  [80,"勇猛9",[[2,88]]], #物理攻击加88
  [12,"智慧1",[[4,8]]], #魔法攻击加8
  [12,"智慧2",[[4,13]]], #魔法攻击加13
  [12,"智慧3",[[4,19]]], #魔法攻击加19
  [12,"智慧4",[[4,27]]], #魔法攻击加27
  [12,"智慧5",[[4,36]]], #魔法攻击加36
  [12,"智慧6",[[4,45]]], #魔法攻击加45
  [12,"智慧7",[[4,58]]], #魔法攻击加58
  [12,"智慧8",[[4,71]]], #魔法攻击加71
  [12,"智慧9",[[4,88]]], #魔法攻击加88
  [1,"强壮1",[[0,32]]], #生命增加32
  [2,"强壮2",[[0,48]]], #生命增加48
  [4,"强壮3",[[0,64]]], #生命增加64
  [8,"强壮4",[[0,99]]], #生命增加99
  [16,"强壮5",[[0,127]]], #生命增加127
  [32,"强壮6",[[0,159]]], #生命增加159
  [48,"强壮7",[[0,184]]], #生命增加184
  [64,"强壮8",[[0,223]]], #生命增加223
  [80,"强壮9",[[0,256]]], #生命增加256
  [1,"战争1",[[3,2],[5,2]]], #防御和魔抗增加2
  [2,"战争2",[[3,4],[5,4]]], #防御和魔抗增加4
  [4,"战争3",[[3,7],[5,7]]], #防御和魔抗增加7
  [8,"战争4",[[3,10],[5,10]]], #防御和魔抗增加10
  [16,"战争5",[[3,13],[5,13]]], #防御和魔抗增加13
  [32,"战争6",[[3,16],[5,16]]], #防御和魔抗增加16
  [48,"战争7",[[3,20],[5,20]]], #防御和魔抗增加20
  [64,"战争8",[[3,25],[5,25]]], #防御和魔抗增加25
  [80,"战争9",[[3,30],[5,30]]], #防御和魔抗增加30
  [1,"幸运1",[[7,1],[7,1]]], #幸运增加1
  [2,"幸运2",[[7,2],[7,2]]], #幸运增加2
  [4,"幸运3",[[7,3],[7,3]]], #幸运增加3
  [8,"幸运4",[[7,4],[7,4]]], #幸运增加4
  [16,"幸运5",[[7,6],[7,6]]], #幸运增加6
  [32,"幸运6",[[7,8],[7,8]]], #幸运增加8
  [48,"幸运7",[[7,10],[7,10]]], #幸运增加10
  [64,"幸运8",[[7,13],[7,13]]], #幸运增加13
  [80,"幸运9",[[7,16],[7,6]]], #幸运增加16
  [1,"敏捷1",[[6,1],[6,1]]], #敏捷增加1
  [2,"敏捷2",[[6,2],[6,2]]], #敏捷增加2
  [4,"敏捷3",[[6,3],[6,3]]], #敏捷增加3
  [8,"敏捷4",[[6,4],[6,4]]], #敏捷增加4
  [16,"敏捷5",[[6,6],[6,6]]], #敏捷增加6
  [32,"敏捷6",[[6,8],[6,8]]], #敏捷增加8
  [48,"敏捷7",[[6,10],[6,10]]], #敏捷增加10
  [64,"敏捷8",[[6,13],[6,13]]], #敏捷增加13
  [80,"敏捷9",[[6,16],[6,6]]], #敏捷增加16
  ]
  $商店随机 = false #商店买装备时出随机属性
  $战斗随机 = true #战斗后获得随机属性装备
def self.getname(paramsplus)
    name = ""
    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(","){}}
    name += @temp[rand(@temp.size)] if paramsplus.is_a?(Array) != true
    name += "的"
  end
  def self.getluck #获得极品出现率
    luck = 0
    $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}}
    luck
  end
  def self.getnewequip(xequip,params = nil) #提供两个参数  装备(RPG::Equip类下的)和附加前缀数,不填则为随机
    return unless xequip.is_a?(RPG::EquipItem)
    #xparamplus为前缀数
    xequip.paramsplus = [] if xequip.paramsplus == nil
    return if xequip.paramsplus.size >= @maxparamplus
    params != nil ? xparamplus = params :  xparamplus = rand(@maxparamplus * 110) / 100
    xparamplus = xparamplus.to_int
    return xequip if xparamplus == 0
    equip = xequip.dup
    paramsplus = equip.paramsplus.dup  #无奈的方法,不这样改一个装备所有同父装备的装备都会变
    newparams = equip.params.dup
    newfeatures = equip.features.dup
    aparamsplus = @paramsplus.collect{|a| [a[0] = @transpose[a[0]-1],a[1],a[2]]}.sort_by{|a| a[0]}
    while paramsplus.size < xparamplus
      temp = rand(aparamsplus[-1][0])
      temp = [temp - getluck,0].max
      x = []
      for i in aparamsplus
        x.push i if i[0] >= temp && paramsplus.include?(i) != true
      end
      if x != []
        a = [(x.size-1)*100 - getluck,0].max
        a = (rand(a)/100).to_int
        paramsplus.push x[a]
      end
    end
    equip.name = getname(paramsplus) + equip.name #更新名称
    paramsplus.each{|a| equip.price += @transpose[a[0] - 1] * @moneyrate} #更新价格
    paramsplus.select{|a| a[2].select{|a| a.size == 2}.each{|a| newparams[a[0]] += a[1]}} #更新属性
    #以下为更新特性
    features = []
    paramsplus.each{|a| a[2].each{|a| features.push a if a.size == 3}}
    while features.size > 0
      i = features.pop
      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]}
    end
    if equip.is_a?(RPG::Weapon)
      equip.id = $data_weapons.size
      $data_weapons.insert $data_weapons.size,equip
      $data_weapons[equip.id].paramsplus = paramsplus
      $data_weapons[equip.id].params = newparams
      $data_weapons[equip.id].features = newfeatures
    else
      equip.id = $data_armors.size
      $data_armors.insert $data_armors.size,equip
      $data_armors[equip.id].paramsplus = paramsplus
      $data_armors[equip.id].params = newparams
      $data_armors[equip.id].features = newfeatures
    end
    equip
  end
  def self.gainequip(id,params = nil)
    $game_party.gain_item(Equipplus.getnewequip($data_weapons[id],params),1,true)
  end
end
if $商店随机 == true
  class Scene_Shop < Scene_MenuBase
    def do_buy(number)
      $game_party.lose_gold(number * buying_price)
      if @item.is_a?(RPG::EquipItem)
        x = number
        loop do
          break if x <= 0
          x -= 1
          $game_party.gain_item(Equipplus.getnewequip(@item), 1)
        end
      else
        $game_party.gain_item(@item, number)
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1307
在线时间
67 小时
注册时间
2010-12-22
帖子
121
3
发表于 2022-10-17 21:39:24 | 只看该作者
这是哪款软件的脚本呀。。?我咋不认识它呀。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-2 11:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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