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

FP Início Fixo ao Carregar

Iniciado por Fábio Pichler, 05/06/2014 às 15:50

05/06/2014 às 15:50 Última edição: 19/06/2014 às 19:33 por Fábio Pichler
FP Início Fixo ao Carregar


Este script faz com que o jogo sempre inicie num lugar fixo (na hora de carregar o jogo salvo), independente de onde foi salvo.

O programador pode definir quantos lugares quiser.

Quando o jogador estiver num determinado ponto do jogo, basta alterar o valor duma "Variável X", através do comando "Controle de Variável" (no sistema de eventos) para que o local de início seja alterado.

Isso pode ser observado facilmente em jogos da série Zelda, como The Legend of Zelda: A Link to the Past ou The Legend of Zelda: Ocarina of Time, por exemplo.

Características


* Versão atual: 1.2
* Engine: RPG Maker VX Ace
* Compatibilidade: Boa
* Dificuldade: Médio
* Lag: Nulo
* Bug: Nenhum conhecido

Modo de Uso (Resumo, tutorial completo, no script)


Se usar a tela de Salvar e Carregar, padrão do RM, só será preciso configurar o script.

Se salvar e carregar o jogo por Evento, terá que configurar o script e chamar os seguintes comandos, através do Chamar Script:
Salvar:
FPManager.save_game(0)

Carregar:
FPManager.load_game(0)


Para mais informações sobre o uso e configurações, consulte o Script.

Script


