RPGfanatik
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

RPGfanatik

Forum de RPG , RPG Maker , informatique , mangas , sagas mp3 et blabla ,
 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment :
ETB Pokémon Fable Nébuleuse : où ...
Voir le deal

 

 Système tour par tour de FFX [Testé]

Aller en bas 
5 participants
AuteurMessage
Lord Ephraim
Grand Lord
Grand Lord
Lord Ephraim


Masculin Nombre de messages : 429
Age : 34
Localisation : Dans les ruines du royaume de Renais .
Nbre de jeux de RPG que vous avez fini : 31
Date d'inscription : 18/06/2006

Fiche RPGiste
PR (Points RPGiste):
Système tour par tour de FFX [Testé] Left_bar_bleue0/500Système tour par tour de FFX [Testé] Empty_bar_bleue  (0/500)

Système tour par tour de FFX [Testé] Empty
MessageSujet: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitimeLun 19 Juin - 0:14

Un script qui permet de faire le système de FFX
On n'arrive pas a fuir ( j'ai meme essayé je suis pas arrivé )
Faites un scriptau dessus de main :
Code:
#########################################################################
# FF10にあった、カウントタイムバトル的なモノです。
#
# ☆良くあるATB(ゲージがたまると行動可能になるやつね)との違い
# ・行動順を割り出す計算式が変わっています。
# ATBでは毎フレームすばやさに応じた値が足されていき、
# 行動を終了したら規定の値(ほとんどの方が0だと思いますが)になります。
# それに対して、この似非CTBシステム(以下CTB)では、
# 全員のゲージが同じスピードで上昇し、
# 行動を終了したあと、素早さに応じた値を減算します。
# このため、行動順がATBと微妙に変化するかと思われます。
#
# ・行動順の表示が名前の羅列になってます。
# この名前は、ゲージのように動くことはなく、
# 現在の行動者含めて五人先の人までを名前で表示しています。
# なお、行動先読みには「全ての行動が物理攻撃だった時」を前提にしてます。
# そのため、スキルやアイテムなどを使ってしまうと、その分微妙にズレます。
#
# ☆制約
# ・パーティーが三人
# 行動順を表示する部分どこにあっても邪魔なので、
# 結局パーティー表示部分の左端を削りました。
#
# ・「何もしない」の動作が不審
# 何の前触れもなくスキップしてしまうように設定していますので、
# 見かけ上は無視されたように見えてしまいます。
#
# ☆特殊操作
# ・パーティーコマンド呼び出し
# アクターのコマンドが表示されている時にXボタンを押してください。
# パーティーコマンドが呼び出されます。
# 戦闘再開はそのまま、戦闘再開。
# 行動順表示は、50人先まで行動順を表示します。
# あまり使えないかもしれませんが。
# 一応、L、Rによるページ送り機能などもつけてます。
# 逃走は、「全員のCPを一定値減算したのち、逃走する」という形式にしてます。
#
# ☆スキルについて
# 「スキル名,ディレイ値,詠唱時間」とスキル名を書き換えてください。
# ディレイ値は「その行動が終了した後に減算するCPの基準となる値」です。
# たとえば通常攻撃はこれがCP_COST_ATTACKで定義されています。
# 何も書いていない場合の値も定義可能です。
# 詠唱時間は「そのスキルが発動するまでの時間」です。
# 詠唱中はステート「詠唱」が付加されます。
# 攻撃の場合はもちろんこの詠唱時間は0ですね。
# なので、こんな感じで↓
# 「クイックカット,120,0」
# これでCP_COST_ATTACKを120以上にしておけば、
# 通常攻撃よりも早く次の出番がきますね。
# 「パワフルスイング,100,120」
# これだとスキルを選択してから発動するまでのタイムラグが120ありますね。
#########################################################################

#==============================================================================
# ■ 初期定義
#==============================================================================
module RPG
class Skill
CP_COST_DELAY = 300 # スキルで値を何も書いていない場合のディレイ値
CP_COST_SPELL = 300 # スキルで値を何も書いていない場合の詠唱時間
end
end

module CTB_Define
# 詠唱ステートのID
SPELL_STATE_ID = 300
# 消費CP
# 消費CPの算出方法は「消費CP(ここで定義)×すばやさ平均÷すばやさ」です。
CP_COST_ITEM = 100 # アイテムを使用したときの減算値
CP_COST_ATTACK = 200 # 攻撃したときの減算値
CP_COST_GUARD = 150 # 防御したときの減算値
CP_COST_NOTHING = 50 # なにもしないときの減算値
CP_COST_ESCAPE = 200 # 「逃げる」時*全員の*の減算値
CP_COST_SKILL = [0,100,200,300,0]
end

#==============================================================================
# ■ RPG::Skill
#==============================================================================
module RPG
class Skill
def name
name = @name.split(/,/)[0]
return name != nil ? name : ''
end
def delay
name = @name.split(/,/)[1].to_i
return name != nil ? name : CP_COST_DELAY
end
def spell
name = @name.split(/,/)[2].to_i
return name != nil ? name : CP_COST_SPELL
end
end
end

