VX 스크립트

이하는 스크립트입니다.
변함없이 소재하위에 인스톨 하시면 적용 됩니다.

그리고 첨부한 Menus압축을 자신의 게임 Graphics폴더에다가 풀어주시면 됩니다.

GraphicsMenus/그림파일
이런 상태를 만들어주세요.


p.s

스테이터스 최대 표시량은 999입니다.
그리고 마나를 비롯한 스테이터스바(status bar)가 뜨는 속성값은 절대 0을 주면 안됩니다.(에러뜨는상황을 확인했습니다.)
감사합니다~


##################################################
# Mog Menu_Status_Aya V 1.0                                      #
##################################################
# By Moghunter
# http://www.atelier-rgss.com
##################################################
# Menu Status com layout em pictures.
# É necessário criar uma pasta com o nome de
# Menus e colocar todas as imagens dentro dela, de resto
# é só criar o seu próprio estilo de menu através de um
#editor de imagem.
#-------------------------------------------------
module MOG_VX07
#Definição do parameter maximo.
MAX_PARAMETER = 999
end
##############
# Game_Actor #
##############
class Game_Actor < Game_Battler
def now_exp
return @exp - @exp_list[@level]
end
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
###############
# module Cache #
###############
module Cache
def self.menu(filename)
load_bitmap("Graphics/Menus/", filename)
end
end
##############
# Window_Base #
##############
class Window_Base < Window 
 def draw_actor_atk_menu_status(actor, x, y)
 back = Cache.menu("Parameter_Bar_Back")   
 cw = back.width 
 ch = back.height
 src_rect = Rect.new(0, 0, cw, ch)   
 self.contents.blt(x , y - ch + 30, back, src_rect)
 meter = Cache.menu("Parameter_Bar")   
 cw = meter.width  * actor.atk / MOG_VX07::MAX_PARAMETER
 ch = meter.height
 src_rect = Rect.new(0, 0, cw, ch)
 self.contents.blt(x , y - ch + 30, meter, src_rect)
 self.contents.font.size = 14
 self.contents.font.color = Color.new(255,255,255,255)
 self.contents.draw_text(x + 70, y + 5 , 80, 32, actor.atk.to_s , 2)
 end    
 def draw_actor_def_menu_status(actor, x, y)
 back = Cache.menu("Parameter_Bar_Back")   
 cw = back.width 
 ch = back.height
 src_rect = Rect.new(0, 0, cw, ch)   
 self.contents.blt(x , y - ch + 30, back, src_rect)
 meter = Cache.menu("Parameter_Bar")   
 cw = meter.width  * actor.def / MOG_VX07::MAX_PARAMETER
 ch = meter.height
 src_rect = Rect.new(0, 0, cw, ch)
 self.contents.blt(x , y - ch + 30, meter, src_rect)
 self.contents.font.size = 14
 self.contents.font.color = Color.new(255,255,255,255)
 self.contents.draw_text(x + 70, y + 5 , 80, 32, actor.def.to_s , 2)
 end    
 def draw_actor_spi_menu_status(actor, x, y)
 back = Cache.menu("Parameter_Bar_Back")   
 cw = back.width 
 ch = back.height
 src_rect = Rect.new(0, 0, cw, ch)   
 self.contents.blt(x , y - ch + 30, back, src_rect)
 meter = Cache.menu("Parameter_Bar")   
 cw = meter.width  * actor.spi / MOG_VX07::MAX_PARAMETER
 ch = meter.height
 src_rect = Rect.new(0, 0, cw, ch)
 self.contents.blt(x , y - ch + 30, meter, src_rect)
 self.contents.font.size = 14
 self.contents.font.color = Color.new(255,255,255,255)
 self.contents.draw_text(x + 70, y + 5 , 80, 32, actor.spi.to_s , 2)
 end    
 def draw_actor_agi_menu_status(actor, x, y)
 back = Cache.menu("Parameter_Bar_Back")   
 cw = back.width 
 ch = back.height
 src_rect = Rect.new(0, 0, cw, ch)   
 self.contents.blt(x , y - ch + 30, back, src_rect)
 meter = Cache.menu("Parameter_Bar")   
 cw = meter.width  * actor.agi / MOG_VX07::MAX_PARAMETER
 ch = meter.height
 src_rect = Rect.new(0, 0, cw, ch)
 self.contents.blt(x , y - ch + 30, meter, src_rect)
 self.contents.font.size = 14
 self.contents.font.color = Color.new(255,255,255,255)
 self.contents.draw_text(x + 70, y + 5 , 80, 32, actor.agi.to_s , 2)
 end
 def draw_item_name_menu_status(item, x, y, enabled = true)
 if item != nil
 draw_icon(item.icon_index, x, y, enabled)
 self.contents.font.color = normal_color
 self.contents.font.color.alpha = enabled ? 255 : 128
 self.contents.draw_text(x + 30, y, 155, WLH, item.name)
 end
 end
 def draw_equipments_menu_status(actor, x, y)
 draw_item_name_menu_status(actor.equips[0], x , y)
 draw_item_name_menu_status(actor.equips[1], x , y + 45)
 draw_item_name_menu_status(actor.equips[2], x , y + 90)
 draw_item_name_menu_status(actor.equips[3], x + 125, y + 20)
 draw_item_name_menu_status(actor.equips[4], x + 125, y + 65)
 end
 def draw_actor_hp_menu_status(actor, x, y)
 back = Cache.menu("MeterBack")   
 cw = back.width 
 ch = back.height
 src_rect = Rect.new(0, 0, cw, ch)   
 self.contents.blt(x , y - ch + 30, back, src_rect)
 meter = Cache.menu("HPMeter")   
 cw = meter.width  * actor.hp / actor.maxhp
 ch = meter.height
 src_rect = Rect.new(0, 0, cw, ch)
 self.contents.blt(x , y - ch + 30, meter, src_rect)
 self.contents.font.size = 14
 self.contents.font.color = Color.new(255,255,255,255)
 self.contents.draw_text(x + 22, y + 5 , 80, 32, actor.hp.to_s + " / " + actor.maxhp.to_s, 1)
 end 
 def draw_actor_mp_menu_status(actor, x, y)
 back = Cache.menu("MeterBack")   
 cw = back.width 
 ch = back.height
 src_rect = Rect.new(0, 0, cw, ch)   
 self.contents.blt(x , y - ch + 30, back, src_rect)
 meter = Cache.menu("MPMeter")   
 cw = meter.width  * actor.mp / actor.maxmp
 ch = meter.height
 src_rect = Rect.new(0, 0, cw, ch)
 self.contents.blt(x , y - ch + 30, meter, src_rect)
 self.contents.font.size = 14
 self.contents.font.color = Color.new(255,255,255,255)
 self.contents.draw_text(x + 22, y + 5 , 80, 32, actor.mp.to_s + " / " + actor.maxmp.to_s, 1)
 end 
 def draw_actor_class_menu_status(actor, x, y)
 self.contents.font.color = normal_color
 self.contents.draw_text(x, y, 90, WLH, actor.class.name, 1)
 end
 def draw_actor_level_menu_status(actor, x, y)
 self.contents.font.color = normal_color
 self.contents.draw_text(x + 32, y, 24, WLH, actor.level, 1)
 end 
 def draw_menu_status_obj(x,y)
 lay = Cache.menu("Menu_Status_OBJ")
 cw = lay.width
 ch = lay.height
 src_rect = Rect.new(0, 0, cw, ch)
 self.contents.blt(x , y - ch, lay, src_rect)   
 end
 def draw_actor_exp_meter_status_menu(actor, x, y) 
 if actor.next_exp != 0
 rate = actor.now_exp.to_f / actor.next_exp
 else
 rate = 1
 end
 back = Cache.menu("MeterBack")   
 cw = back.width 
 ch = back.height
 src_rect = Rect.new(0, 0, cw, ch)   
 self.contents.blt(x , y - ch , back, src_rect)
 bitmap = Cache.menu("EXPMeter")
 if actor.level < 99
 cw = bitmap.width * rate
 else
 cw = bitmap.width
 end  
 ch = bitmap.height
 src_rect = Rect.new(0, 0, cw, ch)
 self.contents.blt(x  , y - ch , bitmap, src_rect)
 if actor.next_exp != 0
 self.contents.draw_text(x + 30, y - 20, 80, 32, actor.next_rest_exp_s, 2)   
 else
 self.contents.draw_text(x + 30, y - 20, 80, 32, "Max", 2)
 end
 self.contents.draw_text(x - 30, y + 10, 120, 32, actor.exp_s.to_s, 2)
 end 
