Project1

标题: 判断技能属性 [打印本页]

作者: 3535    时间: 2007-6-18 23:21
标题: 判断技能属性
如何判断技能的属性,我正在做一个技能,使用后一个属性的威力x1.2


A技能
B技能 水属性
C技能 水属性
A技能使用后,6回合内所有水属性技能威力X1.2
即是B技能 C技能威力X1.2
[LINE]1,#dddddd[/LINE]本贴由论坛斑竹幻の飞鱼认可答案,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^ [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 3535    时间: 2007-6-18 23:21
标题: 判断技能属性
如何判断技能的属性,我正在做一个技能,使用后一个属性的威力x1.2


A技能
B技能 水属性
C技能 水属性
A技能使用后,6回合内所有水属性技能威力X1.2
即是B技能 C技能威力X1.2
[LINE]1,#dddddd[/LINE]本贴由论坛斑竹幻の飞鱼认可答案,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^ [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: kaze    时间: 2007-6-19 00:13
特技右边不是有属性设置吗
作者: 3535    时间: 2007-6-19 03:41
以下引用kaze于2007-6-18 16:13:05的发言:

特技右边不是有属性设置吗

腳本中...{/gg}
作者: kaze    时间: 2007-6-19 04:22
不太明白
反正相关脚本是game_battler中的,技能好象是3
作者: 3535    时间: 2007-6-19 04:33
晕..

这样

A技能
B技能 水属性
C技能 水属性
A技能使用后,6回合内所有水属性技能威力X1.2
即是B技能 C技能威力X1.2

作者: kaze    时间: 2007-6-19 06:09
应该用状态吧
在game_battler3关于技能效果中加
如果角色含第n号状态则伤害*1.2
作者: 3535    时间: 2007-6-19 18:33
要指定一個属性伤害*1.2
状态不能
作者: 精灵使者    时间: 2007-6-19 18:44
你自己参考这个修改伤害修正吧……
http://rpg.blue/web/htm/news617.htm
作者: 3535    时间: 2007-6-19 19:46
if $hot = true and skill.element_set.include?(1)
      result *= 1.2
    end
沒有變化
作者: kaze    时间: 2007-6-19 20:03
我是说在game_battler3
技能效果的属性修正后加
如果对象拥有XX状态且攻击附加水属性
则伤害*=1.2
作者: 3535    时间: 2007-6-19 21:00
game_battler3都是沒有變化
作者: kaze    时间: 2007-6-19 23:56
什么意思?
作者: 3535    时间: 2007-6-20 02:55
以下引用kaze于2007-6-19 15:56:39的发言:

什么意思?

加在game_battler3都是沒有變化{/fn}
作者: 3535    时间: 2007-6-20 09:25
------------------------
del
作者: 3535    时间: 2007-6-20 22:01
skill.element_set.include?
加在哪才有效果
作者: 3535    时间: 2007-6-21 01:53
又被推至第2頁
作者: 3535    时间: 2007-6-21 08:11
難道真的這麼困難??整個6R也沒人知?
作者: 精灵使者    时间: 2007-6-21 10:31

36小时内请勿连续顶帖,谢谢合作。
作者: kaze    时间: 2007-6-21 19:44
#==============================================================================
# ■ Game_Battler (分割定义 3)
#------------------------------------------------------------------------------
#  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
# 超级类来使用。
#==============================================================================
#--------------------------------------------------------------------------
  # ● 应用特技效果
  #     user  : 特技的使用者 (battler)
  #     skill : 特技
  #--------------------------------------------------------------------------