#==============================================================================
# ■ Window_CTB
#------------------------------------------------------------------------------
# キャラの行動順を表示するウィンドウです。
#==============================================================================
class Window_CTB < Window_Base
# 詠唱ステートのID読み込み
include CTB_Define
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(avg)
super(0, 320, 160, 160)
self.contents = Bitmap.new(self.width - 32, self.height - 32)
# 平均AGI算出
@agi_avg = avg
# キャラ名列
@names = []
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
# 再描画開始
self.contents.clear
self.contents.font.name = "Tahoma"
self.contents.font.size = 20
self.contents.font.color = system_color
self.contents.font.size = 16
self.contents.draw_text(0, 0, 100, 17, "Turn Ratio")
# キャラ名列
@names = []
# 攻撃コマンド後の全員のCPを先読み
get_cps
# cpの値でソート
@names.sort!{|a,b| b[0] <=> a[0] }
h = 0
self.contents.font.size = 17
for i in 0...6
@nam = @names[i]
if @nam == nil
break
end
x = 4
y = 18 * h + 17
if @nam[0] >= 500 # 500より大きければ白文字。
if @nam[2] == true
self.contents.font.color = Color.new(230, 255, 255, 255)
else
self.contents.font.name = "Tahoma"
self.contents.font.size = 12
self.contents.font.color = normal_color
end
else
if @nam[2] == true
self.contents.font.color = Color.new(190, 225, 225, 255)
else
self.contents.font.color = disabled_color
end
end
self.contents.draw_text(x, y, 128, 18, @nam[1])
h += 1
end
end
#--------------------------------------------------------------------------
# ● 行動後のCPの取得
#--------------------------------------------------------------------------
def get_cps
# メンバー全員の行動後のCPと名前を@namesに格納
i = 0
while @names.size < 15
for member in $game_party.actors + $game_troop.enemies
next if member.dead? or !member.exist?
cp = CP_COST_ATTACK * @agi_avg / member.agi # 攻撃時に減算するCP先読み
if i == 1 and member.current_action.kind == 1
skill = $data_skills[member.current_action.skill_id]
cp = CP_COST_SKILL[skill.id] * @agi_avg / member.agi
end
cp = member.cp - (cp * i)
if i == 0
spell = member.state?(SPELL_STATE_ID)
else
spell = false
end
@names.push([cp, member.name, spell])
end
i += 1
end
end
#--------------------------------------------------------------------------
# ● CTBウィンドウの中身が空かどうかを確認する
#--------------------------------------------------------------------------
def names_empty
if @names == []
return true
else
return false
end
end
end


Dernière édition par le Lun 26 Juin - 21:21, édité 1 fois
Revenir en haut Aller en bas
http://rpgfans-forum.actifforum.com
Lord Ephraim
Grand Lord
Grand Lord
Lord Ephraim


Masculin Nombre de messages : 429
Age : 34
Localisation : Dans les ruines du royaume de Renais .
Nbre de jeux de RPG que vous avez fini : 31
Date d'inscription : 18/06/2006

Fiche RPGiste
PR (Points RPGiste):
Système tour par tour de FFX [Testé] Left_bar_bleue0/500Système tour par tour de FFX [Testé] Empty_bar_bleue  (0/500)

Système tour par tour de FFX [Testé] Empty
MessageSujet: Re: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitimeLun 19 Juin - 0:15

