MOG - Scene Character Select- Ajuda aqui : )

3 Respostas   327 Visualizações

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

hategum rpg

Tópico criado em: 28/03/2015 às 20:49 - Última modificação por hategum rpg em 28/03/2015 às 21:50

Estou usando o tamanho de janela 640x480, então me sobra bastante espaço do lado direito, não estou conseguindo encontrar a parte que configura a posição da imagem do characterX (o gráfico do personagem) quero mudar para que fique aparecendo mais a direita.
Código: [Selecionar]
#==============================================================================
# +++ MOG - Scene Character Select V1.0 | Hidden Characters Unselectable Mod
#==============================================================================
# By Moghunter
# Hidden Characters Unselectable Mod Author: SoulPour777
# Description: Adds other characters you do not want to be seen into the
# character selection.
# http://www.atelier-rgss.com/
#==============================================================================

=begin
Notes:

The $MOG_Actor_Playable = 6 is the variable that takes how many characters
in the database you want to be shown when the character select script call
is activated. Changing the variable value would also change the number
of actors shown. Please do not edit nor change MOG_Actor_Hidden_Number's
value.
=end
class Mog_Set_Up
 
  def initialize
    $MOG_Actor_Playable = 2
    $MOG_Actor_Hidden_Number = $MOG_Actor_Playable + 1
  end
 
end


