Jogo do zero (Switch, self switch e variáveis)

11 Respostas   331 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

andrewzoka

  • *
  • Posts: 100
  • Ouros: 63
  • Nunca foi sorte, sempre foi Deus.
Tópico criado em: 16/06/2017 às 23:22 - Última modificação por andrewzoka em 19/06/2017 às 13:41

Bom, eu tenho a minha própria tela de título personalizada, não sei se isso afetaria, mas vamos lá:
O jogo basicamente é baseado em Switch, self switch e variáveis. Todas elas são ativadas/utilzadas e somadas durante o recorrer do jogo. Mas caso a pessoa zere o jogo e volte para a tela de título novamente, as mesmas continuaram ativadas. Tudo bem, talvez as switch's dê para desativar, mas e como faz as self switch que não dá pra desativar?  Sem contar que são muitas! E as variáveis também, inúmeras delas estão somadas, subtraídas, divididas, multiplicadas. Há alguma forma de desfazer tudo isso ao fim do jogo sem precisar fechar e abrir o game novamente?

Harus Game is coming.
https://www.indiexpo.net/pt/games/harus
© 2020 copyright.

Corvo

Resposta 1: 17/06/2017 às 10:02

Pelo que sei, sempre que você inicia um jogo novo, TODOS os switches e variáveis voltam ao valor padrão. Ou seja, as variáveis se tornam zero e os switches são desligados. Isso caso você não tenha algum script que permita que eles continuem com esses valores. Se não me engano, criaram um desse faz tempo.

Sua tela de título só iria afetar caso o jogador precisasse carregar um save antes de abri-la. Ou seja, caso não exista um "load" inicial, e nenhum script altere os valores, você não precisa substituí-los ao final do jogo.

andrewzoka

  • *
  • Posts: 100
  • Ouros: 63
  • Nunca foi sorte, sempre foi Deus.
Resposta 2: 17/06/2017 às 18:31

Pelo que sei, sempre que você inicia um jogo novo, TODOS os switches e variáveis voltam ao valor padrão. Ou seja, as variáveis se tornam zero e os switches são desligados. Isso caso você não tenha algum script que permita que eles continuem com esses valores. Se não me engano, criaram um desse faz tempo.

Sua tela de título só iria afetar caso o jogador precisasse carregar um save antes de abri-la. Ou seja, caso não exista um "load" inicial, e nenhum script altere os valores, você não precisa substituí-los ao final do jogo.

Mas como mencionei na postagem, minha tela de título é personalizada, ou seja, há um script que não chama a tela de título padrão da engine, pelo fato de eu ter minha própria tela de título. Nesse caso, as switch não se desativam, as variáveis permanecem as mesmas. Queria saber se nesse caso, há alguma forma para desativa-los e zera-los.

Harus Game is coming.
https://www.indiexpo.net/pt/games/harus
© 2020 copyright.

Corvo

Resposta 3: 17/06/2017 às 18:40

Qual sistema de tela de título você usa? Pode acontecer o seguinte: Se sua tela de título é por eventos, e criada em um mapa, o comando "Voltar ao Título" do menu apenas teleporta para ela, certo? Nesse caso, realmente pode acontecer de você iniciar um novo jogo com os valores alterados. O que eu sugiro: reconfigure a tela de título padrão para uma espécie de "Aperte Start". Não se esqueça de redirecionar o comando no evento para ela. É uma coisa simples que certamente vai resolver seu problema. A saber, é assim que funciona esse sistema.

felipefalcon

Resposta 4: 17/06/2017 às 19:15

Você usa que tipo de Title?

Como o Corvo mencionou depende da Title, mas tem um método no DataManager chamado setupNewGame (deve ser assim no MV) ele que cria as variáveis e tudo mais, talvez ela seja a solução pra esse problema XD

PS: Vi esse tópico e na hora me deu um susto, fui testar meu jogo pra ver se tava ocorrendo isso (eu também faço voltar pra title ao final) e não ocorre esse problema :D

Talvez seja problema no seu plugin de pular Title (se for Title por eventos) ou no seu plugin de TItle personalizada.
  