class Game_Battler
  def skill_effect(user, skill)
    # 清除会心一击标志
    self.critical = false
    # 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
    # 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
      # 过程结束
      return false
    end
    # 清除有效标志
    effective = false
    # 公共事件 ID 是有效的情况下,设置为有效标志
    effective |= skill.common_event_id > 0
    # 第一命中判定
    hit = skill.hit
    if skill.atk_f > 0
      hit *= user.hit / 100
    end
    hit_result = (rand(100) < hit)
    # 不确定的特技的情况下设置为有效标志
    effective |= hit < 100
    # 命中的情况下
    if hit_result == true
      # 计算威力
      power = skill.power + user.atk * skill.atk_f / 100
      if power > 0
        power -= self.pdef * skill.pdef_f / 200
        power -= self.mdef * skill.mdef_f / 200
        power = [power, 0].max
      end
      # 计算倍率
      rate = 20
      rate += (user.str * skill.str_f / 100)
      rate += (user.dex * skill.dex_f / 100)
      rate += (user.agi * skill.agi_f / 100)
      rate += (user.int * skill.int_f / 100)
      # 计算基本伤害
      self.damage = power * rate / 20
      # 属性修正
      self.damage *= elements_correct(skill.element_set)
      self.damage /= 100
      
#####################################################################      
      if self.state?(29) and skill.element_set.include?(2)
        self.damage *= 1.2
      end
      
