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

Project1

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

复刻幽城“逆阙”状态的BUG|||||||

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
601 小时
注册时间
2007-8-14
帖子
635

短篇七彩虹组冠军

跳转到指定楼层
1
发表于 2009-3-21 08:12:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
首先说明这个是RTAB=v=b

在def item_effect(item, user = $game_party.actors[0])下面加了这么个句子|||||||

     #“逆阙”状态,加血气变伤害
     if self.states.include?(64) and self.damage[user] < 0
       self.damage[user] *= (-1)
     end

在吃药加HP的时候倒没什么,变成减HP了。但是加SP就会报如下错误||||||

(说出错的那个句子是上面粉色的句子)

此外衍生出来的“淤塞”状态也存在相同的问题|||||||

  1. def item_effect(item, user = $game_party.actors[0])
  2.     # クリティカルフラグをクリア
  3.     self.critical[user] = false
  4.     state_p[user] = []
  5.     state_m[user] = []
  6.     self.recover_hp[user] = 0
  7.     self.recover_sp[user] = 0
  8.     # アイテムの効果範囲が HP 1 以上の味方で、自分の HP が 0、
  9.     # またはアイテムの効果範囲が HP 0 の味方で、自分の HP が 1 以上の場合
  10.     if ((item.scope == 3 or item.scope == 4) and self.hp == 0)# or
  11.     #   ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
  12.       # メソッド終了
  13.       return false
  14.     end
  15.     # 有効フラグをクリア
  16.     effective = false
  17.     # コモンイベント ID が有効の場合は有効フラグをセット
  18.     effective |= item.common_event_id > 0
  19.     # 命中判定
  20.     hit_result = (rand(100) < item.hit)
  21.     # 不確実なスキルの場合は有効フラグをセット
  22.     effective |= item.hit < 100
  23.     # 命中の場合
  24.     if hit_result == true
  25.       # 回復量を計算
  26.       self.recover_hp[user] = maxhp * item.recover_hp_rate / 100 +
  27.                               item.recover_hp
  28.       self.recover_sp[user] = maxsp * item.recover_sp_rate / 100 +
  29.                               item.recover_sp
  30.       if self.recover_hp[user] < 0
  31.         self.recover_hp[user] += self.pdef * item.pdef_f / 20
  32.         self.recover_hp[user] += self.mdef * item.mdef_f / 20
  33.         self.recover_hp[user] = [self.recover_hp[user], 0].min
  34.       end
  35.       # 属性修正
  36.       self.recover_hp[user] *= elements_correct(item.element_set)
  37.       self.recover_hp[user] /= 100
  38.       self.recover_sp[user] *= elements_correct(item.element_set)
  39.       self.recover_sp[user] /= 100      
  40.       # 分散
  41.       if item.variance > 0 and self.recover_hp[user].abs > 0
  42.         amp = [self.recover_hp[user].abs * item.variance / 100, 1].max
  43.         self.recover_hp[user] += rand(amp+1) + rand(amp+1) - amp
  44.       end
  45.       if item.variance > 0 and self.recover_sp[user].abs > 0
  46.         amp = [self.recover_sp[user].abs * item.variance / 100, 1].max
  47.         self.recover_sp[user] += rand(amp+1) + rand(amp+1) - amp
  48.       end
  49.       # 回復量の符号が負の場合
  50.       if self.recover_hp[user] < 0
  51.         # 防御修正
  52.         if self.guarding?
  53.           self.recover_hp[user] /= 2
  54.         end
  55.       end
  56.       # 回復量の符号が負の場合
  57.       if self.recover_sp[user] < 0
  58.         # 防御修正
  59.         if self.guarding?
  60.           self.recover_sp[user] /= 2
  61.         end
  62.       end
  63.       #========淤塞============
  64.       if self.states.include?(49)
  65.         self.recover_hp[user] = 0
  66.       end
  67.       if self.states.include?(49)
  68.         self.recover_sp[user] = 0
  69.       end
  70.       #========逆阙============
  71.       if self.states.include?(64)
  72.         self.recover_hp[user] *= (-1)
  73.       end
  74.       if self.states.include?(64)
  75.         self.recover_sp[user] *= (-1)
  76.       end
  77.       # HP 回復量の符号を反転し、ダメージの値に設定
  78.       self.damage[user] = -self.recover_hp[user]
  79.       # HP および SP の変動判定
  80.       last_hp = [[self.hp + self.recover_hp[user], self.maxhp].min, 0].max
  81.       last_sp = [[self.sp + self.recover_sp[user], self.maxsp].min, 0].max
  82.       effective |= self.hp != last_hp
  83.       effective |= self.sp != last_sp
  84.       # ステート変化
  85.       @state_changed = false
  86.       effective |= states_plus(user, item.plus_state_set)
  87.       effective |= states_minus(user, item.minus_state_set)
  88.       unless $game_temp.in_battle
  89.         self.damage_effect(user, 2, nil)
  90.       end
  91.       # パラメータ上昇値が有効の場合
  92.       if item.parameter_type > 0 and item.parameter_points != 0
  93.         # パラメータで分岐
  94.         case item.parameter_type
  95.         when 1  # MaxHP
  96.           @maxhp_plus += item.parameter_points
  97.         when 2  # MaxSP
  98.           @maxsp_plus += item.parameter_points
  99.         when 3  # 腕力
  100.           @str_plus += item.parameter_points
  101.         when 4  # 器用さ
  102.           @dex_plus += item.parameter_points
  103.         when 5  # 素早さ
  104.           @agi_plus += item.parameter_points
  105.         when 6  # 魔力
  106.           @int_plus += item.parameter_points
  107.         end
  108.         # 有効フラグをセット
  109.         effective = true
  110.       end
  111.       # HP 回復率と回復量が 0 の場合
  112.       if item.recover_hp_rate == 0 and item.recover_hp == 0
  113.         # ダメージに空文字列を設定
  114.         self.damage[user] = ""
  115.         # SP 回復率と回復量が 0、パラメータ上昇値が無効の場合
  116.         if item.recover_sp_rate == 0 and item.recover_sp == 0 and
  117.            (item.parameter_type == 0 or item.parameter_points == 0)
  118.           # ステートに変化がない場合
  119.           unless @state_changed
  120.             # ダメージに "Miss" を設定
  121.             self.damage[user] = "Miss"
  122.           end
  123.         end
  124.       end
  125.     #“逆阙”状态,加血气变伤害
  126.      if self.states.include?(64) and self.damage[user] < 0
  127.        self.damage[user] *= (-1)
  128.      end
  129.       #“淤塞”状态,加血气无效
  130.      if self.states.include?(49) and self.damage[user] < 0
  131.        self.damage[user] = ""
  132.      end
  133.      #“逆阙”与“淤塞”并存,1.5倍伤害!
  134.      if self.states.include?(49) and self.states.include?(64) and self.damage[user] < 0
  135.        self.damage[user] *= (-1.5)
  136.      end
  137.     # ミスの場合
  138.     else
  139.       # ダメージに "Miss" を設定
  140.       self.damage[user] = "Miss"
  141.     end
  142.     # 戦闘中でない場合
  143.     unless $game_temp.in_battle
  144.       # ダメージに nil を設定
  145.       self.damage[user] = nil
  146.     end
  147.     # メソッド終了
  148.     return effective
  149.   end