end
####################
# Window_Status_Left #
####################
class Window_Status_Left < Window_Base
  def initialize(actor)
    super(0, 0, 560, 430)
    @actor = actor
    self.opacity = 0
    self.contents.font.bold = true
    self.contents.font.shadow = true
    refresh
  end
  def refresh
    self.contents.clear
    draw_actor_face(@actor, 350, 90)
    draw_actor_class_menu_status(@actor, 350, 195)
    draw_actor_level_menu_status(@actor, 450, 195)
    draw_actor_hp_menu_status(@actor, 350, 213)
    draw_actor_mp_menu_status(@actor, 380, 240)
    draw_actor_exp_meter_status_menu(@actor, 350, 300)
    draw_actor_atk_menu_status(@actor, 50, 170)
    draw_actor_def_menu_status(@actor, 70, 200)
    draw_actor_spi_menu_status(@actor, 90, 230)
    draw_actor_agi_menu_status(@actor, 110, 260)
    draw_equipments_menu_status(@actor, 30, 40)
    draw_actor_state(@actor,190, 320)
  end
end
#####################
# Window_Status_Right #
#####################
class Window_Status_Right < Window_Base
  def initialize(actor)
    super(0, 0, 560, 430)
    @actor = actor
    self.opacity = 0
    self.contents.font.bold = true
    self.contents.font.shadow = true
    refresh
  end
  def refresh
    self.contents.clear
    draw_actor_name(@actor, 55, 367)
    draw_menu_status_obj(0, 380)
  end