###################################################################      
      
      
      
      # 伤害符号正确的情况下
      if self.damage > 0
        # 防御修正
        if self.guarding?
          self.damage /= 2
        end
      end
      # 分散
      if skill.variance > 0 and self.damage.abs > 0
        amp = [self.damage.abs * skill.variance / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      # 第二命中判定
      eva = 8 * self.agi / user.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
      # 不确定的特技的情况下设置为有效标志
      effective |= hit < 100
    end
    # 命中的情况下
    if hit_result == true
      # 威力 0 以外的物理攻击的情况下
      if skill.power != 0 and skill.atk_f > 0
        # 状态冲击解除
        remove_states_shock
        # 设置有效标志
        effective = true
      end
      # HP 的伤害减法运算
      last_hp = self.hp
      self.hp -= self.damage
      effective |= self.hp != last_hp
      # 状态变化
      @state_changed = false
      effective |= states_plus(skill.plus_state_set)
      effective |= states_minus(skill.minus_state_set)
      # 威力为 0 的场合
      if skill.power == 0
        # 伤害设置为空的字串
        self.damage = ""
        # 状态没有变化的情况下
        unless @state_changed
          # 伤害设置为 "Miss"
          self.damage = "Miss"
        end
      end
    # Miss 的情况下
    else
      # 伤害设置为 "Miss"
      self.damage = "Miss"
    end
    # 不在战斗中的情况下
    unless $game_temp.in_battle
      # 伤害设置为 nil
      self.damage = nil
    end
    # 过程结束
    return effective
  end
end






以上部分你可以新建一页插进去
也可以把修改的部分插入你脚本相同的地方
默认的状态是29,对应属性是2 [LINE]1,#dddddd[/LINE]系统信息:本贴由版主幻の飞鱼认可为正确答案,66RPG感谢您的热情解答~
作者: 3535    时间: 2007-6-21 22:57
以下引用kaze于2007-6-21 11:44:27的发言:

#==============================================================================
# ■ Game_Battler (分割定义 3)
#------------------------------------------------------------------------------
#  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
# 超级类来使用。
#==============================================================================
#--------------------------------------------------------------------------
# ● 应用特技效果
#     user  : 特技的使用者 (battler)
#     skill : 特技
#--------------------------------------------------------------------------
class Game_Battler
def skill_effect(user, skill)
   # 清除会心一击标志
   self.critical = false
   # 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
   # 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
   if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
      ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
     # 过程结束
     return false
   end
   # 清除有效标志
   effective = false
   # 公共事件 ID 是有效的情况下,设置为有效标志
   effective |= skill.common_event_id > 0
   # 第一命中判定
   hit = skill.hit
   if skill.atk_f > 0
     hit *= user.hit / 100
   end
   hit_result = (rand(100) < hit)
   # 不确定的特技的情况下设置为有效标志
   effective |= hit < 100
   # 命中的情况下
   if hit_result == true
     # 计算威力
     power = skill.power + user.atk * skill.atk_f / 100
     if power > 0
       power -= self.pdef * skill.pdef_f / 200
       power -= self.mdef * skill.mdef_f / 200
       power = [power, 0].max
     end
     # 计算倍率
     rate = 20
     rate += (user.str * skill.str_f / 100)
     rate += (user.dex * skill.dex_f / 100)
     rate += (user.agi * skill.agi_f / 100)
     rate += (user.int * skill.int_f / 100)
     # 计算基本伤害
     self.damage = power * rate / 20
     # 属性修正
     self.damage *= elements_correct(skill.element_set)
     self.damage /= 100
     
#####################################################################      
     if self.state?(29) and skill.element_set.include?(2)
       self.damage *= 1.2
     end
     
###################################################################      
     
     
     
     # 伤害符号正确的情况下
     if self.damage > 0
       # 防御修正
       if self.guarding?
         self.damage /= 2
       end
     end
     # 分散
     if skill.variance > 0 and self.damage.abs > 0
       amp = [self.damage.abs * skill.variance / 100, 1].max
       self.damage += rand(amp+1) + rand(amp+1) - amp
     end
     # 第二命中判定
     eva = 8 * self.agi / user.dex + self.eva
     hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
     hit = self.cant_evade? ? 100 : hit
     hit_result = (rand(100) < hit)
     # 不确定的特技的情况下设置为有效标志
     effective |= hit < 100
   end
   # 命中的情况下
   if hit_result == true
     # 威力 0 以外的物理攻击的情况下
     if skill.power != 0 and skill.atk_f > 0
       # 状态冲击解除
       remove_states_shock
       # 设置有效标志
       effective = true
     end
     # HP 的伤害减法运算
     last_hp = self.hp
     self.hp -= self.damage
     effective |= self.hp != last_hp
     # 状态变化
     @state_changed = false
     effective |= states_plus(skill.plus_state_set)
     effective |= states_minus(skill.minus_state_set)
     # 威力为 0 的场合
     if skill.power == 0
       # 伤害设置为空的字串
       self.damage = ""
       # 状态没有变化的情况下
       unless @state_changed
         # 伤害设置为 "Miss"
         self.damage = "Miss"
       end
     end
   # Miss 的情况下
   else
     # 伤害设置为 "Miss"
     self.damage = "Miss"
   end
   # 不在战斗中的情况下
   unless $game_temp.in_battle
     # 伤害设置为 nil
     self.damage = nil
   end
   # 过程结束
   return effective
end
end






以上部分你可以新建一页插进去
也可以把修改的部分插入你脚本相同的地方
默认的状态是29,对应属性是2

出現小數..{/fd}
作者: 3535    时间: 2007-6-22 01:27
以下引用精灵使者于2007-6-21 2:31:21的发言:


36小时内请勿连续顶帖,谢谢合作。

不如你幫幫我吧,我看你回答別人很多問題...
作者: 3535    时间: 2007-6-24 08:24
顶帖
作者: 3535    时间: 2007-6-25 20:02
....太冷血了
作者: 3535    时间: 2007-6-27 07:54
10天了....
作者: 败笔    时间: 2007-6-27 08:18
66说4天就发短信给他呀。。。
(我也不知道怎么解决你的问题Sorry)
作者: 3535    时间: 2007-7-1 09:21
{/gg}66沒回应
作者: 3535    时间: 2007-7-3 09:15
push{/gg}
作者: kaze    时间: 2007-7-3 15:49
以下引用3535于2007-6-21 14:57:16的发言:
出現小數..

在补充的那个end前加一句取整
作者: 3535    时间: 2007-7-8 01:14
如何取整?
作者: 精灵使者    时间: 2007-7-8 01:26
应该是Integer吧?
作者: kaze    时间: 2007-7-8 01:27
以下引用3535于2007-7-7 17:14:21的发言:

如何取整?

.to_i [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1