复制代码

此贴于 2009-3-22 9:51:28 被版主darkten提醒,请楼主看到后对本贴做出回应。
版务信息:本贴由楼主自主结贴~
填坑填坑填坑填坑填坑填坑填坑填坑填坑

Lv1.梦旅人

梦石
0
星屑
65
在线时间
400 小时
注册时间
2005-10-24
帖子
634
2
发表于 2009-3-21 13:18:44 | 只看该作者
因为damage可能是字符串,所以要先判断判断是否String类,再乘以-1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
601 小时
注册时间
2007-8-14
帖子
635

短篇七彩虹组冠军

3
 楼主| 发表于 2009-3-22 06:02:01 | 只看该作者
貌似明白了是怎么回事……但是应该怎么写呢?(这个人没救了=v=……||||||)
填坑填坑填坑填坑填坑填坑填坑填坑填坑
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
601 小时
注册时间
2007-8-14
帖子
635

短篇七彩虹组冠军

4
 楼主| 发表于 2009-3-22 21:01:38 | 只看该作者
无营养顶……=v=b
填坑填坑填坑填坑填坑填坑填坑填坑填坑
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3137
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

5
发表于 2009-3-22 21:22:16 | 只看该作者
先试一下能不能
    if self.states.include?(64) and self.damage[user].to_i < 0
      self.damage[user] = "-" + self.damage[user]
    end
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
601 小时
注册时间
2007-8-14
帖子
635

短篇七彩虹组冠军

6
 楼主| 发表于 2009-3-22 21:31:23 | 只看该作者


又变成这个错误了=v=b
填坑填坑填坑填坑填坑填坑填坑填坑填坑
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3137
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

7
发表于 2009-3-22 21:36:25 | 只看该作者
麻烦东西吗……试试看下面这个
    if self.states.include?(64) and self.damage[user].is_a?(Fixnum) and self.damage[user] < 0
      self.damage[user] *= (-1)
    end
以上针对HP,SP『应该』没有效果
    if self.states.include?(64) and self.damage[user].is_a?(String) and self.damage[user].to_i < 0
      self.damage[user] = ((self.damage[user].to_i) * (-1)).to_s
    end
以上『应该』针对SP,错误未知,慎
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
601 小时
注册时间
2007-8-14
帖子
635

短篇七彩虹组冠军

8
 楼主| 发表于 2009-3-22 22:11:18 | 只看该作者
暂时没出什么问题,多谢了{/hx}
填坑填坑填坑填坑填坑填坑填坑填坑填坑
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-17 01:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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