Project1

标题: VA默認腳本附加/解除狀態的bug? [打印本页]

作者: chd114    时间: 2017-12-24 14:53
标题: VA默認腳本附加/解除狀態的bug?
本帖最后由 chd114 于 2017-12-24 14:55 编辑


附加狀態失效的bug
圖中的事件,先觸發附加,再解除,此時是正常附加和解除的,但是再附加就不顯示了(states裏沒有應該被附加到的狀態)

附加狀態
解除狀態
附加狀態(無效果)

不知道其他人有沒有遇到


如果使用直接修改回合數的方式,則會造成“其實有剩餘回合數,但是狀態數組沒有這個狀態的bug”
RUBY 代码复制
  1. class Game_Battler < Game_BattlerBase
  2.   #--------------------------------------------------------------------------
  3.   # ● 调整状态计数(回合数)
  4.   #--------------------------------------------------------------------------
  5.   def change_turns(state_id,value)
  6.     #return if !state?(state_id)
  7.     state = $data_states[state_id]
  8.     @state_turns[state_id]||=0
  9.     @state_turns[state_id] += value
  10.     if @state_turns[state_id]>0
  11.       @states.push(state_id)
  12.       @result.added_states.push(state_id).uniq!
  13.     else
  14.       @state_turns[state_id]=0
  15.       @states.delete(state_id)
  16.       @result.removed_states.push(state_id).uniq!
  17.     end
  18.     @states.uniq!
  19.     refresh
  20.   end
  21. end

即使手動給states添加剩余回合数大於0的狀態也沒有效果···
作者: gforce    时间: 2017-12-24 15:12
VA的迷之设定
刚被消除的状态不可附加
我到现在都没有明白这个的存在意义

脚本Game_Battler
  1. #--------------------------------------------------------------------------
  2.   # * Determine if States Are Addable
  3.   #--------------------------------------------------------------------------
  4.   def state_addable?(state_id)
  5.     alive? && $data_states[state_id] && !state_resist?(state_id) &&
  6.       !state_removed?(state_id) && !state_restrict?(state_id)
  7.   end
  8.   #--------------------------------------------------------------------------
  9.   # * Determine States Removed During Same Action
  10.   #--------------------------------------------------------------------------
  11.   def state_removed?(state_id)
  12.     @result.removed_states.include?(state_id)
  13.   end
复制代码

作者: chd114    时间: 2017-12-24 15:55
gforce 发表于 2017-12-24 15:12
VA的迷之设定
刚被消除的状态不可附加
我到现在都没有明白这个的存在意义