#===============================================================================
# * * FP Início Fixo ao Carregar * *
#===============================================================================
# * Criado por: Fábio Pichler  http://fabiopichler.tk
# * Versão: 1.2
# * Compatível com: RPG Maker VX Ace
# * Lançamento: 19/06/2014
# * Página Web: http://fabiopichler.tk/rpg-maker/rgss3/fp-inicio-fixo-ao-carregar
#
#===============================================================================
# * * Introdução * *
#-------------------------------------------------------------------------------
# * Este script faz com que o jogo sempre inicie num lugar fixo (na hora
# de carregar o jogo salvo), independente de onde foi salvo.
#
# * O programador pode definir quantos lugares quiser.
#
# * Quando o jogador estiver num determinado ponto do jogo, basta alterar
# o valor duma "Variável X", através do comando "Controle de Variável" (no
# sistema de eventos) para que o local de início seja alterado.
#
#===============================================================================
# * * Características * *
#-------------------------------------------------------------------------------
# * Compatibilidade: Boa
# * Dificuldade: Médio
# * Lag: Nulo
# * Bug: Nenhum conhecido
#
#===============================================================================
# * * Atualizações * *
#-------------------------------------------------------------------------------
# * Versão 1.2
#   - Adicionado: Possibilidade de desativar o sistema.
#   - Adicionado: Possibilidade de usar o script atravéz de Sistema por
# Eventos ou apartir que outros scripts.
#   - Corrigido: Possíveis incompatibilidades.
#
# * Versão 1.1
#   - Corrigido: Possíveis incompatibilidades.
#
#===============================================================================
# * * Modo de uso (Tutorial) * *
#-------------------------------------------------------------------------------
#----------------------------------------------------------------------
# * Usando o Script
#----------------------------------------------------------------------
# * Geral
#------------------------------------------------------
# * Para usar o script, basta escolher uma "Variável X" do sistema de eventos,
# adicionar o ID desta variável X nas configurações do script e alterar
# o valor desta variável através do comando "Controle de Variável". Caso use
# um único local, não será preciso o uso duma "Variável X".
#
#------------------------------------------------------
# * Apartir de Sistemas por Eventos ou outros Scripts
#------------------------------------------------------
# Obs.: Ambos os comando fazem a mesma função que: "DataManager.save_game(0)"
# ou "DataManager.load_game(0)", porem com mais recursos.
#
# Obs.2: O comando "FPManager.load_game" é obrigatório para o script funcionar
# atravéz de Sistemas por Eventos.
#
# * * Use o comando de "Chamar Script" e use:
#
# * Para Carregar o jogo:
#       - Comando: FPManager.load_game(0,false)
# Onde:
#       - 0 (zero): Este é o número do Slot em que o jogo será carregado, este
# valor é opcional, mas caso não definido, será zero. Para carregar o
# jogo em outro Slot, basta alterar o número para: 1, 2, 3, 4, etc...
#       - false: Este argumento é opcional. Caso escreva "true" (sem aspas)
# fará um "Fade Out", após o carregamento do jogo. Caso não escreva nada, ou
# escreva "false", não será realizado um Fade Out. Para utilizar este segundo
# argumento, será obrigatório utilizar o primeiro, que no caso é zero ou outro
# número.
#
# * Para Salvar o Jogo:
# Obs.: O comando "FPManager.save_game" é opcional, caso queira,
# poderá usar: "DataManager.save_game(0)", normalmente.
#
#       - Comando: FPManager.save_game(0)
# Onde:
#       - 0 (zero): É o número do Slot em que o jogo será Salvo, este
# valor é opcional, mas caso não definido, será zero. Para salvar o
# jogo em outro Slot, basta alterar o número para: 1, 2, 3, 4, etc...
#
#----------------------------------------------------------------------
# * Configurando o Script
#----------------------------------------------------------------------
# * Utilize o Módulo de Configurações, logo abaixo.
#
# * Para escoher os mapas a serem usados, deverá informar:
#  - ID do Mapa: Número de identificação do mapa;
#  - Coordenada X: Posição Horizontal de início;
#  - Coordenada Y: Posição Vertical de início.
#
# * Exemplo para um Mapa com ID 003 e coordenada de início (6 x 9)
# Neste caso, não é preciso usar uma "Variável X".
#      MapID = [3]
#      X =     [6]
#      Y =     [9]
#
# * Para usar vários Mapas, basta seguir a seguinte lógica:
# O primeiro número de cada lista, é usado para o primeiro local de início,
# que é "chamado" pelo valor zero ou 1 na "Variável X".
# Se alterar o valor da Variável X para 2, usará o segundo valor de cada
# lista e iniciará no segundo local.
# Se alterar o valor da Variável X para 3, usará o terceiro valor
# de cada lista e iniciará no terceiro local.
# E assim por diante... Veja:
#
# A Variável X terá:   Valor 1,       Valor 2,       Valor 3,       Valor 4
#        MapID = [ID_do_Mapa_1,  ID_do_Mapa_2,  ID_do_Mapa_3,  ID_do_Mapa_4]
#        X =     [ X_do_Mapa_1,   X_do_Mapa_2,   X_do_Mapa_3,   X_do_Mapa_4]
#        Y =     [ Y_do_Mapa_1,   Y_do_Mapa_2,   Y_do_Mapa_3,   Y_do_Mapa_4]
#
#--------------------------------------------------------------------
# * Exemplos
#--------------------------------------------------------------------
# * Exemplo 1:
#  - Primeiro Mapa: ID = 004, X = 8 e Y = 2, Valor da sua Variável X é 1.
#  - Segundo Mapa: ID = 019, X = 3 e Y = 17, Valor da sua Variável X é 2.
#      MapID = [4, 19]
#      X =     [8, 3]
#      Y =     [2, 17]
#
# * Exemplo 2:
#      MapID = [18, 7, 14, 23]
#      X =     [30, 12, 6, 48]
#      Y =     [24, 34, 3, 2]
# Neste exemplo, se você deixar o valor padrão (zero) ou 1 na Variável X,
# você usará o início com as seguintes coordenadas:
#      Mapa: 18 com coordenada X: 30 e coordenada Y: 24
# Se alterar o valor da Variável X para 3, usará o início nas seguintes
# coordenadas:
#      Mapa: 14 com coordenada X: 6 e coordenada Y: 3
#
#===============================================================================
# * * Termos de Uso * *
#-------------------------------------------------------------------------------
# * Você poderá usar este script livremente em seu projeto/jogo, seja
# comercial ou não-comercial, basta dar-me os devidos créditos.
#
# * Caso queira, poderá postar este script em outro fórum/site, desde que,
# não altere nenhuma parte deste script, não tire meus créditos, não dê
# créditos a sí mesmo pelo script.
#
# * Não adicione códigos e nem personalize o script, se for postar
# em algum forum/site.
#
# * Você poderá alterar o que quiser no script, desde que,
# fique restrito somente ao(s) seu(s) projeto(s)/jogo(s).
#
module FPIFC
#===============================================================================
# * * Configuração * * [Alterações após o sinal de = (igualdade)]
#-------------------------------------------------------------------------------
  #----------------------------------------------------------------
  # * Configurações Gerais *
  #----------------------------------------------------------------
  # * * ID da Variável Usada * *
  # Escolha o ID da Variável que for utilizar para alternar entre lugares
  # de início. Se utilizar um único local de início, coloque um zero,
  # assim: "Var = 0" (sem aspas). Desta forma, não "gastará" mais uma variável.
  Var = 2
  # * * Modo Normal * *
  # Escolha o ID duma Switch para desativar temporariamente o script. Isso
  # poderá ser útil para criar saves normais em Masmoras, por exemplo.
  # Ative a Switch para desativar o efeito do Script. Se não usar isso,
  # deixe zero.
  Normal = 0
  # * * ID dos Mapas usados * *
  # Escolha os IDs dos mapas. Exemplo: [8,3,18,35]
  MapID = [1,1,1]
  # * * Coordenada X de início * *
  # Escolha as posições X de início em cada mapa. Exemplo: [3,14,16,8]
  X = [2,13,11]
  # * * Coordenada Y de início * *
  # Escolha as posições Y de início em cada mapa. Exemplo: [6,6,0,12]
  Y = [2,2,10]
  #----------------------------------------------------------------
  # * Configurações para o uso em Eventos, deste jeito:
  # FPManager.load_game() ou FPManager.save_game()
  #----------------------------------------------------------------
  # * * Erro ao Carrear ou Salvar * *
  # Escolha o ID duma Switch para ser ativada, quando não for possível
  # salvar ou carregar o jogo. Útil para mostrar mensagens ou rodar condições
  # de eventos. Também será retornado um erro, caso o usuário tentar carregar
  # um Slot que não existe.
  # Obs.: Após o uso deste recurso, é preciso desativar a Switch por Evento.
  # Se não usar isso, deixe zero.
  Error = 0
  # * * Sons ao Salvar ou Carregar * *
  # Escolha se deseja ativar os sons de Carregar, Salvar ou Erro. Caso queira
  # deixar somente o som de erro, por exemplo, pode desativar os outros no
  # Banco de Dados, na guia Sistema.
  # Para ativar, deixe: true, para desativar, deixe: false
  Sounds = true
