查看: 2264|回复: 2

[已经解决] 关于 VXAce SP1 的某个方法的问题

[复制链接]

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-12-20 14:23:33 | 显示全部楼层 |阅读模式

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

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

×
VXAce_SP1 脚本修正了一些 VA 的 BUG ,但是有几个 BUG 的修正我没搞懂,
具体来说,就是这段代码:
[pre lang="ruby"]class Game_Actor
  #--------------------------------------------------------------------------
  # ● 装備できない装備品を外す
  #     item_gain : 外した装備品をパーティに戻す
  #--------------------------------------------------------------------------
  alias vxace_sp1_release_unequippable_items release_unequippable_items
  def release_unequippable_items(item_gain = true)
    loop do
      last_equips = equips.dup
      vxace_sp1_release_unequippable_items(item_gain)
      return if equips == last_equips
    end
  end
end[/pre]
官方的说明是:
  ●装備できなくなった装備品が外れたことにより、さらに別の装備品が装備できなくなったとき、その装備品が増殖してしまう不具合を修正しました。
修正装备增加的BUG,但是我没搞懂什么情况下装备会发生增加,希望谁能讲解一下……

附上VA SP1的全部代码:
[pre lang="ruby"]#==============================================================================
# ■ VXAce_SP1
#------------------------------------------------------------------------------
#  プリセットスクリプトの不具合を修正します。ユーザー定義のスクリプト素材は、
# 原則としてこのセクションより下に配置してください。
#==============================================================================

#------------------------------------------------------------------------------
# 【修正内容】
#------------------------------------------------------------------------------
# ●イベントコマンド[ステートの変更]にて、同じステートの付加と解除を同時に実
#   行した際、二回目以降の付加が失敗する不具合を修正しました。
# ●イベントコマンド[アニメーションの表示]にて、表示中のアニメーションがマッ
#   プのスクロールに同期しない不具合を修正しました。
# ●自動戦闘の行動が正常に選択されない不具合を修正しました。
# ●装備できなくなった装備品が外れたことにより、さらに別の装備品が装備できなく
#   なったとき、その装備品が増殖してしまう不具合を修正しました。
# ●イベントコマンド[ピクチャの消去]を実行した後に余分な負荷がかかる不具合を
#   修正しました。
# ●移動ルートのオプション[移動できない場合は飛ばす]にチェックを入れた状態で
#   トリガー[プレイヤーから接触]のイベントに接触すると、イベントが実行中であ
#   っても起動予約がされてしまう不具合を修正しました。
# ●魔法反射されたスキルに対してステート有効度が反映されない不具合を修正しまし
#  た。
# ●フォントのデフォルト設定にて太字または斜体を有効にしていても、ステータス画
#   面を切り替えたとき等に無効な状態に戻ってしまう不具合を修正しました。
#------------------------------------------------------------------------------
class Game_Battler
  attr_accessor :magic_reflection
  #--------------------------------------------------------------------------
  # ● 敵対関係の判定
  #--------------------------------------------------------------------------
  alias vxace_sp1_opposite? opposite?
  def opposite?(battler)
    vxace_sp1_opposite?(battler) || battler.magic_reflection
  end
end
#------------------------------------------------------------------------------
class Game_Actor
  #--------------------------------------------------------------------------
  # ● 装備できない装備品を外す
  #     item_gain : 外した装備品をパーティに戻す
  #--------------------------------------------------------------------------
  alias vxace_sp1_release_unequippable_items release_unequippable_items
  def release_unequippable_items(item_gain = true)
    loop do
      last_equips = equips.dup
      vxace_sp1_release_unequippable_items(item_gain)
      return if equips == last_equips
    end
  end
  #--------------------------------------------------------------------------
  # ● 自動戦闘時の戦闘行動を作成
  #--------------------------------------------------------------------------
  def make_auto_battle_actions
    @actions.size.times do |i|
      @actions = make_action_list.max_by {|action| action.value }
    end
  end