end
###############
# Scene_Status #
###############
class Scene_Status
  def main
    start                       
    perform_transition         
    Input.update                 
    loop do
      Graphics.update            
      Input.update               
      update                   
      break if $scene != self    
    end
    Graphics.update
    pre_terminate                
    Graphics.freeze            
    terminate                   
  end 
  def initialize(actor_index = 0)
    @actor_index = actor_index
  end
  def start
    @actor = $game_party.members[@actor_index]
    @status_window_right = Window_Status_Right.new(@actor)
    @status_window_right.x = 544
    @status_window_right.contents_opacity = 0
    @status_window_left = Window_Status_Left.new(@actor)
    @status_window_left.x = -544
    @status_window_left.contents_opacity = 0
    @menu_back = Plane.new   
    @menu_back.bitmap = Cache.menu("Background")
    @menu_layout = Sprite.new 
    @menu_layout.bitmap = Cache.menu("Menu_Status_Layout") 
 end
  def perform_transition
    Graphics.transition(0)
  end 
  def pre_terminate
       for i in 0..25
       @status_window_right.x += 25
       @status_window_left.x -= 25 
       @status_window_right.contents_opacity -= 15      
       @status_window_left.contents_opacity -= 15
       @menu_back.ox += 1      
       Graphics.update  
       end
  end 
  def terminate
    @status_window_right.dispose
    @status_window_left.dispose
    @menu_back.dispose
    @menu_layout.dispose
  end
  def return_scene
    $scene = Scene_Menu.new(3)
  end
  def next_actor
    @actor_index += 1
    @actor_index %= $game_party.members.size
    $scene = Scene_Status.new(@actor_index)
  end
  def prev_actor
    @actor_index += $game_party.members.size - 1
    @actor_index %= $game_party.members.size
    $scene = Scene_Status.new(@actor_index)
  end
  def update
    @menu_back.ox += 1
    @status_window_right.contents_opacity += 10    
    @status_window_left.contents_opacity += 10   
    if @status_window_right.x  > 0
       @status_window_right.x -= 25
    elsif @status_window_right.x  <= 0
       @status_window_right.x = 0
       @status_window_right.contents_opacity = 255
    end
    if @status_window_left.x  < 0
       @status_window_left.x += 25
    elsif @status_window_left.x  >=0
       @status_window_left.x = 0
       @status_window_left.contents_opacity = 255      
    end    
    @status_window_right.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
      Sound.play_cursor
      next_actor
    elsif Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
      Sound.play_cursor
      prev_actor
    end
    super
  end
end
#-------------------------------------------------
$mogscript = {} if $mogscript == nil
$mogscript["menu_status_aya"] = true
#-------------------------------------------------
Comment '5'

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 3 습작 2012.12.24 5410
637 전투 VLAD ABS [액알 시스템] 65 아방스 2009.01.07 12567
636 전투 vampyr SBABS-Requiem ABS 9(액알) 101 file 담먹캐 2009.11.01 12006
635 HUD rpg 만들기 vx - 맵이름 띠우는 스크립트 ^^ 74 아방스 2008.01.27 11933
634 HUD PRABS v1.0 [hud,주석액알,원거리공격,hotkeys,vx] 대박감이다. 47 유칸지 2008.08.13 11114
633 전투 사이드뷰배틀3.3 + ATB1.1 스크립트. 65 할렘 2009.02.01 10946
632 전투 ORBS [새로운 전투 방식] 48 file 아방스 2009.03.04 10210
631 그래픽 3D그래픽 파티클엔진 45 file RPGbooster 2008.10.08 10130
630 전투 rpgvx 간단액알 스크립트 제작: 41 *PS 2008.02.07 9829
629 메뉴 (모그메뉴 풀세트팩 SEL Style.) 유니크급 자료 147 file 할렘 2009.02.07 9559
628 전투 RPG Tankentai SBS 3.3 + ATB Kaduki Eng 58 아방스 2009.02.05 9071
627 전투 ATB전투방식.(사이드뷰X 백발의카임전투방식O) 14 file 이피쿤 2009.06.24 9037
626 메뉴 일본에서 만든 멋있는메뉴변경 스크립트 (한글 VX에서 쓰시면 자동으로 바뀜) 45 유칸지 2008.04.09 8862
625 전투 WGB배틀 시스템. 59 file 카르와푸딩의아틀리에 2009.06.30 8777
624 전투 Crissaegrim ABS 2.0.5 최신 48 file RPGbooster 2008.10.08 8769
623 전투 Requiem ABS 8 - 액션 배틀 시스템 8 36 아방스 2009.06.24 8540
622 전투 RPGTankentai SBS3.3b 버전 (사이드뷰) 21 file 카르와푸딩의아틀리에 2009.07.01 8455
621 전투 사이드뷰 스크립트 [2003 전투 방식] 39 아방스 2008.03.09 8406
620 맵/타일 RPG 만들기 VX 로 구현한 3D~ 42 아방스 2008.09.02 8405
619 메뉴 메뉴변경 스크립트 34 아방스 2008.01.24 7941
618 전투 PRABS 2.0 액션배틀시스템 58 file RPGbooster 2008.10.08 7576
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 32 Next
/ 32