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

Project1

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

[已经解决] 为什么更新特性后所有同父装备的装备特性都变?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1078
在线时间
67 小时
注册时间
2017-7-17
帖子
6
跳转到指定楼层
1
发表于 2017-7-17 16:42:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
各位大神,更新特性后所有同父装备的装备特性都变,数值无限叠加,应该怎么修改脚本?

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 = 15 #物品价格计算公式为:原价格 + 前缀权重 * @moneyrate
@transpose  = [*1..100].reverse #用于把1变成100,100变成1
  @paramsplus = [           #暂时写了四个前缀,可以自己添加,参照前缀结构
[16,"",[[0,10]]],# HP      
[16,"",[[1,10]]],# MP
[18,"",[[2,4]]], #物理攻击
[18,"",[[3,4]]], #防御攻击
]
  $商店随机 = false #商店买装备时出随机属性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)
      end
    end
  end
end
if $战斗随机 == true
  module BattleManager
    def self.gain_drop_items
      $game_troop.make_drop_items.each do |item|
        item.is_a?(RPG::EquipItem) ? xitem = Equipplus.getnewequip(item) : xitem = item
        $game_party.gain_item(xitem, 1)
        $game_message.add(sprintf(Vocab::ObtainItem, xitem.name))
      end
      wait_for_message
    end
  end
end
class RPG::EquipItem < RPG::BaseItem
  alias old initialize
  def initialize
    old
    @paramsplus #前缀
end
  attr_accessor :paramsplus
end

Lv4.逐梦者

梦石
0
星屑
6260
在线时间
1481 小时
注册时间
2015-7-25
帖子
652

开拓者

2
发表于 2017-7-17 19:40:34 | 只看该作者
看一下这个帖子,我猜就是你想问的问题,正好我以前回答过
https://rpg.blue/forum.php?mod=v ... amp;_dsign=8064184d

评分

参与人数 1星屑 +150 收起 理由
RaidenInfinity + 150 认可答案

查看全部评分

笨肉包的首款像素OC游戏《花城梦之心》尝试制作中~
目前的坑 【不可思议的迷宫】幽灵契约外传:歌莉娅
持续更新中~ 当前进度 v0.28
大版本更新时才会更新网盘文件,预计下次大版本更新:v0.30
完成度:
主线 15% 支线 0% 数据库 6% 系统 86% 美术 6%
两边同时填坑~
( 这里是笨肉包~专修魔法!目标是大魔法师!
( 坑太大啦,一个人填不完啦hhh 一定会填完的嗯...
( 每天都和bug们比试魔力~吾之魔法将扫平一切!
( 弱点是美术,魔法修行之余再补补课吧~
( 哼哼哼~这便是魔法的力量!
大家都离开啦,笨肉包也不知道还能坚持多久呀...
这是属于笨肉包一个人的旅行(再见了...蚊子湯,七重酱,笨肉包永远想你们!TwT
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1078
在线时间
67 小时
注册时间
2017-7-17
帖子
6
3
 楼主| 发表于 2017-7-18 00:40:37 | 只看该作者
魔法丶小肉包 发表于 2017-7-17 19:40
看一下这个帖子,我猜就是你想问的问题,正好我以前回答过
https://rpg.blue/forum.php?mod=viewthread& ...

谢谢!解决了原始装备特性不再无限叠加,但是又产生了一个新问题:还是拿衣服装备初始设置躲避力+1%来说,刷出来的随机属性装备,有前缀增加躲避力的,刷出来的随机属性装备躲避力数值也不再增加,与原始装备躲避力一个数值“1%”;随机属性装备有两个前缀都增加衣服装备原来没有的“命中率”特性5%和3%,随机属性装备只增加第一个前缀的命中率5%,第二个前缀的命中率3%没有加上去,随机属性装备“命中率”是5%,而不是8%。换句话说只要随机属性装备已有某个特性,前缀也是增加这个特性的,最后前缀特性的数值却没有累加上去
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1078
在线时间
67 小时
注册时间
2017-7-17
帖子
6
4
 楼主| 发表于 2017-7-18 00:49:13 | 只看该作者
魔法丶小肉包 发表于 2017-7-17 19:40
看一下这个帖子,我猜就是你想问的问题,正好我以前回答过
https://rpg.blue/forum.php?mod=viewthread& ...

难道是我放错位置了?是把添加的脚本放在“随机属性装备”脚本下方是吗?还是放整个脚本的下方?

点评

并没有放错位置...那个帖子回答的时候我只是针对所提出的问题来解决一下而已,当然可能会出现别的问题,要完全解决我推荐去找原作者比较好  发表于 2017-7-18 16:12
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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