Suite :
Code:
#==============================================================================
# ■ Window_CTB_All
#------------------------------------------------------------------------------
# キャラの行動順を表示するウィンドウの拡大版です。
#==============================================================================
class Window_CTB_All < Window_Base
# 詠唱ステートのID読み込み
include CTB_Define
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(avg)
super(0, 0, 160, 480)
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 12
# 平均AGI算出
@agi_avg = avg
# キャラ名列
@names = []
# 攻撃コマンド後の全員のCPを先読み
get_init_cps
# cpの値でソート
@names.sort!{|a,b| b[0] <=> a[0] }
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh(id)
# 再描画開始
self.contents.clear
self.contents.font.name = "Tahoma"
self.contents.font.size = 20
self.contents.font.color = system_color
self.contents.font.size = 18
self.contents.draw_text(0, 0, 100, 20, "Turn Ratio")
h = 0
self.contents.font.size = 19
for i in id-1...[id+18,50].min
@nam = @names[i]
if @nam == nil
break
end
x = 4
y = 22 * h + 20
if @nam[0] >= 500 # 500より大きければ白文字。
if @nam[2] == true
self.contents.font.color = Color.new(230, 255, 255, 255)
else
self.contents.font.color = normal_color
end
else
if @nam[2] == true
self.contents.font.color = Color.new(190, 225, 225, 255)
else
self.contents.font.color = disabled_color
end
end
self.contents.font.name = "Tahoma"
self.contents.font.size = $fontsize
self.contents.draw_text(x, y, 32, 22, (i+1).to_s)
self.contents.draw_text(x+32, y, 128, 22, @nam[1])
h += 1
end
end
#--------------------------------------------------------------------------
# ● 行動後のCPの取得
#--------------------------------------------------------------------------
def get_init_cps
# メンバー全員の行動後のCPと名前を@namesに格納
i = 0
while @names.size < 75
for member in $game_party.actors + $game_troop.enemies
next if member.dead? or !member.exist?
cp = CP_COST_ATTACK * @agi_avg / member.agi # 攻撃時に減算するCP先読み
if i == 1 and member.current_action.kind == 1
@skill = $data_skills[@active_battler.current_action.skill_id]
skill = $data_skills[member.current_action.skill_id]
cp = CP_COST_SKILL[skill.id] * @agi_avg / member.agi
end
cp = member.cp - (cp * i)
if i == 0
spell = member.state?(SPELL_STATE_ID)
else
spell = false
end
@names.push([cp, member.name, spell])
end
i += 1
end
end
#--------------------------------------------------------------------------
# ● CTBウィンドウの中身が空かどうかを確認する
#--------------------------------------------------------------------------
def names_full(id)
if @names[id] == nil
return false
end
return true
end
end
#==============================================================================
# ■ Window_PartyCommand(座標がおかしくなるので、全部再定義しちゃってます)
#==============================================================================
class Window_PartyCommand < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化(再定義)
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 160
# コマンド追加
@commands = ["Battle", "Escape"]
@item_max = 2
@column_max = 3
draw_item(0, normal_color)
draw_item(1, $game_temp.battle_can_escape ? normal_color : disabled_color)
self.active = false
self.visible = false
self.index = 0
end
#--------------------------------------------------------------------------
# ● 項目の描画(再定義)
# index : 項目番号
# color : 文字色
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
rect = Rect.new(80 + index * 160 + 4, 0, 128 - 10, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index], 1)
end
#--------------------------------------------------------------------------
# ● カーソルの矩形更新(再定義)
#--------------------------------------------------------------------------
def update_cursor_rect
self.cursor_rect.set(80 + index * 160, 0, 128, 32)
end
end
#==============================================================================
# ■ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化(再定義)(微妙に座標調整)
#--------------------------------------------------------------------------
def initialize
super(160, 320, 480, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@level_up_flags = [false, false, false, false]
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ(再定義)(微妙に座標調整)
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.name = "Tahoma"
self.contents.font.size = 19
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 115 + 9
draw_actor_name(actor, actor_x, 0)
draw_actor_hp(actor, actor_x, 31, 90)
draw_actor_sp(actor, actor_x, 65, 90)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor_x, 99, 120, 32, "Level Up!")
else
draw_actor_state(actor, actor_x, 99)
end
end
end
end

#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
# 詠唱ステートのID読み込み
include CTB_Define

attr_accessor :now_guarding # 現在防御中フラグ
attr_accessor :cp # 現在CP
#--------------------------------------------------------------------------
# ● コマンド入力可能判定
#--------------------------------------------------------------------------
alias ctb_sys_inputable? inputable?
def inputable?
bool = ctb_sys_inputable?
return false if state?(SPELL_STATE_ID)
return false if bool == false
return false if @cp < 500
return true
end
end

#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● セットアップ
#--------------------------------------------------------------------------
alias ctb_sys_setup setup
def setup(actor_id)
ctb_sys_setup(actor_id)
@cp = 0
@now_guarding = false
end
#--------------------------------------------------------------------------
# ● バトル画面 X 座標の取得(再定義)
#--------------------------------------------------------------------------
def screen_x
# パーティ内の並び順から X 座標を計算して返す
if self.index != nil
return self.index * 115 + 215
else
return 0
end
end
end

#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias ctb_sys_initialize initialize
def initialize(troop_id, member_index)
ctb_sys_initialize(troop_id, member_index)
@cp = 0
@now_guarding = false
end
end
Revenir en haut Aller en bas
http://rpgfans-forum.actifforum.com
Lord Ephraim
Grand Lord
Grand Lord
Lord Ephraim


Masculin Nombre de messages : 429
Age : 34
Localisation : Dans les ruines du royaume de Renais .
Nbre de jeux de RPG que vous avez fini : 31
Date d'inscription : 18/06/2006

Fiche RPGiste
PR (Points RPGiste):
Système tour par tour de FFX [Testé] Left_bar_bleue0/500Système tour par tour de FFX [Testé] Empty_bar_bleue  (0/500)

Système tour par tour de FFX [Testé] Empty
MessageSujet: Re: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitimeLun 19 Juin - 0:15

Suite :
Code:
#==============================================================================
# ■ Game_BattleAction
#==============================================================================
class Game_BattleAction
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :spell # 詠唱中か否か
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias ctb_sys_initialize initialize
def initialize
@spell = false # spellをfalseにする
ctb_sys_initialize
end

#--------------------------------------------------------------------------
# ● クリア
#--------------------------------------------------------------------------
alias ctb_sys_clear clear
def clear
# spell がtrueならば実行しない
return if @spell
ctb_sys_clear
end
end

