Project1
标题:
請問攻擊指令是否可以自訂?
[打印本页]
作者:
亂堂和樹
时间:
2012-4-10 14:10
标题:
請問攻擊指令是否可以自訂?
本帖最后由 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="
懇求各位前輩了~
一點點網路資訊也好~推薦我去看~
我會努力學習的~謝謝
’’ dsu_plus_rewardpost_czw
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1