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

Project1

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

[已经过期] 如何做到增加某属性威力的效果?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
261 小时
注册时间
2014-9-29
帖子
485
跳转到指定楼层
1
发表于 2015-3-8 12:28:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
以前玩一些游戏,都有这种设定,就是使用某种道具或某种技能或装备某种道具可以使角色的某属性的威力提升,但是XP只有属性防御没有属性威力,所以求教下……

比如,使用“油壶”或者“火焰强化”,可以使火属性威力加强,或者装备“水之心”增强角色的水属性威力……
源钦大陆编年史系列—— 第一弹:127 -三矢之乱-(完) 第二弹:源钦语法(未) 第三弹:源钦历法(未) 第四弹:?

Lv4.逐梦者 (版主)

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

开拓者贵宾剧作品鉴家

3
发表于 2015-3-8 12:56:52 | 只看该作者
本帖最后由 RyanBern 于 2015-3-8 14:24 编辑

写了一个,未测试。
此脚本仅对技能有效。
RUBY 代码复制
  1. module RB
  2. end
  3. # 设置区域
  4. module RB::Power_Correct
  5.   # 状态对属性攻击的威力的修正
  6.   # 如果想要17号状态可以增强1号属性攻击的威力,就加上17 => 1
  7.   States_Hash = {
  8.     17 => 1,
  9.     18 => 3
  10.   }
  11.   # 增加威力的比例,可叠加
  12.   Power_Increase_Rate = 1.1
  13. end
  14. class Game_Battler
  15.   def power_correct(user, element_set)
  16.     rate = 1.0
  17.     RB::Power_Correct::States_Hash.keys.each do |state_id|
  18.       if user.state?(state_id) && element_set.include?(RB::Power_Correct::States_Hash[state_id])
  19.         rate *= RB::Power_Correct::Power_Increase_Rate
  20.       end
  21.     end
  22.     return rate
  23.   end
  24.   # 此处可能会造成脚本冲突
  25.   def skill_effect(user, skill)
  26.     # 清除会心一击标志
  27.     self.critical = false
  28.     # 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
  29.     # 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
  30.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  31.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  32.       # 过程结束
  33.       return false
  34.     end
  35.     # 清除有效标志
  36.     effective = false
  37.     # 公共事件 ID 是有效的情况下,设置为有效标志
  38.     effective |= skill.common_event_id > 0
  39.     # 第一命中判定
  40.     hit = skill.hit
  41.     if skill.atk_f > 0
  42.       hit *= user.hit / 100
  43.     end
  44.     hit_result = (rand(100) < hit)
  45.     # 不确定的特技的情况下设置为有效标志
  46.     effective |= hit < 100
  47.     # 命中的情况下
  48.     if hit_result == true
  49.       # 计算威力
  50.       power = skill.power + user.atk * skill.atk_f / 100
  51.       #==================================
  52.       # 仅仅加了这一句话,改的时候可以直接在原脚本上添加
  53.       #==================================
  54.       power = Integer(power * power_correct(user, skill.element_set)
  55.       #==================================
  56.       if power > 0
  57.         power -= self.pdef * skill.pdef_f / 200
  58.         power -= self.mdef * skill.mdef_f / 200
  59.         power = [power, 0].max
  60.       end
  61.       # 计算倍率
  62.       rate = 20
  63.       rate += (user.str * skill.str_f / 100)
  64.       rate += (user.dex * skill.dex_f / 100)
  65.       rate += (user.agi * skill.agi_f / 100)
  66.       rate += (user.int * skill.int_f / 100)
  67.       # 计算基本伤害
  68.       self.damage = power * rate / 20
  69.       # 属性修正
  70.       self.damage *= elements_correct(skill.element_set)
  71.       self.damage /= 100
  72.       # 伤害符号正确的情况下
  73.       if self.damage > 0
  74.         # 防御修正
  75.         if self.guarding?
  76.           self.damage /= 2
  77.         end
  78.       end
  79.       # 分散
  80.       if skill.variance > 0 and self.damage.abs > 0
  81.         amp = [self.damage.abs * skill.variance / 100, 1].max
  82.         self.damage += rand(amp+1) + rand(amp+1) - amp
  83.       end
  84.       # 第二命中判定
  85.       eva = 8 * self.agi / user.dex + self.eva
  86.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  87.       hit = self.cant_evade? ? 100 : hit
  88.       hit_result = (rand(100) < hit)
  89.       # 不确定的特技的情况下设置为有效标志
  90.       effective |= hit < 100
  91.     end
  92.     # 命中的情况下
  93.     if hit_result == true
  94.       # 威力 0 以外的物理攻击的情况下
  95.       if skill.power != 0 and skill.atk_f > 0
  96.         # 状态冲击解除
  97.         remove_states_shock
  98.         # 设置有效标志
  99.         effective = true
  100.       end
  101.       # HP 的伤害减法运算
  102.       last_hp = self.hp
  103.       self.hp -= self.damage
  104.       effective |= self.hp != last_hp
  105.       # 状态变化
  106.       @state_changed = false
  107.       effective |= states_plus(skill.plus_state_set)
  108.       effective |= states_minus(skill.minus_state_set)
  109.       # 威力为 0 的场合
  110.       if skill.power == 0
  111.         # 伤害设置为空的字串
  112.         self.damage = ""
  113.         # 状态没有变化的情况下
  114.         unless @state_changed
  115.           # 伤害设置为 "Miss"
  116.           self.damage = "Miss"
  117.         end
  118.       end
  119.     # Miss 的情况下
  120.     else
  121.       # 伤害设置为 "Miss"
  122.       self.damage = "Miss"
  123.     end
  124.     # 不在战斗中的情况下
  125.     unless $game_temp.in_battle
  126.       # 伤害设置为 nil
  127.       self.damage = nil
  128.     end
  129.     # 过程结束
  130.     return effective
  131.   end
  132. end

点评

不行啊,有错误……  发表于 2015-3-22 15:09
回头我试一下,谢谢你!  发表于 2015-3-9 13:16
脚本07行是设置区域,例如17号状态可以增强带1号属性技能的威力,就写17 => 1,上面有例子。另外我刚才修改了此脚本的一个错误,还请更新下。  发表于 2015-3-8 14:23
其实目前对技能的就够了,另外这个如何使用?怎么定义?  发表于 2015-3-8 14:01
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33071
在线时间
5103 小时
注册时间
2012-11-19
帖子
4878

开拓者

2
发表于 2015-3-8 12:51:00 | 只看该作者
这样的话需要给角色定义N个属性实例变量,状态和物品可以改变属性值,技能威力再加上与其属性相同的角色属性补正。
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-21 19:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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