#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
# 詠唱ステートのID読み込み
include CTB_Define

#--------------------------------------------------------------------------
# ● メイン処理 (再定義)
#--------------------------------------------------------------------------
def main
# 戦闘用の各種一時データを初期化
$game_temp.in_battle = true
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
# バトルイベント用インタプリタを初期化
$game_system.battle_interpreter.setup(nil, 0)
# トループを準備
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id)
# アクターコマンドウィンドウを作成
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.guard
s4 = $data_system.words.item
@actor_command_window = Window_Command.new(115, [s1, s2, s3, s4])
@actor_command_window.y = 160
@actor_command_window.back_opacity = 0
@actor_command_window.active = false
@actor_command_window.visible = false
# その他のウィンドウを作成
@party_command_window = Window_PartyCommand.new
@help_window = Window_Help.new
@help_window.back_opacity = 0
@help_window.visible = false
@status_window = Window_BattleStatus.new
@message_window = Window_Message.new

### ココから追加部分
# 全員のすばやさの平均を割り出す
@avg = read_avg
# CTB用Windowを作成
@ctb_window = Window_CTB.new(@avg)
# 全員の初期CPを代入
first_cp
### ココまで追加部分

# スプライトセットを作成
@spriteset = Spriteset_Battle.new
# ウェイトカウントを初期化
@wait_count = 0
# トランジション実行
if $data_system.battle_transition == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition)
end

# プレバトルフェーズ開始
start_phase1
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# マップをリフレッシュ
$game_map.refresh
# トランジション準備
Graphics.freeze
# ウィンドウを解放
@actor_command_window.dispose
@party_command_window.dispose
@help_window.dispose
@status_window.dispose
@message_window.dispose
### ココから追加部分
@ctb_window.dispose
if @skill_window != nil
@skill_window.dispose
end
### ココまで追加部分
if @skill_window != nil
@skill_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
# スプライトセットを解放
@spriteset.dispose
# タイトル画面に切り替え中の場合
if $scene.is_a?(Scene_Title)
# 画面をフェードアウト
Graphics.transition
Graphics.freeze
end
# 戦闘テストからゲームオーバー画面以外に切り替え中の場合
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
#--------------------------------------------------------------------------
# ● フレーム更新(再定義)
#--------------------------------------------------------------------------
def update
# バトルイベント実行中の場合
if $game_system.battle_interpreter.running?
# インタプリタを更新
$game_system.battle_interpreter.update
# アクションを強制されているバトラーが存在しない場合
if $game_temp.forcing_battler == nil
# バトルイベントの実行が終わった場合
unless $game_system.battle_interpreter.running?
# 戦闘継続の場合、バトルイベントのセットアップを再実行
unless judge
setup_battle_event
end
end
# アフターバトルフェーズでなければ
if @phase != 5
# ステータスウィンドウをリフレッシュ
@status_window.refresh
end
end
end
# システム (タイマー)、画面を更新
$game_system.update
$game_screen.update
# タイマーが 0 になった場合
if $game_system.timer_working and $game_system.timer == 0
# バトル中断
$game_temp.battle_abort = true
end

# ココから追加
# CP更新
if @phase != 4
cp_countup
end
@ctb_window.update
# CTB ウィンドウに名前が表示されていない場合(戦闘開始時)はrefresh
@ctb_window.refresh if @ctb_window.names_empty
# ココまで追加

# ウィンドウを更新
@help_window.update
@party_command_window.update
@actor_command_window.update
@status_window.update
@message_window.update
# スプライトセットを更新
@spriteset.update
# トランジション処理中の場合
if $game_temp.transition_processing
# トランジション処理中フラグをクリア
$game_temp.transition_processing = false
# トランジション実行
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
# メッセージウィンドウ表示中の場合
if $game_temp.message_window_showing
return
end
# エフェクト表示中の場合
if @spriteset.effect?
return
end
# ゲームオーバーの場合
if $game_temp.gameover
# ゲームオーバー画面に切り替え
$scene = Scene_Gameover.new
return
end
# タイトル画面に戻す場合
if $game_temp.to_title
# タイトル画面に切り替え
$scene = Scene_Title.new
return
end
# バトル中断の場合
if $game_temp.battle_abort
# バトル開始前の BGM に戻す
$game_system.bgm_play($game_temp.map_bgm)
# バトル終了
battle_end(1)
return
end
# ウェイト中の場合
if @wait_count > 0
# ウェイトカウントを減らす
@wait_count -= 1
return
end
# アクションを強制されているバトラーが存在せず、
# かつバトルイベントが実行中の場合
if $game_temp.forcing_battler == nil and
$game_system.battle_interpreter.running?
return
end
# フェーズによって分岐
case @phase
when 1 # プレバトルフェーズ
update_phase1
when 2 # パーティコマンドフェーズ
update_phase2
when 3 # アクターコマンドフェーズ
update_phase3
when 4 # メインフェーズ
update_phase4
when 5 # アフターバトルフェーズ
update_phase5
# ココから追加
when 6 # 全行動順確認フェーズ(追加部分)
update_ctb_all
end
end
Revenir en haut Aller en bas
http://rpgfans-forum.actifforum.com
Lord Ephraim
Grand Lord
Grand Lord
Lord Ephraim


