Ajuda com Script Sideview

6 Respostas   463 Visualizações

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

Ludo

  • Veterano
  • *
  • Posts: 873
  • Ouros: 1227
  • Um homem não moldado pela dor, ainda é um menino
Tópico criado em: 19/02/2015 às 13:31 - Última modificação por Akiyoshi em 19/02/2015 às 13:39

Estranho, parece que estou muito enferrujado do fórum, tem ano que não mexo com RPG Maker, só agora vi que postei na área errada, perdoem, não foi por mal. Algum mod pode mover?

A mais o menos um ano atrás um Maker desenvolveu o script abaixo pra mim (creio que tenha sido o DeadMaker).
Ele basicamente serve como add-on do Ace Core Engine/Sideview, basicamente o que ele faz é:
-> todos os personagens possuem chars pequenos para movimentação no mapa, porém cada um deles, ao entrar na batalha mudam o gráfico para um char de mesmo nome com o sufixo "_b". (exemplo: Actor1_b)
Até aí tudo bem, porém ao finalizar a batalha acho que ele esqueceu de retornar o gráfico para o normal, assim quando entro em uma batalha pela segunda vez o script porcura um gráfico com "Actor1_b_b".

Será que alguém pode solucionar isso?

Script 1 - Transformation Skill
Código: [Selecionar]
module TFSK
 
  #=> ID das skills de transformação
 
  Morph_Skill = [0]
 
  #ID Classe Antiga => [Gráfico, [Face, Face Index], ID Classe Nova]
 
  Morphs = { }
 
end

module RBAS
 
  Switch = 14 #=> Switch para retirar 1º Player do Grupo
 
end

class Game_Battler < Game_BattlerBase
 
  alias remaking_skills_use_item use_item
 
  def use_item(*args)
    if args[0].is_a?(RPG::Skill) and TFSK::Morph_Skill.include?(args[0].id) &&
      TFSK::Morphs.keys.include?(self.class.id)
      vms_morph_index = TFSK::Morphs.keys.index(self.class.id)
      vms_morph_settings(TFSK::Morphs.values[vms_morph_index])
    end
    remaking_skills_use_item(*args)
  end
 
  def vms_morph_settings(data)
    character = data[0] ; face = data[1]
    self.class.learnings.each { |forget|
    forget_skill(forget.skill_id) }
    self.change_class(data[2],true)
    self.class.learnings.each { |learn|
    if self.level >= learn.level
      learn_skill(learn.skill_id)
    end }
    self.set_graphic(character, 0, face[0], face[1])
    new_char = Cache.character(character + "_b")
    origin_sprite = SceneManager.scene.spriteset.actor_sprites[self.index]
    origin_sprite.character_sprite.bitmap = new_char
    $game_player.refresh
  end
 
end

class Game_System
 
  def lock_actor(actor_id)
    return unless YEA::PARTY::ENABLE_MENU
    actor = $game_actors[actor_id]
    actor.locked = true
  end
 
  def unlock_actor(actor_id)
    return unless YEA::PARTY::ENABLE_MENU
    actor = $game_actors[actor_id]
    actor.locked = false
  end
 
  def require_actor(actor_id)
    return unless YEA::PARTY::ENABLE_MENU
    return if $game_system.formation_disabled
    actor = $game_actors[actor_id]
    actor.required = true
  end
 
  def unrequire_actor(actor_id)
    return unless YEA::PARTY::ENABLE_MENU
    return if $game_system.formation_disabled
    actor = $game_actors[actor_id]
    actor.required = false
  end
 
end

class Scene_Battle < Scene_Base
 
  alias removed_battle_actor_main main
 
  def main
    recreate_correct_morph
    if $game_switches[RBAS::Switch] == true && $game_party.members.size > 1
      rbas_actor = $game_party.members[0]
      @vmbr_removed_actor = true
      $game_party.remove_actor(rbas_actor.id)
    end
    removed_battle_actor_main
    recreate_correct_morph(true)
    if @vmbr_removed_actor != nil
      $game_party.add_actor(rbas_actor.id)
      $game_system.lock_actor(rbas_actor.id)
      $game_system.require_actor(rbas_actor.id)
    end
  end
 
  def recreate_correct_morph(dispose=false)
    old = $game_party.members
    old.size.times do |i|
      fn = old[i].face_name ; fi = old[i].face_index
      if dispose == true
        cn = old[i].character_name.split("-")[0]
      else
        cn = old[i].character_name + "_b" #Seria _b mas eu tirei de entre os ""
      end
      $game_party.members[i].set_graphic(cn, 0, fn, fi)
    end
  end

