ターンの初めか終りにオートで発動するスキル

shimei
記事: 26
登録日時: 2017年4月28日(金) 16:25

Re: ターンの初めか終りにオートで発動するスキル

投稿記事 by shimei »

faidaさま>
ありがとうございます。意図した動きになりました
同じことをパーティメンバーでやろうとすると、どういうスクリプトにすればよいでしょうか?
エネミーは隊列を決められますがパーティはそうでもないような
faida
記事: 271
登録日時: 2015年12月17日(木) 16:44

Re: ターンの初めか終りにオートで発動するスキル

投稿記事 by faida »

$game_troop.members[n]のところを
$game_actors[n] # IDがnのアクター
にするとうまくいくかなと思います。

※ってこれじゃ自動戦闘以外じゃ行動してくれませんね。
スクリプトを入れたくないならこんな感じでどうでしょう。

コード: 全て選択

[26, 80].each{|skill_id| # ここスキルID
 $game_party.alive_members.each{|actor|
next if !actor.skill_learn?($data_skills[skill_id])
  dup = actor.instance_variable_get(:@actions).dup
  @params = [1, actor.id, skill_id, -1]
  command_339
  actor.instance_variable_set(:@actions, dup)
 }
}
BattleManager.make_action_orders
イベントコマンドにこれを入れるだけで味方の分は足ります。
# ここ の配列にスキルIDを入れてください。
最後に編集したユーザー faida [ 2017年5月13日(土) 03:34 ], 累計 1 回
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
SBR

Re: ターンの初めか終りにオートで発動するスキル

投稿記事 by SBR »

適当で構わないのであればこんな感じですかね?
これでターン終了時にリカバーⅡ(30)を覚えている敵とアクターがリカバーⅡを使います。
無題2.png
無題2.png (4.33 KiB) 閲覧された回数 2903 回

コード: 全て選択

#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================

class Game_Interpreter
  def enemy_auto_skill(skill_id)
    skill    = $data_skills[skill_id]
    battlers = BattleManager.instance_variable_get(:@action_battlers).dup
  
    $game_troop.alive_members.each do |enemy|
      next unless enemy.enemy.actions.any?{|action|
        $data_skills[action.skill_id].equal?(skill)
      }
      
      actions = enemy.instance_variable_get(:@actions).dup
      enemy.force_action(skill_id,-1)
      BattleManager.force_action(enemy)
      Fiber.yield while BattleManager.action_forced?
      
      enemy.instance_variable_get(:@actions).replace(actions)
    end
  
    BattleManager.instance_variable_get(:@action_battlers).replace(battlers)
  end
  
  def actor_auto_skill(skill_id)
    skill    = $data_skills[skill_id]
    battlers = BattleManager.instance_variable_get(:@action_battlers).dup
  
    $game_party.alive_members.each do |actor|
      next unless actor.skills.any?{|s|s.equal?(skill)}
      
      actions = actor.instance_variable_get(:@actions).dup
      actor.force_action(skill_id,-1)
      BattleManager.force_action(actor)
      Fiber.yield while BattleManager.action_forced?
      
      actor.instance_variable_get(:@actions).replace(actions)
    end
  
    BattleManager.instance_variable_get(:@action_battlers).replace(battlers)
  end
end
shimei
記事: 26
登録日時: 2017年4月28日(金) 16:25

Re: ターンの初めか終りにオートで発動するスキル

投稿記事 by shimei »

faidaさま>
SBR さま>

お二人ともありがとうございます!意図した動きになりました!
返信する

“VX / Ace:スクリプト素材のリクエスト”に戻る