Masculin Nombre de messages : 429
Age : 34
Localisation : Dans les ruines du royaume de Renais .
Nbre de jeux de RPG que vous avez fini : 31
Date d'inscription : 18/06/2006

Fiche RPGiste
PR (Points RPGiste):
Système tour par tour de FFX [Testé] Left_bar_bleue0/500Système tour par tour de FFX [Testé] Empty_bar_bleue  (0/500)

Système tour par tour de FFX [Testé] Empty
MessageSujet: Re: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitimeLun 19 Juin - 0:16

Suite :
Code:
#--------------------------------------------------------------------------
# ● パーティコマンドフェーズ開始(再定義)
#--------------------------------------------------------------------------
def start_phase2
# フェーズ 2 に移行
@phase = 2
# アクターを非選択状態に設定
@actor_index = -1
@active_battler = nil
# ココから変更
# アクターコマンドウィンドウを無効化
@actor_command_window.active = false
@actor_command_window.visible = false
# ココまで変更
# メインフェーズフラグをクリア
$game_temp.battle_main_phase = false
# パーティ全員のアクションをクリア
$game_party.clear_actions
# コマンド入力不可能な場合
unless $game_party.inputable?
# メインフェーズ開始
start_phase4
end
# ココから変更
# パーティーコマンドがアクティブならばパーティーコマンドフェーズへ
if @party_command_window.active != true
start_phase3
else
update_phase2
end
# ココまで変更
end
#--------------------------------------------------------------------------
# ● フレーム更新 (パーティコマンドフェーズ)(再定義)
#--------------------------------------------------------------------------
def update_phase2
# 全部変更してます
# C ボタンが押された場合
if Input.trigger?(Input::C)
# パーティコマンドウィンドウのカーソル位置で分岐
case @party_command_window.index
when 0 # 戦う
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクターコマンドフェーズ開始
start_phase3
#when 1 # CTBWindow2
# # 決定 SE を演奏
# $game_system.se_play($data_system.decision_se)
# # CTB表示開始
# start_phase2_CTB
when 1 # 逃げる
# 逃走可能ではない場合
if $game_temp.battle_can_escape == false
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# 逃走処理
update_phase2_escape
end
return
elsif Input.trigger?(Input::B)
# 決定 SE を演奏
$game_system.se_play($data_system.cancel_se)
# アクターコマンドフェーズ開始
start_phase3
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (パーティコマンドフェーズ : 逃げる)
#--------------------------------------------------------------------------
alias ctb_sys_update_phase2_escape update_phase2_escape
def update_phase2_escape
# CP消費 (全員)
for actor in $game_party.actors
if actor.exist?
actor.cp -= CP_COST_ESCAPE * @avg / actor.agi
end
end
battle_end(1)
end
#--------------------------------------------------------------------------
# ● アクターコマンドウィンドウのセットアップ
#--------------------------------------------------------------------------
alias ctb_sys_phase3_setup_command_window phase3_setup_command_window
def phase3_setup_command_window
ctb_sys_phase3_setup_command_window
# ガードフラグをfalseにする
@active_battler.now_guarding = false
# アクターコマンドウィンドウの位置を再設定(右へ160移動)
@actor_command_window.x = @actor_index * 105 + 160
end
#--------------------------------------------------------------------------
# ● フレーム更新 (アクターコマンドフェーズ : 基本コマンド)
#--------------------------------------------------------------------------
alias ctb_sys_update_phase3_basic_command update_phase3_basic_command
def update_phase3_basic_command
# X ボタンが押された場合
if Input.trigger?(Input::A)
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# パーティーコマンド呼び出し
@party_command_window.active = true
@party_command_window.visible = true
start_phase2
else
ctb_sys_update_phase3_basic_command
end
end
#--------------------------------------------------------------------------
# ● 行動順序作成 (再定義)
#--------------------------------------------------------------------------
def make_action_orders
# CP500以上のバトラーはpushしないようにした。
# 配列 @action_battlers を初期化
@action_battlers = []
# CP500以上のエネミーを配列 @action_battlers に追加
for enemy in $game_troop.enemies
if enemy.cp >= 500
@action_battlers.push(enemy)
end
end
# CP500以上のアクターを配列 @action_battlers に追加
for actor in $game_party.actors
if actor.cp >= 500
@action_battlers.push(actor)
end
end
# 全員のアクションスピードを決定
for battler in @action_battlers
battler.make_action_speed
end
# アクションスピードの大きい順に並び替え
@action_battlers.sort! {|a,b|
b.current_action.speed - a.current_action.speed }
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備)
#--------------------------------------------------------------------------
alias ctb_sys_update_phase4_step1 update_phase4_step1
def update_phase4_step1
# CTBリフレッシュ
@ctb_window.refresh
ctb_sys_update_phase4_step1
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)(再定義)
#--------------------------------------------------------------------------
def update_phase4_step2
# 強制アクションでなければ
unless @active_battler.current_action.forcing
# 制約が [敵を通常攻撃する] か [味方を通常攻撃する] の場合
if @active_battler.restriction == 2 or @active_battler.restriction == 3
# アクションに攻撃を設定
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
end
# 制約が [行動できない] の場合
if @active_battler.restriction == 4
# アクション強制対象のバトラーをクリア
$game_temp.forcing_battler = nil
if @active_battler.cp >= 500
# ステート自然解除
@active_battler.remove_states_auto
# CP消費 (行動できない場合は何もしない場合と同じ) ココ追加
@active_battler.cp -= CP_COST_NOTHING * @avg / @active_battler.agi
# cpをカウントアップ
cp_countup
end
# ステップ 1 に移行
@phase4_step = 1
return
end
end
# 対象バトラーをクリア
@target_battlers = []
# アクションの種別で分岐
case @active_battler.current_action.kind
when 0 # 基本
make_basic_action_result
when 1 # スキル
make_skill_action_result
when 2 # アイテム
ctb_sys_make_item_action_result
end
# ステップ 3 に移行
if @phase4_step == 2
@phase4_step = 3
end
end
#--------------------------------------------------------------------------
# ● 基本アクション 結果作成
#--------------------------------------------------------------------------
alias ctb_sys_make_basic_action_result make_basic_action_result
def make_basic_action_result
# 攻撃の場合
if @active_battler.current_action.basic == 0
@active_battler.cp -= CP_COST_ATTACK * @avg / @active_battler.agi
end
# 防御の場合
if @active_battler.current_action.basic == 1
# CP消費
@active_battler.cp -= CP_COST_GUARD * @avg / @active_battler.agi
end
# 敵の逃げるの場合
if @active_battler.is_a?(Game_Enemy) and
@active_battler.current_action.basic == 2
# CP消費
@active_battler.cp -= CP_COST_ESCAPE * @avg / @active_battler.agi
end
# 何もしないの場合
if @active_battler.current_action.basic == 3
# CP消費
@active_battler.cp -= CP_COST_NOTHING * @avg / @active_battler.agi
# アクション強制対象のバトラーをクリア
$game_temp.forcing_battler = nil
# cpをカウントアップ
cp_countup
# ステップ 1 に移行
@phase4_step = 1
return
end
# 呼び戻し
ctb_sys_make_basic_action_result
end
#--------------------------------------------------------------------------
# ● スキルアクション 結果作成(再定義)
#--------------------------------------------------------------------------
def make_skill_action_result
# スキルを取得
@skill = $data_skills[@active_battler.current_action.skill_id]
skill = $data_skills[@active_battler.current_action.skill_id]
# ステータスウィンドウをリフレッシュ
@status_window.refresh
@ctb_window.refresh
# ヘルプウィンドウにスキル名を表示
@help_window.set_text(@skill.name, 1)
# 詠唱中の場合
if @active_battler.state?(SPELL_STATE_ID)
# ステート「詠唱」を削除
@active_battler.remove_state(SPELL_STATE_ID)
@active_battler.current_action.spell = false
else
# SP 消費
@active_battler.sp -= @skill.sp_cost
# SkillのSpell値が1以上の場合
if @skill.spell > 0
# CP 消費 skill.spellの減算
@active_battler.cp -= CP_COST_SKILL[skill.id] * @avg / @active_battler.agi
# ステート「詠唱」を付
@active_battler.add_state(SPELL_STATE_ID)
@active_battler.current_action.spell = true
end
end
# ステート「詠唱」がなければ効果実行
unless @active_battler.state?(SPELL_STATE_ID)
# SP 消費を戻す。
@active_battler.sp += @skill.sp_cost
# 強制アクションでなければ
unless @active_battler.current_action.forcing
# SP 切れなどで使用できなくなった場合
unless @active_battler.skill_can_use?(@skill.id)
# アクション強制対象のバトラーをクリア
$game_temp.forcing_battler = nil
# ステップ 1 に移行
@phase4_step = 1
return
end
end
# SP をまた消費
@active_battler.sp -= @skill.sp_cost
# CP 消費 skill.delayの減算
@active_battler.cp -= CP_COST_SKILL[skill.id] * @avg / @active_battler.agi
# アニメーション ID を設定
@animation1_id = @skill.animation1_id
@animation2_id = @skill.animation2_id
# コモンイベント ID を設定
@common_event_id = @skill.common_event_id
# 対象側バトラーを設定
set_target_battlers(@skill.scope)
# スキルの効果を適用
for target in @target_battlers
target.skill_effect(@active_battler, @skill)
end
end
end
Revenir en haut Aller en bas
http://rpgfans-forum.actifforum.com
Lord Ephraim
Grand Lord
Grand Lord
Lord Ephraim


