O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

M+ Save Event Infos

Iniciado por M3T, 31/07/2014 às 14:50


M+ Save Event Infos
v1.0


Compativel com: RMVXAce/XP
Compatibilidade: boa
Facilidade de uso: fácil
Lag gerado: nulo



Introdução e Características
Este script faz com que, ao trocar de mapa, todas as informações dos eventos dele sejam salvas. Assim, os eventos não voltarão para a posição original quando você voltar ao mesmo mapa. Ele também salva no arquivo de Save. Você também pode configurar os mapas que não serão afetados pelo script, assim todos os eventos estarão na posição original quando você voltar para ele.



Instruções de uso
- Crie um novo script na seção "Scripts Adicionais" e cole o script abaixo lá
- Configure, se necessário, os mapas que não serão afetados pelo script. Exemplo:
SaveEventInfos_Exceptions = [1, 2, 3]

Assim, os mapas de ID 1, 2 e 3 não serão afetados pelo script.



Imagens
Script não perceptível por imagens.



Script
#==============================================================================
# M+ Save Event Infos - 1.0
# Por M3T
# (31/07/2014)
#------------------------------------------------------------------------------
# Este script possibilita que as informações como posição dos eventos sejam
# salvas, e quando você sair e voltar ao mapa que estava, os eventos estarão
# do jeito que você deixou quando saiu do mapa.
#==============================================================================
module MPlus
  # Coloque aqui os IDs dos mapas que não serão afetados pelo script
  SaveEventInfos_Exceptions = []
end
#==============================================================================
$game_events = {}
class Game_Map
  include MPlus
  alias m_se_map_setup setup
  def setup(map_id)
    m_se_map_setup(map_id)
    if $game_events[map_id] != nil && !SaveEventInfos_Exceptions.include?(map_id)
      @events = $game_events[map_id]
    end
  end
end

class Scene_Map
  alias m_transfer_player transfer_player
  def transfer_player
    $game_events[$game_map.map_id] = $game_map.events
    m_transfer_player
  end
end

class Scene_End
  alias m_comm_to_title command_to_title
  def command_to_title
    m_comm_to_title
    $game_events = {}
  end
end

class Scene_Save < Scene_File
  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_events, file)
    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
end

class Scene_Load < Scene_File
  def read_save_data(file)
    # Ler dados dos Heróis para desenhar o arquivo de save
    characters = Marshal.load(file)
    # Ler o contador de Frames para obter o tempo de jogo
    Graphics.frame_count = Marshal.load(file)
    # Ler cada tipo de objeto do jogo
    $game_events        = Marshal.load(file)
    $game_system        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables     = Marshal.load(file)
    $game_self_switches = Marshal.load(file)
    $game_screen        = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party         = Marshal.load(file)
    $game_troop         = Marshal.load(file)
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)
    # Se o número mágico for diferente ao de quando foi salvo
    # (Se uma edição foi adicionada por um editor)
    if $game_system.magic_number != $data_system.magic_number
      # Carregar mapa
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
    # Atualizar membros do grupo
    $game_party.refresh
  end
end


Notas
- Arquivos de Save antigos não funcionarão mais ao colocar esse script.
- Caso tenha mais um script que modifica o modo que o jogo salva os arquivos e estiver dando problema, me contate aqui neste tópico que eu faço os dois funcionarem juntos.

Fico muito bom parabéns !
T-T