질문과 답변

Extra Form
 




#==============================================================================
# +++ MOG - Scene Character Select V1.0 +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com/
#==============================================================================
# Tela de seleção de personagens.
#==============================================================================
# 1 - Deverão conter as seguintes imagens na pasta GRAPHICS/SYSTEM.
#
# Background
# Char_Layout01
# Char_Layout02
# Char_Status_Layout
# Number_Char
#
# 2 - Imagem de pose. (Opcional)
# Para ativar a imagem de pose dos personagens, basta ter os arquivos de pose
# gravados na pasta (GRAPHICS/PICTURES)
# Você deverá nomear as imagens da seguinte forma.
#
# Character + ID_DO_PERSONAGEM
#
# Exemplo:
#
# Character1.png
#
#==============================================================================
# Para chamar o script use o seguinte comando.
#
# SceneManager.call(Scene_Character_Select)
#
#==============================================================================


#==============================================================================
# ■ Window_Base
#==============================================================================
class Window_Base < Window
 
  #--------------------------------------------------------------------------
  # ● draw_picture_number(x,y,value,file_name,align, space, frame_max ,frame_index)    
  #--------------------------------------------------------------------------
  # X - Posição na horizontal
  # Y - Posição na vertical
  # VALUE - Valor Numérico
  # FILE_NAME - Nome do arquivo
  # ALIGN - Centralizar 0 - Esquerda 1- Centro 2 - Direita 
  # SPACE - Espaço entre os números.
  # FRAME_MAX - Quantidade de quadros(Linhas) que a imagem vai ter.
  # FRAME_INDEX - Definição do quadro a ser utilizado.
  #-------------------------------------------------------------------------- 
  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...$data_actors.size
        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
     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...$data_actors.size
          @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...$data_actors.size
          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...$data_actors.size
        @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...$data_actors.size    
        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...$data_actors.size
          @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

 

 

 

 

 

 

 

이런 스크립트인데요. 실행해보면 액터에 등록해놓은 모든 캐릭터들이 주인공으로 선택이 가능합니다.

이렇게 하지말고 1번액터부터6번액터까지만 선택가능하게 한다던가 하는 방법은 없을까요?

아틀리에에서 퍼왔습니다. 근데 포르투갈어라 모르겠네요.....스크립트도 모르는데 ㅠㅠ

Comment '2'
  • profile
    습작 2012.06.06 22:49

    0.

     

      class Scene_Character_Select를 검색하신 다음 그 아래쪽으로 def setup 에서 @char_max = $data_actors.size - 1 라고 되어있는 부분을 수정하셔야 합니다.


      연재는 모든 데이터 베이스 상의 캐릭터 만큼으로 되어 있으니 원하시는 6명으로 줄이기 위해서는 @char_max = 6 으로 적어주셔야 합니다.



  • ?
    gor 2012.06.07 21:07
    감사합니다

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12442
RMVXA VX ACE 전체화면시 검은화면이 나오는데 해결방법 좀!!! 1 file zERONi 2014.12.31 559
RMVXA VX Ace 전투 테스트가 작동이 안되요 1 file pdm0822 2015.11.08 227
RMVXA VX ACE 전투에서 적 체력 표시하려면 어떻게 하죠? 2 압둘라마바드 2012.04.03 3231
에러 해결 RMVXA vx ace 정상적인 작동이 안됩니다 바퀴벌레의질긴생명력 2020.07.17 40
RMVXA vx ace 조건분기? 질문입니다/ 1 file 아이디어창고 2015.07.08 150
RMVXA vx ace 주인공선택 스크립트인데요.....질문있습니다 2 gor 2012.06.06 857
RMVXA vx ace 지금 하기에 갠찮나용? 1 dlwog2 2014.06.04 684
RMVXA VX ace 질문입니다... 1 흑마데스 2012.01.03 2835
기타 RMVXA VX ACE 캐릭터 그래픽 도트 질문 1 file Fillips 2020.12.07 239
이벤트 작성 RMVXA vx ace 커스텀 메뉴 노가다법 질문드립니다 2 file lownis 2022.10.23 114
RMVXA VX ACE 툴에 내장된 캐릭터 생성기 머리색, 눈동자색, 피부색 추가 어떻게 하나요? 수수미 2013.11.23 994
RMVXA vx ace 파티 전투중 순서바꾸는 방법 없나여? dklqwer123 2014.05.01 575
RMVXA VX ACE 포그 질문드립니당!! 2 file 하나비애 2013.07.24 811
RMVXA VX ACE 해상도 변경관련 질문 좀 드릴게요;';; 2 file 글쓰니안쓰니 2013.02.08 999
RMVXA vx ace 혹시 프로젝트 만들던파일이나 공유같은건없을까여 짱맨 2017.04.19 92
기타 RMVXA vx ace) (급합니다....부디 도움을...) 알만툴 내 기본 설정 관련 질문 2 게임이만들고파 2021.01.25 113
기타 RMVXA vx ace) iconset 가로 세로 크기 2 게임이만들고파 2021.01.03 139
턴제 전투 RMVXA VX ACE) 급합니다 부탁드려요) 스킬을 화면에 꽉 차게 그림을 그려서 만들려면 어떻게 해야 하나요? 6 file 황태국 2021.01.29 161
기본툴 사용법 RMVXA vx ace) 방어 효과율 관련 질문 2 게임이만들고파 2021.03.29 56
스크립트 작성 RMVXA vx ace) 변수에 스크립트 대입하는 방법 2 게임이만들고파 2021.03.13 168
Board Pagination Prev 1 ... 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 149 Next
/ 149