Masculin Nombre de messages : 429
Age : 34
Localisation : Dans les ruines du royaume de Renais .
Nbre de jeux de RPG que vous avez fini : 31
Date d'inscription : 18/06/2006

Fiche RPGiste
PR (Points RPGiste):
Système tour par tour de FFX [Testé] Left_bar_bleue0/500Système tour par tour de FFX [Testé] Empty_bar_bleue  (0/500)

Système tour par tour de FFX [Testé] Empty
MessageSujet: Re: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitimeLun 19 Juin - 0:17

Fin :
Code:
#--------------------------------------------------------------------------
# ● アイテムアクション 結果作成
#--------------------------------------------------------------------------
def ctb_sys_make_item_action_result
make_item_action_result
# CP 消費
@active_battler.cp -= CP_COST_ITEM * @avg / @active_battler.agi
end

#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
#--------------------------------------------------------------------------
alias ctb_sys_update_phase4_step6 update_phase4_step6
def update_phase4_step6
ctb_sys_update_phase4_step6
# cpをカウントアップ
cp_countup
end
#--------------------------------------------------------------------------
# ● すばやさ平均割り出し
#--------------------------------------------------------------------------
def read_avg
temp = 0
for member in $game_party.actors + $game_troop.enemies
temp += member.agi
end
temp /= $game_troop.enemies.size + $game_party.actors.size
return temp
end
#--------------------------------------------------------------------------
# ● 全員の初期CPを決定
#--------------------------------------------------------------------------
def first_cp
for member in $game_party.actors + $game_troop.enemies
member.cp = [[5 * (rand(20) + 60) * member.agi / @avg, 0].max, 490].min
end
end
#----------------------------------------------------------------------------
# ● 次の行動者までCPをカウントアップ
#----------------------------------------------------------------------------
def cp_countup
# 500 - cpの最小値を読み込む
cpmin = 500
edead = 0
for enemy in $game_troop.enemies
# 行動出来なければ無視
if enemy.dead? == true
edead +=1
enemy.cp = 0
next
end
cpmin = [cpmin, 500 - enemy.cp].min
end

