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

Project1

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

[推荐问答] 持续几个回合后造成伤害的技能

[复制链接]

Lv2.观梦者

梦石
0
星屑
294
在线时间
371 小时
注册时间
2010-8-23
帖子
418
跳转到指定楼层
1
发表于 2012-10-18 13:36:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想制作一个技能,使用之后3个回合后对对方造成伤害,请问该如何实现呢
求思路

点评

思路嘛,就是给对方附加一个状态,状态持续3个回合。当该状态解除时的瞬间给对方造成伤害。  发表于 2012-10-18 13:43

Lv3.寻梦者

梦石
0
星屑
1488
在线时间
1447 小时
注册时间
2010-10-22
帖子
1011
2
发表于 2012-10-18 16:13:21 | 只看该作者
本帖最后由 kangxi0109 于 2012-10-21 09:41 编辑

1. 在数据库中设置一个新的状态,勾选“持续伤害”,这里以80号状态为例。
2. 在Scene_Battle 1中对应位置添加如下部分:
  1.   #--------------------------------------------------------------------------
  2.   # ● 主处理
  3.   #--------------------------------------------------------------------------
  4.   def main
  5.     # 初始化战斗用的各种暂时数据
  6.     #===============添加↓
  7.     $state80 = [] #添加80号状态回合计数初始化数组
  8.     #===============添加↑
  9.     $game_temp.in_battle = true
  10.     $game_temp.battle_turn = 0
复制代码
3.在Game_Battler 3中对应位置添加如下部分:

  1.   #--------------------------------------------------------------------------
  2.   # ● 应用连续伤害效果
  3.   #--------------------------------------------------------------------------
  4.   def slip_damage_effect
  5.     # 设置伤害
  6.     self.damage = self.maxhp / 10
  7.       # 分散
  8.       if self.damage.abs > 0
  9.         amp = [self.damage.abs * 15 / 100, 1].max
  10.         self.damage += rand(amp+1) + rand(amp+1) - amp
  11.       end
  12.     #============================添加↓
  13.     if self.state?(80) # 包含80号状态的场合
  14.       if self.is_a?(Game_Actor)#角色的场合
  15.         m = self.id + 8 #获取编号,空出前8个位置给敌人
  16.       else #敌人的场合
  17.         m = self.index #获取序列
  18.       end
  19.       if $state80[m] == nil #初始化,目标若从未附加过这个状态时执行
  20.         $state80[m] = 0
  21.       end
  22.       $state80[m] += 1
  23.       if $state80[m] == 4 #计数至第4回合
  24.         self.damage = 1000 #造成1000点损伤
  25.         self.remove_state(80) #解除80号状态
  26.         $state80[m] = 0 #回合计数归0
  27.       else
  28.         self.damage = $state80[m] #造成当前回合计数的伤害,作为标记使用
  29.       end
  30.     end
  31.     #============================添加↑
  32.     # HP 的伤害减法运算
  33.     self.hp -= self.damage
  34.     # 过程结束
  35.     return true
  36.   end
复制代码
注意:这个状态的特殊结算方式只在战斗中有效,如果该状态是在地图中用公共事件附加的,则会按默认的持续伤害方式运行,直至开始战斗。

点评

貌似有错误啊-battler 3里出现定义错误 if $state102[self.id] == nil这句就出错,估计下面的也一样  发表于 2012-10-21 03:19

评分

参与人数 1星屑 +200 梦石 +2 收起 理由
小传子 + 200 + 2 追加经验奖励

查看全部评分

【2022.06.03】原本以为已经不可能再找回来的东西重新找回来了,原本一直念念不忘的坑终于再一次拿起铲子了。一别竟近10年,你好,我的世界我的梦。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1488
在线时间
1447 小时
注册时间
2010-10-22
帖子
1011
3
发表于 2012-10-21 09:44:08 | 只看该作者
已经在二楼更新了判定的方法,修正适用面的问题。
【2022.06.03】原本以为已经不可能再找回来的东西重新找回来了,原本一直念念不忘的坑终于再一次拿起铲子了。一别竟近10年,你好,我的世界我的梦。
回复 支持 反对

使用道具 举报

Lv2.观梦者


  • 更新完成啦

梦石
0
星屑
759
在线时间
6267 小时
注册时间
2006-6-7
帖子
8462
4
发表于 2012-10-21 15:01:58 | 只看该作者
kangxi0109 发表于 2012-10-21 09:44
已经在二楼更新了判定的方法,修正适用面的问题。

确实没什么问题,我的$state80 = [] 要放到better 1去= =,
然后 self.damage = $state80[m] 可以加to_s比较保险呢。

点评

同意,事实上最保险的方法应该是将$state80 = [] 这里改为$state80 = [0,0,0,0,0...] 的样子呢...  发表于 2012-10-21 15:27
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-20 22:08

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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