老實說我也覺得···這裡面謎之設定很多
已經加入的狀態的數組、移除的狀態的數組
這些東西真是···
如果是角色有的,那@states裏面就有,沒有的裏面就沒有
然後本來就有狀態的持續回合之類的結算了還特意來個數組去存添加的狀態···
直接用剩餘回合數判斷狀態是否擁有不就好了嗎···
那這個怎麼改比較好?
把你這段腳本覆蓋掉原來的就行了?
作者: 骷髅岛遗老    时间: 2017-12-24 16:16
貌似是系统BUG,已经有补丁修复了的(然而修复以后还是要求状态设置成行动结束时消除才有效
作者: chd114    时间: 2017-12-24 16:23
骷髅岛遗老 发表于 2017-12-24 16:16
貌似是系统BUG,已经有补丁修复了的(然而修复以后还是要求状态设置成行动结束时消除才有效 ...

···還要shed解除時機?可是解除時機我還打算拿來做其他東西···

是什麼補丁還是什麼新版本修復的?
作者: 骷髅岛遗老    时间: 2017-12-25 00:05
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ VXAce_SP1
  4. #------------------------------------------------------------------------------
  5. #  プリセットスクリプトの不具合を修正します。ユーザー定義のスクリプト素材は、
  6. # 原則としてこのセクションより下に配置してください。
  7. #==============================================================================

  8. #------------------------------------------------------------------------------
  9. # 【修正内容】
  10. #------------------------------------------------------------------------------
  11. # ●イベントコマンド[ステートの変更]にて、同じステートの付加と解除を同時に実
  12. #   行した際、二回目以降の付加が失敗する不具合を修正しました。
  13. # ●イベントコマンド[アニメーションの表示]にて、表示中のアニメーションがマッ
  14. #   プのスクロールに同期しない不具合を修正しました。
  15. # ●自動戦闘の行動が正常に選択されない不具合を修正しました。
  16. # ●装備できなくなった装備品が外れたことにより、さらに別の装備品が装備できなく
  17. #   なったとき、その装備品が増殖してしまう不具合を修正しました。
  18. # ●イベントコマンド[ピクチャの消去]を実行した後に余分な負荷がかかる不具合を
  19. #   修正しました。
  20. # ●移動ルートのオプション[移動できない場合は飛ばす]にチェックを入れた状態で
  21. #   トリガー[プレイヤーから接触]のイベントに接触すると、イベントが実行中であ
  22. #   っても起動予約がされてしまう不具合を修正しました。
  23. # ●魔法反射されたスキルに対してステート有効度が反映されない不具合を修正しまし
  24. #  た。
  25. # ●フォントのデフォルト設定にて太字または斜体を有効にしていても、ステータス画
  26. #   面を切り替えたとき等に無効な状態に戻ってしまう不具合を修正しました。
  27. #------------------------------------------------------------------------------
  28. class Game_Battler
  29.   attr_accessor :magic_reflection
  30.   #--------------------------------------------------------------------------
  31.   # ● 敵対関係の判定
  32.   #--------------------------------------------------------------------------
  33.   alias vxace_sp1_opposite? opposite?
  34.   def opposite?(battler)
  35.     vxace_sp1_opposite?(battler) || battler.magic_reflection
  36.   end
  37. end
  38. #------------------------------------------------------------------------------
  39. class Game_Actor
  40.   #--------------------------------------------------------------------------
  41.   # ● 装備できない装備品を外す
  42.   #     item_gain : 外した装備品をパーティに戻す
  43.   #--------------------------------------------------------------------------
  44.   alias vxace_sp1_release_unequippable_items release_unequippable_items
  45.   def release_unequippable_items(item_gain = true)
  46.     loop do
  47.       last_equips = equips.dup
  48.       vxace_sp1_release_unequippable_items(item_gain)
  49.       return if equips == last_equips
  50.     end
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 自動戦闘時の戦闘行動を作成
  54.   #--------------------------------------------------------------------------
  55.   def make_auto_battle_actions
  56.     @actions.size.times do |i|
  57.       @actions[i] = make_action_list.max_by {|action| action.value }
  58.     end
  59.   end
  60. end
  61. #------------------------------------------------------------------------------
  62. class Game_Player
  63.   #--------------------------------------------------------------------------
  64.   # ● マップイベントの起動
  65.   #     triggers : トリガーの配列
  66.   #     normal   : プライオリティ[通常キャラと同じ]かそれ以外か
  67.   #--------------------------------------------------------------------------
  68.   alias vxace_sp1_start_map_event start_map_event
  69.   def start_map_event(x, y, triggers, normal)
  70.     return if $game_map.interpreter.running?
  71.     vxace_sp1_start_map_event(x, y, triggers, normal)
  72.   end
  73. end
  74. #------------------------------------------------------------------------------
  75. class Game_Picture
  76.   #--------------------------------------------------------------------------
  77.   # ● ピクチャの消去
  78.   #--------------------------------------------------------------------------
  79.   alias vxace_sp1_erase erase
  80.   def erase
  81.     vxace_sp1_erase
  82.     @origin = 0
  83.   end
  84. end
  85. #------------------------------------------------------------------------------
  86. class Game_Interpreter
  87.   #--------------------------------------------------------------------------
  88.   # ● ステートの変更
  89.   #--------------------------------------------------------------------------
  90.   alias vxace_sp1_command_313 command_313
  91.   def command_313
  92.     vxace_sp1_command_313
  93.     $game_party.clear_results
  94.   end
  95. end
  96. #------------------------------------------------------------------------------
  97. class Sprite_Character
  98.   #--------------------------------------------------------------------------
  99.   # ● 位置の更新
  100.   #--------------------------------------------------------------------------
  101.   alias vxace_sp1_update_position update_position
  102.   def update_position
  103.     move_animation(@character.screen_x - x, @character.screen_y - y)
  104.     vxace_sp1_update_position
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● アニメーションの移動
  108.   #--------------------------------------------------------------------------
  109.   def move_animation(dx, dy)
  110.     if @animation && @animation.position != 3
  111.       @ani_ox += dx
  112.       @ani_oy += dy
  113.       @ani_sprites.each do |sprite|
  114.         sprite.x += dx
  115.         sprite.y += dy
  116.       end
  117.     end
  118.   end
  119. end
  120. #------------------------------------------------------------------------------
  121. class Sprite_Picture
  122.   #--------------------------------------------------------------------------
  123.   # ● 転送元ビットマップの更新
  124.   #--------------------------------------------------------------------------
  125.   alias vxace_sp1_update_bitmap update_bitmap
  126.   def update_bitmap
  127.     if @picture.name.empty?
  128.       self.bitmap = nil
  129.     else
  130.       vxace_sp1_update_bitmap
  131.     end
  132.   end
  133. end
  134. #------------------------------------------------------------------------------
  135. class Window_Base
  136.   #--------------------------------------------------------------------------
  137.   # ● フォント設定のリセット
  138.   #--------------------------------------------------------------------------
  139.   alias vxace_sp1_reset_font_settings reset_font_settings
  140.   def reset_font_settings
  141.     vxace_sp1_reset_font_settings
  142.     contents.font.bold = Font.default_bold
  143.     contents.font.italic = Font.default_italic
  144.   end
  145. end
  146. #------------------------------------------------------------------------------
  147. class Scene_Battle
  148.   #--------------------------------------------------------------------------
  149.   # ● 魔法反射の発動
  150.   #--------------------------------------------------------------------------
  151.   alias vxace_sp1_invoke_magic_reflection invoke_magic_reflection
  152.   def invoke_magic_reflection(target, item)
  153.     @subject.magic_reflection = true
  154.     vxace_sp1_invoke_magic_reflection(target, item)
  155.     @subject.magic_reflection = false
  156.   end
  157. end
复制代码





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