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

Project1

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

【XP】裝備會自動回血及回魔

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
113 小时
注册时间
2008-3-25
帖子
204
跳转到指定楼层
1
发表于 2011-12-16 23:30:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 月夜神音 于 2011-12-21 22:26 编辑

如何製作出裝備某些防具或武器
在戰鬥時會每回合自動回復一定hp或sp呢?(只有戰鬥時~一般地圖上不會)

就是說不只一個裝備唷
裝備一  回10%hp
裝備二  回20%mp
裝備三  回30%hp.......等

我有看過教程那邊
不過是空白文章
選擇是隨時都在進行的~不同的選擇造就了不同的未來~即使在微小的事~也能產生改變未來漣漪~~~

Lv1.梦旅人

梦石
0
星屑
90
在线时间
216 小时
注册时间
2007-9-5
帖子
370
2
发表于 2011-12-17 08:09:43 | 只看该作者
本帖最后由 typhon_524 于 2011-12-17 08:10 编辑

Scene_Battle 4下搜索,在# 连续伤害之下,在# 自然解除状态 之上插入以下脚本,假设附带100号属性的头盔有回血功能:
  1.       if @active_battler.is_a?(Game_Actor) and @active_battler.hp > 0
  2.         if @active_battler.armor2_id != 0 and $data_armors[@active_battler.armor2_id].guard_element_set.include?(100)
  3.           @active_battler.damage = -@active_battler.maxhp/10  #XXOO恢复生命百分比,也可设置固定值
  4.           @active_battler.damage = @active_battler.damage.to_i
  5.           @active_battler.hp-=@active_battler.damage
  6.           @active_battler.animation_id = 21 #自动补血动画编号
  7.           @active_battler.damage_pop = true
  8.         end
  9.       end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
113 小时
注册时间
2008-3-25
帖子
204
3
 楼主| 发表于 2011-12-17 12:05:56 | 只看该作者
那如果要設置好幾個呢?
也就是說不只一個
裝備一  回10%hp
裝備二  回20%mp
裝備三  回30%hp.......等
選擇是隨時都在進行的~不同的選擇造就了不同的未來~即使在微小的事~也能產生改變未來漣漪~~~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
216 小时
注册时间
2007-9-5
帖子
370
4
发表于 2011-12-17 22:09:54 | 只看该作者
本帖最后由 typhon_524 于 2011-12-17 22:18 编辑

在数据库里给不同的防具勾选上不同的属性防御

     if @active_battler.is_a?(Game_Actor) and @active_battler.hp > 0
        if @active_battler.armor1_id != 0 and $data_armors[@active_battler.armor1_id].guard_element_set.include?(100)
           回10%hp
        end
        if @active_battler.armor2_id != 0 and $data_armors[@active_battler.armor2_id].guard_element_set.include?(101)
           回20%mp
        end
        if @active_battler.armor3_id != 0 and $data_armors[@active_battler.armor3_id].guard_element_set.include?(103)
          回30%hp
        end
      end
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
113 小时
注册时间
2008-3-25
帖子
204
5
 楼主| 发表于 2011-12-18 22:13:12 | 只看该作者
兩個方法都測過
不行耶~~~^^|||
選擇是隨時都在進行的~不同的選擇造就了不同的未來~即使在微小的事~也能產生改變未來漣漪~~~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
976 小时
注册时间
2011-4-30
帖子
860
6
发表于 2011-12-19 04:11:14 | 只看该作者
用状态法实现,首先设置几个你需要的状态,设置好名字,都打钩连续伤害,不能抵抗,就类似默认的那个毒,将它们设置为装备的自动状态。这里你设计的三个状态分别是17,18,19号。

