XP 스크립트

#==============================================================================
# □ カスタマイズポイント
#==============================================================================
class Scene_Battle
# ここに?果音を設定すると、アクタ?コマンドがポップしたときに?果音を再生
DATA_SYSTEM_COMMAND_UP_SE = ""
# 消費CP
CP_COST_BASIC_ACTIONS = 0 # 攻??防御?逃げる?何もしない時の共通消費値
CP_COST_SKILL_ACTION = 65535 # スキル
CP_COST_ITEM_ACTION = 65535 # アイテム
CP_COST_BASIC_ATTACK = 65535 # 攻?
CP_COST_BASIC_GUARD = 32768 # 防御
CP_COST_BASIC_NOTHING = 65535 # なにもしない
CP_COST_BASIC_ESCAPE = 65535 # 「逃げる」時
end
class Scene_Battle_CP
# ここの 1.0を?えることで↓スピ?ドを?更可能。(?値が高いほど早い)
# ただし小?点は使用すること。(1の場合も1.0とすること)#Thx - Jack-R
# 「バトルスピ?ド」
BATTLE_SPEED = 1.0
# 「??開始時初期CPの占有率に?する%」
START_CP_PERCENT = 100
end
#==============================================================================
# ■ Scene_Battle_CP
#==============================================================================
class Scene_Battle_CP
#--------------------------------------------------------------------------
# ● 公開インスタンス??
#--------------------------------------------------------------------------
attr_accessor :stop # CP加算ストップ
#----------------------------------------------------------------------------
# ● オブジェクトの初期化
#----------------------------------------------------------------------------
def initialize
@battlers = []
@cancel = false
@stop = false
@agi_total = 0
# 配列 count_battlers を初期化
count_battlers = []
# エネミ?を配列 count_battlers に追加
for enemy in $game_troop.enemies
count_battlers.push(enemy)
end
# アクタ?を配列 count_battlers に追加
for actor in $game_party.actors
count_battlers.push(actor)
end
for battler in count_battlers
@agi_total += battler.agi
end
for battler in count_battlers
battler.cp = [[65535 * START_CP_PERCENT * (rand(15) + 85) * 4 * battler.agi / @agi_total / 10000, 0].max, 65535].min
end
end
#----------------------------------------------------------------------------
# ● CPカウントアップ
#----------------------------------------------------------------------------
def update
# ストップされているならリタ?ン
return if @stop
#
for battler in $game_party.actors + $game_troop.enemies
# 行動出?なければ無視
if battler.dead? == true
battler.cp = 0
next
end
battler.cp = [[battler.cp + BATTLE_SPEED * 4096 * battler.agi / @agi_total, 0].max, 65535].min
end
end
#----------------------------------------------------------------------------
# ● CPカウントの開始
#----------------------------------------------------------------------------
def stop
@cancel = true
if @cp_thread != nil then
@cp_thread.join
@cp_thread = nil
end
end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
attr_accessor :now_guarding # 現在防御中フラグ
attr_accessor :cp # 現在CP
attr_accessor :slip_state_update_ban # スリップ?ステ?ト自動?理の禁止
#--------------------------------------------------------------------------
# ● コマンド入力可能判定
#--------------------------------------------------------------------------
alias xrxs_bp1_inputable? inputable?
def inputable?
bool = xrxs_bp1_inputable?
return (bool and (@cp >= 65535))
end
#--------------------------------------------------------------------------
# ● ステ?ト [スリップダメ?ジ] 判定
#--------------------------------------------------------------------------
alias xrxs_bp1_slip_damage? slip_damage?
def slip_damage?
return false if @slip_state_update_ban
return xrxs_bp1_slip_damage?
end
#--------------------------------------------------------------------------
# ● ステ?ト自然解除 (タ?ンごとに呼び出し)
#--------------------------------------------------------------------------
alias xrxs_bp1_remove_states_auto remove_states_auto
def remove_states_auto
return if @slip_state_update_ban
xrxs_bp1_remove_states_auto
end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● セットアップ
#--------------------------------------------------------------------------
alias xrxs_bp1_setup setup
def setup(actor_id)
xrxs_bp1_setup(actor_id)
@hate = 100 # init-value is 100
@cp = 0
@now_guarding = false
@slip_state_update_ban = false
end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias xrxs_bp1_initialize initialize
def initialize(troop_id, member_index)
xrxs_bp1_initialize(troop_id, member_index)
@hate = 100 # init-value is 100
@cp = 0
@now_guarding = false
@slip_state_update_ban = false
end
end
#==============================================================================
# ■ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# ● 公開インスタンス??
#--------------------------------------------------------------------------
attr_accessor :update_cp_only # CPメ?タ?のみの更新
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias xrxs_bp1_initialize initialize
def initialize
@update_cp_only = false
xrxs_bp1_initialize
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
alias xrxs_bp1_refresh refresh
def refresh
unless @update_cp_only
xrxs_bp1_refresh
end
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actors_size = [$game_party.actors.size, 4].max
max_width = [600 / (actors_size + 1), 80].max
x_shift = max_width + (600 - max_width*actors_size)/(actors_size - 1)
actor_x = i * x_shift + 4
draw_actor_cp_meter(actor, actor_x, 96, max_width, 0)
end
end
#--------------------------------------------------------------------------
# ● CPメ?タ? の描?
#--------------------------------------------------------------------------
def draw_actor_cp_meter(actor, x, y, width = 156, type = 0)
self.contents.font.color = system_color
self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0, 0, 0, 255))
if actor.cp == nil
actor.cp = 0
end
w = width * [actor.cp,65535].min / 65535
self.contents.fill_rect(x, y+28, w,1, Color.new(255, 255, 128, 255))
self.contents.fill_rect(x, y+29, w,1, Color.new(255, 255, 0, 255))
self.contents.fill_rect(x, y+30, w,1, Color.new(192, 192, 0, 255))
self.contents.fill_rect(x, y+31, w,1, Color.new(128, 128, 0, 255))
end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● フレ?ム更新
#--------------------------------------------------------------------------
alias xrxs_bp1_update update
def update
xrxs_bp1_update
# CP更新
@cp_thread.update
end
#--------------------------------------------------------------------------
# ● バトル終了
# result : 結果 (0:勝利 1:敗北 2:逃走)
#--------------------------------------------------------------------------
alias xrxs_bp1_battle_end battle_end
def battle_end(result)
# CPカウント停止
@cp_thread.stop
xrxs_bp1_battle_end(result)
end
#--------------------------------------------------------------------------
# ● プレバトルフェ?ズ開始
#--------------------------------------------------------------------------
alias xrxs_bp1_start_phase1 start_phase1
def start_phase1
@agi_total = 0
# CP加算を開始する
@cp_thread = Scene_Battle_CP.new
# アクタ?コマンドウィンドウを再作成
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(160, [s1, s2, s3, s4, "run"])
@actor_command_window.y = 128
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
@actor_command_window.draw_item(4, $game_temp.battle_can_escape ? @actor_command_window.normal_color : @actor_command_window.disabled_color)
# 呼び?す
xrxs_bp1_start_phase1
end
#--------------------------------------------------------------------------
# ● パ?ティコマンドフェ?ズ開始
#--------------------------------------------------------------------------
alias xrxs_bp1_start_phase2 start_phase2
def start_phase2
xrxs_bp1_start_phase2
@party_command_window.active = false
@party_command_window.visible = false
# 次へ
start_phase3
end
#--------------------------------------------------------------------------
# ● アクタ?コマンドウィンドウのセットアップ
#--------------------------------------------------------------------------
alias xrxs_bp1_phase3_setup_command_window phase3_setup_command_window
def phase3_setup_command_window
# CPスレッドを一時停止
@cp_thread.stop = true
# @active_battlerの防御を解除
@active_battler.now_guarding = false
# ?果音の再生
Audio.se_play(DATA_SYSTEM_COMMAND_UP_SE) if DATA_SYSTEM_COMMAND_UP_SE != ""
# 呼び?す
xrxs_bp1_phase3_setup_command_window
end
#--------------------------------------------------------------------------
# ● フレ?ム更新 (アクタ?コマンドフェ?ズ : 基本コマンド)
#--------------------------------------------------------------------------
alias xrxs_bsp1_update_phase3_basic_command update_phase3_basic_command
def update_phase3_basic_command
# C ボタンが押された場合
if Input.trigger?(Input::C)
# アクタ?コマンドウィンドウのカ?ソル位置で分岐
case @actor_command_window.index
when 4 # 逃げる
if $game_temp.battle_can_escape
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 4
# 次のアクタ?のコマンド入力へ
phase3_next_actor
else
# ブザ? SE を演奏
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
xrxs_bsp1_update_phase3_basic_command
end
#--------------------------------------------------------------------------
# ● メインフェ?ズ開始
#--------------------------------------------------------------------------
alias xrxs_bp1_start_phase4 start_phase4
def start_phase4
# 呼び?す
xrxs_bp1_start_phase4
# CP加算を再開する
@cp_thread.stop = false
end
#--------------------------------------------------------------------------
# ● 行動順序作成
#--------------------------------------------------------------------------
alias xrxs_bp1_make_action_orders make_action_orders
def make_action_orders
xrxs_bp1_make_action_orders
# 全員のCPを確認
exclude_battler = []
for battler in @action_battlers
# CPが不足している場合は @action_battlers から除外する
if battler.cp < 65535
exclude_battler.push(battler)
end
end
@action_battlers -= exclude_battler
end
#--------------------------------------------------------------------------
# ● フレ?ム更新 (メインフェ?ズ ステップ 1 : アクション準備)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase4_step1 update_phase4_step1
def update_phase4_step1
# 初期化
@phase4_act_continuation = 0
# 勝敗判定
if judge
@cp_thread.stop
# 勝利または敗北の場合 : メソッド終了
return
end
# 未行動バトラ?配列の先頭から取得
@active_battler = @action_battlers[0]
# ステ?タス更新をCPだけに限定。
@status_window.update_cp_only = true
# ステ?ト更新を禁止。
@active_battler.slip_state_update_ban = true if @active_battler != nil
# ?す
xrxs_bp1_update_phase4_step1
# @status_windowがリフレッシュされなかった場合は手動でリフレッシュ(CPのみ)
if @phase4_step != 2
# リフレッシュ
@status_window.refresh
# ?量化:たったコレだけΣ(?w?
Graphics.frame_reset
end
# 禁止を解除
@status_window.update_cp_only = false
@active_battler.slip_state_update_ban = false if @active_battler != nil
end
#--------------------------------------------------------------------------
# ● フレ?ム更新 (メインフェ?ズ ステップ 2 : アクション開始)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase4_step2 update_phase4_step2
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 @phase4_act_continuation == 0 and @active_battler.cp >= 65535
# ステ?ト自然解除
@active_battler.remove_states_auto
# CP消費
@active_battler.cp = [(@active_battler.cp - 65535),0].max
# ステ?タスウィンドウをリフレッシュ
@status_window.refresh
end
# ステップ 1 に移行
@phase4_step = 1
return
end
end
# アクションの種別で分岐
case @active_battler.current_action.kind
when 0
# 攻??防御?逃げる?何もしない時の共通消費CP
@active_battler.cp -= CP_COST_BASIC_ACTIONS if @phase4_act_continuation == 0
when 1
# スキル使用時の消費CP
@active_battler.cp -= CP_COST_SKILL_ACTION if @phase4_act_continuation == 0
when 2
# アイテム使用時の消費CP
@active_battler.cp -= CP_COST_ITEM_ACTION if @phase4_act_continuation == 0
end
# CP加算を一時停止する
@cp_thread.stop = true
# ステ?ト自然解除
@active_battler.remove_states_auto
# 呼び?す
xrxs_bp1_update_phase4_step2
end
#--------------------------------------------------------------------------
# ● 基本アクション 結果作成
#--------------------------------------------------------------------------
alias xrxs_bp1_make_basic_action_result make_basic_action_result
def make_basic_action_result
# 攻?の場合
if @active_battler.current_action.basic == 0 and @phase4_act_continuation == 0
@active_battler.cp -= CP_COST_BASIC_ATTACK # 攻?時のCP消費
end
# 防御の場合
if @active_battler.current_action.basic == 1 and @phase4_act_continuation == 0
@active_battler.cp -= CP_COST_BASIC_GUARD # 防御時のCP消費
end
# 敵の逃げるの場合
if @active_battler.is_a?(Game_Enemy) and
@active_battler.current_action.basic == 2 and @phase4_act_continuation == 0
@active_battler.cp -= CP_COST_BASIC_ESCAPE # 逃走時のCP消費
end
# 何もしないの場合
if @active_battler.current_action.basic == 3 and @phase4_act_continuation == 0
@active_battler.cp -= CP_COST_BASIC_NOTHING # 何もしない時のCP消費
end
# 逃げるの場合
if @active_battler.current_action.basic == 4 and @phase4_act_continuation == 0
@active_battler.cp -= CP_COST_BASIC_ESCAPE # 逃走時のCP消費
# 逃走可能ではない場合
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
return
end
xrxs_bp1_make_basic_action_result
end
#--------------------------------------------------------------------------
# ● フレ?ム更新 (メインフェ?ズ ステップ 3 : 行動側アニメ?ション)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase4_step3 update_phase4_step3
def update_phase4_step3
# 呼び?す
xrxs_bp1_update_phase4_step3
end
#--------------------------------------------------------------------------
# ● フレ?ム更新 (メインフェ?ズ ステップ 5 : ダメ?ジ表示)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase4_step5 update_phase4_step5
def update_phase4_step5
# スリップダメ?ジ
if @active_battler.hp > 0 and @active_battler.slip_damage?
@active_battler.slip_damage_effect
@active_battler.damage_pop = true
end
xrxs_bp1_update_phase4_step5
end
#--------------------------------------------------------------------------
# ● フレ?ム更新 (メインフェ?ズ ステップ 6 : リフレッシュ)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase4_step6 update_phase4_step6
def update_phase4_step6
# CP加算を再開する
@cp_thread.stop = false
# ヘルプウィンドウを?す
@help_window.visible = false
xrxs_bp1_update_phase4_step6
end
end