end

Script 2 - Transformation Skill Bug Fix
Código: [Selecionar]
class Game_Interpreter
 
  def command_322
    actor = $game_actors[@params[0]]
    if actor
      actor.set_graphic(@params[1], @params[2], @params[3], @params[4])
    end
    return if !SceneManager.scene_is?(Scene_Battle)
    $game_party.battle_members.each { |actor|
    if actor.id == @params[0]
      index = $game_party.battle_members.index(actor)
      rbas0x1 = Cache.character(@params[1])
      battle_scene = SceneManager.scene.spriteset.actor_sprites[index]
      battle_scene.character_sprite.bitmap = rbas0x1
      SceneManager.scene.spriteset.update_actors
      $game_player.refresh
    end }
  end
 
end
Clique e conheça o meu canal - Canal RPG Maker Zone

Raizen

  • Administrador
  • *
  • Posts: 3224
  • Ouros: 3192
  • Medalhas Vencedor do Protótipo Premiado Participante notável do evento "A Estação das Luzes do Norte" Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!
Resposta 1: 19/02/2015 às 13:55 - Última modificação por Raizen em 19/02/2015 às 14:35

Movi pra ti xD, bom não dá para eu testar de verdade D:, mas o que fiz deve funcionar...

Código: [Selecionar]
class Game_System
 
  def lock_actor(actor_id)
    return unless YEA::PARTY::ENABLE_MENU
    actor = $game_actors[actor_id]
    actor.locked = true
  end
 
  def unlock_actor(actor_id)
    return unless YEA::PARTY::ENABLE_MENU
    actor = $game_actors[actor_id]
    actor.locked = false
  end
 
  def require_actor(actor_id)
    return unless YEA::PARTY::ENABLE_MENU
    return if $game_system.formation_disabled
    actor = $game_actors[actor_id]
    actor.required = true
  end
 
  def unrequire_actor(actor_id)
    return unless YEA::PARTY::ENABLE_MENU
    return if $game_system.formation_disabled
    actor = $game_actors[actor_id]
    actor.required = false
  end
 
end

class Scene_Battle < Scene_Base
 
  alias removed_battle_actor_main main
   alias :correct_b_terminate :terminate
  def main
    recreate_correct_morph
    if $game_switches[RBAS::Switch] == true && $game_party.members.size > 1
      rbas_actor = $game_party.members[0]
      @vmbr_removed_actor = true
      $game_party.remove_actor(rbas_actor.id)
    end
    removed_battle_actor_main
    recreate_correct_morph(true)
    if @vmbr_removed_actor != nil
      $game_party.add_actor(rbas_actor.id)
      $game_system.lock_actor(rbas_actor.id)
      $game_system.require_actor(rbas_actor.id)
    end
  end
 
  def recreate_correct_morph(dispose=false)
    @old = $game_party.members
    @old.size.times do |i|
      fn = @old[i].face_name ; fi = @old[i].face_index
      if dispose == true
        cn = @old[i].character_name.split("-")[0]
      else
        cn = @old[i].character_name + "_b" #Seria _b mas eu tirei de entre os ""
      end
      $game_party.members[i].set_graphic(cn, 0, fn, fi)
    end
  end

    #--------------------------------------------------------------------------
  # * Finalização do processo
  #--------------------------------------------------------------------------
  def terminate
for i in 0...$game_party.members.size
fn = @old[i].face_name ; fi = @old[i].face_index
$game_party.members[i].set_graphic(@old[i].character_name, 0, fn, fi)
end
    correct_b_terminate
  end
end

No lugar do primeiro script que me mandou, mas pega tudo que está acima do class Game_System do script antigo, está dando erro quando tento postar aqui :/

Ludo

  • Veterano
  • *
  • Posts: 873
  • Ouros: 1227
  • Um homem não moldado pela dor, ainda é um menino
Resposta 2: 19/02/2015 às 14:01

Primeiramente agradeço.

Retornou esse erro:

Código: [Selecionar]
    if $game_switches[RBAS::Switch] == true && $game_party.members.size > 1