class Window_Base < Window

  def draw_picture_number(x,y,value, file_name,align = 0, space = 0, frame_max = 1,frame_index = 0)     
      number_image = Cache.system(file_name)
      frame_max = 1 if frame_max < 1
      frame_index = frame_max -1 if frame_index > frame_max -1
      align = 2 if align > 2
      cw = number_image.width / 10
      ch = number_image.height / frame_max
      h = ch * frame_index
      number = value.abs.to_s.split(//)
      case align
          when 0
             plus_x = (-cw + space) * number.size
          when 1
             plus_x = (-cw + space) * number.size
             plus_x /= 2
          when 2 
             plus_x = 0
      end
      for r in 0..number.size - 1       
          number_abs = number[r].to_i
          number_rect = Rect.new(cw * number_abs, h, cw, ch)
          self.contents.blt(plus_x + x + ((cw - space) * r), y , number_image, number_rect)       
      end
      number_image.dispose 
   end
  #--------------------------------------------------------------------------
  # ● draw_char_window_status 
  #-------------------------------------------------------------------------- 
  def draw_char_window_status(x,y)
      image = Cache.system("Char_Status_Layout")   
      cw = image.width 
      ch = image.height
      src_rect = Rect.new(0, 0, cw, ch)   
      self.contents.blt(x , y , image, src_rect)
      image.dispose
  end     
end 

#===============================================================================
# ■ RPG_FileTest
#===============================================================================
module RPG_FileTest
 
  #--------------------------------------------------------------------------
  # ● RPG_FileTest.system_exist?
  #--------------------------------------------------------------------------
  def RPG_FileTest.system_exist?(filename)
      return Cache.system(filename) rescue return false
  end 
 
  #--------------------------------------------------------------------------
  # ● RPG_FileTest.picture_exist?
  #--------------------------------------------------------------------------
  def RPG_FileTest.picture_exist?(filename)
      return Cache.picture(filename) rescue return false
  end   
 
end

#==============================================================================
# ** Window_Character_Status
#==============================================================================
class Window_Character_Status < Window_Base
  attr_accessor :index
  #--------------------------------------------------------------------------
  # ● initialize
  #--------------------------------------------------------------------------
  def initialize(actor)
      super(0, 0, 400, 130)
      self.opacity = 0
      actor_id = []
      @index = actor
      for i in 1...$MOG_Actor_Hidden_Number
        actor_id.push($game_actors[i])
      end
      @actor = actor_id[actor -1]
      refresh
  end
  #--------------------------------------------------------------------------
  # ● Refresh
  #--------------------------------------------------------------------------
  def refresh
      self.contents.clear
      self.contents.font.bold = true
      self.contents.font.italic = true
      draw_char_window_status(0, 6)   
      draw_actor_face(@actor, 0, 0)
      draw_actor_name(@actor, 140, -5)
      draw_actor_class(@actor, 60, 70)   
      draw_picture_number(155,20,@actor.mhp, "Number_char",1)   
      draw_picture_number(145,48,@actor.mmp, "Number_char",1)   
      draw_picture_number(228,28,@actor.atk, "Number_char",1)   
      draw_picture_number(297,28,@actor.def, "Number_char",1) 
      draw_picture_number(207,68,@actor.mat, "Number_char",1) 
      draw_picture_number(277,68,@actor.agi, "Number_char",1) 
  end
end


#==============================================================================
# ■ Scene Character Select
#==============================================================================
class Scene_Character_Select
 
 #--------------------------------------------------------------------------
 # ● Initialize
 #--------------------------------------------------------------------------
 def initialize
     setup
     create_layout
     $MOG = Mog_Set_Up.new
     @char_max = $MOG_Actor_Playable
     create_window_status
     create_char_image
     reset_position(0)     
 end
   
 #--------------------------------------------------------------------------
 # ● Setup
 #--------------------------------------------------------------------------
 def setup
     @char_index = 1
     @char_max = $data_actors.size - 1
     @pw_x = 300
     @aw_x = 200     
     @nw_x = 100         
 end 
 
 #--------------------------------------------------------------------------
 # ● Main
 #--------------------------------------------------------------------------         
 def main
     Graphics.transition
     execute_loop
     execute_dispose
 end   
 
 #--------------------------------------------------------------------------
 # ● Execute Loop
 #--------------------------------------------------------------------------           
 def execute_loop
     loop do
          Graphics.update
          Input.update
          update
          if SceneManager.scene != self
              break
          end
     end
 end
 
 #--------------------------------------------------------------------------
 # ● create_background
 #--------------------------------------------------------------------------   
 def create_layout
      @background = Plane.new 
      @background.bitmap = Cache.system("Background")
      @background.z = 0
      @layout_01 = Sprite.new 
      @layout_01.bitmap = Cache.system("Char_Layout01")
      @layout_01.z = 10     
      @layout_02 = Sprite.new 
      @layout_02.bitmap = Cache.system("Char_Layout02")
      @layout_02.blend_type = 1
      @layout_02.z = 1 
  end 
 
  #--------------------------------------------------------------------------
  # ● create_window_status
  #-------------------------------------------------------------------------- 
  def create_window_status
      @window_status = []
      for i in 1...$MOG_Actor_Hidden_Number
          @window_status[i] = Window_Character_Status.new(i)
          @window_status[i].z = 7
      end
      check_active_window
  end 
 
  #--------------------------------------------------------------------------
  # ● create_window_status
  #-------------------------------------------------------------------------- 
  def create_char_image   
      @actor_picture = []
      actor_id = []
      for i in 1...$MOG_Actor_Hidden_Number 
          actor_id.push($game_actors[i])
          actor = actor_id[i - 1]
          @actor_picture[i] = Sprite.new
          file_name = "Character" + i.to_s
          file_name = "" unless RPG_FileTest.picture_exist?(file_name)
          @actor_picture[i].bitmap = Cache.picture(file_name)
      end   
      check_active_picture
  end
  #--------------------------------------------------------------------------
  # ● check_active_window
  #--------------------------------------------------------------------------   
  def check_active_window
     for i in 1...$MOG_Actor_Hidden_Number 
        @pw = @char_index - 1
        @pw = 1 if @pw > @char_max
        @pw_y = 32
        @pw = @char_max if @pw < 1
        @aw = @char_index
        @aw_y = 160
        @nw = @char_index + 1
        @nw = 1 if @nw > @char_max
        @nw = @char_max if @nw < 1
        @nw_y = 288
        case @window_status[i].index
            when @pw,@aw,@nw
                 @window_status[i].visible = true
            else
                 @window_status[i].visible = false
        end
      end 
  end
   
  #--------------------------------------------------------------------------
  # ● check_active_picture 
  #--------------------------------------------------------------------------   
  def check_active_picture 
      for i in 1...$MOG_Actor_Hidden_Number   
        case @window_status[i].index
            when @pw,@aw,@nw
                 @actor_picture[i].visible = true
                 @actor_picture[@pw].z = 4
                 @actor_picture[@aw].z = 6 
                 @actor_picture[@nw].z = 4     
                 @actor_picture[@pw].opacity = 120
                 @actor_picture[@aw].opacity = 255
                 @actor_picture[@nw].opacity = 120           
            else
                 @actor_picture[i].visible = false
        end     
      end
  end     
 
  #--------------------------------------------------------------------------
  # ● terminate
  #--------------------------------------------------------------------------
  def execute_dispose
      RPG::BGM.fade(2500)
      Graphics.fadeout(60)
      Graphics.wait(40)
      RPG::BGM.stop     
      for i in 1...$MOG_Actor_Hidden_Number 
          @window_status[i].dispose
          @actor_picture[i].bitmap.dispose
          @actor_picture[i].dispose       
      end   
      @background.bitmap.dispose
      @background.dispose
      @layout_01.bitmap.dispose   
      @layout_01.dispose
      @layout_02.bitmap.dispose   
      @layout_02.dispose   
    end
   
  #--------------------------------------------------------------------------
  # ● update
  #--------------------------------------------------------------------------
  def update
      @background.ox += 1
      update_select
      update_slide_window
      update_slide_image
  end
 
  #--------------------------------------------------------------------------
  # ● update_slide_window
  #-------------------------------------------------------------------------- 
  def update_slide_window
      @window_status[@aw].x += 1 if @window_status[@aw].x < 0
      @window_status[@nw].x -= 2 if @window_status[@nw].x > -30
      @window_status[@pw].x -= 2 if @window_status[@pw].x > -30
      slide_window_y(@pw,@pw_y)
      slide_window_y(@aw,@aw_y)
      slide_window_y(@nw,@nw_y)
  end
 
  #--------------------------------------------------------------------------
  # ● update_slide_image   
  #-------------------------------------------------------------------------- 
  def update_slide_image   
      slide_picture_x(@pw,@pw_x,15)
      slide_picture_x(@aw,@aw_x,5)
      slide_picture_x(@nw,@nw_x,15)
  end
 
  #--------------------------------------------------------------------------
  # ● slide_picture_x
  #--------------------------------------------------------------------------   
  def slide_picture_x(i,x_pos,speed)
      if @actor_picture[i].x < x_pos
         @actor_picture[i].x += speed
         @actor_picture[i].x = x_pos if @actor_picture[i].x > x_pos
      end 
      if @actor_picture[i].x > x_pos
         @actor_picture[i].x -= speed
         @actor_picture[i].x = x_pos if @actor_picture[i].x < x_pos       
       end             
  end     
 
  #--------------------------------------------------------------------------
  # ● slide_window_y
  #--------------------------------------------------------------------------   
  def slide_window_y(i,y_pos)
      if @window_status[i].y < y_pos
         @window_status[i].y += 15
         @window_status[i].y = y_pos if @window_status[i].y > y_pos
      end 
      if @window_status[i].y > y_pos
         @window_status[i].y -= 15
         @window_status[i].y = y_pos if @window_status[i].y < y_pos       
       end             
  end   
 
  #--------------------------------------------------------------------------
  # ● reset_position
  #--------------------------------------------------------------------------     
  def reset_position(diretion)
      check_active_window
      check_active_picture
      case diretion
         when 0
            @window_status[@pw].y = -64
            @actor_picture[@pw].x = 100
         when 1 
            @window_status[@nw].y = 440
            @actor_picture[@nw].x = 400
      end       
  end 
 
  #--------------------------------------------------------------------------
  # ● update_select
  #--------------------------------------------------------------------------
  def update_select
       if Input.trigger?(Input::DOWN) or Input.trigger?(Input::LEFT)
          Sound.play_cursor
          @char_index += 1
          @char_index = 1 if @char_index > @char_max
          if @char_max < 3         
             reset_position(0)
          else 
             reset_position(1)
          end   
       elsif Input.trigger?(Input::UP) or Input.trigger?(Input::RIGHT)
          Sound.play_cursor
          @char_index -= 1
          @char_index = @char_max if @char_index < 1
          reset_position(0)
       elsif Input.trigger?(Input::C)     
          Sound.play_ok
          $game_party.add_actor(@char_index)
          SceneManager.return
       end
  end
end 

$mog_rgss3_scene_character_select = true

Um cara desenvolvendo um jogo de RPG...
"  Faça o melhor que puder em tudo, simples assim."                    
                              - Hategum RPG.

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: 28/03/2015 às 21:02

VIsh o problema é que esse é só o addon, mas eu chutaria e com 90% de chance de acerto, que é essa parte aqui.
Código: [Selecionar]
      case diretion
         when 0
            @window_status[@pw].y = -64
            @actor_picture[@pw].x = 100
         when 1 
            @window_status[@nw].y = 440
            @actor_picture[@nw].x = 400
      end

esse .x = 400, você modifica ele por um x maior para ficar mais perto da borda da tela x).

hategum rpg

Resposta 2: 28/03/2015 às 21:16

Parece que não muda nada, essa parte ai eu ate tentei...quando eu altero o x=100 ai aparece a imagem onde eu gostaria que ficasse mais infelizmente é quando não esta selecionado, e quando eu altero o x=400 não muda nada...continua a mesma coisa ate se eu colocar 2000!...
Um cara desenvolvendo um jogo de RPG...
"  Faça o melhor que puder em tudo, simples assim."                    
                              - Hategum RPG.

hategum rpg

Resposta 3: 28/03/2015 às 21:50

Ufa achei @aw_x = 
Código: [Selecionar]
#--------------------------------------------------------------------------
 # ● Setup
 #--------------------------------------------------------------------------
 def setup
     @char_index = 1
     @char_max = $data_actors.size - 1
     @pw_x = 500
     @aw_x = 300     
     @nw_x = 500         
 end 
 
Um cara desenvolvendo um jogo de RPG...
"  Faça o melhor que puder em tudo, simples assim."                    
                              - Hategum RPG.