赞 | 0 |
VIP | 0 |
好人卡 | 1 |
积分 | 1 |
经验 | 8796 |
最后登录 | 2024-11-19 |
在线时间 | 330 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 85
- 在线时间
- 330 小时
- 注册时间
- 2010-5-4
- 帖子
- 173
|
本帖最后由 iisnow 于 2012-4-10 14:26 编辑
小弟正在製作一個遊戲碰上了個問題...
使用這個腳本"精神コマンド再現"的腳本
所以把【技能】稱呼改成【精神】
但是又不想把精神跟攻擊技能放在一起...
是否可以把【攻擊】這個默認指令
改為另一個技能指令視窗呢?
希望前輩們能夠幫幫忙~謝謝=w=
另外問個問題~精神コマンド再現..這個哪個前輩有用過0.0?
能不能把這腳本變成..不用耗到MP~而是另一個自創數值(如:SP)
原網頁腳本如下0.0”
- #==============================================================================
- # ?VX RGSS2 「精神コマンド再現」?
- # EnDlEss DREamER
- # URL:[url]http://mitsu-evo.6.ql.bz/[/url]
- # 製作者 mitsu-evo
- # Last:2012/1/20
- # 一部のスパロボ精神コマンドの効果をスキル・アイテムで再現します。
- # ▼ MAIN 直上付近
- #==============================================================================
- $ed_rgss2 = {} if $ed_rgss2 == nil
- $ed_rgss2["ed_spirit_command"] = true
- =begin
- 1/20:必中・鉄壁・集中使用後、ほかの精神コマンド使用時にターン経過して
- 効果が切れてしまう現象を修正。
- 戦闘終了後、前回戦闘での精神コマンド効果が継続する現象を修正。
- ★ 概要 ★
-
- ・スパロボの精神コマンドの効果を再現します。
- ・スキル選択後、原作同様にエフェクト後効果を発動します。
- ・敵も行動リストに精神スキルを入れると行動前に使用します。
- ・簡易汎用ATB併用時は精神スキルは詠唱しません。
- ・スキル及びアイテムのメモ欄にコマンドを記載します。
- ・使用精神コマンド一覧
- 「熱血」「魂」「必中」「閃き」「鉄壁」「不屈」「かく乱」「再動」
- 「集中」「直撃」
- ・メモ欄に<熱血>などと入れるとそのスキルを対象に付加します。
- 再動なら<再動>とメモ欄に入れると効果が付与されます。
- その性質上「感応」や「幸運」「努力」などは再現していません。
- ・「直撃」はダメージ吸収と属性補正を無効化します。
- ・「再動」は入力行動を再度実行する仕様となっています。
- ・最終ダメージで回復するものは熱血・魂・鉄壁・不屈の効果が発動しません。
- ・「熱血」は2倍。「魂」は3倍。「不屈」は10ダメージ。
- 「鉄壁」はダメージ1/4。「必中」より「閃き」優先。
- 「かく乱」は命中1/2。
- ・「奇跡」などは複数のメモ欄コマンドを記載してやるといいです。
- ・ツクールの仕様上「対象」を指定できるので
- 敵単体に「かく乱」。味方全体に「魂」など出来て
- かなりチートになるので、制作者側で調整や制限して下さい。
-
- ★ 導入位置 ★
-
- ・「指定値ダメージ緩和バリア」「特殊ダメージ計算式」よりも下に導入すること。
- ・「通常攻撃回数システム」よりも上
- =end
- #==============================================================================
- # ■ RPG::UsableItem
- #==============================================================================
- module RPG
- class UsableItem < BaseItem
- #--------------------------------------------------------------------------
- # ● 精神コマンド「熱血」の取得
- #--------------------------------------------------------------------------
- def nekketu
- sp_com = self.note.scan(/<熱血>/)
- sp_com = sp_com.flatten
- sp_com = sp_com[0].to_s
- # 魂がある場合はfalse
- return false if tamasii
- # sp_com が nil でなくて 配列が空でもない
- if sp_com != nil and not sp_com.empty?
- return true
- else
- return false
- end
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンド「魂」の取得
- #--------------------------------------------------------------------------
- def tamasii
- sp_com = self.note.scan(/<魂>/)
- sp_com = sp_com.flatten
- sp_com = sp_com[0].to_s
- # sp_com が nil でなくて 配列が空でもない
- if sp_com != nil and not sp_com.empty?
- return true
- else
- return false
- end
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンド「閃き」の取得
- #--------------------------------------------------------------------------
- def hirameki
- sp_com = self.note.scan(/<閃き>/)
- sp_com = sp_com.flatten
- sp_com = sp_com[0].to_s
- # sp_com が nil でなくて 配列が空でもない
- if sp_com != nil and not sp_com.empty?
- return true
- else
- return false
- end
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンド「必中」の取得
- #--------------------------------------------------------------------------
- def hittyuu
- sp_com = self.note.scan(/<必中>/)
- sp_com = sp_com.flatten
- sp_com = sp_com[0].to_s
- # sp_com が nil でなくて 配列が空でもない
- if sp_com != nil and not sp_com.empty?
- return true
- else
- return false
- end
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンド「鉄壁」の取得
- #--------------------------------------------------------------------------
- def teppeki
- sp_com = self.note.scan(/<鉄壁>/)
- sp_com = sp_com.flatten
- sp_com = sp_com[0].to_s
- # sp_com が nil でなくて 配列が空でもない
- if sp_com != nil and not sp_com.empty?
- return true
- else
- return false
- end
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンド「集中」の取得
- #--------------------------------------------------------------------------
- def syuutyuu
- sp_com = self.note.scan(/<集中>/)
- sp_com = sp_com.flatten
- sp_com = sp_com[0].to_s
- # sp_com が nil でなくて 配列が空でもない
- if sp_com != nil and not sp_com.empty?
- return true
- else
- return false
- end
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンド「直撃」の取得
- #--------------------------------------------------------------------------
- def tyokugeki
- sp_com = self.note.scan(/<直撃>/)
- sp_com = sp_com.flatten
- sp_com = sp_com[0].to_s
- # sp_com が nil でなくて 配列が空でもない
- if sp_com != nil and not sp_com.empty?
- return true
- else
- return false
- end
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンド「不屈」の取得
- #--------------------------------------------------------------------------
- def hukutu
- sp_com = self.note.scan(/<不屈>/)
- sp_com = sp_com.flatten
- sp_com = sp_com[0].to_s
- # sp_com が nil でなくて 配列が空でもない
- if sp_com != nil and not sp_com.empty?
- return true
- else
- return false
- end
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンド「かく乱」の取得
- #--------------------------------------------------------------------------
- def kakuran
- sp_com = self.note.scan(/<かく乱>/)
- sp_com = sp_com.flatten
- sp_com = sp_com[0].to_s
- # sp_com が nil でなくて 配列が空でもない
- if sp_com != nil and not sp_com.empty?
- return true
- else
- return false
- end
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンド「再動」の取得
- #--------------------------------------------------------------------------
- def saidou
- sp_com = self.note.scan(/<再動>/)
- sp_com = sp_com.flatten
- sp_com = sp_com[0].to_s
- # sp_com が nil でなくて 配列が空でもない
- if sp_com != nil and not sp_com.empty?
- return true
- else
- return false
- end
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンド「奇跡」の取得
- #--------------------------------------------------------------------------
- def kiseki
- sp_com = self.note.scan(/<奇跡>/)
- sp_com = sp_com.flatten
- sp_com = sp_com[0].to_s
- # sp_com が nil でなくて 配列が空でもない
- if sp_com != nil and not sp_com.empty?
- return true
- else
- return false
- end
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンドの取得(ハッシュで返す。key="精神コマンド名"value=有効無効)
- # メモ欄に指定文字を確認し、リストを返す。
- #--------------------------------------------------------------------------
- def sp_command
- sp_com = {}
- sp_com["nekketu"] = nekketu
- sp_com["tamasii"] = tamasii
- sp_com["hirameki"] = hirameki
- sp_com["hittyuu"] = hittyuu
- sp_com["teppeki"] = teppeki
- sp_com["syuutyuu"] = syuutyuu
- sp_com["tyokugeki"] = tyokugeki
- sp_com["hukutu"] = hukutu
- sp_com["kakuran"] = kakuran
- sp_com["saidou"] = saidou
- sp_com["kiseki"] = kiseki
- return sp_com
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンドかどうかの取得
- #--------------------------------------------------------------------------
- def sp_command?
- for sp in sp_command.values
- next if sp == false
- return true
- end
- return false
- end
- end
- end
- #==============================================================================
- # ■ Game_Battler
- #------------------------------------------------------------------------------
- # バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
- # スのスーパークラスとして使用されます。
- #==============================================================================
- class Game_Battler
-
- #--------------------------------------------------------------------------
- # ● 自分のターン設定&取得
- #--------------------------------------------------------------------------
- def my_turn
- @my_turn = 0 if @my_turn == nil
- return @my_turn
- end
- def my_turn=(value)
- @my_turn = value
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンドの初期設定
- #--------------------------------------------------------------------------
- def initialize_sp_command_list(forcing=false)
- return if @sp_command != nil and not forcing
- # 付与されているかどうかの管理
- sp_com = {}
- sp_com["hirameki"] = false
- sp_com["hittyuu"] = false
- sp_com["teppeki"] = false
- sp_com["syuutyuu"] = false
- sp_com["tyokugeki"] = false
- sp_com["hukutu"] = false
- sp_com["kakuran"] = false
- sp_com["saidou"] = false
- sp_com["kiseki"] = false
- @sp_command = sp_com if @sp_command == nil
-
- # 付与されたものの経過管理
- sp_com = {}
- sp_com["hirameki"] = false
- sp_com["hittyuu"] = nil
- sp_com["teppeki"] = nil
- sp_com["syuutyuu"] = nil
- sp_com["tyokugeki"] = false
- sp_com["hukutu"] = false
- sp_com["kakuran"] = nil
- sp_com["saidou"] = false
- sp_com["kiseki"] = false
- @manage_sp_com = sp_com if @manage_sp_com == nil
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンドの設定
- # obj : スキルまたはアイテム (通常攻撃の場合は nil)
- #--------------------------------------------------------------------------
- def set_sp_command_list(obj)
- # 初期設定
- initialize_sp_command_list
-
- # 精神付与管理
- if obj.sp_command["nekketu"]
- # 既に魂が掛かっていれば熱血は有効にしない。
- @sp_command["nekketu"] = true unless @sp_command["tamasii"]
- end
- if obj.sp_command["tamasii"]
- # 魂と熱血の重複はしない。
- @sp_command["tamasii"] = true
- @sp_command["nekketu"] = false
- end
- @sp_command["hirameki"] = true if obj.sp_command["hirameki"]
- @sp_command["hittyuu"] = true if obj.sp_command["hittyuu"]
- @sp_command["teppeki"] = true if obj.sp_command["teppeki"]
- @sp_command["syuutyuu"] = true if obj.sp_command["syuutyuu"]
- @sp_command["tyokugeki"] = true if obj.sp_command["tyokugeki"]
- @sp_command["hukutu"] = true if obj.sp_command["hukutu"]
- @sp_command["kakuran"] = true if obj.sp_command["kakuran"]
- @sp_command["saidou"] = true if obj.sp_command["saidou"]
- @sp_command["kiseki"] = true if obj.sp_command["kiseki"]
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンドの取得
- #--------------------------------------------------------------------------
- def get_sp_command_list
- initialize_sp_command_list
- return @sp_command
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンドの経過ターンなど管理設定
- #--------------------------------------------------------------------------
- def manage_sp_command(turn,user)
- @manage_sp_com = {} if @manage_sp_com == nil
- unless get_sp_command_list["tamasii"]
- # 既に魂が掛かっていれば熱血は有効にしない。
- @manage_sp_com["nekketu"] = get_sp_command_list["nekketu"] ? true : false
- get_sp_command_list["nekketu"] = false unless @manage_sp_com["nekketu"]
- end
-
- if get_sp_command_list["tamasii"]
- # 魂と熱血の重複はしない。
- @manage_sp_com["tamasii"] = get_sp_command_list["tamasii"] ? true : false
- @manage_sp_com["nekketu"] = false
- get_sp_command_list["tamasii"] = false unless @manage_sp_com["tamasii"]
- end
-
- @manage_sp_com["hirameki"] = get_sp_command_list["hirameki"] ? true : false
- get_sp_command_list["hirameki"] = false unless @manage_sp_com["hirameki"]
-
- #unless turn == -1
- # 必中・鉄壁・集中は次の自分のターンまで
- if get_sp_command_list["hittyuu"]
- if @manage_sp_com["hittyuu"] == nil #< turn
- if self == user
- @manage_sp_com["hittyuu"] = turn + 2
- else
- @manage_sp_com["hittyuu"] = turn + 1
- end
- end
- end
- if @manage_sp_com["hittyuu"] != nil and turn > @manage_sp_com["hittyuu"]
- get_sp_command_list["hittyuu"] = false
- @manage_sp_com["hittyuu"] = nil
- end
-
- if get_sp_command_list["teppeki"]
- if @manage_sp_com["teppeki"] == nil #< turn
- if self == user
- @manage_sp_com["teppeki"] = turn + 2
- else
- @manage_sp_com["teppeki"] = turn + 1
- end
- end
- end
- if @manage_sp_com["teppeki"] != nil and turn > @manage_sp_com["teppeki"]
- get_sp_command_list["teppeki"] = false
- @manage_sp_com["teppeki"] = nil
- end
-
- if get_sp_command_list["syuutyuu"]
- if @manage_sp_com["syuutyuu"] == nil #< turn
- if self == user
- @manage_sp_com["syuutyuu"] = turn + 2
- else
- @manage_sp_com["syuutyuu"] = turn + 1
- end
- end
- end
- if @manage_sp_com["syuutyuu"] != nil and turn > @manage_sp_com["syuutyuu"]
- get_sp_command_list["syuutyuu"] = false
- @manage_sp_com["syuutyuu"] = nil
- end
-
- if get_sp_command_list["kakuran"]
- if @manage_sp_com["kakuran"] == nil #< turn
- if self == user
- @manage_sp_com["kakuran"] = turn + 2
- else
- @manage_sp_com["kakuran"] = turn + 1
- end
- end
- end
- if @manage_sp_com["kakuran"] != nil and turn > @manage_sp_com["kakuran"]
- get_sp_command_list["kakuran"] = false
- @manage_sp_com["kakuran"] = nil
- end
-
- #end#unless turn == 0
-
- @manage_sp_com["tyokugeki"] = get_sp_command_list["tyokugeki"] ? true : false
- get_sp_command_list["tyokugeki"] = false unless @manage_sp_com["tyokugeki"]
-
- @manage_sp_com["hukutu"] = get_sp_command_list["hukutu"] ? true : false
- get_sp_command_list["hukutu"] = false unless @manage_sp_com["hukutu"]
-
- @manage_sp_com["saidou"] = get_sp_command_list["saidou"] ? true : false
- get_sp_command_list["saidou"] = false unless @manage_sp_com["saidou"]
-
- @manage_sp_com["kiseki"] = get_sp_command_list["kiseki"] ? true : false
- get_sp_command_list["kiseki"] = false unless @manage_sp_com["kiseki"]
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンドの経過ターンなど管理取得
- #--------------------------------------------------------------------------
- def manage_sp_command?
- @manage_sp_com = {} if @manage_sp_com == nil
- return nil if @manage_sp_com == {}
- return @manage_sp_com
- end
- #--------------------------------------------------------------------------
- # ● 最終命中率の計算
- # user : 攻撃者、スキルまたはアイテムの使用者
- # obj : スキルまたはアイテム (通常攻撃の場合は nil)
- #--------------------------------------------------------------------------
- alias ed_spirit_command_calc_hit calc_hit
- def calc_hit(user, obj = nil)
- hit = ed_spirit_command_calc_hit(user, obj)
-
- hit /= 2 if user.get_sp_command_list["kakuran"]
- if user.get_sp_command_list["hittyuu"]
- unless get_sp_command_list["hirameki"]
- hit += 1000
- if obj != nil and not obj.for_opponent?
- hit -= 1000
- end
- end
- elsif user.get_sp_command_list["syuutyuu"]
- unless get_sp_command_list["hirameki"]
- hit += 30
- hit -= 30 if obj != nil and not obj.for_opponent?
- end
- end
- return hit
- end
- #--------------------------------------------------------------------------
- # ● 最終回避率の計算
- # user : 攻撃者、スキルまたはアイテムの使用者
- # obj : スキルまたはアイテム (通常攻撃の場合は nil)
- #--------------------------------------------------------------------------
- alias ed_spirit_command_calc_eva calc_eva
- def calc_eva(user, obj = nil)
- eva = ed_spirit_command_calc_eva(user, obj)
- @effect_test = false unless $ed_rgss2["ed_damage_hit_time"]
- if get_sp_command_list["hirameki"]
- # 閃きが掛かっていて、スキルが敵対象の場合。
- eva += 2000
- if obj != nil and not obj.for_opponent?
- eva -= 2000
- else
- get_sp_command_list["hirameki"] = false unless @effect_test
- end
- elsif get_sp_command_list["syuutyuu"]
- eva += 30
- eva -= 30 if obj != nil and not obj.for_opponent?
- end
- if user.get_sp_command_list["hittyuu"] and not get_sp_command_list["hirameki"]
- # 必中が掛かっている場合。閃きが
- eva = 0
- end
- return eva
- end
- #--------------------------------------------------------------------------
- # ● 攻撃計算後の精神コマンドダメージ補正
- #--------------------------------------------------------------------------
- def sp_com_damage_revision(attacker)
- # ダメージが0以下・・回復なら適用しない。
- return if @hp_damage <= 0
- # バトルレイアウト変更:extension「○○effect_test」のメソッド対応
- @effect_test = false unless $ed_rgss2["ed_battle_extension"]
- if attacker.get_sp_command_list["nekketu"]
- @hp_damage *= 2
- attacker.get_sp_command_list["nekketu"] = false unless @effect_test
- elsif attacker.get_sp_command_list["tamasii"]
- @hp_damage *= 3
- attacker.get_sp_command_list["tamasii"] = false unless @effect_test
- elsif get_sp_command_list["hukutu"]
- @hp_damage = 10
- get_sp_command_list["hukutu"] = false unless @effect_test
- elsif get_sp_command_list["teppeki"]
- @hp_damage /= 4
- end
- end
- #--------------------------------------------------------------------------
- # ● 吸収効果の計算
- # user : スキルまたはアイテムの使用者
- # obj : スキルまたはアイテム
- # 呼び出し前に @hp_damage と @mp_damage が計算されていること。
- #--------------------------------------------------------------------------
- alias ed_spirit_command_make_obj_absorb_effect make_obj_absorb_effect
- def make_obj_absorb_effect(user, obj)
- ed_spirit_command_make_obj_absorb_effect(user, obj)
- if @tyokugeki
- # 直撃なら吸収を無効にする
- @absorbed = false
- end
- end
- #--------------------------------------------------------------------------
- # ● 属性の最大修正値の取得
- # element_set : 属性
- # 与えられた属性の中で最も有効な修正値を返す
- #--------------------------------------------------------------------------
- alias ed_spirit_command_elements_max_rate elements_max_rate
- def elements_max_rate(element_set)
- if @tyokugeki
- # 直撃なら属性補正を無効にして無属性攻撃とする。
- return 100
- else
- ed_spirit_command_elements_max_rate(element_set)
- end
- end
- #--------------------------------------------------------------------------
- # ● 通常攻撃によるダメージ計算
- # attacker : 攻撃者
- # 結果は @hp_damage に代入する。
- #--------------------------------------------------------------------------
- alias ed_spirit_command_make_attack_damage_value make_attack_damage_value
- def make_attack_damage_value(attacker)
- # バトルレイアウト変更:extension「○○effect_test」のメソッド対応
- @effect_test = false unless $ed_rgss2["ed_battle_extension"]
-
- if attacker.get_sp_command_list["tyokugeki"]
- # 直撃なら属性補正を無効にして無属性攻撃とする。
- @tyokugeki = true
- attacker.get_sp_command_list["tyokugeki"] = false unless @effect_test
- manage_sp_command(-1,attacker) unless @effect_test
- else
- @tyokugeki = false
- end
- ed_spirit_command_make_attack_damage_value(attacker)
- # ダメージ補正
- sp_com_damage_revision(attacker)
- # 精神コマンド管理
- manage_sp_command(-1,attacker) unless @effect_test
- end
- #--------------------------------------------------------------------------
- # ● スキルまたはアイテムによるダメージ計算
- # user : スキルまたはアイテムの使用者
- # obj : スキルまたはアイテム
- # 結果は @hp_damage または @mp_damage に代入する。
- #--------------------------------------------------------------------------
- alias ed_spirit_command_make_obj_damage_value make_obj_damage_value
- def make_obj_damage_value(user, obj)
- # 精神コマンドの取得
- sp = get_sp_command_list
- # バトルレイアウト変更:extension「○○effect_test」のメソッド対応
- @effect_test = false unless $ed_rgss2["ed_battle_extension"]
-
- if user.get_sp_command_list["tyokugeki"]
- # 直撃なら属性補正を無効にして無属性攻撃とする。
- @tyokugeki = true
- user.get_sp_command_list["tyokugeki"] = false unless @effect_test
- manage_sp_command(-1,user) unless @effect_test
- else
- @tyokugeki = false
- end
- ed_spirit_command_make_obj_damage_value(user, obj)
- # ダメージ補正
- sp_com_damage_revision(user)
- # 精神コマンド管理
- #manage_sp_command = -1
-
- # 精神コマンドのセッティング
- set_sp_command_list(obj) unless @effect_test
-
- # ターン経過ものは付与後に自分の経過ターンを記録。
- manage_sp_command(self.my_turn,user) unless @effect_test
- end
- end
- #==============================================================================
- # ■ Scene_Battle
- #------------------------------------------------------------------------------
- # バトル画面の処理を行うクラスです。
- #==============================================================================
- class Scene_Battle < Scene_Base
-
- #--------------------------------------------------------------------------
- # ● 終了処理
- #--------------------------------------------------------------------------
- alias ed_spirit_command_terminate terminate
- def terminate
- battler_sp_initialize(true)
- ed_spirit_command_terminate
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンド初期化
- #--------------------------------------------------------------------------
- def battler_sp_initialize(forcing=false)
- for battler in $game_troop.members
- battler.initialize_sp_command_list(forcing)
- battler.my_turn = 0
- end
- for battler in $game_party.members
- battler.initialize_sp_command_list(forcing)
- battler.my_turn = 0
- end
- end
- #--------------------------------------------------------------------------
- # ● 精神コマンド重複のチェック
- #--------------------------------------------------------------------------
- def overlap_sp_skill(battler,skill)
- return false unless skill.sp_command?
- list = battler.get_sp_command_list
- ch = {}
- for key in list.keys
- return true if skill.sp_command[key] == true and list[key] == true
- end
- return false
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- alias ed_spirit_command_update update
- def update
- unless @active_battler == nil
- skill = @active_battler.action.skill? ? @active_battler.action.skill : nil
- unless skill == nil
- if skill.sp_command?
- if @active_battler.is_a?(Game_Enemy)
- # 敵の場合
- if skill.id != @old_sp_skill and
- not overlap_sp_skill(@active_battler,skill)
-
- @action_battlers.unshift(@active_battler)
- @sp_command_effect = true
- else
- @active_battler.make_action
- if skill.sp_command? and overlap_sp_skill(@active_battler,skill)
- # 再度行動作成し同じなら待機する。
- @active_battler.action.kind = 0
- @active_battler.action.kind = 3
- @old_sp_skill = 0
- end
- @sp_command_effect = nil
- return
- end
- end
- end
- # 同じでないなら実行。
- unless @sp_command_effect == nil
- super
- update_basic(true)
- update_info_viewport # 情報表示ビューポートを更新
- process_action
- # 簡易汎用ATB導入時は下記で行動実行
- set_next_active_battler if $ed_rgss2["ed_active_time_battle"]
- @sp_command_effect = nil
- @old_sp_skill = skill.id
- if @active_battler.is_a?(Game_Enemy)
- # 敵の場合は再度実行できるように
- @active_battler.make_action
- end
- return
- end
- end
- @old_sp_skill = 0
- end
-
- ed_spirit_command_update
- end
- #--------------------------------------------------------------------------
- # ● 次のアクターのコマンド入力へ
- #--------------------------------------------------------------------------
- alias ed_spirit_command_next_actor next_actor
- def next_actor
- return unless @sp_command_effect == nil
- ed_spirit_command_next_actor
- end
- #--------------------------------------------------------------------------
- # ● スキル選択の終了
- #--------------------------------------------------------------------------
- alias ed_spirit_command_end_skill_selection end_skill_selection
- def end_skill_selection
- skill = @active_battler.action.skill? ? @active_battler.action.skill : nil
- unless skill == nil
- if skill.sp_command? and Input.trigger?(Input::C)
- # スキルが精神コマンドの場合。
- @action_battlers.unshift(@active_battler)
- @sp_command_effect = true
- end
- end
- ed_spirit_command_end_skill_selection
- end
- #--------------------------------------------------------------------------
- # ● 戦闘開始の処理
- #--------------------------------------------------------------------------
- alias ed_spirit_command_process_battle_start process_battle_start
- def process_battle_start
- @old_sp_skill = nil
- battler_sp_initialize
- ed_spirit_command_process_battle_start
- end
- #--------------------------------------------------------------------------
- # ● 行動順序作成
- #--------------------------------------------------------------------------
- alias ed_spirit_command_make_action_orders make_action_orders
- def make_action_orders
- if $ed_rgss2["ed_active_time_battle"]
- frame = @frames[0] - @frames[1]
- for battler in $game_troop.all_members?
- next if battler == nil
- if battler.get_sp_command_list["saidou"]
- @action_battlers.unshift(@active_battler)
- battler.get_sp_command_list["saidou"] = false
- end
- if battler.action.magic_spell_ok?
- if battler.add_action_battler_list == false
- @action_battlers.unshift battler
- battler.add_action_battler_list = true
- end
- elsif battler.action.speed >= COUNT_MAX
- if battler.add_action_battler_list == false
- @action_battlers.push battler
- battler.add_action_battler_list = true
- end
- end
- end
- set_next_active_battler unless chack_battler
- else
- ed_spirit_command_make_action_orders
- end
- end
- #--------------------------------------------------------------------------
- # ● 次に行動するべきバトラーの設定
- # イベントコマンドで [戦闘行動の強制] が行われているときはそのバトラー
- # を設定して、リストから削除する。それ以外はリストの先頭から取得する。
- # 現在パーティにいないアクターを取得した場合 (index が nil, バトルイベ
- # ントでの離脱直後などに発生) は、それをスキップする。
- #--------------------------------------------------------------------------
- alias ed_spirit_command_set_next_active_battler set_next_active_battler
- def set_next_active_battler
- if $ed_rgss2["ed_active_time_battle"]
- ed_spirit_command_set_next_active_battler
- unless @active_battler == nil
- # ゲージがMAXでないなら中断
- return unless @active_battler.action.speed >= COUNT_MAX
- return if @sp_command_effect
- # 行動者のターン設定
- turn = @active_battler.my_turn
- @active_battler.my_turn = turn + 1
- # 精神コマンドの経過管理設定
- @active_battler.manage_sp_command(turn + 1,@active_battler)
- end
- return
- end
-
- unless @active_battler == nil
- if @active_battler.get_sp_command_list["saidou"]
- if @active_battler.action.skill?
- unless @active_battler.action.skill.saidou
- @action_battlers.unshift(@active_battler)
- @active_battler.get_sp_command_list["saidou"] = false
- end
- else
- @action_battlers.unshift(@active_battler)
- @active_battler.get_sp_command_list["saidou"] = false
- end
- end
- end
- loop do
-
- if $game_troop.forcing_battler != nil
- @active_battler = $game_troop.forcing_battler
- @action_battlers.delete(@active_battler)
- $game_troop.forcing_battler = nil
- else
- @active_battler = @action_battlers.shift
- end
- return if @active_battler == nil
- return if @sp_command_effect
- # 行動者のターン設定
- turn = @active_battler.my_turn
- @active_battler.my_turn = turn + 1
- # 精神コマンドの経過管理設定
- @active_battler.manage_sp_command(turn + 1,@active_battler)
- return if @active_battler.index != nil
- end
- end
- end
复制代码
‘‘──亂堂和樹于2012-4-13 12:51补充以下内容
喔喔~這問題改變一下~我發現自己改有很腳本衝突的問題Orz...
有誰能夠幫我改成~這【精神指令】腳本
搭配著職業類別~每個角色分別學到不同的特殊技能
但是特殊技能~跟魔法是分開的技能欄位~
說明白點...
魔法=系統默認技能
特殊技能=另一個窗口,變成只辨認【職業別】而學習技能
兩者不會出現在同一個【技能視窗】的喔~是分開獨立的~
因為想做~
回到菜單後~選取查看人物能力時~能夠出現另一個以學習精神表窗口
還有戰鬥選單也能分開來=w="
懇求各位前輩了~
一點點網路資訊也好~推薦我去看~
我會努力學習的~謝謝
’’ |
|