Yoroiookami - Sob 19 Cze, 2010 16:37 Temat postu: Game OverPotrzebowałbym, żeby po ¶mierci (Game Over) pojawiała się opcja Menu, albo Kontynuuj(Przenosi do ostatniego zapisu/checkpointa). Wiem, że jest skrypt który wy¶wietla opcję Menu i Wczytaj, ale ja potrzebuję dokładnie tego co powyżej, a sam nie potrafię przerobić. >_>
Za pomoc dziękuję z góry.CreeperCrisis - Sob 19 Cze, 2010 20:16 Tu masz skrypt na quick save
Spoiler:
Kod:
#===============================================================================
#--------# Quicksave Script #---------------------------------------------------
#--------# version 1.0 #---------------------------------------------------
#--------# by Thieffer #---------------------------------------------------
#--------# 25.08.2009 #---------------------------------------------------
#===============================================================================
#===============================================================================
#--------# INFO #---------------------------------------------------
#===============================================================================
# Skrypt umożliwia szybkie wczytywanie i zapisywanie oraz autozapis stanu gry.
#
# Aby użyć szybkiego zapisu wystarczy wcisnąć odpowiedni klawisz (patrz: CONFIG)
# będąc na mapie. Opcjonalnie jest to klawisz F5.
#
# Szybkie wczytanie dostępne jest z poziomu Ekranu Tytułowego. Jednak, aby
# działało poprawnie musisz skaskować linijkę:
# @command_window = Window_Command.new(192, [s1, s2, s3])
# a w jej miejsce wpisać:
# set_title_commands
#
# Aby użyć autozapisu wywołaj komendę:
# $game_system.autosave
#
# W dowolnym momencie gry możesz użyć opcji szybkiego wczytania, wywołaj komendę:
# $game_system.quickload
#===============================================================================
Działa :?: Jak nie to sorka, ponieważ nie mam jak przetestować :-) nie mam RMXP :-)
#--------# CONFIG #---------------------------------------------------
#===============================================================================
Quicksave = 'Data/Quicksave' # �ieżka oraz nazwa pliku
Quicksave_Key = Input::F5 # przycisk szybkiego zapisu
Quicksave_Text = 'Dokonano zapisu' # tekst szybkiego zapisu
Quicksave_Text_Color = 0 # kolor tekstu (od 0 do 7), zdefiniowany w Window_Base
Quicksave_Text_Size = 19 # rozmiar tekstu
Quicksave_Text_Switch = true # włącznik/wyłącznik tekstu (true/false)
Autosave_Text = 'Dokonano autozapisu' # tekst automatycznego zapisu
Autosave_Text_Color = 6 # kolor tekstu (od 0 do 7), zdefiniowany w Window_Base
Autosave_Text_Size = 19 # rozmiar tekstu
Autosave_Text_Switch = true # włącznik/wyłącznik tekstu (true/false)
#===============================================================================
class Scene_Title
def set_title_commands
commands = ["Nowa Gra", "Wczytaj", "Szybkie Wczytanie", "Wyj�ie"]
@command_window = Window_Command.new(210, commands)
if not FileTest.exist?(Quicksave)
@command_window.disable_item(2)
end
end
def update
@command_window.update
if Input.trigger?(Input::C)
case @command_window.index
when 0
command_new_game
when 1
command_continue
when 2
command_quickload
when 3
command_shutdown
end
end
end
def refresh
self.contents.clear
self.contents.font.color = normal_color
case @type
when 'quick'
text = Quicksave_Text
color_number = Quicksave_Text_Color
size = Quicksave_Text_Size
self.visible = false if not Quicksave_Text_Switch
when 'auto'
text = Autosave_Text
color_number = Autosave_Text_Color
size = Autosave_Text_Size
self.visible = false if not Autosave_Text_Switch
end
self.contents.font.color = text_color(color_number)
self.contents.font.size = size
cx = contents.text_size(text).width
self.contents.draw_text(304-cx/2, 0, cx, 32, text, 1)
end
end
class Scene_Map
alias quicksave_script_main main
def main
@wait_count = 0
quicksave_script_main
end
alias quicksave_script_update update
def update
if @wait_count > 0
@wait_count -= 1
end
if Input.press?(Quicksave_Key) and @wait_count == 0
$game_system.quicksave
$game_system.se_play($data_system.save_se)
if @quicksave_text != nil
@quicksave_text.dispose
end
@quicksave_text = Window_Quicksave.new('quick')
@wait_count = 20
end
if @quicksave_text != nil
@quicksave_text.update
end
if @wait_count == 0 and @quicksave_text != nil
@quicksave_text.contents_opacity -= 10
if @quicksave_text.contents_opacity <= 0
@quicksave_text = nil
end
@wait_count = 5
end
quicksave_script_update
if not $scene.is_a?(Scene_Map) and @quicksave_text != nil
@quicksave_text.dispose
end
end
def autosave
$game_system.se_play($data_system.save_se)
if @quicksave_text != nil
@quicksave_text.dispose
end
@quicksave_text = Window_Quicksave.new('auto')
end
end
class Game_System
def autosave
quicksave
if $scene.is_a?(Scene_Map)
$scene.autosave
end
end
def quicksave
file = File.open(Quicksave, 'wb')
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
$game_system.save_count += 1
$game_system.magic_number = $data_system.magic_number
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
file.close
end
def quickload
if File.exist?(Quicksave)
file = File.open(Quicksave)
read_save_data(file)
file.close
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
$game_map.update
$game_system.se_play($data_system.decision_se)
$game_temp = Game_Temp.new
$scene = Scene_Map.new
else
$game_system.se_play($data_system.buzzer_se)
end
end
end
#==============================================================================
checkpoint możesz zrobić, gdy wywołasz:
Kod:
$game_system.autosave
a tu skrypt z Game Over:
Spoiler:
Kod:
class Scene_Gameover
def main
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.gameover($data_system.gameover_name)
s1 = "Kontynuuj"
s2 = "Koniec"
@command_window = Window_Command.new(192, [s1, s2])
@command_window.back_opacity = 160
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288
$game_system.bgm_play(nil)
$game_system.bgs_play(nil)
$game_system.me_play($data_system.gameover_me)
Graphics.transition(120)
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@sprite.bitmap.dispose
@sprite.dispose
@command_window.dispose
Graphics.transition(40)
Graphics.freeze
if $BTEST
$scene = nil
end
end
def update
@command_window.update
if Input.trigger?(Input::C)
case @command_window.index
when 0
command_menu
when 1
command_end
end
end
def command_menu
$game_system.quickload
end
def command_end
$game_system.se_play($data_system.decision_se)
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
$scene = nil
end
end
end
Yoroiookami - Nie 20 Cze, 2010 08:52 Napiszę jeszcze raz żeby 'migało':
---------------------
Dzięki, wypróbuję ^^
EDIT: można wywołać ten checkpoint podobnym skryptem?
W sensie, czy można w trakcie gry przesun±ć gracza do ostatniego checkpointa.CreeperCrisis - Nie 20 Cze, 2010 10:18 To ja już chyba nie wiem. Spróbuję
jest takie co¶. Ten quick save można zapisać przyciskiem "F5"Yoroiookami - Nie 20 Cze, 2010 10:22 Chodzi o to, żeby w grze były te autozapisy(to już mam) i żebym np. po ¶mierci mógł to wywołać, żeby gracz miał opcję powrotu do checkpointa. ^^Sabikku - Pon 21 Cze, 2010 21:04 Mówisz o $game_system.quickload ? Czy chodzi o jaki¶ zupełnie nowy skrypt? Staraj się konkretniej tłumaczyć...Yoroiookami - Pon 21 Cze, 2010 21:56 Sabikku - a sk±d mam kurde wiedzieć? Nie znam się na Ruby i nigdy nie bawiłem się skryptami, wstawiam gotowce w 0% obrabiane przeze mnie(chyba że na podstawie instrukcji). Nie wiem na czym polega ten skrypt, chcę po prostu użyć skryptu wyżej (checkpoint), żeby ten drugi skrypt którego potrzebuję(ten quickload czy jak go tam nazwałe¶) przenosił gracza do tego checkpointu w dowolnym momencie gry. Po prostu chcę ustawić żeby w pewnym momencie się wracał do tego checkpointa, żeby był wczytywany, a nie teleportowany.
Wyja¶niłem dokładniej? Czy wolisz wypracowanie Sabikku - Pon 21 Cze, 2010 22:19 To może ja też napiszę konkretniej:
Spoiler:
Nie denerwuj się, przecież chcę ci pomóc .Yoroiookami - Pon 21 Cze, 2010 22:56 Sabikku - ...aż szkoda gadać.
Ja wiem jak się tego używa...nie znałem tylko tego kodu z autoload.
Tak czy inaczej dzięki, temat można zamkn±ć >_>