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

Project1

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

[已经解决] 随机属性装备脚本后期写入的前缀会导致脚本报错

[复制链接]

Lv1.梦旅人

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

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

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

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参考说明增强脚本#encoding:utf-8
  13. #==============================================================================
  14. #说明性注释
  15. #==============================================================================
  16. #  FEATURE_ELEMENT_RATE  = 11              # 属性抗性
  17. #  FEATURE_DEBUFF_RATE   = 12              # 弱化抗性
  18. #  FEATURE_STATE_RATE    = 13              # 状态抗性
  19. #  FEATURE_STATE_RESIST  = 14              # 状态免疫
  20. #  FEATURE_PARAM         = 21              # 普通能力
  21. #  FEATURE_XPARAM        = 22              # 添加能力
  22. #  FEATURE_SPARAM        = 23              # 特殊能力
  23. #  FEATURE_ATK_ELEMENT   = 31              # 攻击附带属性
  24. #  FEATURE_ATK_STATE     = 32              # 攻击附带状态
  25. #  FEATURE_ATK_SPEED     = 33              # 修正攻击速度
  26. #  FEATURE_ATK_TIMES     = 34              # 添加攻击次数
  27. #  FEATURE_STYPE_ADD     = 41              # 添加技能类型
  28. #  FEATURE_STYPE_SEAL    = 42              # 禁用技能类型
  29. #  FEATURE_SKILL_ADD     = 43              # 添加技能
  30. #  FEATURE_SKILL_SEAL    = 44              # 禁用技能
  31. #  FEATURE_EQUIP_WTYPE   = 51              # 可装备武器类型
  32. #  FEATURE_EQUIP_ATYPE   = 52              # 可装备护甲类型
  33. #  FEATURE_EQUIP_FIX     = 53              # 固定装备
  34. #  FEATURE_EQUIP_SEAL    = 54              # 禁用装备
  35. #  FEATURE_SLOT_TYPE     = 55              # 装备风格
  36. #  FEATURE_ACTION_PLUS   = 61              # 添加行动次数
  37. #  FEATURE_SPECIAL_FLAG  = 62              # 特殊标志
  38. #  FEATURE_COLLAPSE_TYPE = 63              # 消失效果
  39. #  FEATURE_PARTY_ABILITY = 64              # 队伍能力
  40. #--------------------------------------------------------------------------
  41. # ● 特殊标志
  42. #--------------------------------------------------------------------------
  43. # 自动战斗 0   # 擅长防御 1   # 保护弱者 2   # 特技专注 3
  44. #--------------------------------------------------------------------------
  45. # ● 各种能力值的简易访问方法
  46. #--------------------------------------------------------------------------
  47. #  ——普通能力——
  48. # 物理攻击 2  # 物理防御 3  # 魔法攻击  4 #  魔法防御 5  # 敏捷值 6  # 幸运值 7
  49. #  ——添加能力——
  50. # 成功几率 1  # 必杀几率 2  # 闪避必杀几率 3  # 闪避魔法几率 4
  51. # 反射魔法几率 5  # 反击几率 6  # HP再生速度 7  # MP再生速度 8  # TP再生速度 9
  52. #  ——特殊能力——
  53. #(0)  受到攻击的几率        
  54. #(1)  防御效果比率
  55. #(2)  恢复效果比率
  56. #(3)  药理知识
  57. #(4)  MP消费率
  58. #(5)  TP消耗率
  59. #(6)  物理伤害加成
  60. #(7)  魔法伤害加成  
  61. #(8)  地形伤害加成   
  62. #(9)  经验获得加成  
  63. #————————————————————————————————————————
  64.   @maxparamplus = 2 #最大前缀数
  65.   @moneyrate = 10 #物品价格计算公式为:原价格 + 前缀权重 * @moneyrate
  66.   @transpose = [*1..100].reverse #用于把1变成100,100变成1
  67.   @paramsplus = [           #暂时只写了三个前缀,可以自己添加,参照前缀结构
  68.   [80,"力量",[[2,10]]], #物理攻击加10
  69.   [80,"短小",[[2,-10]]], #物理攻击减10
  70.   [40,"锈蚀"[2,-20]]], #物理攻击减20
  71.   [75,"守护",[[3,10]]], #物理防御加10
  72.   [75,"胆怯",[[3,-10]]], #物理防御减10
  73.   [25,"魔能",[[4,10],[5,10]]] # 魔攻和魔防各加10
  74.   [60,"灵性",[[0,40],[1,40]]], # HP和MP各加40
  75.   [60,"诅咒",[[0,-40],[1,-40]]], # HP和MP各减40
  76. [60,"不屈",[[0,100]]],# HP加100
  77. [60,"魔力",[[1,100]]],# MP加100
  78. [30,"灵巧",[[22,1,0.1]]],# 闪避+10%
  79. [50,"闪避",[[22,1,0.2]]],# 闪避+20%
  80. [30,"稳重",[[43,0,0.1]]],# 命中+10%
  81. [15,"命中",[[43,0,0.2]]],# 命中+20%
  82. [30,"专注",[[22,2,0.1]]],# 必杀几率+5%
  83. [20,"活性",[[22,7,1.5]]],# 体力恢复速度+5%
  84. [10,"悟性",[[23,9,1.4]]],# 经验获得+40%
  85.   [5,"战神",[[21,2,2]]] #物理攻击双倍
  86.   ]
  87.   $商店随机 = true #商店买装备时出随机属性
  88.   $战斗随机 = true #战斗后获得随机属性装备
  89.   def self.getname(paramsplus)
  90.     name = ""
  91.     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(","){}}
  92.     name += @temp[rand(@temp.size)] if paramsplus.is_a?(Array) != true
  93.     name += "的"
  94.   end
  95.   def self.getluck #获得极品出现率
  96.     luck = 0
  97.     $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}}
  98.     luck
  99.   end
  100.   def self.getnewequip(xequip,params = nil) #提供两个参数  装备(RPG::Equip类下的)和附加前缀数,不填则为随机
  101.     return unless xequip.is_a?(RPG::EquipItem)
  102.     #xparamplus为前缀数
  103.     xequip.paramsplus = [] if xequip.paramsplus == nil
  104.     return if xequip.paramsplus.size >= @maxparamplus
  105.     params != nil ? xparamplus = params :  xparamplus = rand(@maxparamplus * 110) / 100
  106.     xparamplus = xparamplus.to_int
  107.     return xequip if xparamplus == 0
  108.     equip = xequip.dup
  109.     paramsplus = equip.paramsplus.dup  #无奈的方法,不这样改一个装备所有同父装备的装备都会变
  110.     newparams = equip.params.dup
  111.     newfeatures = equip.features.dup
  112.     aparamsplus = @paramsplus.collect{|a| [a[0] = @transpose[a[0]-1],a[1],a[2]]}.sort_by{|a| a[0]}
  113.     while paramsplus.size < xparamplus
  114.       temp = rand(aparamsplus[-1][0])
  115.       temp = [temp - getluck,0].max
  116.       x = []
  117.       for i in aparamsplus
  118.         x.push i if i[0] >= temp && paramsplus.include?(i) != true
  119.       end
  120.       if x != []
  121.         a = [(x.size-1)*100 - getluck,0].max
  122.         a = (rand(a)/100).to_int
  123.         paramsplus.push x[a]
  124.       end
  125.     end
  126.     equip.name = getname(paramsplus) + equip.name #更新名称
  127.     paramsplus.each{|a| equip.price += @transpose[a[0] - 1] * @moneyrate} #更新价格
  128.     paramsplus.select{|a| a[2].select{|a| a.size == 2}.each{|a| newparams[a[0]] += a[1]}} #更新属性
  129.     #以下为更新特性
  130.     features = []
  131.     paramsplus.each{|a| a[2].each{|a| features.push a if a.size == 3}}
  132.     while features.size > 0
  133.       i = features.pop
  134.       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]}
  135.     end
  136.     if equip.is_a?(RPG::Weapon)
  137.       equip.id = $data_weapons.size
  138.       $data_weapons.insert $data_weapons.size,equip
  139.       $data_weapons[equip.id].paramsplus = paramsplus
  140.       $data_weapons[equip.id].params = newparams
  141.       $data_weapons[equip.id].features = newfeatures
  142.     else
  143.       equip.id = $data_armors.size
  144.       $data_armors.insert $data_armors.size,equip
  145.       $data_armors[equip.id].paramsplus = paramsplus
  146.       $data_armors[equip.id].params = newparams
  147.       $data_armors[equip.id].features = newfeatures
  148.     end
  149.     equip
  150.   end
  151.   def self.gainequip(id,params = nil)
  152.     $game_party.gain_item(Equipplus.getnewequip($data_weapons[id],params),1,true)
  153.   end
  154. end
  155. if $商店随机 == true
  156.   class Scene_Shop < Scene_MenuBase
  157.     def do_buy(number)
  158.       $game_party.lose_gold(number * buying_price)
  159.       if @item.is_a?(RPG::EquipItem)
  160.         x = number
  161.         loop do
  162.           break if x <= 0
  163.           x -= 1
  164.           $game_party.gain_item(Equipplus.getnewequip(@item), 1)
  165.         end
  166.       else
  167.         $game_party.gain_item(@item, number)
  168.       end
  169.     end
  170.   end
  171. end
  172. if $战斗随机 == true
  173.   module BattleManager
  174.     def self.gain_drop_items
  175.       $game_troop.make_drop_items.each do |item|
  176.         item.is_a?(RPG::EquipItem) ? xitem = Equipplus.getnewequip(item) : xitem = item
  177.         $game_party.gain_item(xitem, 1)
  178.         $game_message.add(sprintf(Vocab::ObtainItem, xitem.name))
  179.       end
  180.       wait_for_message
  181.     end
  182.   end
  183. end
  184. class RPG::EquipItem < RPG::BaseItem
  185.   alias old initialize
  186.   def initialize
  187.     old
  188.     @paramsplus #前缀
  189.   end
  190.   attr_accessor :paramsplus
  191. end
