1 HL-AutoSave 12/8/2012, 23:27
FrozenGraveyard
Membro Honorário I
HL-AutoSave
Descrição:Este Script fará com que o jogo save automaticamente num slot escolhido pelo jogador no início do jogo, eu fiz pois disseram que não existia script de AutoSave que pudesse escolher o slot de salvar.
Função:Pode servir para jogos online, para ter vários personagens, para jogos offline, quem gostar que salve automaticamente.
Screens:
Não é Necessário.XD
MiniFaq:
- Como Adicionar Scripts ao Rpg Maker Xp??
Simplesmente clique em um ícone(papel e lápis) que está na área
superior, direita.Abrirá uma janela(a janela de scripts), terá uma lista
do lado esquerdo,o último item é o main.Apartir daí, você pode fazer
2 coisas:
1º- Ou clica com o botão direito em mais e selecione inserir,
aparecerá na lista um espaço em branco, selecione, e no espaço
do lado esquerdo, cole o Script(Texto).
2º- Ou abre a demo(projeto de demonstração) do script, abre a
janela de scripts e clica com o botão direito no item
"HL-AutoSave" e seleciona copiar, agora abra seu projeto, abra
a janela de scripts e clique com o botão direito no item "main"
da lista e selecione colar.
Download:Demo
Script
Créditos:HugoLinux, Eu msm.XD
Script
HL-scripts
Salvar / Automaticamente
AutoSave
HugoLinux
Descrição:Este Script fará com que o jogo save automaticamente num slot escolhido pelo jogador no início do jogo, eu fiz pois disseram que não existia script de AutoSave que pudesse escolher o slot de salvar.
Função:Pode servir para jogos online, para ter vários personagens, para jogos offline, quem gostar que salve automaticamente.
Screens:
Não é Necessário.XD
MiniFaq:
- Como Adicionar Scripts ao Rpg Maker Xp??
Simplesmente clique em um ícone(papel e lápis) que está na área
superior, direita.Abrirá uma janela(a janela de scripts), terá uma lista
do lado esquerdo,o último item é o main.Apartir daí, você pode fazer
2 coisas:
1º- Ou clica com o botão direito em mais e selecione inserir,
aparecerá na lista um espaço em branco, selecione, e no espaço
do lado esquerdo, cole o Script(Texto).
2º- Ou abre a demo(projeto de demonstração) do script, abre a
janela de scripts e clica com o botão direito no item
"HL-AutoSave" e seleciona copiar, agora abra seu projeto, abra
a janela de scripts e clique com o botão direito no item "main"
da lista e selecione colar.
Download:Demo
Script
- Código:
#==============================================================================
# HL - AutoSave
#------------------------------------------------------------------------------
# Este script faz com que o jogo se auto salve em um slot
# escolhido no começo do jogo.
#------------------------------------------------------------------------------
#Criador: HugoLinux
#==============================================================================
#==============================================================================
# Window_Command2
#------------------------------------------------------------------------------
# Esta é a janela que exibe as escolhas.
#==============================================================================
class Window_Command2 < Window_Selectable
#--------------------------------------------------------------------------
# - Inicialização dos Objetos
#
# width : largura da janela
# commands : ordem dos comandos
#--------------------------------------------------------------------------
def initialize(width, commands)
# Aqui é calculada a altura da janela em relação ao número de escolhas
super(0, 0, width, 224)
@item_max = commands.size
@commands = commands
self.contents = Bitmap.new(width - 32, @item_max * 32)
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# - Atualização
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end
#--------------------------------------------------------------------------
# - Desenhar Item
#
# index : índice
# color : cor do texto
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index])
end
#--------------------------------------------------------------------------
# - Desabitar Item
#
# index : índice
#--------------------------------------------------------------------------
def disable_item(index)
draw_item(index, disabled_color)
end
end
#==============================================================================
# Scene_Title
#------------------------------------------------------------------------------
# Esta classe trata da Tela de Título
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# - Comando: Novo Jogo
#--------------------------------------------------------------------------
def command_new_game
# Reproduzir SE de OK
$game_system.se_play($data_system.decision_se)
# Parar BGM
Audio.bgm_stop
# Aqui o contador de frames é resetado para que se conte o Tempo de Jogo
Graphics.frame_count = 0
# Criar cada tipo de objetos do jogo
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# Configurar Grupo Inicial
$game_party.setup_starting_members
# Configurar posição inicial no mapa
$game_map.setup($data_system.start_map_id)
# Aqui o Jogador é movido até a posição inical configurada
$game_player.moveto($data_system.start_x, $data_system.start_y)
# Atualizar Jogador
$game_player.refresh
# Rodar, de acordo com o mapa, a BGM e a BGS
$game_map.autoplay
# Atualizar mapa (executar processos paralelos)
$game_map.update
# Mudar para a tela do mapa
$scene = Scene_Save.new
end
end
#==============================================================================
# Scene_Map
#------------------------------------------------------------------------------
# Esta classe processa a tela de Mapa
#==============================================================================
class Scene_Map
def update
# Loop
loop do
# Atualizar Mapa, Interpretador e Jogador
# (Esta ordenação de atualização é importante para quando as condições
# estiverem cheias para executar qualquer evento e o jogador não tem a
# oportunidade de se mover em algum instante)
$game_map.update
$game_system.map_interpreter.update
$game_player.update
# Atualizar tela de sistema
$game_system.update
$game_screen.update
# Abortar o loop se o jogador não estiver se movendo
unless $game_temp.player_transferring
break
end
# Executar movimento
transfer_player
# Abortar loop se estiver ocorrendo um transição
if $game_temp.transition_processing
break
end
end
# Atualizar Spriteset
@spriteset.update
# Atualizar janela de mensagens
@message_window.update
# Se ocorrer um Game Over
if $game_temp.gameover
# Alternar para a tela de Game Over
$scene = Scene_Gameover.new
return
end
# Se estiver retornando à tela de Título
if $game_temp.to_title
# Alternar para a tela de Título
$scene = Scene_Title.new
return
end
# Abortar loop se estiver ocorrendo um transição
if $game_temp.transition_processing
# Limpar flag de transição
$game_temp.transition_processing = false
# Executar transição
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
# Se estiver exibindo uma mensagem
if $game_temp.message_window_showing
return
end
# Se a lista de encontros não estiver vazia, e o contador de encontro for 0
if $game_player.encounter_count == 0 and $game_map.encounter_list != []
# Se estiver ocorrendo um evento ou o encontro não for proibido
unless $game_system.map_interpreter.running? or
$game_system.encounter_disabled
# Confirmar loop
n = rand($game_map.encounter_list.size)
troop_id = $game_map.encounter_list[n]
# Se o Grupo de Inimigos não for inválido
if $data_troops[troop_id] != nil
# Definir flag de chamada de batalha
$game_temp.battle_calling = true
$game_temp.battle_troop_id = troop_id
$game_temp.battle_can_escape = true
$game_temp.battle_can_lose = false
$game_temp.battle_proc = nil
end
end
end
# Se o boão B for pressionado
if Input.trigger?(Input::B)
# Se estiver ocorrendo um evento ou o menu não for proibido
unless $game_system.map_interpreter.running? or
$game_system.menu_disabled
# Definir flag de chamda de Menu ou de Beep
$game_temp.menu_calling = true
$game_temp.menu_beep = true
end
end
# Se o Modo de Depuração estiver ativo ou a tecla F9 for pressionado
if $DEBUG and Input.press?(Input::F9)
# Definir flag de chamda de depuração
$game_temp.debug_calling = true
end
# Se o jogador não estiver se movendo
unless $game_player.moving?
# Executar a chamada de cada tela
if $game_temp.battle_calling
call_battle
elsif $game_temp.shop_calling
call_shop
elsif $game_temp.name_calling
call_name
elsif $game_temp.menu_calling
call_menu
elsif $game_temp.save_calling
call_save
elsif $game_temp.debug_calling
call_debug
end
end
#AUTOSAVE===================================================
file = File.open(make_filename($game_temp.last_file_index), "wb")
write_save_data(file)
file.close
#AUTOSAVE===================================================
end
def write_save_data(file)
# Criar desenho dos Heróis para salvar
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
# Gravar desenho dos Heróis para salvar
Marshal.dump(characters, file)
# Gravar contador de Tempo de Jogo
Marshal.dump(Graphics.frame_count, file)
# Acrescentar 1 em contador de saves
$game_system.save_count += 1
# Salvar número da Magia
# Um número aleatório será selecionado cada vez que você salvar
$game_system.magic_number = $data_system.magic_number
# Gravar cada tipo de objeto do jogo
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)
end
def make_filename(file_index)
return "Save#{file_index + 1}.rxdata"
end
end
#==============================================================================
# Scene_Menu
#------------------------------------------------------------------------------
# Esta classe processa a Tela de Menu
#==============================================================================
class Scene_Menu
#--------------------------------------------------------------------------
# - Processamento Principal
#--------------------------------------------------------------------------
def main
# Criar janela de comando
s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = "Status"
s5 = "Fim de Jogo"
@command_window = Window_Command2.new(160, [s1, s2, s3, s4, s5])
@command_window.index = @menu_index
# Se o número de membros do Grupo de Heróis for 0
if $game_party.actors.size == 0
# Desabilar as janelas de Item, Habilidades, Equipamento e Status
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
# Se Salvar for Proibido
if $game_system.save_disabled
# Desabilitar Salvar
@command_window.disable_item(4)
end
# Criar janela de Tempo de Jogo
@playtime_window = Window_PlayTime.new
@playtime_window.x = 0
@playtime_window.y = 224
# Criar janela de Número Passos
@steps_window = Window_Steps.new
@steps_window.x = 0
@steps_window.y = 320
# Criar janela de Dinheiro
@gold_window = Window_Gold.new
@gold_window.x = 0
@gold_window.y = 416
# Criar janela de Status
@status_window = Window_MenuStatus.new
@status_window.x = 160
@status_window.y = 0
# Executar transição
Graphics.transition
# Loop principal
loop do
# Atualizar a tela de jogo
Graphics.update
# Atualizar a entrada de informações
Input.update
# Atualizar Frame
update
# Abortar loop se a tela for alterada
if $scene != self
break
end
end
# Preparar para transiçõa
Graphics.freeze
# Exibição das janelas
@command_window.dispose
@playtime_window.dispose
@steps_window.dispose
@gold_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# - Atualização do Frame (Quando a janela de Comandos estiver Ativa)
#--------------------------------------------------------------------------
def update_command
# Se o botão B for pressionado
if Input.trigger?(Input::B)
# Reproduzir SE de cancelamento
$game_system.se_play($data_system.cancel_se)
# Alternar para a tela do mapa
$scene = Scene_Map.new
return
end
# Se o botão C for pressionado
if Input.trigger?(Input::C)
# Se o comando for outro senão Salvar, Fim de Jogo e o número de Heróis no
# Grupo for 0
if $game_party.actors.size == 0 and @command_window.index < 4
# Reproduzir SE de erro
$game_system.se_play($data_system.buzzer_se)
return
end
# Ramificação por posição do cursor na janela de comandos
case @command_window.index
when 0 # Itens
# Reproduzir SE de OK
$game_system.se_play($data_system.decision_se)
# Alternar para a tela de Itens
$scene = Scene_Item.new
when 1 # Habilidades
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Ativar o status da janela
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2 # Equipamentos
# Reproduzir SE de OK
$game_system.se_play($data_system.decision_se)
# Ativar o status da janela
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 3 # Status
# Reproduzir SE de OK
$game_system.se_play($data_system.decision_se)
# Ativar o status da janela
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 4 # Fim de Jogo
# Se Salvar for proibido
if $game_system.save_disabled
# Reproduzir SE de erro
$game_system.se_play($data_system.buzzer_se)
return
end
# Reproduzir SE de OK
$game_system.se_play($data_system.decision_se)
# Alternar para a tela de Fim de Jogo
$scene = Scene_End.new
end
return
end
end
end
#==============================================================================
# Scene_Save
#------------------------------------------------------------------------------
# Esta classe processa o Save.
#==============================================================================
class Scene_Save < Scene_File
#--------------------------------------------------------------------------
# - Inicialização dos Objetos
#--------------------------------------------------------------------------
def initialize
super("Que slot o AutoSave deve Utilizar?")
end
#--------------------------------------------------------------------------
# - Processamento de Decisão
#--------------------------------------------------------------------------
def on_decision(filename)
# Reproduzir Se de Save
$game_system.se_play($data_system.save_se)
# Graavar
file = File.open(filename, "wb")
write_save_data(file)
file.close
# Caso tenha sido chamdo por um evento...
if $game_temp.save_calling
# Limpar flag de chamado de save
$game_temp.save_calling = false
# Mudar para a tela do Mapa
$scene = Scene_Map.new
return
end
# Mudar para a tela do Menu
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# - Processo de Cancelamento
#--------------------------------------------------------------------------
def on_cancel
# Reproduzir SE de cancelamento
$game_system.se_play($data_system.cancel_se)
# Caso tenha sido chamdo por um evento...
if $game_temp.save_calling
# Limpar flag de chamado de save
$game_temp.save_calling = false
# Mudar para a tela do Mapa
$scene = Scene_Map.new
return
end
# Mudar para a tela de Título
$scene = Scene_Title.new
end
end
Créditos:HugoLinux, Eu msm.XD
Script
HL-scripts
Salvar / Automaticamente
AutoSave
HugoLinux