andrewzoka

  • *
  • Posts: 100
  • Ouros: 63
  • Nunca foi sorte, sempre foi Deus.
Resposta 5: 17/06/2017 às 19:24 - Última modificação por andrewzoka em 17/06/2017 às 19:31

Qual sistema de tela de título você usa? Pode acontecer o seguinte: Se sua tela de título é por eventos, e criada em um mapa, o comando "Voltar ao Título" do menu apenas teleporta para ela, certo? Nesse caso, realmente pode acontecer de você iniciar um novo jogo com os valores alterados. O que eu sugiro: reconfigure a tela de título padrão para uma espécie de "Aperte Start". Não se esqueça de redirecionar o comando no evento para ela. É uma coisa simples que certamente vai resolver seu problema. A saber, é assim que funciona esse sistema.

Isso realmente ficou um pouco confuso Você diz para reconfigurar a tela de título que vem padrão da engine para uma tela de titulo com "Pressione start"? O problema é que eu não sei como fazer isso. Sim, minha tela de título é por eventos a partir de um mapa. Eu achei que teria algum script nessa demo, mas só encontrei mapas com eventos... Mais ou menos como funciona na tela de titulo do meu jogo, é bem semelhante o que tem nessa demo...

Você usa que tipo de Title?

Como o Corvo mencionou depende da Title, mas tem um método no DataManager chamado setupNewGame (deve ser assim no MV) ele que cria as variáveis e tudo mais, talvez ela seja a solução pra esse problema XD

PS: Vi esse tópico e na hora me deu um susto, fui testar meu jogo pra ver se tava ocorrendo isso (eu também faço voltar pra title ao final) e não ocorre esse problema :D

Talvez seja problema no seu plugin de pular Title (se for Title por eventos) ou no seu plugin de TItle personalizada.

Na verdade, acredito que não seja um bug. Porque faz todo o sentido ele salvar as variáveis juntamente com as switch ativas sendo que eu não estou redirecionando para a title padrão da engine, e sim para um mapa normal, que possui um menu de inicialização tudo através de evento... Você vê, faz sentido as variáveis e as switch ativadas por esse raciocínio, não é? Entende o que eu quero dizer? Eu apenas finalizo o jogo, e ao finalizar, eu teleporto o personagem de volta para o mapa de tela de título (personalizada por eventos)...

O script que uso para "pular" a tela de titulo padrão da engine é esse:
Código: [Selecionar]
#==============================================================================
# ■ Scene_BetterTitle
#------------------------------------------------------------------------------
#  Put under materials but above Main
# To change to placement of the menu commands
# Edit Line 170-171 To your liking!
# Changelog:
# Update 1: Started And finished script.
#==============================================================================

