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

Project1

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

[已经解决] 【战斗】关于修改系统一些默认数值的问题。

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
73
在线时间
2590 小时
注册时间
2010-6-20
帖子
901
跳转到指定楼层
1
发表于 2011-7-31 13:31:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
【ONE】关于修改攻击默认公式的方法,我翻了半天脚本也没战斗,悲剧了。(意思就是哪里修改力量占普通攻击的百分比)
【TWO】关于修改系统默认的通常状态命中率,我感觉如果什么都不设置,敌人中状态的几率在70%左右,感觉有点高了,想改一下,也不知道在哪里改。

点评

不允许一贴多问,鉴于版规未申明,警告一次  发表于 2011-7-31 15:18

Lv1.梦旅人

梦石
0
星屑
54
在线时间
75 小时
注册时间
2009-9-8
帖子
56
3
发表于 2011-8-1 12:05:58 | 只看该作者
Game_Battler 600行至700行之间。命中、回避、攻击计算、技能计算都在这。
  1. #--------------------------------------------------------------------------
  2.   # ● 计算最後命中率
  3.   #     user : 攻击者,技能或物品的使用者
  4.   #     obj  : 使用的技能或物品(普通攻击时为nil)
  5.   #--------------------------------------------------------------------------
  6.   def calc_hit(user, obj = nil)
  7.     if obj == nil                           # 普通攻击
  8.       hit = user.hit + user.agi - self.agi  # 获取命中率
  9.       physical = true
  10.     elsif obj.is_a?(RPG::Skill)             # 技能攻击
  11.       hit = obj.hit + user.agi - self.agi   # 获取命中率
  12.       physical = obj.physical_attack
  13.     else                                    # 物品攻击
  14.       hit = 100                             # 设命中率为100%
  15.       physical = obj.physical_attack
  16.     end
  17.     if physical                             # 物理攻击
  18.       hit /= 2 if user.reduce_hit_ratio?    # 中了暗黑状态时命中率降低为50%
  19.     end
  20.     return hit
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 计算最後闪躲率
  24.   #     user : 攻击者,技能或物品的使用者
  25.   #     obj  : 使用的技能或物品(普通攻击时为nil)
  26.   #--------------------------------------------------------------------------
  27.   def calc_eva(user, obj = nil)
  28.     eva = self.agi - 10
  29.     unless obj == nil                       # 当obj为物品或技能
  30.       eva = 0 unless obj.physical_attack    # 非物理攻击时闪躲率 0%
  31.     end
  32.     unless parriable?                       # 无法闪躲的场合
  33.       eva = 0                               # 闪躲率为 0%
  34.     end
  35.     return eva
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 计算普通攻击伤害
  39.   #     attacker : 攻击者
  40.   #    计算结果赋值入 @hp_damage
  41.   #--------------------------------------------------------------------------
  42.   def make_attack_damage_value(attacker)
  43.     damage = (attacker.atk - self.def) + rand(attacker.atk) - rand(attacker.atk)# 基础计算
  44.     damage = 0 if damage < 0                        # 设负数伤害为 0
  45.     damage *= elements_max_rate(attacker.element_set)   # 属性校正
  46.     damage /= 100
  47.     if damage == 0                                  # 若伤害为 0
  48.       damage = rand(2)                              # 一半机率伤害为1
  49.     elsif damage > 0                                # 若伤害为正数
  50.       @critical = (rand(100) < attacker.cri)        # 会心一击判断
  51.       @critical = false if prevent_critical         # 防止会心一击判断
  52.       damage *= 3 if @critical                      # 会心一击校正
  53.     end
  54.     damage = apply_variance(damage, 20)             # 分散度
  55.     damage = apply_guard(damage)                    # 防御校正
  56.     @hp_damage = damage                             # 体力伤害
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 计算技能/物品伤害
  60.   #     user : 技能或物品的使用者
  61.   #     obj  : 使用的技能或物品
  62.   #    计算结果赋值入 @hp_damage
  63.   #--------------------------------------------------------------------------
  64.   def make_obj_damage_value(user, obj)
  65.     damage = obj.base_damage                        # 基础计算
  66.     if damage > 0                                   # 若伤害为正
  67.       damage += (rand(user.atk) + user.atk * 2 ) * obj.atk_f / 100# 使用者攻击力关系度
  68.       damage += (rand(user.spi) + user.spi * 2 ) * obj.spi_f / 100# 使用者精神力关系度
  69.       unless obj.ignore_defense                     # 除非无视防御力
  70.         damage -= self.def * 2 * obj.atk_f / 100    # 目标攻击力关系度
  71.         damage -= self.spi * 2 * obj.spi_f / 100    # 目标精神力关系度
  72.       end
  73.       damage = 0 if damage < 0                      # 设负数伤害为0
  74.     elsif damage < 0                                # 若伤害为负
  75.       damage -= user.atk * 2 * obj.atk_f / 100      # 使用者攻击力关系度
  76.       damage -= user.spi * 2 * obj.spi_f / 100      # 使用者精神力关系度
  77.     end
  78.     damage *= elements_max_rate(obj.element_set)    # 属性校正
  79.     damage /= 100
  80.     damage = apply_variance(damage, obj.variance)   # 分散度
  81.     damage = apply_guard(damage)                    # 防御校正
  82.     if obj.damage_to_mp  
  83.       @mp_damage = damage                           # 伤害魔力
  84.     else
  85.       @hp_damage = damage                           # 伤害体力
  86.     end
  87.   end
复制代码
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
354
在线时间
1036 小时
注册时间
2011-5-19
帖子
2098
2
发表于 2011-7-31 13:41:03 | 只看该作者
本帖最后由 MSQ 于 2011-7-31 14:03 编辑

1》力量?那是什么,感觉有xp乱入。
2》敌人中状态的几率,是武器自带还是技能?是技能的话在技能里有关于命中率的调整,武器的话……来脚本。
ps:可能我理解有问题,我感觉我没有听懂楼主的问题,麻烦详细点。{:nm_3:}


MSQ于2011-7-31 14:02补充以下内容:
哦,你的意思是说,一个技能,可以100%损失敌人XXX点HP,但同时有50%可能性让敌人中毒。是这样吗?
如果是这样,在技能中设定该技能的命中率与伤害。再调用公共事件,设置条件分歧和某个变数,当变数在大于等于某个范围时(相当于百分比)引发敌人状态的变更。
ps:楼主,我感觉你发错区了,这里是vx区。只有攻击,没有力量。

点评

2》 理解错了,你看掉状态了。意思是修改技能附加状态的默认命中率。  发表于 2011-7-31 13:44
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 00:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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