| 赞 | 7 |
| VIP | |
| 好人卡 | |
| 积分 | 15 |
| 经验 | |
| 最后登录 | 2026-6-20 |
| 在线时间 | 815 小时 |
- 梦石
- 0
- 星屑
- 1461
- 在线时间
- 815 小时
- 注册时间
- 2013-8-3
- 回帖
- 355
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
开始我也没注意,玩家反应游戏中的随机属性装备存档读档就不见了。
大家看看哪里出毛病了{:2_254:}
随机属性装备脚本#encoding:utf-8
#==============================================================================
# ■ 随机属性装备 By wyongcan
#==============================================================================
#说明性注释
#==============================================================================
# FEATURE_ELEMENT_RATE = 11 # 属性抗性
# FEATURE_DEBUFF_RATE = 12 # 弱化抗性
# FEATURE_STATE_RATE = 13 # 状态抗性
# FEATURE_STATE_RESIST = 14 # 状态免疫
# FEATURE_PARAM = 21 # 普通能力
# FEATURE_XPARAM = 22 # 添加能力
# FEATURE_SPARAM = 23 # 特殊能力
# FEATURE_ATK_ELEMENT = 31 # 攻击附带属性
# FEATURE_ATK_STATE = 32 # 攻击附带状态
# FEATURE_ATK_SPEED = 33 # 修正攻击速度
# FEATURE_ATK_TIMES = 34 # 添加攻击次数
# FEATURE_STYPE_ADD = 41 # 添加技能类型
# FEATURE_STYPE_SEAL = 42 # 禁用技能类型
# FEATURE_SKILL_ADD = 43 # 添加技能
# FEATURE_SKILL_SEAL = 44 # 禁用技能
# FEATURE_EQUIP_WTYPE = 51 # 可装备武器类型
# FEATURE_EQUIP_ATYPE = 52 # 可装备护甲类型
# FEATURE_EQUIP_FIX = 53 # 固定装备
# FEATURE_EQUIP_SEAL = 54 # 禁用装备
# FEATURE_SLOT_TYPE = 55 # 装备风格
# FEATURE_ACTION_PLUS = 61 # 添加行动次数
# FEATURE_SPECIAL_FLAG = 62 # 特殊标志
# FEATURE_COLLAPSE_TYPE = 63 # 消失效果
# FEATURE_PARTY_ABILITY = 64 # 队伍能力
#--------------------------------------------------------------------------
# ● 特殊标志
#--------------------------------------------------------------------------
# 自动战斗 0 # 擅长防御 1 # 保护弱者 2 # 特技专注 3
#--------------------------------------------------------------------------
# ● 各种能力值的简易访问方法
#--------------------------------------------------------------------------
# ——普通能力——
# 物理攻击 2 # 物理防御 3 # 魔法攻击 4 # 魔法防御 5 # 敏捷值 6 # 幸运值 7
# ——添加能力——
# 成功几率 1 # 必杀几率 2 # 闪避必杀几率 3 # 闪避魔法几率 4
# 反射魔法几率 5 # 反击几率 6 # HP再生速度 7 # MP再生速度 8 # TP再生速度 9
# ——特殊能力——
#(0) 受到攻击的几率
#(1) 防御效果比率
#(2) 恢复效果比率
#(3) 药理知识
#(4) MP消费率
#(5) TP消耗率
#(6) 物理伤害加成
#(7) 魔法伤害加成
#(8) 地形伤害加成
#(9) 经验获得加成
#————————————————————————————————————————
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
[22,"",[[0,15]]],# HP
[22,"",[[1,15]]],# MP
[28,"",[[0,20]]],# HP
[28,"",[[1,20]]],# MP
[18,"",[[2,4]]], #物理攻击
[18,"",[[3,4]]], #防御攻击
[18,"",[[4,4]]],#魔法攻击
[18,"",[[5,4]]],# 魔法防御
[18,"",[[6,4]]], #速度
[26,"",[[2,8]]], #物理攻击
[26,"",[[3,8]]], #防御攻击
[26,"",[[4,8]]],#魔法攻击
[26,"",[[5,8]]],# 魔法防御
[26,"",[[6,8]]], #速度
[34,"",[[2,12]]], #物理攻击
[34,"",[[3,12]]], #防御攻击
[34,"",[[4,12]]],#魔法攻击
[34,"",[[5,12]]],# 魔法防御
[34,"",[[6,12]]], #速度
[17,"",[[22,0,0.06]]],# 命中
[17,"",[[22,1,0.06]]],# 物理躲避
[17,"",[[22,2,0.06]]],# 必杀
[17,"",[[22,3,0.06]]],# 必杀躲避
[17,"",[[22,4,0.06]]],# 魔法躲避
[17,"",[[22,5,0.06]]],# 魔法反射
[17,"",[[22,6,0.06]]],# 物理反击
[31,"",[[22,0,0.1]]],# 命中
[31,"",[[22,1,0.1]]],# 物理躲避
[31,"",[[22,2,0.1]]],# 必杀
[31,"",[[22,3,0.1]]],# 必杀躲避
[31,"",[[22,4,0.1]]],# 魔法躲避
[31,"",[[22,5,0.1]]],# 魔法反射
[31,"",[[22,6,0.1]]],# 物理反击
[24,"",[[22,0,0.08]]],# 命中
[24,"",[[22,1,0.08]]],# 物理躲避
[24,"",[[22,2,0.08]]],# 必杀
[24,"",[[22,3,0.08]]],# 必杀躲避
[24,"",[[22,4,0.08]]],# 魔法躲避
[24,"",[[22,5,0.08]]],# 魔法反射
[24,"",[[22,6,0.08]]],# 物理反击
[16,"",[[0,10]]],# HP
[16,"",[[1,10]]],# MP
[22,"",[[0,15]]],# HP
[22,"",[[1,15]]],# MP
[28,"",[[0,20]]],# HP
[28,"",[[1,20]]],# MP
[18,"",[[2,4]]], #物理攻击
[18,"",[[3,4]]], #防御攻击
[18,"",[[4,4]]],#魔法攻击
[18,"",[[5,4]]],# 魔法防御
[18,"",[[6,4]]], #速度
[26,"",[[2,8]]], #物理攻击
[26,"",[[3,8]]], #防御攻击
[26,"",[[4,8]]],#魔法攻击
[26,"",[[5,8]]],# 魔法防御
[26,"",[[6,8]]], #速度
[34,"",[[2,12]]], #物理攻击
[34,"",[[3,12]]], #防御攻击
[34,"",[[4,12]]],#魔法攻击
[34,"",[[5,12]]],# 魔法防御
[34,"",[[6,12]]], #速度
[17,"",[[22,0,0.06]]],# 命中
[17,"",[[22,1,0.06]]],# 物理躲避
[17,"",[[22,2,0.06]]],# 必杀
[17,"",[[22,3,0.06]]],# 必杀躲避
[17,"",[[22,4,0.06]]],# 魔法躲避
[17,"",[[22,5,0.06]]],# 魔法反射
[17,"",[[22,6,0.06]]],# 物理反击
[31,"",[[22,0,0.1]]],# 命中
[31,"",[[22,1,0.1]]],# 物理躲避
[31,"",[[22,2,0.1]]],# 必杀
[31,"",[[22,3,0.1]]],# 必杀躲避
[31,"",[[22,4,0.1]]],# 魔法躲避
[31,"",[[22,5,0.1]]],# 魔法反射
[31,"",[[22,6,0.1]]],# 物理反击
[24,"",[[22,0,0.08]]],# 命中
[24,"",[[22,1,0.08]]],# 物理躲避
[24,"",[[22,2,0.08]]],# 必杀
[24,"",[[22,3,0.08]]],# 必杀躲避
[24,"",[[22,4,0.08]]],# 魔法躲避
[24,"",[[22,5,0.08]]],# 魔法反射
[24,"",[[22,6,0.08]]],# 物理反击
[19,"",[[22,7,0.01]]],# HP再生
[19,"",[[22,8,0.01]]],# MP再生
[19,"",[[22,9,0.1]]],# SP再生
[13,"",[[23,2,0.05]]],# 恢复效果
[16,"",[[23,2,0.1]]],# 恢复效果
[19,"",[[23,2,0.15]]],# 恢复效果
[12,"",[[23,3,0.1]]],# 药物恢复效果
[14,"",[[23,3,0.15]]],# 药物恢复效果
[16,"",[[23,3,0.20]]],# 药物恢复效果
[23,"",[[13,1,0.1]]],# 抗性
[23,"",[[13,2,0.1]]],#
[23,"",[[13,3,0.1]]],#
[23,"",[[13,4,0.1]]],#
[23,"",[[13,5,0.1]]],#
[23,"",[[13,6,0.1]]],#
[23,"",[[13,7,0.1]]],# 抗性
[36,"",[[14,2,0.1]]],# 免疫
[36,"",[[14,3,0.1]]],#
[36,"",[[14,4,0.1]]],#
[36,"",[[14,5,0.1]]],#
[36,"",[[14,6,0.1]]],#
[36,"",[[14,7,0.1]]],# 免疫
[50,"",[[52,2,0.1]]],#装备
[40,"",[[52,3,0.1]]],
[60,"",[[52,4,0.1]]],
[45,"",[[52,6,0.1]]],
[55,"",[[52,7,0.1]]],
[35,"",[[51,1,0.1]]],#武器
[35,"",[[51,2,0.1]]],
[35,"",[[51,3,0.1]]],
[35,"",[[51,4,0.1]]],
[35,"",[[51,5,0.1]]],
[35,"",[[51,9,0.1]]],
[35,"",[[51,10,0.1]]],
[35,"",[[51,11,0.1]]],
]
$商店随机 = true #商店买装备时出随机属性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 |
|