然后打开脚本,找到Game_Battler3
  #--------------------------------------------------------------------------
  # ● 应用连续伤害效果
  #--------------------------------------------------------------------------
  def slip_damage_effect
    # 设置伤害
    self.damage = self.maxhp / 10
    # 分散
    if self.damage.abs > 0
      amp = [self.damage.abs * 15 / 100, 1].max
      self.damage += rand(amp+1) + rand(amp+1) - amp
    end
    # HP 的伤害减法运算
    self.hp -= self.damage
    # 过程结束
    return true
  end

然后分别定义几个状态,比如说
  #--------------------------------------------------------------------------
  # ● 应用连续伤害效果
  #--------------------------------------------------------------------------
  def slip_damage_effect
      if self.states.include?(17)
        self.damage = - self.maxhp / 10
         self.hp -= self.damage
       elsif self.states.include?(18)
         self.damage = - self.maxsp / 5
         self.sp -= self.damage
      elsif self.states.include?(19)
         self.damage = - self.maxhp / 3
         self.hp -= self.damage  
     else#下面就是默认的毒
    # 设置伤害
    self.damage = self.maxhp / 10
    # 分散
    if self.damage.abs > 0
      amp = [self.damage.abs * 15 / 100, 1].max
      self.damage += rand(amp+1) + rand(amp+1) - amp
    end
    # HP 的伤害减法运算
    self.hp -= self.damage
  end  
    # 过程结束
    return true
  end
湿滑落式骑!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3852
在线时间
1582 小时
注册时间
2006-5-5
帖子
2743
7
发表于 2011-12-19 10:22:27 | 只看该作者
搜索黑暗圣剑传说的教学程序,跟里面那个剑灵状态一样的设置法
步兵中尉
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
94 小时
注册时间
2011-7-2
帖子
79
8
发表于 2011-12-20 18:06:06 | 只看该作者
本帖最后由 凌空飘雪 于 2011-12-20 18:07 编辑

先告诉你最基础的设定方法(该方法是最基础的写法,就是麻烦点了,适用于回复的效果数值不是太多时)
在Scene_Battle 4 中搜索 “# 连续伤害”
在 # 连续伤害
    if @active_battler.hp > 0 and @active_battler.slip_damage?
      @active_battler.slip_damage_effect
      @active_battler.damage_pop = true
    end
上面或下面加入     
              if @active_battler.is_a?(Game_Actor)  #如果行动者是角色(怪物可是没有装备的)
               if @active_battler.armor1_id != 0 #(不是没有装备该种类装备的场合=>要小心有人玩裸奔啊)
         if  $data_armors[@active_battler.armor1_id].guard_element_set.include?(1)
               #装备的防御属性包含属性ID1(我先设属性1的说明为 回复10%的HP)
                    @active_battler.damage = - @active_battler.maxhp*10/100 #角色的伤害为负的10%最大生命值
            @active_battler.hp -= @active_battler.damage  #角色的HP 减去 角色的伤害(伤害是负数,就成回复了)
                                   @active_battler.damage_pop = true   #这个可以让角色HP为0时图像消失,也就是挂了
      end
      end
    #要注意,武器和防具的属性设置后缀是不一样的防具是 .guard_element_set.include?(1) 武器是.element_set.include?(i)
                 if @active_battler.weapon_id!= 0  #(不是没有装备武器的场合)
              if $data_weapons[@active_battler.weapon_id].element_set.include?(2)
   #上面已经给了生命回复的,武器和防具是一样的,在这我再设下回复魔法的(我设属性2的说明为 回复10%的SP)
         @active_battler.sp += @active_battler.maxsp* 10/100
    #什么?魔法的太简单了?没有显示魔法伤害的专属脚本,要显示伤害只能用damage,但那样又会覆盖生命的回复数值的
      #至于没有 “@active_battler.damage_pop = true” ,谁没魔法时会挂掉啊?反正我是不知道
                 end
                 end
            end  #这个结束是属于 行动者是角色的判断
