🤔 Para Refletir :
"Mais vale um jogo pequeno completo, do que vários jogos grandes incompletos."
- Eliyud

Compatibilidade entre script (Permanet Switch e MP CMS)

Hoffmann

Novato
Membro
Membro
Juntou-se
08 de Fevereiro de 2017
Postagens
2
Bravecoins
0
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  :Okay_fix:

O maker Akira! salvou meu projeto encontrando um script perdido do RMXP, o de permanência de switch. Funciona fácil: é só configurar as ids de switches e variáveis que manterão seus valores, independente do save que for jogado. Muito útil para criação de conquistas, galerias, etc. Vou colocar o script aqui:
Código:
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

Testei o script e funcionou. Coloquei no meu projeto e deu erro de compatibilidade com o CMS do Moonpearl. O link pra download é esse:
http://www.mediafire.com/file/bygb10zt3oezcqj/Animated+CMS+v2.00+Demo+-+Data+Vortex.zip

Testei com outros scripts do Moonpearl que usam o mesmo setup e não deu problema, só com esse menu personalizado mesmo. Alguém que manje um pouco de RGSS pode me ajudar? Prometo dedicatória nos créditos do meu jogo! ahuhauhauuahu
 
Hoffmann comentou:
Código:
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

O erro que deu aqui foi um de sintaxe, o que não tem relação com a demo do mediafire.

Na primeira linha aparentemente quem que escreveu tentou colocar um comentário de multi linhas mas esqueceu de colocar o "=" antes do begin e de quebrar a linha antes do "=end":
Código:
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

Ficaria assim o correto:
Código:
=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

Se houver outro erro que não percebi então provavelmente ambos os scripts estão sobrescrevendo o mesmo método. Se ocorrer mande um print do erro.

 
Voltar
Topo Inferior