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

Project1

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

[已经解决] 关于随机属性装备脚本的使用问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2014-10-28
帖子
94
跳转到指定楼层
1
发表于 2014-11-17 13:42:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 猩红之月 于 2014-11-17 13:44 编辑

测试游戏一打开就显示第34行出错了,希望懂脚本的人帮我修正一下。
  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.   [80,"力量",[[2,20]]], #物理攻击加20
  18.   [60,"灵性",[[0,40],[1,40]]], # HP和MP各加40
  19. [70,"不屈",[[0,100]]],# HP加100
  20. [30,"灵巧",[[22,1,0.1]]],# 闪避+10%
  21. [50,"闪避",[[22,1,0.2]]],# 闪避+20%
  22. [30,"稳重",[[43,0,0.1]]],# 命中+10%
  23. [45,"命中",[[43,0,0.2]]],# 命中+20%
  24. [25,"魔能",[[1,100]]],# MP+100
  25. [30,"专注",[[22,2,0.1]]],# 必杀几率+5%
  26. [20,"活性",[[22,7,1.5]]],# 体力恢复速度+5%
  27. [10,"悟性",[[23,9,1.4]]],# 经验获得+40%
  28.   [5,"战神",[[21,2,2]]] #物理攻击双倍
  29.   $商店随机 = true #商店买装备时出随机属性
  30.   $战斗随机 = true #战斗后获得随机属性装备
  31.   def self.getname(paramsplus)
  32.     name = ""
  33.     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| [url=home.php?mod=space&uid=263426]@temp[/url] = [] if @temp == nil ;@temp.push b.gsub(","){}}
  34.     name += @temp[rand(@temp.size)] if paramsplus.is_a?(Array) != true
  35.     name += "的"
  36.   end
  37.   def self.getluck #获得极品出现率
  38.     luck = 0
  39.     $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}}
  40.     luck
  41.   end
  42.   def self.getnewequip(xequip,params = nil) #提供两个参数  装备(RPG::Equip类下的)和附加前缀数,不填则为随机
  43.     return unless xequip.is_a?(RPG::EquipItem)
  44.     #xparamplus为前缀数
  45.     xequip.paramsplus = [] if xequip.paramsplus == nil
  46.     return if xequip.paramsplus.size >= @maxparamplus
  47.     params != nil ? xparamplus = params :  xparamplus = rand(@maxparamplus * 110) / 100
  48.     xparamplus = xparamplus.to_int
  49.     return xequip if xparamplus == 0
  50.     equip = xequip.dup
  51.     paramsplus = equip.paramsplus.dup  #无奈的方法,不这样改一个装备所有同父装备的装备都会变
  52.     newparams = equip.params.dup
  53.     newfeatures = equip.features.dup
  54.     aparamsplus = @paramsplus.collect{|a| [a[0] = @transpose[a[0]-1],a[1],a[2]]}.sort_by{|a| a[0]}
  55.     while paramsplus.size < xparamplus
  56.       temp = rand(aparamsplus[-1][0])
  57.       temp = [temp - getluck,0].max
  58.       x = []
  59.       for i in aparamsplus
  60.         x.push i if i[0] >= temp && paramsplus.include?(i) != true
  61.       end
  62.       if x != []
  63.         a = [(x.size-1)*100 - getluck,0].max
  64.         a = (rand(a)/100).to_int
  65.         paramsplus.push x[a]
  66.       end
  67.     end
  68.     equip.name = getname(paramsplus) + equip.name #更新名称
  69.     paramsplus.each{|a| equip.price += @transpose[a[0] - 1] * @moneyrate} #更新价格
  70.     paramsplus.select{|a| a[2].select{|a| a.size == 2}.each{|a| newparams[a[0]] += a[1]}} #更新属性
  71.     #以下为更新特性
  72.     features = []
  73.     paramsplus.each{|a| a[2].each{|a| features.push a if a.size == 3}}
  74.     while features.size > 0
  75.       i = features.pop
  76.       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]}
  77.     end
  78.     if equip.is_a?(RPG::Weapon)
  79.       equip.id = $data_weapons.size
  80.       $data_weapons.insert $data_weapons.size,equip
  81.       $data_weapons[equip.id].paramsplus = paramsplus
  82.       $data_weapons[equip.id].params = newparams
  83.       $data_weapons[equip.id].features = newfeatures
  84.     else
  85.       equip.id = $data_armors.size
  86.       $data_armors.insert $data_armors.size,equip
  87.       $data_armors[equip.id].paramsplus = paramsplus
  88.       $data_armors[equip.id].params = newparams
  89.       $data_armors[equip.id].features = newfeatures
  90.     end
  91.     equip
  92.   end
  93.   def self.gainequip(id,params = nil)
  94.     $game_party.gain_item(Equipplus.getnewequip($data_weapons[id],params)),1,true)
  95.   end
  96. end
  97. if $商店随机 == true
  98.   class Scene_Shop < Scene_MenuBase
  99.     def do_buy(number)
  100.       $game_party.lose_gold(number * buying_price)
  101.       if @item.is_a?(RPG::EquipItem)
  102.         x = number
  103.         loop do
  104.           break if x <= 0
  105.           x -=1
  106.           $game_party.gain_item(Equipplus.getnewequip(@item), 1)        
  107.           end
  108.       else
  109.         $game_party.gain_item(@item,number)
  110.       end
  111.     end
  112.   end
  113. end
  114. if $战斗随机 == true
  115.   module BattleManager
  116.     def self.gain_drop_items
  117.       $game_troop.make_drop_items.each do |item|
  118.         item.is_a?(RPG::EquipItem) ? xitem = Equipplus.getnewequip(item) : xitem = item
  119.         $game_party.gain_item(xitem, 1)
  120.         $game_message.add(sprintf(Vocab::ObtainItem, xitem.name))
  121.       end
  122.       wait_for_message
  123.     end
  124.   end
  125. end
  126. class RPG::EquipItem < RPG::BaseItem
  127.   alias old initialize
  128.   def initialize
  129.     old
  130.     @paramsplus #前缀  
  131.   end
  132.   attr_accessor :paramsplus
  133. end