#-------------------------------------------------------------------------------
# * * Fim da configuração * *
#===============================================================================

#===============================================================================
# * * Script * * Não altere, se não souber :)
#-------------------------------------------------------------------------------
end
module FPManager
  def self.setup_map
    FPIFC::Var==0 ? fpifc=0 : fpifc=$game_variables[FPIFC::Var]-1
    $game_map.setup(FPIFC::MapID[fpifc])
    $game_player.moveto(FPIFC::X[fpifc],FPIFC::Y[fpifc])
  end
  def self.save_game(fp_index=0)
    if (DataManager.save_game(fp_index))
      Sound.play_save if FPIFC::Sounds
    else
      Sound.play_buzzer if FPIFC::Sounds
      $game_switches[FPIFC::Error]=true if (FPIFC::Error>0)
    end
  end
  def self.load_game(fp_index=0,fp_fade=false)
    if (DataManager.load_game(fp_index))
      if (FPIFC::Normal>0)
        setup_map if ($game_switches[FPIFC::Normal]==false)
      else
        setup_map
      end
      Sound.play_load if FPIFC::Sounds
      Scene_Base.new.fadeout_all if fp_fade
      $game_system.on_after_load
      SceneManager.goto(Scene_Map)
    else
      Sound.play_buzzer if FPIFC::Sounds
      $game_switches[FPIFC::Error]=true if (FPIFC::Error>0)
    end
  end
end
class Scene_Load < Scene_File
  alias fpifc_on_load_s on_load_success
  def on_load_success
    if (FPIFC::Normal>0)
      FPManager.setup_map if ($game_switches[FPIFC::Normal]==false)
    else
      FPManager.setup_map
    end
    fpifc_on_load_s
  end
end
#-------------------------------------------------------------------------------
# * * Fim do Script * *
#===============================================================================


Demo


Não achei necessário, criar uma demo, mas caso queiram, basta deixar um comentário pedindo, que daí eu faço.

Créditos e Agradecimentos


Créditos a mim, Fábio Pichler, por criar o Script.
Agradecimento ao Unleashy, por me lembrar do código alias.
Agradecimento ao RyanKamos, por ter tido problemas com o Script (He!He!He! :lol:), e assim possibilitado um upgrade com melhorias e adição de recursos.

Nosso grande amigo Fábio sempre trazendo seus scripts muito
interessantes e excelentes!