复制代码
随机属性装备脚本后期写入的前缀会导致脚本报错,报错的行数是第74行。
请问我是哪里搞错了吗?

Lv3.寻梦者

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

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
2
发表于 2014-11-20 21:06:51 | 只看该作者
你的第70行很明显写错了吧,锈蚀什么的

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

3
发表于 2014-11-20 23:08:52 | 只看该作者
本帖最后由 VIPArcher 于 2014-11-21 01:05 编辑

70行少了个,号
  1. [40,"锈蚀",[[2,-20]]],
复制代码

点评

泥都不知道那就只能@TD触了。  发表于 2014-11-21 01:15
其实不是很明白为啥要套这么多层。嘛不管了。  发表于 2014-11-21 01:07
嗯,没注意  发表于 2014-11-21 01:05
别闹,明明还有个中括号  发表于 2014-11-21 01:01

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
46 小时
注册时间
2014-10-6
帖子
94
4
 楼主| 发表于 2014-11-21 13:22:34 | 只看该作者
VIPArcher 发表于 2014-11-20 23:08
70行少了个,号

已改正,不过74行依旧报错

点评

你73行又少了个逗号  发表于 2014-11-21 13:31
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
46 小时
注册时间
2014-10-6
帖子
94
5
 楼主| 发表于 2014-11-21 17:01:52 | 只看该作者
...两处错误改完后可以正常运行了,我下次写完一定认真再看一遍,最后感谢各位的解答。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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