Project1

标题: 仿梦幻西游的修炼系统与血爆,丹元济会效果 [打印本页]

作者: daixiongwei    时间: 2008-12-18 23:59
标题: 仿梦幻西游的修炼系统与血爆,丹元济会效果
大家好,我是个老手中的新手,不会写脚本,只会改脚本,第一次发贴#83写的不好大家莫怪#17说是老手,注册已经1年多了,说是新手,对脚本基本上没什么感觉....废话少说,进入正题.

梦幻西游里有个"修炼系统",就是修炼等级提升后在人物的属性不变的情况下打出或抵抗更多的伤害.下面是伤害/法抗/物抗的制作方法,其实很简单,只是调用了几个变量.
在Game_battler3里面,找到 ●应用通常攻击效果:
  def attack_effect(attacker)
    # 清除会心一击标志
    self.critical = false
    # 第一命中判定
    hit_result = (rand(100) < attacker.hit)
    # 命中的情况下
    if hit_result == true
      # 计算基本伤害
#########################普通攻击伤害计算式改###########################
      atk = [attacker.atk-self.pdef/2, 0].max
      if attacker.is_a?(Game_Actor)
      self.damage = (atk* 3) * (10+$game_variables[251])/10
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100



    else
      self.damage = (atk * 3) / (1 + $game_variables[253]/10)
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      end
这个红色的地方就是攻击修炼部分了,意思是"当攻击者是玩家的场合(不限制的话怪物的攻击也会提高),伤害就等于(你定义的伤害公式)×(10+[你设定的攻击修炼等级变量号])/10
这样一来,假如你设定251号变量为"攻击修炼等级",当游戏中变量达到1时实际的伤害就会变成(你定义的伤害公式)*(10+1)/10,就会打出1.1倍的伤害,那样看上去就是有了修炼了.至于修炼变量如何增加,增加消耗的代价,大家自己在游戏中设定即可.
    再看下面的"else"这一段,这段定义的是敌人的伤害公式,第一行后面有个
(1+变量253)/100的计算式,这个计算式中的变量就是指"物理防御修炼",公式也可以自己改.我这里的公式是这样的,假如物抗的变量加到了20级,那么受到的实际伤害就是(怪物的伤害)/(1+20/10),实际所受伤害就是原伤害除以2.1,也就是说20级修炼,在属性不变的情况下抵抗了一半以上的伤害了.
    至于法术伤害,和物理伤害一样,本人为了方便,采取了和物理伤害相同的变量,也就是说"伤害修炼"的变量同时增加物理和法术伤害.还是同一个脚本,在里面找到特技的"属性修正"下面,
      # 属性修正
      self.damage *= elements_correct(skill.element_set)
      self.damage /= 100
      # 伤害符号正确的情况下
      if self.damage > 0
        if user.is_a?(Game_Actor)
        self.damage = (power * rate / 10 + 1) * (100+$game_variables[251])/100
        self.damage +=rand(50)
        self.damage +=atk/4
         self.fennu += (1 + rand(10))
       else
         self.damage = (power * rate / 10 + 1) / (1 + $game_variables[254]/100)
         self.damage +=rand(50)
        self.damage +=atk/4
        end
这里的原理和物理攻击一样,判断施法者是玩家还是怪物,然后控制变量.251是伤害变量,254是法抗变量,大家自己调整.
    另外我还做了个功能,就是物理防御修炼增加物理必杀几率,找到"修正会心一击"那里,写成这样:
      if attacker.is_a?(Game_Actor)
        if rand(100) < 4+$game_variables[253]/10
          self.damage *= 2
          self.critical = true
         
        else
           if rand(100) < 4
          self.damage *= 2
          self.critical = true
          self.fennu += (1 + rand(10))
          end
        end
        end
就变成了当253号变量增加时会心一击几率也会跟着增加.法爆呢,就到刚才定义法术伤害的那一段下面加上
      if user.is_a?(Game_Actor)
        if rand(100) < 4+$game_variables[254]/10
          self.damage *= 2
          self.critical = true

        else
           if rand(100) < 4
          self.damage *= 2
          self.critical = true
          self.fennu += (1 + rand(10))
          end
        end
        end
就可以了,那个254是法抗变量,可以自己改.
    另外,化生寺的法宝"慈悲"大家听说过吧?还有吃药的"丹元济会"的加成效果?呵呵,这里也有哦!
首先设置一个变量,定义为"药物修炼",比如是252号变量.
那么如何实现慈悲的血爆(加血法术双倍恢复)效果呢?
还记不记得刚才的法伤定义有一个
# 伤害符号正确的情况下
      if self.damage > 0
这是当伤害值为正就执行这段脚本那么为付呢?
可以在if self.damage > 0这段判断完之后加上一个else:
      
else
if user.is_a?(Game_Actor)
        if rand(1001) < $game_variables[252]
        self.damage = (power * rate / 10 + 1)*2
        self.critical = true
      end
      end

       end
这里一定要加上if user.is_a?(Game_Actor)哦!不然当252号变量增加后敌人的恢复法术也会变成有血爆效果了!
细心的人大概会发现多了一个end?额,那个end是if self.damage > 0的结束句啦!
血爆完成了,丹元济会嘛!找到"应用物品效果"里的"计算回复量",后面加上:
recover_hp = maxhp * item.recover_hp_rate / 100 +
item.recover_hp+item.recover_hp*$game_variables[252]/100



recover_sp = maxsp * item.recover_sp_rate / 100 +
item.recover_sp+item.recover_sp*$game_variables[252]/100
这样大家吃蓝或血药的时候只要有252号变量的值,药品的效果就会提升哦!

好啦,罗嗦完了,大家pia飞我#17
作者: daixiongwei    时间: 2008-12-19 00:05
注意:发现多写了一句!
就是那个
self.fennu += (1+rand(10))
这一句是我定义的SP(愤怒),大家删掉,否则会出错{/fd}
作者: hgfor    时间: 2008-12-19 19:17
多谢分享,学习了.
作者: 倚天    时间: 2008-12-19 20:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: liqunsz    时间: 2008-12-20 17:06
我想问一下为什么是脚本,如果本来就是脚本的话为什么要写事件交流??{/fd}




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