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

Switch Global

Iniciado por Hoffmann96, 04/02/2017 às 14:28

Galera, sou novo aqui, era membro assíduo da falecida MRM. Este vai ser meu primeiro post, mas pretendo colocar logo toda minha "contribuição social" do universo maker aqui pro fórum  :XD:

Voltei a criar recentemente, e me deparei com um fantasma antigo sem solução: switches globais para o rpg maker xp. Eu vi que existe scripts para isso na engine RMVX e ACE, porém até hoje nunca achei uma solução pro RMXP. De forma resumida, estou procurando o seguinte: algum script que consiga salvar valores de switch em todos os saves, uma "switch global".

Por exemplo: comecei um novo jogo e abri um baú que em seguida foi desativado com uma switch. Quando eu começasse um novo jogo, ou desse load em algum jogo salvo, esse báu continuaria desativado.

Alguém pode me ajudar?  :T.T:

ptz Eu dei uma busca rápida aqui e não encontrei, eu cheguei afazer um para o RMVXAce, vou tentar montar um para você, mas ainda não garanto muita coisa, provavelmente eu tenha tempo no domingo para tentar fazer isso.
É uma função interessante de se ter no jogo mesmo :).

04/02/2017 às 17:11 #2 Última edição: 04/02/2017 às 17:14 por Akira!
http://www.br-lemes.net/2010/09/script-xp-e-vx-persistencia-de.html 
Não tenho como testar, mas acho que resolve

06/02/2017 às 09:54 #3 Última edição: 07/02/2017 às 08:40 por Hoffmann96
Spoiler
Citação de: Raizen online 04/02/2017 às 14:42
ptz Eu dei uma busca rápida aqui e não encontrei, eu cheguei afazer um para o RMVXAce, vou tentar montar um para você, mas ainda não garanto muita coisa, provavelmente eu tenha tempo no domingo para tentar fazer isso.
É uma função interessante de se ter no jogo mesmo :).

Beleza, aguardo ansiosamente!  :wow:

Citação de: Akira! online 04/02/2017 às 17:11
http://www.br-lemes.net/2010/09/script-xp-e-vx-persistencia-de.html 
Não tenho como testar, mas acho que resolve

Chegando em casa vou testar, logo mais a noite quando chegar na facul eu digo se funcionou ou não, estou sem net em casa por enquanto.  :ok:
[close]
EDIT:
Funcionou direitinho  :lol: não acredito que alguém achou esse script, pra mim já era quase um caso perdido ahahhahauahaha

O único problema é a incompatibilidade com outros scripts CMS. Alguém pode me ajudar nisso? Não queria ter que tirar do meu projeto, ficou tão bonito hahahah Eu to usando esse CMS aqui:
Spoiler
especificamente a versão 2.00 Data Vortex. O link pra download é esse:
Spoiler
Eu não manjo muita coisa de RGSS, só o básico pra saber quando e onde deu treta, mas testei o script das switches permanentes (esse que o Akira! colocou aqui)
Spoiler
begin Persistência de variáveis e switches por br_lemes É permitido, livre de quaisquer ônus, usar, copiar, modificar e/ou distribuir cópias deste script, desde que seja mantido este aviso. NÃO HÁ QUALQUER GARANTIA, USE POR SUA PRÓPRIA CONTA E RISCO. =end

# Este script permite definir variáveis e switches que vão
# manter o seu valor mesmo quando reiniciar o jogo (game over),
# escolher um novo jogo, ou continuar um jogo diferente.
# Os valores serão salvos (se tornarão persistentes)
# automaticamente ao salvar o jogo, ao dar game over ou manualmente ao
# chamar o método "persist_save".

# O objetivo é permitir implementar um HighScore ou outras coisas
# que sua imaginação permitir.

$RMVX = $TEST != nil

# Coloque a lista de ID das variáveis e switches aqui
$PERSIST_VARIABLES = [2, 5]
$PERSIST_SWITCHES  = []

$PERSIST_NAME = $RMVX ? "persist.rvdata" : "persist.rxdata"

def persist_save
  persist_data = [{},{}]
  for i in 0..$PERSIST_VARIABLES.size - 1
    persist_data[0][i] = $game_variables[$PERSIST_VARIABLES[i]]
  end
  for i in 0..$PERSIST_SWITCHES.size - 1
    persist_data[1][i] = $game_switches[$PERSIST_SWITCHES[i]]
  end
  save_data(persist_data, $PERSIST_NAME)
end

def persist_load
  return if !FileTest.exist?($PERSIST_NAME)
  persist_data = load_data($PERSIST_NAME)
  for i in 0..$PERSIST_VARIABLES.size - 1
    $game_variables[$PERSIST_VARIABLES[i]] = persist_data[0][i]
  end
  for i in 0..$PERSIST_SWITCHES.size - 1
    $game_switches[$PERSIST_SWITCHES[i]] = persist_data[1][i]
  end
  $game_map.refresh
end

class Scene_Title
  alias persist_command_new_game command_new_game
  def command_new_game
    persist_command_new_game
    persist_load
  end
end

if $RMVX
  class Scene_File
    alias persist_do_save do_save
    def do_save
      persist_do_save
      persist_save
    end
    alias persist_do_load do_load
    def do_load
      persist_do_load
      persist_load
    end
  end
else
  class Scene_Load
    alias persist_on_decision on_decision
    def on_decision(filename)
      persist_on_decision(filename)
      persist_load
    end
  end

  class Scene_Save
    alias persist_on_decision on_decision
    def on_decision(filename)
      persist_on_decision(filename)
      persist_save
    end
  end
end

class Scene_Gameover
  alias persist_main main
  def main
    persist_save
    persist_main
  end
end
[close]
junto com outros scripts do Moonspearl, que usam o mesmo "setup" padrão para todos os sistemas dele, e só deu problema no do CMS.