좀 부자연 스럽긴 합니다.....
(이것 역시 main 위에 찔러 넣으세요.)


어디서 퍼왔는대 출처 몰라요..

Who's WMN

?
 
 

  W M  N  
                  자료공유

Comment '7'
  • ?
    작은악마 2008.03.19 18:47
    ATB가머죠;;
  • profile
    나다니엘 renko 2011.06.12 00:58

    파이널판타지 형식의 실시간 전투입니다

  • ?
    늑당 2008.06.18 16:37
    작은악마님 저도 궁금...
  • ?
    인기소년 2008.12.07 09:22
    ATB시스템...
    요고요고 렉이나 충돌 많이먹는다고 하지만...
    쫌 멋있고 그래서 고급게임에 많이 쓰인다고 들은...

    제가 해보니 충돌때문인지 안되네요...
  • ?
    하이레벨 2010.01.18 13:52

    ㅋㅋ 망했다.. 덮어씌웠더니 테스트해보니 바로꺼진다는;ㅋ

  • ?
    『★Browneyedgirls』 2010.02.20 11:58

    ㅡㅡ;; atb가 아니군요.

    타임턴제 같은데요

  • profile
    푸솜양 2012.10.02 10:25
    잘 가져갑니다~

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6153
1001 전투 ABS_v3액션 알피지 46 file 알피지GM 2010.03.07 5806
1000 퀘스트 퀘스트창 예제 21 지나가던사람 2009.04.05 5742
999 전투 SBABS 버전3.2 - 액알 스크립트 시스템 설명 13 아방스 2007.11.09 5685
998 SBABS 버전3.2 - 액알 스크립트 사용법 34 아방스 2007.11.09 5631
997 이벤트 클릭 시스템 [마우스 스크립트]| 36 아방스 2007.11.09 5622
996 타이틀/게임오버 타이틀 화면 메뉴 변경 24 file 백호 2009.02.22 5586
995 온라인 ORPG 여러분이 원하는 온라인 스크립트 한글화해서 다시 배포! 20 file 심영 2010.10.16 5573
994 HUD [게이지바]2.0버젼「체력,마나,경험치,직업,캐릭터,레벨,돈,맵이름」(HelloCoa2Ver2.0) 67 file 코아 코스튬 2010.10.23 5553
993 액알 스크립트 강좌용~!!!| 27 아방스 2007.11.09 5461
992 타이틀/게임오버 타이틀을 아오오니처럼 만들어보자! 43 file Tassy 2010.06.02 5428
991 온라인 온라인 스크립트 KnM 배포합니다. 43 file 뮤바보 2011.09.23 5350
990 전투 [RTAB]HP/SH/EXP 게이지바 ver 1.00 44 file 환상 러브텔 2010.05.22 5339
989 메뉴 새로운 메뉴 15 file 또라에몽 2010.07.17 5304
988 메뉴 제가추천하는 메뉴스크립트 11 file 백호 2009.02.22 5299
987 미니맵 미니맵을 표시해주는 스크립트입니다... 41 file - 하늘 - 2009.08.05 5191
986 메시지 말풍선 표시 스크립트 48 file insertend 2010.06.06 5161
985 ABM(액알)+Jindow(진도우) 3 WMN 2008.04.06 5116
984 기타 액알 30 지존!! 2010.07.26 5095
983 HUD [맵이동시 맵이름을 표시] 심플한 디자인 36 file 제로스S2 2009.08.05 5001
982 메시지 한글 채팅 스크립트 32 file こなた 2009.01.22 4947
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 52 Next
/ 52