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

Project1

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

[已经解决] 特技勾选两个属性有效度会无效诶

[复制链接]

Lv2.观梦者

梦石
0
星屑
460
在线时间
49 小时
注册时间
2008-11-30
帖子
110
跳转到指定楼层
1
发表于 2019-1-28 11:37:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 a2523496 于 2019-1-28 11:47 编辑

一个特技勾选了两个属性的话  敌方的属性有效度只有ABC有效果 DEF就无效了
在论坛搜了一遍只有vx的多属性脚本 xp没有 呜呜
或者有什么办法     不让某几个属性不计算入伤害吗
在战斗计算公式那边的属性修正 写
if 属性ID = 几时
不计算这个属性有效度
end
之类的?

Lv3.寻梦者

梦石
0
星屑
3670
在线时间
357 小时
注册时间
2018-9-4
帖子
272
2
发表于 2019-1-28 13:10:00 | 只看该作者
本帖最后由 Mono_kyrin 于 2019-1-28 13:23 编辑

Game_Actor 第107行
Game_Enemy 第118行
还有Game_Battler的334行
这几个地方都有定义属性相关方法
举个例子,Game_Enemy:
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 获取属性修正值
  3.   #     element_id : 属性 ID
  4.   #--------------------------------------------------------------------------
  5.   def element_rate(element_id)
  6.     # 获取对应属性有效度的数值
  7.     table = [0,200,150,100,50,0,-100]
  8.     result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
  9.     # 状态能防御本属性的情况下效果减半
  10.     for i in @states
  11.       if $data_states[i].guard_element_set.include?(element_id)
  12.         #-----------------------------------修改部分-------------------------------------------------
  13.         unless i == #这里是你不想计算的属性id
  14.           result /= 2
  15.         end
  16.         #-----------------------------------修改结束-------------------------------------------------
  17.       end
  18.     end
  19.     # 过程结束
  20.     return result
  21.   end

叠加属性的脚本这里有个樱雅大的版本:
RUBY 代码复制
  1. # ▼▲▼ XRXS38. 属性修正计算数限制 ▼▲▼ built 081012
  2. # by 桜雅 在土 (原作)
  3. #    Tetra-Z   (強化)
  4. #==============================================================================
  5. # 简介:此脚本会将“系统默认的属性修正”和“战斗特殊效果属性”分开计算;
  6. #       插入此脚本后,“战斗特殊效果属性”将“不计算属性有效度”。
  7. #==============================================================================
  8. # □ カスタマイズポイント
  9. #==============================================================================
  10. module XRXS38
  11.   # 属性的限制数量
  12.   ELEMENTS_NUMBER_LIMIT = 23
  13.   # 属性修正的计算方法
  14.   #        0 : 最大(默认的计算方法)
  15.   #        1 : 乘法
  16.   #        2 : 平均
  17.   #        3 : 最小
  18.   ELEMENT_CORRECT_METHOD = 1
  19. end
  20. #==============================================================================
  21. # ■ Game_Battler
  22. #==============================================================================
  23. class Game_Battler
  24. #--------------------------------------------------------------------------
  25. # ● 属性修正的计算 + 倍率计算公式
  26. #--------------------------------------------------------------------------
  27.   alias xrxs38_elements_correct elements_correct
  28.   def elements_correct(element_set)
  29.     elements = element_set.dup
  30.     # 属性数量的限制
  31.     for element_id in element_set
  32.       if element_id >XRXS38:: ELEMENTS_NUMBER_LIMIT
  33.         elements.delete(element_id)
  34.       end
  35.     end
  36.     #无属性的场合返回100
  37.     return 100 if elements.size == 0
  38.     #
  39.     case XRXS38::ELEMENT_CORRECT_METHOD
  40.     when 0 # 最大
  41.       return xrxs38_elements_correct(elements)
  42.     when 1 # 乘法
  43.       result = 100.0
  44.       minus_enable = false
  45.       for i in elements
  46.         n = self.element_rate(i)
  47.         minus_enable |= (n < 0)
  48.         result *= n / 100.0
  49.       end
  50.       result = -1 * result.abs if minus_enable
  51.       return result.to_i
  52.     when 2 # 平均
  53.       rates = []
  54.       result = 0
  55.       for i in elements
  56.         rates.push(self.element_rate(i))
  57.       end
  58.       for rate in rates
  59.         result += rate
  60.       end
  61.       return result / rates.size
  62.     when 3 # 最小
  63.       for i in elements
  64.         n = self.element_rate(i)
  65.         result = n if result.nil? or result > n
  66.       end
  67.       return result
  68.     end
  69.   end  
  70. end

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9497
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

3
发表于 2019-1-29 10:37:38 | 只看该作者
XP 默认代码中,如果技能有两个或两个以上属性,当计算敌人属性有效度时,将返回“最弱的”属性。例如技能是【火】【风】属性,敌人对火的抗性是【E】,对风的抗性是【B】,对风抗性更弱,所以计算时就算火抗是 E 依然会受到 150% 的伤害。

修改计算方式可以看 2 楼的脚本。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
460
在线时间
49 小时
注册时间
2008-11-30
帖子
110
4
 楼主| 发表于 2019-1-29 18:48:34 | 只看该作者
RyanBern 发表于 2019-1-29 10:37
XP 默认代码中,如果技能有两个或两个以上属性,当计算敌人属性有效度时,将返回“最弱的”属性。例如技能 ...

啊啊看到了 谢谢你们
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
460
在线时间
49 小时
注册时间
2008-11-30
帖子
110
5
 楼主| 发表于 2019-1-29 18:51:44 | 只看该作者
Mono_kyrin 发表于 2019-1-28 13:10
Game_Actor 第107行
Game_Enemy 第118行
还有Game_Battler的334行

问题解决了诶! 谢谢热心的你 嘻嘻
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-20 12:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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