Parabéns tio, achei muito bom dei uma testada de leves e funcionou direitinho
continue assim.... qualquer coisa tamos todos ae :blink:
Prazer, Terror dos Modinha

Script Atualizado para versão 1.1.

Citação de: Makers online 05/06/2014 às 19:31
Nosso grande amigo Fábio sempre trazendo seus scripts muito
interessantes e excelentes!

Parabéns tio, achei muito bom dei uma testada de leves e funcionou direitinho
continue assim.... qualquer coisa tamos todos ae :blink:

Valeu :ok:

Isso lembra realmente o The Legend of Zelda: Ocarina of Time, sempre iniciando na sua casa da arvore em Kokiri(acho que é esse o nome).
Bastante útil para jogos bem abertos.

Parabéns pelo script.

Opa, que script legal cara. Isso possibilita grandes coisas.
Ele pode ser usado tanto para jogos comerciais quanto não-comerciais?

Citação de: Tiaguu online 05/06/2014 às 19:57
Isso lembra realmente o The Legend of Zelda: Ocarina of Time, sempre iniciando na sua casa da arvore em Kokiri(acho que é esse o nome).
Bastante útil para jogos bem abertos.

Parabéns pelo script.
E foi bem na hora do jogo que eu tive esta ideia, ontem quando eu tive que reiniciar o emulador, e quando voltei a jogar, tive a ideia, e isso que já joguei Zelda 1 milhão de vezes. he he he

Citação de: RyanKamos online 05/06/2014 às 20:20
Opa, que script legal cara. Isso possibilita grandes coisas.
Ele pode ser usado tanto para jogos comerciais quanto não-comerciais?
Sim, pode.
A única restrição que eu adiciono, é que não modifiquem para compartilhar, mas pode ser modificado livremente para o próprio projeto e também me dar créditos.
Não costumo adicionar os termos em tópicos, mas sempre coloco no próprio script.

O script não funciona quando se usa:
DataManager.save_game(0)
DataManager.load_game(0)


Há alguma forma de fazer funcionar deste modo?

Citação de: RyanKamos online 14/06/2014 às 11:08
O script não funciona quando se usa:
DataManager.save_game(0)
DataManager.load_game(0)


Há alguma forma de fazer funcionar deste modo?

E ai

A minha alteração é na classe Scene_Load e você está "chamando" diretamente o Módulo DataManager, e isso também é feito pela classe Scene_Load.

Então... Como você faz pra carregar o jogo, é pelo comando "Chamar Script" num Evento?
Se sim, você usa desta maneira (ou algo parecido)?
DataManager.load_game(0)
SceneManager.goto(Scene_Map)


Se puder mostrar todos os comandos que usa pra carregar o jogo, ou dar detalhes de como faz isso.
Só o modo de Salvar, é que, não é preciso.

Meu jogo não contém uma tela de save, por isso, utilizo um "auto save" (o jogo só contém 1 slot de save, o 0), porém, gostaria que sempre que iniciasse o jogo, desse load para carregar tudo que você adquiriu e iniciar na title (por eventos).

Eu uso apenas:
DataManager.save_game(0) para Salvar;
DataManager.load_game(0) para Carregar.

19/06/2014 às 19:43 #9 Última edição: 19/06/2014 às 19:47 por Fábio Pichler
@RyanKamos: Já atualizei o script, fiz vários testes e parece estar funcionando perfeitamente, mas faz um teste e se tiver problemas, é só avisar.

Já que usa Sistema por Eventos, é só usar no "Chamar Script", este comando pra carregar:
FPManager.load_game


Se quiser, também pode usar esse código para salvar.
FPManager.save_game

Cara, agora funfo mas tá dando outro problema hHAHAHAA
Quando uso o load ele para no mapa em que salvei e depois que vai pro mapa que o script manda. :c
Tem como resolver? x.x

Ps.: Obrigado pela ajuda com o script xD

Pois é, agora não sei... :ded:

Mas será que não tem algum outro comando carregando o jogo salvo antes desse script? Porque ao usar o "FPManager.load_game" ele carrega os dados e já manda direto pro mapa escolhido.

Experimenta usar assim, pra testar:
FPManager.load_game(0,true)

Aquele true ali no código, faz dar um Fade Out, e no momento do Fade Out é que vai pro mapa.
Se mesmo assim, acontecer isso, então pode ser outra coisa dando erro.