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

Project1

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

[已经解决] VA的装备属性随机系统怎样添加前缀名与相应的能力?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2013-1-13
帖子
23
跳转到指定楼层
1
发表于 2013-1-17 08:51:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我还在学习脚本中。。。。。
我也知道自己很笨,呵呵
下面是脚本
我想添加属性和前缀名,请问需要怎样添加?
  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 = 3 #最大前缀数
  14.   @moneyrate = 10 #物品价格计算公式为:原价格 + 前缀权重 * @moneyrate
  15.   @transpose = [*1..100].reverse #用于把1变成100,100变成1
  16.   @paramsplus = [           #暂时只写了三个前缀,可以自己添加,参照前缀结构
  17.   [10,"力量,凶残",[[2,10]]], #物理攻击加10
  18.   [20,"灵气",[[0,200],[1,200]]], # HP和MP各加200
  19. [20,"不屈",[[0,500]]],# HP加500
  20. [30,"灵巧",[[22,1,0.1]]],# 闪避+10%
  21. [45,"轻盈",[[22,1,0.15]]],# 闪避+15%
  22. [25,"魔力",[[1,350]]],# MP+350
  23. [30,"专注",[[22,2,0.1]]],# 必杀几率+10%
  24. [30,"坚韧",[[22,7,1.1]]],# 体力恢复速度+10%
  25. [50,"悟性",[[23,9,1.1]]],# 经验获得+10%
  26.   [60,"战神",[[21,2,2]]] #物理攻击双倍
  27.   ]
  28.   $商店随机 = true #商店买装备时出随机属性
  29.   $战斗随机 = true #战斗后获得随机属性装备
  30.   def self.getname(paramsplus)
  31.     name = ""
  32.     paramsplus.is_a?(Array) ? paramsplus.each{|a| [url=home.php?mod=space&uid=263426]@temp[/url] = []; 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(","){}}
  33.     name += @temp[rand(@temp.size)] if paramsplus.is_a?(Array) != true
  34.     name += "之"
  35.   end
  36.   def self.getluck #获得极品出现率
  37.     luck = 0
  38.     $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}}
  39.     luck
  40.   end
  41.   def self.getnewequip(xequip,params = nil) #提供两个参数  装备(RPG::Equip类下的)和附加前缀数,不填则为随机
  42.     return unless xequip.is_a?(RPG::EquipItem)
  43.     #xparamplus为前缀数
  44.     xequip.paramsplus = [] if xequip.paramsplus == nil
  45.     return if xequip.paramsplus.size >= @maxparamplus
  46.     params != nil ? xparamplus = params :  xparamplus = rand(@maxparamplus * 110) / 100
  47.     xparamplus = xparamplus.to_int
  48.     return xequip if xparamplus == 0
  49.     equip = xequip.dup
  50.     paramsplus = equip.paramsplus.dup  #无奈的方法,不这样改一个装备所有同父装备的装备都会变
  51.     newparams = equip.params.dup
  52.     newfeatures = equip.features.dup
  53.     aparamsplus = @paramsplus.collect{|a| [a[0] = @transpose[a[0]-1],a[1],a[2]]}.sort_by{|a| a[0]}
  54.     while paramsplus.size < xparamplus
  55.       temp = rand(aparamsplus[-1][0])
  56.       temp = [temp - getluck,0].max
  57.       x = []
  58.       for i in aparamsplus
  59.         x.push i if i[0] >= temp && paramsplus.include?(i) != true
  60.       end
  61.       if x != []
  62.         a = [(x.size-1)*100 - getluck,0].max
  63.         a = (rand(a)/100).to_int
  64.         paramsplus.push x[a]
  65.       end
  66.     end
  67.     equip.name = getname(paramsplus) + equip.name #更新名称
  68.     paramsplus.each{|a| equip.price += @transpose[a[0] - 1] * @moneyrate} #更新价格
  69.     paramsplus.select{|a| a[2].select{|a| a.size == 2}.each{|a| newparams[a[0]] += a[1]}} #更新属性
  70.     #以下为更新特性
  71.     features = []
  72.     paramsplus.each{|a| a[2].each{|a| features.push a if a.size == 3}}
  73.     while features.size > 0
  74.       i = features.pop
  75.       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]}
  76.     end
  77.     if equip.is_a?(RPG::Weapon)
  78.       equip.id = $data_weapons.size
  79.       $data_weapons.insert $data_weapons.size,equip
  80.       $data_weapons[equip.id].paramsplus = paramsplus
  81.       $data_weapons[equip.id].params = newparams
  82.       $data_weapons[equip.id].features = newfeatures
  83.     else
  84.       equip.id = $data_armors.size
  85.       $data_armors.insert $data_armors.size,equip
  86.       $data_armors[equip.id].paramsplus = paramsplus
  87.       $data_armors[equip.id].params = newparams
  88.       $data_armors[equip.id].features = newfeatures
  89.     end
  90.     equip
  91.   end
  92.   def self.gainequip(id,params = nil)
  93.     $game_party.gain_item(Equipplus.getnewequip($data_weapons[id],params),1,true)
  94.   end
  95. end
  96. if $商店随机 == true
  97.   class Scene_Shop < Scene_MenuBase
  98.     def do_buy(number)
  99.       $game_party.lose_gold(number * buying_price)
  100.       if @item.is_a?(RPG::EquipItem)
  101.         x = number
  102.         loop do
  103.           break if x <= 0
  104.           x -= 1
  105.           $game_party.gain_item(Equipplus.getnewequip(@item), 1)
  106.         end
  107.       else
  108.         $game_party.gain_item(@item, number)
  109.       end
  110.     end
  111.   end
  112. end
  113. if $战斗随机 == true
  114.   module BattleManager
  115.     def self.gain_drop_items
  116.       $game_troop.make_drop_items.each do |item|
  117.         item.is_a?(RPG::EquipItem) ? xitem = Equipplus.getnewequip(item) : xitem = item
  118.         $game_party.gain_item(xitem, 1)
  119.         $game_message.add(sprintf(Vocab::ObtainItem, xitem.name))
  120.       end
  121.       wait_for_message
  122.     end
  123.   end
  124. end
  125. class RPG::EquipItem < RPG::BaseItem
  126.   alias old initialize
  127.   def initialize
  128.     old
  129.     @paramsplus #前缀
  130.   end
  131.   attr_accessor :paramsplus
  132. end