# エネミーが全員死んでいればreturn
return if $game_troop.enemies.size == edead

for actor in $game_party.actors
# 行動出来なければ無視
if actor.dead? == true
actor.cp = 0
next
end
cpmin = [cpmin, 500 - actor.cp].min
end

# cpminが0ならばここで処理終了
return if cpmin <= 0

# 全員のCPをcpmin加算
for member in $game_party.actors + $game_troop.enemies
# 行動出来なければ無視
next if member.dead?
member.cp += cpmin
# cpが500より小さければ次へ
next if member.cp < 500
# ステート自然解除
member.remove_states_auto
# MP回復
plus = [member.maxsp * 5/ 100,1].max
member.sp = [member.sp + plus,member.maxsp].min
if member.slip_damage?
# スリップダメージ
member.slip_damage_effect
member.damage_pop = true
end
end
@status_window.refresh
end
#--------------------------------------------------------------------------
# ● フレーム更新 (パーティコマンドフェーズ : 行動順表示)
#--------------------------------------------------------------------------
def start_phase2_CTB
@party_command_window.active = false
@party_command_window.visible = false
# フェーズ 6 に移行
@phase = 6
@ctb_window.visible = false
@ctb_window_all = Window_CTB_All.new(@avg)
@ctb_window_all.update
@id = 1
@ctb_window_all.refresh(@id)
end
#--------------------------------------------------------------------------
# ● フレーム更新 (パーティコマンドフェーズ : 行動順アップデート)
#--------------------------------------------------------------------------
def update_ctb_all
# 下 ボタンが押された場合
if Input.trigger?(Input::DOWN) or Input.repeat?(Input::DOWN)
if @id < 50
@id +=1
else
@id = 1
end
@ctb_window_all.refresh(@id)
# 上 ボタンが押された場合
elsif Input.trigger?(Input::UP) or Input.repeat?(Input::UP)
if @id > 1
@id -= 1
else
@id = 50
end
@ctb_window_all.refresh(@id)
# L ボタンが押された場合
elsif Input.trigger?(Input::L)
@id = [@id-18,1].max
@ctb_window_all.refresh(@id)
# R ボタンが押された場合
elsif Input.trigger?(Input::R)
@id = [@id+18, 50].min
@ctb_window_all.refresh(@id)
# BかAが押されたら
elsif Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
@ctb_window.visible = true
@ctb_window_all.dispose
@party_command_window.active = true
@party_command_window.visible = true
start_phase2
end
end
end
Revenir en haut Aller en bas
http://rpgfans-forum.actifforum.com
darklink-_
Nv.9 : Illusioniste
Nv.9 : Illusioniste
darklink-_


Masculin Nombre de messages : 88
Age : 117
Localisation : Dans la brousse de la forêt Kokiri
Date d'inscription : 19/06/2006

Système tour par tour de FFX [Testé] Empty
MessageSujet: Re: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitimeLun 19 Juin - 20:25

Tu me le fera tester celui là quand je viendrai chez toi !
Revenir en haut Aller en bas
http://darklink-.blog.jeuxvideo.com
luck07
Nv.8 : Cavalier
Nv.8 : Cavalier
luck07