Script 'Transf Skill corrigido by Raizen' line 7: NameError occurred.

uninitialized constant Scene_Battle::RBAS

Clique e conheça o meu canal - Canal RPG Maker Zone

Raizen

  • Administrador
  • *
  • Posts: 3224
  • Ouros: 3192
  • Medalhas Vencedor do Protótipo Premiado Participante notável do evento "A Estação das Luzes do Norte" Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!
Resposta 3: 19/02/2015 às 14:06

É porque não consegui colocar o script todo shUAsh, aqui ta bugando para postar :/ copia do outro script tudo que esta acima do Game_System, deve ser o proxy do trampo que ta travando algum comando dentro do script >_>

Ludo

  • Veterano
  • *
  • Posts: 873
  • Ouros: 1227
  • Um homem não moldado pela dor, ainda é um menino
Resposta 4: 19/02/2015 às 14:15

Testei novamente como recomendado

Retornou isso assim que finalizou a batalha para voltar ao mapa:


Script 'Trans Skill Corrigido by Raizen' line 118: NameError occurred.

undefined local variable or method `i' for #<Scene_Battle:0x5af78a0>

Código: [Selecionar]
fn = @old[i].face_name ; fi = @old[i].face_index
Clique e conheça o meu canal - Canal RPG Maker Zone

Raizen

  • Administrador
  • *
  • Posts: 3224
  • Ouros: 3192
  • Medalhas Vencedor do Protótipo Premiado Participante notável do evento "A Estação das Luzes do Norte" Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!
Resposta 5: 19/02/2015 às 14:37

Erro meu hsuAHsu se não funcionar agora, só te mando depois de testar(de noite), já que fazer as escuras é meio chato xD.

Código: [Selecionar]
class Game_System
 
  def lock_actor(actor_id)
    return unless YEA::PARTY::ENABLE_MENU
    actor = $game_actors[actor_id]
    actor.locked = true
  end
 
  def unlock_actor(actor_id)
    return unless YEA::PARTY::ENABLE_MENU
    actor = $game_actors[actor_id]
    actor.locked = false
  end
 
  def require_actor(actor_id)
    return unless YEA::PARTY::ENABLE_MENU
    return if $game_system.formation_disabled
    actor = $game_actors[actor_id]
    actor.required = true
  end
 
  def unrequire_actor(actor_id)
    return unless YEA::PARTY::ENABLE_MENU
    return if $game_system.formation_disabled
    actor = $game_actors[actor_id]
    actor.required = false
  end
 
end

class Scene_Battle < Scene_Base
 
  alias removed_battle_actor_main main
   alias :correct_b_terminate :terminate
  def main
    recreate_correct_morph
    if $game_switches[RBAS::Switch] == true && $game_party.members.size > 1
      rbas_actor = $game_party.members[0]
      @vmbr_removed_actor = true
      $game_party.remove_actor(rbas_actor.id)
    end
    removed_battle_actor_main
    recreate_correct_morph(true)
    if @vmbr_removed_actor != nil
      $game_party.add_actor(rbas_actor.id)
      $game_system.lock_actor(rbas_actor.id)
      $game_system.require_actor(rbas_actor.id)
    end
  end
 
  def recreate_correct_morph(dispose=false)
    @old = $game_party.members
    @old.size.times do |i|
      fn = @old[i].face_name ; fi = @old[i].face_index
      if dispose == true
        cn = @old[i].character_name.split("-")[0]
      else
        cn = @old[i].character_name + "_b" #Seria _b mas eu tirei de entre os ""
      end
      $game_party.members[i].set_graphic(cn, 0, fn, fi)
    end
  end

    #--------------------------------------------------------------------------
  # * Finalização do processo
  #--------------------------------------------------------------------------
  def terminate
for i in 0...$game_party.members.size
fn = @old[i].face_name ; fi = @old[i].face_index
$game_party.members[i].set_graphic(@old[i].character_name, 0, fn, fi)
end
    correct_b_terminate
  end
end

Ludo

  • Veterano
  • *
  • Posts: 873
  • Ouros: 1227
  • Um homem não moldado pela dor, ainda é um menino
Resposta 6: 19/02/2015 às 14:52

humm, ele continua normalmente, assim que saio de uma batalha mantém o gráfico "_b"
Clique e conheça o meu canal - Canal RPG Maker Zone