전투

SG_Batte Retry ver.4 by sandgolem

by 백호 posted Feb 22, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
#==========================================================================
# ** SG Battle Retry
#==========================================================================
# sandgolem
# Version 4
# 29.06.06
#==========================================================================

Scene_Battle::SG_CantRetryBattle = 0

#==========================================================================
#
# To check for updates or find more script-xs, visit:
# http://www.gamebaker.com/rmxp/script-xs/
#
# To use this script-x, copy it and insert it in a new section above "Main",
# but under the default script-xs and the SDK if you're using it.
#
# Have problems? You can leave me a message at:
# http://www.gamebaker.com/users/sandgolem
#
#==========================================================================

begin
SDK.log('SG Battle Retry', 'sandgolem', 4, '29.06.06')
if SDK.state('SG Battle Retry') != true
@sg_battleretry_disabled = true
end
rescue
end

if !@sg_battleretry_disabled
#--------------------------------------------------------------------------

class Game_System
attr_accessor :playing_bgm
end

class Game_Temp
attr_accessor :battle_music_playing
end

class Scene_Map
alias sandgolem_bretry_map_callbattle call_battle
def call_battle
sandgolem_bretry_map_callbattle
$game_temp.battle_music_playing = $game_system.playing_bgm.clone
end
end

class Scene_Save < Scene_File
def sg_write_retrysave_data
file = File.open('Data/retry.sg', 'wb')
write_save_data(file)
file.close
end
end

class Scene_Load < Scene_File
def sg_read_retrysave_data
file = File.open('Data/retry.sg', 'rb')
read_save_data(file)
file.close
end
end

class Scene_Battle
alias sandgolem_battleretry_battle_main main
def main
if $game_switches[SG_CantRetryBattle] == 0 or
!$game_switches[SG_CantRetryBattle]
if !$sg_battleretry_inbattle && !$game_temp.battle_can_lose
$sg_battleretry_inbattle = $game_temp
sg_scene_save_temp = Scene_Save.new
sg_scene_save_temp.sg_write_retrysave_data
sg_scene_save_temp = nil
end
end
sandgolem_battleretry_battle_main
if !$scene.is_a?(Scene_Gameover)
if FileTest.exist?('Data/retry.sg')
File.delete('Data/retry.sg')
end
$sg_battleretry_inbattle = nil
end
end
end

class Scene_Gameover
alias sandgolem_battleretry_gameover_main main
def main
if $sg_battleretry_inbattle
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.gameover($data_system.gameover_name)
$game_system.bgm_stop
$game_system.me_play($data_system.gameover_me)
Graphics.transition(90)
@command_window = Window_Command.new(192,['Retry Battle','Title Screen'])
@command_window.back_opacity = 160
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288
loop do
Graphics.update
Input.update
sg_retry_update
if $scene != self
break
end
end
@command_window.dispose
Graphics.freeze
@sprite.bitmap.dispose
@sprite.dispose
Graphics.transition(30)
Graphics.freeze
else
sandgolem_battleretry_gameover_main
end
end

def sg_retry_update
@command_window.update
if Input.trigger?(Input::C)
case @command_window.index
when 0
sg_scene_save_temp = Scene_Load.new
sg_scene_save_temp.sg_read_retrysave_data
sg_scene_save_temp = nil
$game_temp = $sg_battleretry_inbattle
$game_temp.gameover = nil
$game_system.bgm_play($game_temp.battle_music_playing)
$scene = Scene_Battle.new
when 1
if FileTest.exist?('Data/retry.sg')
File.delete('Data/retry.sg')
end
$sg_battleretry_inbattle = nil
$scene = Scene_Title.new
end
end
end
end

#--------------------------------------------------------------------------
end


게임오버되면 다시 전투할꺼냐고 물어봐주는 센스의 스크립트인듯.

SCREEN SHOT 

INSTRUCTION
단순히 당신의 게임에 그것을 놓으십시오, 어떤 회의도 요구하지 않았습니다.
만약 당신이 가끔 이 실시를 무능하게 하고 싶으면, 이 줄을 발견하십시오 :
Scene_Battle::SG_CantRetryBattle = 0
스위치 ID까지 0을 바꾸십시오. 언제 스위치가 전투 재시행에 있는지는 쓸모 없게 만들어집니다.

UPDATE
Version 4:
- 전투 재시행 저축 파일을 삭제하는 것을 시도합니다
- 선택 과목에 스위치를 쓸모 없게 만들으며 바꾸었습니다
- 그것이 SG Automatic Backup와 포함되지 않도록 파일 이름을 바꿔주었습니다.
- Optional와 Random Battle Music와의 겸용이 가능해지게 바꿨습니다.