赞 | 7 |
VIP | 0 |
好人卡 | 0 |
积分 | 22 |
经验 | 0 |
最后登录 | 2024-11-29 |
在线时间 | 194 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 2215
- 在线时间
- 194 小时
- 注册时间
- 2022-6-24
- 帖子
- 184
|
http://artificialprovidence.web.fc2.com/
日本某个大佬的脚本网站
你可以进去选择能力扩张,如何ctrl+f 查找 “使用後追加行動” 和 “通常攻撃ID変化特徴”
如果没办法进去,那么这里是你要的脚本
- #==============================================================================
- # ■ RGSS3 通常攻撃ID変化特徴 Ver1.02 by 星潟
- #------------------------------------------------------------------------------
- # 本来はスキルID1番に指定されている通常攻撃のスキルIDを
- # 変更する特徴を作成する事が可能になります。
- #
- # これにより、通常攻撃のランダム攻撃化や全体攻撃化の効果を持つ
- # ステートや装備品を作成する事が可能になります。
- #
- # なお、RPGツクールVXAceプリセットスクリプトの不具合により
- # 攻撃追加回数が反映されませんが
- # 配布中の『通常攻撃時の追加攻撃回数強制適用』スクリプトを併用する事で
- # 攻撃追加回数が反映されるようになります。
- #==============================================================================
- # 特徴を有する項目(アクター・職業・装備・ステート等)のメモ欄に設定
- # 行を分けて複数設定可能です。
- #------------------------------------------------------------------------------
- # <攻撃ID変更:130>
- #
- # この場合は、通常攻撃のスキルID変化候補としてスキルID130が追加されます。
- #------------------------------------------------------------------------------
- # <攻撃ID変更:131,self.hp>=100>
- #
- # この場合は、コマンド選択時にHPが100以上の時に限り
- # 通常攻撃のスキルID変化候補としてスキルID131が追加されます。
- #------------------------------------------------------------------------------
- # <攻撃ID変更:132,mp==0>
- #
- # この場合は、コマンド選択時にMPが0の時に限り
- # 通常攻撃のスキルID変化候補としてスキルID132が追加されます。
- #------------------------------------------------------------------------------
- # <攻撃ID変更:133,mp>=skill_mp_cost($data_skills[133])>
- #
- # この場合は、コマンド選択時にMPがスキルID133の消費MP以上の時に限り
- # 通常攻撃のスキルID変化候補としてスキルID133が追加されます。
- #------------------------------------------------------------------------------
- # <攻撃ID変更:134,tp==100>
- #
- # この場合は、コマンド選択時にTPが100の時に限り
- # 通常攻撃のスキルID変化候補としてスキルID134が追加されます。
- #------------------------------------------------------------------------------
- # <攻撃ID変更:135,skill_cost_payable?($data_skills[135])>
- #
- # この場合は、コマンド選択時にスキルID135の使用コストが全て払える時に限り
- # 通常攻撃のスキルID変化候補としてスキルID135が追加されます。
- #------------------------------------------------------------------------------
- # <攻撃ID変更:136,usable?($data_skills[136])>
- #
- # この場合は、コマンド選択時にスキルID136が
- # スキルとして使用可能と判定された場合に限り(コスト以外についても判定されます)
- # 通常攻撃のスキルID変化候補としてスキルID136が追加されます。
- #------------------------------------------------------------------------------
- # <攻撃ID変更:137,mp>0&&state?(4)>
- #
- # この場合は、コマンド選択時にMPが0より大きくステートID4が付与されている時に限り
- # 通常攻撃のスキルID変化候補としてスキルID137が追加されます。
- #------------------------------------------------------------------------------
- # <攻撃ID変更:138,mp>0&&!state?(4)>
- #
- # この場合は、コマンド選択時にMPが0より大きくステートID4が付与されていない時に限り
- # 通常攻撃のスキルID変化候補としてスキルID138が追加されます。
- #==============================================================================
- # スキルのメモ欄に設定
- #------------------------------------------------------------------------------
- # <攻撃ID優先度変更:1>
- #
- # このスキルの攻撃ID優先度変更を1として設定します。
- #
- # 書き込まれた数値が優先度として機能し
- # 数値が高ければ高いほど攻撃IDとして優先されます。
- # (なお、優先度が指定されていない場合、自動的に優先度0となります)
- # 優先度が同じ攻撃スキルが存在する場合
- # スキルIDの値が高いスキルが優先されます。
- #==============================================================================
- module ATTACK_CHANGE
-
- #攻撃ID変更用のキーワードを設定します。
-
- WORD1 = "攻撃ID変更"
-
- #攻撃ID優先度変更用のキーワードを設定します。
-
- WORD2 = "攻撃ID優先度変更"
-
- end
- class Scene_Battle < Scene_Base
- #--------------------------------------------------------------------------
- # コマンド[攻撃]
- #--------------------------------------------------------------------------
- alias command_attack_attack_change command_attack
- def command_attack
-
- #通常攻撃時、対象を選択する必要がある場合は通常の処理を行う。
-
- return command_attack_attack_change if $data_skills[BattleManager.actor.attack_skill_id].need_selection?
-
- #通常攻撃時、対象を選択する必要が無い場合は
- #攻撃をセットした後、次のアクターへ移す。
-
- BattleManager.actor.input.set_attack
- next_command
- end
- end
- class Game_BattlerBase
- #--------------------------------------------------------------------------
- # 通常攻撃のスキル ID を取得
- #--------------------------------------------------------------------------
- alias attack_skill_id_attack_change attack_skill_id
- def attack_skill_id
-
- #空の配列を用意。
-
- data = []
-
- #特徴に通常攻撃IDが指定されている場合、そのIDを配列に加える。
-
- feature_objects.each do |f|
- f.new_attack_skill_id.each {|aa| data.push(aa[0]) if aa[0] != 0 && eval(aa[1])}
- end
-
- #配列が空の場合は通常の処理を行う。
-
- return attack_skill_id_attack_change if data.empty?
-
- #配列内の同じ物を消去し、並び変える。
-
- data.uniq!
- data.sort!
-
- #スキルの優先度の最高値を取得する。
-
- number = 0
- data.each do |d|
- number = $data_skills[d].attack_skill_priority if number <= $data_skills[d].attack_skill_priority
- end
-
- #配列から、スキル優先度が最高値でない物を削除する。
-
- data.reject! {|d| $data_skills[d].attack_skill_priority != number}
-
- #配列の末尾の値を取りだす。
-
- return data.pop
- end
- end
- class RPG::BaseItem
- #--------------------------------------------------------------------------
- # 通常攻撃のスキルID候補を条件と共に取得
- #--------------------------------------------------------------------------
- def new_attack_skill_id
-
- #キャッシュがある場合はキャッシュを返す。
-
- @new_attack_skill_id ||= create_new_attack_skill_id
-
- end
- #--------------------------------------------------------------------------
- # 通常攻撃のスキルID候補を条件と共に作成
- #--------------------------------------------------------------------------
- def create_new_attack_skill_id
- result = []
- note.each_line {|l|
- next unless /<#{ATTACK_CHANGE::WORD1}[::](\S+)>/ =~ l
- a = $1.to_s.split(/\s*,\s*/).inject([]) {|r,i| r.push(i)}
- a[0] = a[0].to_i
- a.push("true") if a.size == 1
- result.push(a)}
- result
- end
- end
- class RPG::Skill < RPG::UsableItem
- #--------------------------------------------------------------------------
- # 攻撃ID優先度を指定
- #--------------------------------------------------------------------------
- def attack_skill_priority
-
- #キャッシュがある場合はキャッシュを返す。
-
- @attack_skill_priority ||= /<#{ATTACK_CHANGE::WORD2}[::](\d+)>/ =~ note ? $1.to_i : 0
-
- end
- end
复制代码
- #==============================================================================
- # ■ RGSS3 使用後追加行動効果 Ver1.02 by 星潟
- #==============================================================================
- # アイテム・スキルに対し、戦闘中に使用した後に
- # 更に別のスキルを使用する行動を追加する効果が設定できるようになります。
- #
- # また、行動中に行動不能になった場合は追加行動は発生しません。
- # 設定次第では永久に行動し続ける為注意が必要です。
- #==============================================================================
- # アイテム/スキルのメモ欄に指定。行を分けて記入する事でいくつでも指定可能。
- # 最初にスキルID(0以下の場合は使用できる物を自動行動扱いで使用)、
- # 次にターゲットインデックス、
- # (-2で最終ターゲット、-1でランダムターゲット、0~はそのまま対象のインデックス)
- # 最後に任意で発動確率を指定。
- #------------------------------------------------------------------------------
- # <使用後追加行動:0,-1,50>
- #
- # 50%の確率でランダムターゲットで自動行動。
- #------------------------------------------------------------------------------
- # <使用後追加行動:1,-2>
- #
- # 100%の確率でラストターゲットに対してスキルID1を使用。
- #------------------------------------------------------------------------------
- # <使用後追加行動:1,0>
- #
- # 100%の確率でIndex0の対象に対してスキルID1を使用。
- #------------------------------------------------------------------------------
- # <使用後追加行動:attack_skill_id,-2>
- #
- # 100%の確率でラストターゲットに対して通常攻撃を使用。
- # (通常攻撃IDが変更されるタイプのスクリプト等を使用している場合向け)
- #------------------------------------------------------------------------------
- # <使用後追加行動:guard_skill_id,0>
- #
- # 100%の確率でIndex0の対象に対して防御を使用。
- # (防御IDが変更されるタイプのスクリプト等を使用している場合向け。
- # 通常、防御は自分が対象なので、ターゲットは常に自分になる)
- #==============================================================================
- module AddAfterAction
-
- #設定用キーワードを指定。
-
- Word = "使用後追加行動"
-
- #追加行動を強制的に最速行動にするかを指定。
- #(通常は不要。鳥小屋.txt様のターン消費無しスキル/アイテム導入時に
- # 行動直後に追加行動を発動させたい場合にtrueにする必要あり)
-
- Speed = false
-
- #Speedがtrueの場合の速度を指定。
- #なるべく極端に大きい値を推奨。
-
- Value = 99999999999
-
- end
- class Game_Battler < Game_BattlerBase
- #--------------------------------------------------------------------------
- # 使用後追加行動
- #--------------------------------------------------------------------------
- def add_after_action(item)
- item.add_after_action.each {|a|
- next if eval(a[2]) < rand(100)
- a0 = eval(a[0])
- s = a0 < 1 ? decide_add_random_after_action_id : a0
- next unless s
- add_after_action_main(s,eval(a[1]))}
- end
- #--------------------------------------------------------------------------
- # 使用後追加行動メイン
- #--------------------------------------------------------------------------
- def add_after_action_main(sid,ti)
- return unless movable?
- action = Game_Action.new(self)
- action.set_skill(sid)
- if ti == -2
- action.target_index = last_target_index
- elsif ti == -1
- action.decide_random_target
- else
- action.target_index = ti
- end
- action.quick_aciton_speed_set = true if AddAfterAction::Speed
- @actions = [@actions[0]] + [action] + @actions[1,@actions.size]
- end
- end
- if AddAfterAction::Speed
- class Game_Action
- attr_accessor :quick_aciton_speed_set
- #--------------------------------------------------------------------------
- # 行動速度
- #--------------------------------------------------------------------------
- alias speed_ex_item_add_action speed
- def speed
- return AddAfterAction::Value if @quick_aciton_speed_set
- speed_ex_item_add_action
- end
- end
- end
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # 次のランダム行動を決定
- #--------------------------------------------------------------------------
- def decide_add_random_after_action_id
- (make_action_list.max_by {|action| action.value }).item.id
- end
- end
- class Game_Enemy < Game_Battler
- #--------------------------------------------------------------------------
- # 次のランダム行動を決定
- #--------------------------------------------------------------------------
- def decide_add_random_after_action_id
- action_list = enemy.actions.select {|a| action_valid?(a) }
- return nil if action_list.empty?
- rating_max = action_list.collect {|a| a.rating }.max
- rating_zero = rating_max - 3
- action_list.reject! {|a| a.rating <= rating_zero }
- b = select_enemy_action(action_list, rating_zero)
- b.skill_id
- end
- end
- class Scene_Battle < Scene_Base
- #--------------------------------------------------------------------------
- # スキル/アイテムの使用
- #--------------------------------------------------------------------------
- alias use_item_ex_item_add_action use_item
- def use_item
- item = @subject.current_action.item
- use_item_ex_item_add_action
- @subject.add_after_action(item)
- end
- end
- class RPG::UsableItem < RPG::BaseItem
- #--------------------------------------------------------------------------
- # 使用後追加行動
- #--------------------------------------------------------------------------
- def add_after_action
- @add_after_action ||= create_add_after_action
- end
- #--------------------------------------------------------------------------
- # 使用後追加行動データ作成
- #--------------------------------------------------------------------------
- def create_add_after_action
- a = []
- note.each_line {|l|
- b = /<#{AddAfterAction::Word}[::](\S+)>/ =~ l ? $1.to_s : nil
- if b
- c = b.split(/\s*,\s*/).inject([]) {|r,i| r.push(i)}
- case c.size
- when 2;c.push("100")
- when 3;
- else;next
- end
- a.push(c)
- end}
- a
- end
- end
复制代码 |
|