Templo RPG Maker
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

1HL-AutoSave Empty HL-AutoSave 12/8/2012, 23:27

FrozenGraveyard

FrozenGraveyard
Membro Honorário I
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
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

Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

Tópicos semelhantes

-

» Amethyst Autosave 1.0

Permissões neste sub-fórum
Não podes responder a tópicos