class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# ● SceneManager
#--------------------------------------------------------------------------
def start
super
SceneManager.clear
Graphics.freeze
create_background
create_foreground
create_command_window
play_title_music
end
#--------------------------------------------------------------------------
# ● Transition
#--------------------------------------------------------------------------
def transition_speed
return 20
end
#--------------------------------------------------------------------------
# ● Terminate
#--------------------------------------------------------------------------
def terminate
super
SceneManager.snapshot_for_background
dispose_background
dispose_foreground
end
#--------------------------------------------------------------------------
# ● Create Background
#--------------------------------------------------------------------------
def create_background
@sprite1 = Sprite.new
@sprite1.bitmap = Cache.title1($data_system.title1_name)
@sprite2 = Sprite.new
@sprite2.bitmap = Cache.title2($data_system.title2_name)
center_sprite(@sprite1)
center_sprite(@sprite2)
end
#--------------------------------------------------------------------------
# ● Create Foreground
#--------------------------------------------------------------------------
def create_foreground
@foreground_sprite = Sprite.new
@foreground_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
@foreground_sprite.z = 100
draw_game_title if $data_system.opt_draw_title
end
#--------------------------------------------------------------------------
# ● Draw Game Title
#--------------------------------------------------------------------------
def draw_game_title
@foreground_sprite.bitmap.font.size = 48
rect = Rect.new(0, 0, Graphics.width, Graphics.height / 1)
@foreground_sprite.bitmap.draw_text(rect, $data_system.game_title, 1)
end
#--------------------------------------------------------------------------
# ● Dispose Background
#--------------------------------------------------------------------------
def dispose_background
@sprite1.bitmap.dispose
@sprite1.dispose
@sprite2.bitmap.dispose
@sprite2.dispose
end
#--------------------------------------------------------------------------
# ● Dispose Foreground
#--------------------------------------------------------------------------
def dispose_foreground
@foreground_sprite.bitmap.dispose
@foreground_sprite.dispose
end
#--------------------------------------------------------------------------
# ● Center Sprite
#--------------------------------------------------------------------------
def center_sprite(sprite)
sprite.ox = sprite.bitmap.width / 2
sprite.oy = sprite.bitmap.height / 2
sprite.x = Graphics.width / 2
sprite.y = Graphics.height / 2
end
#--------------------------------------------------------------------------
# ● Create Command Window
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_TitleCommand.new
@command_window.set_handler(:new_game, method(:command_new_game))
@command_window.set_handler(:continue, method(:command_continue))
@command_window.set_handler(:shutdown, method(:command_shutdown))
@command_window.set_handler(:site, method(:command_site))
end
#--------------------------------------------------------------------------
# ● Close Command Window
#--------------------------------------------------------------------------
def close_command_window
@command_window.close
update until @command_window.close?
end
#--------------------------------------------------------------------------
# ● Command New Game
#--------------------------------------------------------------------------
def command_new_game
DataManager.setup_new_game
close_command_window
fadeout_all
$game_map.autoplay
SceneManager.goto(Scene_Map)
end
#--------------------------------------------------------------------------
# ● Command Continue
#--------------------------------------------------------------------------
def command_continue
close_command_window
SceneManager.call(Scene_Load)
end
#--------------------------------------------------------------------------
# ● Command Shutdown
#--------------------------------------------------------------------------
def command_shutdown
close_command_window
fadeout_all
SceneManager.exit
end
#--------------------------------------------------------------------------
# ● Play Title Music
#--------------------------------------------------------------------------
def play_title_music
$data_system.title_bgm.play
RPG::BGS.stop
RPG::ME.stop
end
end

#==============================================================================
# This Changes Window Placement
#==============================================================================

class Window_TitleCommand < Window_Command
#--------------------------------------------------------------------------
# ● Initalize
#--------------------------------------------------------------------------
def initialize
super(0, 0)
update_placement
select_symbol(:continue) if continue_enabled
self.openness = 0
open
end
#--------------------------------------------------------------------------
# ● Define Window Width
#--------------------------------------------------------------------------
def window_width
return 160
end
#--------------------------------------------------------------------------
# ● Update Placement
#--------------------------------------------------------------------------
def update_placement
self.x = (Graphics.width - width) / 2
self.y = (Graphics.height * 1.6 - height) / 2
self.x = (250)
self.y = (250)
end
#--------------------------------------------------------------------------
# ● Make Command List
#--------------------------------------------------------------------------
def make_command_list
add_command(Vocab::new_game, :new_game)
add_command(Vocab::continue, :continue, continue_enabled)
add_command(Vocab::shutdown, :shutdown)
add_command(Site::VocabSite, :site)
end
#--------------------------------------------------------------------------
# ● Check For Continue
#--------------------------------------------------------------------------
def continue_enabled
DataManager.save_file_exists?
end
end


Harus Game is coming.
https://www.indiexpo.net/pt/games/harus
© 2020 copyright.

Corvo

Resposta 6: 17/06/2017 às 19:33 - Última modificação por Corvo em 17/06/2017 às 19:39

Dá uma olhadinha no gerenciador de plugins. Deve ter algum para pular o título. Agora, para criar algo como mencionei é o seguinte: Primeiro, não pode ter nenhum plugin alterando a tela de título. Vá até a pasta do jogo e abra a pasta js. Com algum editor de textos, abra o arquivo rpg_windows.js. Prefira um editor próprio para códigos, ou você terá problemas para encontrar o seguinte trecho:



Apague as linhas 5756 e 5757 e salve o arquivo. No database, renomeio o termo "Começar/Iniciar" pelo que você preferir e pronto. Aí está.

De fato, faz sentido o que você diz. É como se você não tivesse terminado o jogo, apenas transferido de mapa. Agora, variáveis e switches são fáceis de alterar, mesmo em quantidade. Que eu conheça, mesmo por código, não dá para alterar switches locais todos de uma vez. É preciso alterar um por um. Talvez seja possível criar outro plugin para isso que, quando chamado, substituísse todos os valores de switches e variáveis.

andrewzoka

  • *
  • Posts: 100
  • Ouros: 63
  • Nunca foi sorte, sempre foi Deus.
Resposta 7: 17/06/2017 às 19:37

Dá uma olhadinha no gerenciador de plugins. Deve ter algum para pular o título. Agora, para criar algo como mencionei é o seguinte: Primeiro, não pode ter nenhum plugin alterando a tela de título. Vá até a pasta do jogo e abra a pasta js. Com algum editor de textos, abra o arquivo rpg_windows.js. Prefira um editor próprio para códigos, ou você terá problemas para encontrar o seguinte trecho:



Apague as linhas 5756 e 5757 e salve o arquivo. No database, renomeio o termo "Começar/Iniciar" pelo que você preferir e pronto. Aí está.

Mas pelo que me indica fazer, seria para o RPG Maker MV, não? Eu uso o VX Ace...

Harus Game is coming.
https://www.indiexpo.net/pt/games/harus
© 2020 copyright.

Corvo

Resposta 8: 17/06/2017 às 19:40 - Última modificação por Corvo em 17/06/2017 às 19:45

PQP! Ignore minha burrice. Para o Ace, abra o editor de scripts. Vá até o Window_TitleCommand, aqui:

Remova as linhas 36 e 37. Depois, esqueça o que eu disse aqui em cima.

andrewzoka

  • *
  • Posts: 100
  • Ouros: 63
  • Nunca foi sorte, sempre foi Deus.
Resposta 9: 17/06/2017 às 19:44

Isso aí é do MV '-'

Sim, mas eu uso VX ACE '-'

Harus Game is coming.
https://www.indiexpo.net/pt/games/harus
© 2020 copyright.

felipefalcon

Resposta 10: 17/06/2017 às 20:12

Use este:

http://centrorpg.com/index.php?topic=628.0

Lembrando que você deve iniciar o personagem no mapa da Title para que não tenha nenhum problema. E depois para voltar à ela, use o "Voltar ao Menu Inicial" da 3° aba de eventos. Creio que não terá problemas.

PS: Não vi esse script acima, ele é uma Scene_Title diferente da padrão ou um pulador de Scene_Title padrão?
  

andrewzoka

  • *
  • Posts: 100
  • Ouros: 63
  • Nunca foi sorte, sempre foi Deus.
Resposta 11: 17/06/2017 às 21:22

PQP! Ignore minha burrice. Para o Ace, abra o editor de scripts. Vá até o Window_TitleCommand, aqui:

Remova as linhas 36 e 37. Depois, esqueça o que eu disse aqui em cima.

Muito obrigado! Consegui. Estou usando o script de modificar as opções de menu da tela principal, então consigo mover o menu usando x e y nas configurações do script. O único ruim é que vou ter que utilizar o "pressione enter" como um botão mesmo... fora isso, está tudo certo. O resultado foi este:
Spoiler
[close]

Use este:

http://centrorpg.com/index.php?topic=628.0

Lembrando que você deve iniciar o personagem no mapa da Title para que não tenha nenhum problema. E depois para voltar à ela, use o "Voltar ao Menu Inicial" da 3° aba de eventos. Creio que não terá problemas.

PS: Não vi esse script acima, ele é uma Scene_Title diferente da padrão ou um pulador de Scene_Title padrão?

Sim, eu estava usando este script para pular a tela de titulo, mas vi que realmente é necessário a abertura da tela de titulo padrão do RMVXAce para que reinicie todas as switch's e variáveis. Muito obrigado pela ajuda!

Harus Game is coming.
https://www.indiexpo.net/pt/games/harus
© 2020 copyright.