复制代码
另外,能不能再按照再告诉我一下【魔攻,魔防,防御,速度,幸运乘以多少倍】的公式或者负面属性的公式?  

点评

攻击力倍数参考该脚本第29行属性ID参考装备帮助增强脚本。多尝试,多测试。(我未测试  发表于 2014-11-17 18:19

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
2
发表于 2014-11-17 14:24:17 | 只看该作者
在新工程中也报错吗?
这个脚本看过很多问,但是都没有提到报错。

----------------------------------------------------------------------------------------
【魔攻,魔防,防御,速度,幸运乘以多少倍】的公式或者负面属性的公式?

说实话这句话我没太看懂……

如果你想问的是技能造成伤害的公式的话。
除了幸运每1点可以使状态附加的成功率增加1‰ ,
其它的没有自身的作用,视技能自己设置的伤害公式而定。

伤害的属性则会根据被攻击的属性抗性(其实这个抗性是有效度的意思,如果冰抗是200,那么它受到冰的伤害会变成2倍)
来进行乘数计算。

更具体的信息请自行F1

点评

怒砍34行可爱的url[url=home.php?mod=space&uid=263426]@temp[/url]   发表于 2014-11-17 18:02
不是这个,我指的是脚本里的附加的可以提升能力的前缀要怎么设定?像【灵巧】中括号里的22,1不知道是什么意思,不知道该如何设定。  发表于 2014-11-17 17:57
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

3
发表于 2014-11-17 17:21:14 | 只看该作者
url 砍掉没?(见图书馆顶楼 Q & A)

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2014-10-28
帖子
94
4
 楼主| 发表于 2014-11-17 18:02:31 | 只看该作者
本帖最后由 猩红之月 于 2014-11-17 18:09 编辑

嗯,谢谢VIP提醒,已经可以用了。

点评

图书馆说得很清楚[url=home.php?mod=space&uid=263426]@temp[/url] 改成@temp  发表于 2014-11-17 18:04
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2014-10-28
帖子
94
5
 楼主| 发表于 2014-11-17 18:15:01 | 只看该作者
@VIPArcher 【灵巧】中括号里的22,1不知道是什么意思,不知道该如何设定。请问前缀属性可以设立一个应该类似于【战神】一样的多倍属性吗?以及一些负面的属性,麻烦打几个范例。

点评

这个脚本好乱有点不想看,你自己看脚本注释11到13行然后多试试吧  发表于 2014-11-17 18:23
回复 支持 反对

使用道具 举报

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
6
发表于 2014-11-17 21:08:23 | 只看该作者
本帖最后由 三途亚梦 于 2014-11-17 21:16 编辑
猩红之月 发表于 2014-11-17 18:15
@VIPArcher 【灵巧】中括号里的22,1不知道是什么意思,不知道该如何设定。请问前缀属性可以设立一个应该类 ...


原来你说这个……

那很好理解的,你看它自己写的例子就可以理解出来的。

[80,"力量",[[2,20]]]
它的内容是[权重,"名字",[[能力值的id,增加量]]]

[5,"战神",[[21,2,2]]]
它的内容是[权重,"名字",[[21,能力值的id,增加倍率]]]
其中21对应编辑器中的“能力 - 普通能力”这一大类,攻击力等
22是 添加能力,命中等
23是 特殊能力,药理知识等

至于能否是负数,你在增加量前面加个“-”(减号)试试就知道了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2014-10-28
帖子
94
7
 楼主| 发表于 2014-11-19 16:41:38 | 只看该作者
三途亚梦 发表于 2014-11-17 21:08
原来你说这个……

那很好理解的,你看它自己写的例子就可以理解出来的。

能力值的id及其效果可以在哪里查看吗?不然一个个试过比较麻烦。编辑器?那是什么?

点评

编辑器就是VA啊,硬要说成“数据库 - 武器 - 能力 - 普通能力”你才能懂吗……你要查看id可以在Game_BattlerBase里。试一遍有什么麻烦的,等级做一次笔记  发表于 2014-11-19 16:45
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 05:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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