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

Project1

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

[已经解决] 关于技能属性的问题,大触才进来

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
641 小时
注册时间
2015-7-29
帖子
211
跳转到指定楼层
1
发表于 2015-12-25 12:44:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 黄谊洲 于 2015-12-25 13:02 编辑

众所周知,护甲类所附加的攻击时附加某属性,那么这个攻击时附加的属性只有普通攻击有效,那么我想请教的问题是,如何让这个护甲类所附加的攻击时附加的属性   在该角色的其他技能上生效呢?

Lv3.寻梦者

梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
帖子
813

开拓者

4
发表于 2015-12-28 19:39:26 | 只看该作者
  1. #==============================================================================
  2. # ■ RGSS3 スキル・アイテムへの追加属性 Ver1.00 by 星潟
  3. #------------------------------------------------------------------------------
  4. # 一定確率で指定したスキル・アイテム使用時のダメージ属性が
  5. # 本来エディタ上で指定された物から更に追加されるようにします。
  6. # 使い方によっては特定スキル・アイテムに
  7. # 一定確率で他の属性を追加する特徴が作成できるようにもなります。
  8. #
  9. # 例.スキルのメモ欄に
  10. # <追加属性:3>
  11. # 100%の確率でそのスキル・アイテムに
  12. # 属性ID3の属性が追加される。
  13. #
  14. # <追加属性:4,50>
  15. # 50%の確率でそのスキル・アイテムに
  16. # 属性ID4の属性が追加される。
  17. #
  18. # <追加属性:5,user.element_rate(17)*100-100>
  19. # 使用者の属性ID17の属性有効度から100を引いた確率で
  20. # そのスキル・アイテムに属性ID5の属性が追加される。
  21. #------------------------------------------------------------------------------
  22. # ももまるLabs様のXPスタイルバトルと併用される場合
  23. # XPスタイルバトルより上に配置して下さい。
  24. # そうする事で、弱点/耐性ダメージ表示が正常に稼働します。
  25. #
  26. # 数値指定の2番目は確率処理ですが、evalを用いているので
  27. # 上のuser.element_rate(17)*100-100等のように、計算式を用いる事が可能です。
  28. # 装備品等で追加属性を設定する際は、これをうまく利用して下さい。
  29. #==============================================================================
  30. module EX_ELEM
  31.   
  32.   #追加属性で弱点や耐性が発生した時の属性計算方法の指定
  33.   #0……各属性で最も高い有効度を属性有効度として扱う。
  34.   #1……全属性の有効度の乗算を属性有効度として扱う。
  35.   #2……基本有効度を0とし、全属性の有効度から100を引いた値を
  36.   #     基本有効度に加算した値を属性有効度として扱う。
  37.   
  38.   TYPE = 0
  39.   
  40.   
  41.   #追加属性として同じ属性が多重付与された場合の処理
  42.   #true……全て有効にする。
  43.   #false……一回分のみ有効とする。
  44.   #なお、TYPEが0の場合は、強制的にfalseになります。
  45.   
  46.   DUAL1 = false
  47.   
  48.   
  49.   #スキル・アイテムと同じ属性が多重付与された場合の処理
  50.   #true……有効にする。
  51.   #false……無効とする。
  52.   #なお、TYPEが0の場合は、強制的にfalseになります。
  53.   
  54.   DUAL2 = false
  55.   
  56.   
  57.   #属性有効度下限
  58.   #(負の値も指定可能。
  59.   #  ただし、TYPEを2にしない限り、通常環境下では0以下にはならない。
  60.   #  設定しない場合、nilを指定)
  61.   
  62.   BTM  = 0
  63.   
  64.   
  65.   #属性有効度上限
  66.   #(設定しない場合、nilを指定)
  67.   
  68.   TOP  = 10000
  69.   
  70.   
  71.   #設定用キーワード(変更不要)
  72.   
  73.   WORD = "追加属性"
  74.   
  75. end
  76. class Game_Battler < Game_BattlerBase
  77.   alias item_element_rate_extra_element item_element_rate
  78.   def item_element_rate(user, item)
  79.     @exelem = []
  80.     data = item_element_rate_extra_element(user, item)
  81.     #追加属性がない時は処理を飛ばす
  82.     if !item.extra_element.empty?
  83.       #追加属性を確率で判定
  84.       for i in 0...item.extra_element.size
  85.         next unless eval(item.extra_element[i][1]) > rand(100)
  86.         @exelem.push(item.extra_element[i][0].to_i)
  87.       end
  88.       #多重付与された追加属性を削除(設定による)
  89.       @exelem.uniq! if !EX_ELEM::DUAL1 or EX_ELEM::TYPE == 0
  90.       #追加属性内から、元々スキル・アイテム内にある属性を削除(設定による)
  91.       if !EX_ELEM::DUAL2 or EX_ELEM::TYPE == 0
  92.         if item.damage.element_id < 0 && !user.atk_elements.empty?
  93.           user.atk_elements.each do |i|
  94.             @exelem.delete(i) if @exelem.include?(i)
  95.           end
  96.         else
  97.           @exelem.delete(item.damage.element_id) if @exelem.include?(item.damage.element_id)
  98.         end
  99.       end
  100.       #追加属性がある場合、タイプ別に属性有効度計算処理
  101.       if [email protected]?
  102.         for i in @exelem
  103.           data2 = element_rate(i)
  104.           if EX_ELEM::TYPE == 0
  105.             data = data2 if data < data2
  106.           elsif EX_ELEM::TYPE == 1
  107.             data *= data2
  108.           elsif EX_ELEM::TYPE == 2
  109.             data += data2 - 1.0
  110.           end
  111.         end
  112.       end
  113.     end
  114.     #属性有効度最大値チェック
  115.     data = [data, EX_ELEM::TOP / 100.0].min if EX_ELEM::TOP != nil
  116.     #属性有効度最低値チェック
  117.     data = [data, EX_ELEM::BTM / 100.0].max if EX_ELEM::BTM != nil
  118.     return data
  119.   end
  120. end
  121. class RPG::UsableItem < RPG::BaseItem
  122.   def extra_element
  123.     #キャッシュがある場合は読み込み処理を飛ばす
  124.     return @extra_element if @extra_element != nil
  125.     data = []
  126.     #メモ欄から読み込み
  127.     self.note.each_line { |line|
  128.     memo = line.scan(/<#{EX_ELEM::WORD}[::](\S+)>/)
  129.     memo = memo.flatten
  130.     if memo != nil and not memo.empty?
  131.       memo = memo[0].split(/\s*,\s*/)
  132.       #2番目の値がない場合は100%追加
  133.       memo.push("100") if memo[1] == nil
  134.       data.push(memo)
  135.     end
  136.     }
  137.     @extra_element = data
  138.     return @extra_element
  139.   end
  140. end
复制代码

点评

因为可以修改属性的出现几率,所以可能会有办法修改为某个装备穿上时或者某个状态存在时成功率变成100%,其他时候就是0%,具体方法我没想到  发表于 2015-12-28 19:42
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

漾夕☽星化残月☾

梦石
0
星屑
8596
在线时间
3857 小时
注册时间
2015-5-12
帖子
2077

剧作品鉴家

3
发表于 2015-12-25 13:03:47 | 只看该作者
本帖最后由 御曹司 于 2015-12-25 13:09 编辑

技能的伤害的属性 改为 普通攻击

点评

因为我的工程比较复杂,无法实现,不过总之还是谢谢你啦  发表于 2015-12-25 13:50
那就再做一个技能B、装备禁用技能A、学会技能B。不想用这种方法就只能用脚本了  发表于 2015-12-25 13:11
该技能拥有另外一种属性  发表于 2015-12-25 13:08
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

2
发表于 2015-12-25 12:49:09 | 只看该作者
技能的使用效果里写附加状态 - 普通攻击 100%

点评

好的 多谢。 看来要用脚本  发表于 2015-12-25 13:51
好吧,那比较麻烦了。可以尝试修改 Game_Battler#item_element_rate 方法。因为不清楚具体想要的效果,所以不提供代码  发表于 2015-12-25 13:10
属性呀  发表于 2015-12-25 13:01
你到底是在说属性还是状态  发表于 2015-12-25 12:58
比如说哈,护甲附加了攻击时附加火属性,那么我使用的技能也是有属性(爆破)而非普通攻击,所以就导致护甲附加的火属性无效化  发表于 2015-12-25 12:56
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 05:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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