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

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

Iniciado por andrewzoka, 16/06/2017 às 23:22

16/06/2017 às 23:22 Última edição: 19/06/2017 às 13:41 por andrewzoka
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.

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.

Citação de: Corvo online 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.

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.

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.

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.
  

17/06/2017 às 19:24 #5 Última edição: 17/06/2017 às 19:31 por andrewzoka
Citação de: Corvo online 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.

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...

Citação de: felipefalcon online 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.

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:
#============================================================================== 
# ■ 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.

17/06/2017 às 19:33 #6 Última edição: 17/06/2017 às 19:39 por Corvo
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.

Citação de: Corvo online 17/06/2017 às 19:33
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.

17/06/2017 às 19:40 #8 Última edição: 17/06/2017 às 19:45 por Corvo
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.


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?
  

Citação de: Corvo online 17/06/2017 às 19:40
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]

Citação de: felipefalcon online 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?

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.