Masculin Nombre de messages : 56
Age : 31
Localisation : Poligné
Date d'inscription : 26/06/2006

Fiche RPGiste
PR (Points RPGiste):
Système tour par tour de FFX [Testé] Left_bar_bleue32/500Système tour par tour de FFX [Testé] Empty_bar_bleue  (32/500)

Système tour par tour de FFX [Testé] Empty
MessageSujet: Re: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitimeLun 26 Juin - 22:02

Le système de FFX ???? tu veux parler de la barre dans le 10 ????

C'est trop cool !! Mais il y a les changement de perso ???
Revenir en haut Aller en bas
http://luck07.blog.jeuxvideo.com
Lord Ephraim
Grand Lord
Grand Lord
Lord Ephraim


Masculin Nombre de messages : 429
Age : 34
Localisation : Dans les ruines du royaume de Renais .
Nbre de jeux de RPG que vous avez fini : 31
Date d'inscription : 18/06/2006

Fiche RPGiste
PR (Points RPGiste):
Système tour par tour de FFX [Testé] Left_bar_bleue0/500Système tour par tour de FFX [Testé] Empty_bar_bleue  (0/500)

Système tour par tour de FFX [Testé] Empty
MessageSujet: Re: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitimeLun 26 Juin - 22:22

Non , on vot pas la barre mais on voit une fenetre avec les noms a gauche .
Revenir en haut Aller en bas
http://rpgfans-forum.actifforum.com
luck07
Nv.8 : Cavalier
Nv.8 : Cavalier
luck07


Masculin Nombre de messages : 56
Age : 31
Localisation : Poligné
Date d'inscription : 26/06/2006

Fiche RPGiste
PR (Points RPGiste):
Système tour par tour de FFX [Testé] Left_bar_bleue32/500Système tour par tour de FFX [Testé] Empty_bar_bleue  (32/500)

Système tour par tour de FFX [Testé] Empty
MessageSujet: Re: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitimeLun 26 Juin - 23:02

tu peux mettre un screen stp ??? pour voir ce que sa fais ...???
Revenir en haut Aller en bas
http://luck07.blog.jeuxvideo.com
Axel8899
Nv.7 : Danseur
Nv.7 : Danseur
Axel8899


Masculin Nombre de messages : 48
Date d'inscription : 28/06/2006

Système tour par tour de FFX [Testé] Empty
MessageSujet: Re: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitimeJeu 29 Juin - 14:27

C'est vrai ce serai bien.
Revenir en haut Aller en bas
Lord Ephraim
Grand Lord
Grand Lord
Lord Ephraim


Masculin Nombre de messages : 429
Age : 34
Localisation : Dans les ruines du royaume de Renais .
Nbre de jeux de RPG que vous avez fini : 31
Date d'inscription : 18/06/2006

Fiche RPGiste
PR (Points RPGiste):
Système tour par tour de FFX [Testé] Left_bar_bleue0/500Système tour par tour de FFX [Testé] Empty_bar_bleue  (0/500)

Système tour par tour de FFX [Testé] Empty
MessageSujet: Re: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitimeJeu 29 Juin - 14:38

J'ai vu qu'il avait une erreur dans le script que j'avais pas vu , on peut pas utiliser les cométences .
Revenir en haut Aller en bas
http://rpgfans-forum.actifforum.com
Tifa
Nv.4 : Aventurier
Nv.4 : Aventurier
Tifa


Nombre de messages : 16
Age : 30
Date d'inscription : 11/12/2006

Fiche RPGiste
PR (Points RPGiste):
Système tour par tour de FFX [Testé] Left_bar_bleue0/0Système tour par tour de FFX [Testé] Empty_bar_bleue  (0/0)

Système tour par tour de FFX [Testé] Empty
MessageSujet: Re: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitimeDim 17 Déc - 19:20

T'as pas un screen, stp??
Revenir en haut Aller en bas
Lord Ephraim
Grand Lord
Grand Lord
Lord Ephraim


Masculin Nombre de messages : 429
Age : 34
Localisation : Dans les ruines du royaume de Renais .
Nbre de jeux de RPG que vous avez fini : 31
Date d'inscription : 18/06/2006

Fiche RPGiste
PR (Points RPGiste):
Système tour par tour de FFX [Testé] Left_bar_bleue0/500Système tour par tour de FFX [Testé] Empty_bar_bleue  (0/500)

Système tour par tour de FFX [Testé] Empty
MessageSujet: Re: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitimeSam 6 Jan - 19:40

Tifa j'avais dit qu'il y'a une erreur .

Sinon il y'a un meilleur script sur le topic XRXS v1.61 .
Revenir en haut Aller en bas
http://rpgfans-forum.actifforum.com
Contenu sponsorisé





Système tour par tour de FFX [Testé] Empty
MessageSujet: Re: Système tour par tour de FFX [Testé]   Système tour par tour de FFX [Testé] Icon_minitime

Revenir en haut Aller en bas
 
Système tour par tour de FFX [Testé]
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPGfanatik :: Autre :: Corbeille-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser