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

Project1

 找回密码
 注册会员
搜索

普通攻击时回复MP值要怎么做?

查看数: 1571 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2011-7-5 11:13

正文摘要:

本帖最后由 灬心魔o 于 2011-7-5 14:56 编辑 将RM普通攻击指令改成,每攻击一次获取1或2点的MP值,100%回复1点,50%的几率回复2点 伤害照样计算,敌我都一样,要怎么做? ...

回复

菜鸟飞呀飞 发表于 2011-7-5 18:58:32
提示: 作者被禁止或删除 内容自动屏蔽
灬心魔o 发表于 2011-7-5 16:49:39
提示: 作者被禁止或删除 内容自动屏蔽
Wind2010 发表于 2011-7-5 16:05:19
  1. class Game_Battler
  2.   def attack_effect(attacker)
  3.     # 清除会心一击标志
  4.     self.critical = false
  5.     # 第一命中判定
  6.     hit_result = (rand(100) < attacker.hit)
  7.     # 命中的情况下
  8.     if hit_result == true
  9.       # 计算基本伤害
  10.       atk = [attacker.atk - self.pdef / 2, 0].max
  11.       self.damage = atk * (20 + attacker.str) / 20
  12.       # 属性修正
  13.       self.damage *= elements_correct(attacker.element_set)
  14.       self.damage /= 100
  15.       # 伤害符号正确的情况下
  16.       if self.damage > 0
  17.         # 会心一击修正
  18.         if rand(100) < 4 * attacker.dex / self.agi
  19.           self.damage *= 2
  20.           self.critical = true
  21.         end
  22.         # 防御修正
  23.         if self.guarding?
  24.           self.damage /= 2
  25.         end
  26.       end
  27.       # 分散
  28.       if self.damage.abs > 0
  29.         amp = [self.damage.abs * 15 / 100, 1].max
  30.         self.damage += rand(amp+1) + rand(amp+1) - amp
  31.       end
  32.       # 第二命中判定
  33.       eva = 8 * self.agi / attacker.dex + self.eva
  34.       hit = self.damage < 0 ? 100 : 100 - eva
  35.       hit = self.cant_evade? ? 100 : hit
  36.       hit_result = (rand(100) < hit)
  37.     end
  38.     # 命中的情况下
  39.     if hit_result == true
  40.       # 增加攻击者MP
  41.       attacker.sp += rand(2)
  42.       # 状态冲击解除
  43.       remove_states_shock
  44.       # HP 的伤害计算
  45.       self.hp -= self.damage
  46.       # 状态变化
  47.       @state_changed = false
  48.       states_plus(attacker.plus_state_set)
  49.       states_minus(attacker.minus_state_set)
  50.     # Miss 的情况下
  51.     else
  52.       # 伤害设置为 "Miss"
  53.       self.damage = "Miss"
  54.       # 清除会心一击标志
  55.       self.critical = false
  56.     end
  57.     # 过程结束
  58.     return true
  59.   end
  60. end
复制代码

点评

同样谢谢你^w^  发表于 2011-7-5 16:51
用了你的修改,发现有时击中不回复MP。回复时只回1点,没回过2点。  发表于 2011-7-5 16:46
我看到你修改的地方了,我才发现会有2个命中的判断。回复MP的脚步放在第一命中判断下,效果一样吗?  发表于 2011-7-5 16:29
我想知道你改在哪里  发表于 2011-7-5 16:17
277297575 发表于 2011-7-5 15:51:02
Game_Battler 3
-def attack_effect(attacker)
     # 命中的情况下
    if hit_result == true
     a =rand(2)
       a==1 ? attacker.sp += 2 : attacker.sp += 1
看不见你的图,但是估计这样就成。
    有100%回1点和50%回2点的情况下,或然率都是50%.

点评

只用attacker.sp += 1就是100%回1点,用attacker.sp += rand(2)+1就是50%回1点,50%回2点,如果同时有你所说的100%回复1点,50%的几率回复2点的情况,就用rand(2)+1这段  发表于 2011-7-5 17:06
前半段是指“100%回1点和50%回2点”,只加attacker.sp += 1就能实现吗?我不太理解。  发表于 2011-7-5 16:32
只要前半段就直接 attacker.sp += 1  发表于 2011-7-5 16:23
看了Wind2010的帖觉得自己犯傻了,a =rand(2) 和 a==1 ? attacker.sp += 2 : attacker.sp += 1 这两段可以用attacker.sp += rand(2)+1 一段来代替,效果都一样,概率也都是50%  发表于 2011-7-5 16:22
有效了,后半句“或然率都是50%”,意思是有可能回复1、2点都是50%的概率吗?我只要前半句的效果要怎么做。  发表于 2011-7-5 16:12
菜鸟飞呀飞 发表于 2011-7-5 12:49:30
提示: 作者被禁止或删除 内容自动屏蔽
Wind2010 发表于 2011-7-5 12:34:40
如果没有对默认系统做出修改(修改成普通攻击能对敌多体进行攻击)的话,可以直接在Game_Battler 3里的普通攻击里进行修改

点评

现在才看到图片,谢谢你的提醒,我知道了  发表于 2011-7-5 15:06
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-29 23:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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