复制代码

Lv1.梦旅人

梦石
0
星屑
55
在线时间
79 小时
注册时间
2013-1-15
帖子
100
2
发表于 2013-1-17 09:47:14 | 只看该作者
仔细看脚本前面的文字就能发现点东西。看第11  12行   找到另一个脚本《说明增强脚本》
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2013-1-13
帖子
23
3
 楼主| 发表于 2013-1-17 09:48:47 | 只看该作者
没找到哦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
85
在线时间
424 小时
注册时间
2009-8-3
帖子
984
4
发表于 2013-1-17 13:11:02 | 只看该作者
说明部分已经讲得很清楚了吧
16行开始的
  1. @paramsplus = [           #暂时只写了三个前缀,可以自己添加,参照前缀结构
  2.   [10,"力量,凶残",[[2,10]]], #物理攻击加10
  3.   [20,"灵气",[[0,200],[1,200]]], # HP和MP各加200
  4. [20,"不屈",[[0,500]]],# HP加500
  5. [30,"灵巧",[[22,1,0.1]]],# 闪避+10%
  6. [45,"轻盈",[[22,1,0.15]]],# 闪避+15%
  7. [25,"魔力",[[1,350]]],# MP+350
  8. [30,"专注",[[22,2,0.1]]],# 必杀几率+10%
  9. [30,"坚韧",[[22,7,1.1]]],# 体力恢复速度+10%
  10. [50,"悟性",[[23,9,1.1]]],# 经验获得+10%
  11.   [60,"战神",[[21,2,2]]] #物理攻击双倍
  12.   ]
复制代码
自己修改就行了,至于格式,前面一行也有说明了。

点评

最前面的第一组数字是表示什么意思?还有,我自己写的这个怎么一使用就出错? [35,"极速",[[34,2,]]],# 增加攻击次数2  发表于 2013-1-17 13:21

评分

参与人数 1梦石 +1 收起 理由
迷糊的安安 + 1 认可答案 附赠66RPG提供的精美好人卡一张^^.

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
85
在线时间
424 小时
注册时间
2009-8-3
帖子
984
5
发表于 2013-1-17 13:32:06 | 只看该作者
。两种方法啊
  1. #~ 1.[属性ID,增加值]    属性ID参考说明增强脚本 增加了9号属性“极品出现率” ID为8,影响前缀的好坏 1 - 100
  2. #~ 2.与装备特性相同[code,data_id,value]  code,data_id参考说明增强脚本
复制代码
这个应该还配套有一个别的脚本的,在里面可以看到属性ID
比如
  1.   [10,"力量,凶残",[[2,10]]], #物理攻击加10
复制代码
10表示权重,会影响价格波动
“力量,凶残”这个是名字,有N个就N选1
[[2,10]]表示用的是第一种方法,也就是属性ID为2(翻另一个脚本能查到,也就是物理攻击),增加固定值10。

点评

因为那个直接添加只能添加普通能力,其他的都不行。。只能用第二种方式添加  发表于 2013-1-17 17:11
另一个脚本我找到了,其中 34号是增加武器攻击次数的,可是使用这个能力的话,就会脚本出错,大概在第66行,之后写的是 更新属性  发表于 2013-1-17 13:43
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-16 00:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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