#附录 防具比武器麻烦,总共有4种防具 armor1 = 盾,armor2 =头,armor3=身体,armor4=装饰品
#(对于不同的防具,你只要参照防具那段的设定,把armor1 后面的数字改下就行了)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
113 小时
注册时间
2008-3-25
帖子
204
9
 楼主| 发表于 2011-12-20 19:08:19 | 只看该作者
羞射了 大的辦法行不通

凌空飘雪 大的也不行
不過可能是因為我看不懂
所以用不出來~囧|||
選擇是隨時都在進行的~不同的選擇造就了不同的未來~即使在微小的事~也能產生改變未來漣漪~~~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
94 小时
注册时间
2011-7-2
帖子
79
10
发表于 2011-12-20 19:26:45 | 只看该作者
本帖最后由 凌空飘雪 于 2011-12-20 19:53 编辑

不会是脚本被覆盖了吧
完整版(直接粘在上面说的 # 连续伤害 从if 到 end的后面)(已经过测试,还出错的话,不是贴错位置,就是脚本冲突了)默认是以【1..3】分别回复HP10%20%30%【4..6】SP10%20%30%
if @active_battler.is_a?(Game_Actor)
      @魔法回复 = 0
      @生命回复 = 0
      for i in 1..6   #回复效果对应的属性ID   
      if i < 4      #回复效果为HP的
       case i
        when 1
          @生命的百分比 = 10
        when 2
          @生命的百分比 = 20
        when 3
          @生命的百分比 = 30
        end
        if @active_battler.armor1_id != 0
       if  $data_armors[@active_battler.armor1_id].guard_element_set.include?(i)
        @生命回复 += @active_battler.maxhp* @生命的百分比 /100
      end
      end
     if @active_battler.armor2_id != 0
      if $data_armors[@active_battler.armor2_id].guard_element_set.include?(i)
        @生命回复 += @active_battler.maxhp* @生命的百分比 /100
      end
    end
     if @active_battler.armor3_id != 0
      if $data_armors[@active_battler.armor3_id].guard_element_set.include?(i)
        @生命回复 += @active_battler.maxhp* @生命的百分比 /100
      end
    end
     if @active_battler.armor4_id != 0
      if $data_armors[@active_battler.armor4_id].guard_element_set.include?(i)
       @生命回复 += @active_battler.maxhp* @生命的百分比 /100
     end
   end
      if @active_battler.weapon_id != 0
      if $data_weapons[@active_battler.weapon_id].element_set.include?(i)
        @生命回复 += @active_battler.maxhp* @生命的百分比 /100
      end
      end
      elsif  i <= 6  #回复效果为SP时
        case i
        when 4
          @魔法的百分比 = 10
        when 5
          @魔法的百分比 = 20
        when 6
          @魔法的百分比 = 30
        end
        
         if @active_battler.armor1_id != 0
       if $data_armors[@active_battler.armor1_id].guard_element_set.include?(i)
        @魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
      end
    end
     if @active_battler.armor2_id != 0
      if $data_armors[@active_battler.armor2_id].guard_element_set.include?(i)
        @魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
      end
    end
     if @active_battler.armor3_id != 0
      if $data_armors[@active_battler.armor3_id].guard_element_set.include?(i)
        @魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
      end
    end
     if @active_battler.armor4_id != 0
      if $data_armors[@active_battler.armor4_id].guard_element_set.include?(i)
       @魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
     end
   end
      if @active_battler.weapon_id != 0
      if $data_weapons[@active_battler.weapon_id].element_set.include?(i)
        @魔法回复 += @active_battler.maxsp* @魔法的百分比 /100
      end
      end
    end
    end
        @active_battler.sp +=  @魔法回复
        @active_battler.damage = -@生命回复
        @active_battler.hp -= @active_battler.damage
        @active_battler.damage_pop = true
    end

点评

是成功了! 不過我要改屬性的編號位置會出錯耶! 我想改在51~90間! 51~70是hp! 71~90是mp! 要怎調呢?  发表于 2011-12-20 22:42
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-28 03:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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