end
#------------------------------------------------------------------------------
class Game_Player
  #--------------------------------------------------------------------------
  # ● マップイベントの起動
  #     triggers : トリガーの配列
  #     normal   : プライオリティ[通常キャラと同じ]かそれ以外か
  #--------------------------------------------------------------------------
  alias vxace_sp1_start_map_event start_map_event
  def start_map_event(x, y, triggers, normal)
    return if $game_map.interpreter.running?
    vxace_sp1_start_map_event(x, y, triggers, normal)
  end
end
#------------------------------------------------------------------------------
class Game_Picture
  #--------------------------------------------------------------------------
  # ● ピクチャの消去
  #--------------------------------------------------------------------------
  alias vxace_sp1_erase erase
  def erase
    vxace_sp1_erase
    @origin = 0
  end
end
#------------------------------------------------------------------------------
class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● ステートの変更
  #--------------------------------------------------------------------------
  alias vxace_sp1_command_313 command_313
  def command_313
    vxace_sp1_command_313
    $game_party.clear_results
  end
end
#------------------------------------------------------------------------------
class Sprite_Character
  #--------------------------------------------------------------------------
  # ● 位置の更新
  #--------------------------------------------------------------------------
  alias vxace_sp1_update_position update_position
  def update_position
    move_animation(@character.screen_x - x, @character.screen_y - y)
    vxace_sp1_update_position
  end
  #--------------------------------------------------------------------------
  # ● アニメーションの移動
  #--------------------------------------------------------------------------
  def move_animation(dx, dy)
    if @animation && @animation.position != 3
      @ani_ox += dx
      @ani_oy += dy
      @ani_sprites.each do |sprite|
        sprite.x += dx
        sprite.y += dy
      end
    end
  end
end
#------------------------------------------------------------------------------
class Sprite_Picture
  #--------------------------------------------------------------------------
  # ● 転送元ビットマップの更新
  #--------------------------------------------------------------------------
  alias vxace_sp1_update_bitmap update_bitmap
  def update_bitmap
    if @picture.name.empty?
      self.bitmap = nil
    else
      vxace_sp1_update_bitmap
    end
  end
end
#------------------------------------------------------------------------------
class Window_Base
  #--------------------------------------------------------------------------
  # ● フォント設定のリセット
  #--------------------------------------------------------------------------
  alias vxace_sp1_reset_font_settings reset_font_settings
  def reset_font_settings
    vxace_sp1_reset_font_settings
    contents.font.bold = Font.default_bold
    contents.font.italic = Font.default_italic
  end
end
#------------------------------------------------------------------------------
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 魔法反射の発動
  #--------------------------------------------------------------------------
  alias vxace_sp1_invoke_magic_reflection invoke_magic_reflection
  def invoke_magic_reflection(target, item)
    @subject.magic_reflection = true
    vxace_sp1_invoke_magic_reflection(target, item)
    @subject.magic_reflection = false
  end
end
[/pre]

无限の剣制

梦石
0
星屑
10445
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2015-12-20 14:45:10 | 显示全部楼层
本帖最后由 VIPArcher 于 2015-12-20 16:34 编辑

【这里是错误的】
========================正确的触发姿势========================
装备着装备A使得装备B可以装备,B装备使得C装备可以装备
这时候卸下A装备的时候会导致B和C都不能装备的时候会无法卸下C装备并且物品栏里多出一个C装备

是有点饶,官方连这种BUG都能发现也是不服不行

加上loop是在一次执行release_unequippable_items的时候
就使所有不能装备的装备都已经卸下

点评

hhh  发表于 2015-12-20 18:07
你倒是把正确的附上来啊……  发表于 2015-12-20 16:29
我来预防一下,截止16:06分,这楼的回复还是错的  发表于 2015-12-20 16:06
回复 0 1

使用道具 举报

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

 楼主| 发表于 2015-12-20 14:49:05 | 显示全部楼层
VIPArcher 发表于 2015-12-20 14:45
没有双持武器的时候如果装备上的装备导致会追加双持武器那就会导致多一把原来第二个防具ID的武器武器
例如 ...

那么为什么 loop 了以后就能修正了?

点评

我把这个SP1插入后,我上面说的那个BUG并没有被修正  发表于 2015-12-20 15:06
噫,我试了一下,好像我上面说的不对诶  发表于 2015-12-20 15:05
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部