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

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

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

投稿記事by shimei » 2017年5月12日(金) 09:50

faidaさま>
ありがとうございます。意図した動きになりました
同じことをパーティメンバーでやろうとすると、どういうスクリプトにすればよいでしょうか?
エネミーは隊列を決められますがパーティはそうでもないような

faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

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

投稿記事by faida » 2017年5月12日(金) 19:38

$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 on 2017年5月13日(土) 03:34 [ 編集 1 回目 ]
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
SBR

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

投稿記事by SBR » 2017年5月12日(金) 21:44

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


コード: 全て選択

#==============================================================================
# ■ 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
記事: 35
登録日時: 2017年4月28日(金) 16:25

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

投稿記事by shimei » 2017年5月16日(火) 17:09

faidaさま>
SBR さま>

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

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