2005.06.28 07:21

게이지바 위치

조회 수 442 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
캐릭터의 HP, SP, 그리고 경험치를 자동적으로 맵에서 게이지바로 표시하게 해주는 스크립트입니다. 액알 제작을 조금이나마 더 편하게 할 수 있게 되지요. 캐릭터의 이름, 레벨, 직업도 맵에서 같이 표시됩니다.

이 스크립트의 가치는, 기존의 이벤트 커맨드를 사용해서 게이지를 만들어줘야 했던 번거로움을 덜어준다는 것입니다.


파티원이 여러명일 경우 게임에서 L, R (Q, W)키를 누르면 어느 캐릭터의 게이지를 표시할지 바꿔줍니다.
Main 위에 찔러넣으면 곧바로 적용됩니다.
자작그림 파일을 사용할 경우 맨 끝의 주의사항을 읽으세요.


리플 달아줘염~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
이건 그리고 메뉴에서 안겹치지만...렉 걸리는 거랑 속도는 좋은데...메뉴에서 겹치는것을
비교하면서 만지다 보니 안겹치게 됐습니다..속도두 빠르고...ㅋㅋㅋ이건 제가 만든것임...


#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  엑터를 취급하는 클래스입니다. 이 클래스는 Game_Actors 클래스 ($game_actors)
# 의 내부에서 사용되어 Game_Party 클래스 ($game_party)로부터도 참조됩니다.
#==============================================================================

#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  게임중의 모든 윈도우의 슈퍼 클래스입니다.
#==============================================================================

class Window_Base < Window  
#--------------------------------------------------------------------------
  # ● 게이지바의 묘화
  #     x    : 묘화처 X 좌표
  #     y    : 묘화처 Y 좌표
  #--------------------------------------------------------------------------  
  def 게이지바그리기(현재포인트, 최고포인트, x, y, width, height = 30) #별도의 게이지바그림파일을 사용할 경우 교체
    @풀게이지바색 = Color.new(255, 0, 0, 255) #빨간색으로 설정되어 있습니다. 게이지바가 꽉찼을 경우 보이지 않습니다.
    @현재게이지바색 = Color.new(0, 100, 100, 255) #진한초록으로 설정되어 있습니다.
    self.contents.fill_rect(x, y, width, height, @풀게이지바색)
    self.contents.fill_rect(x, y, (width * 현재포인트) / 최고포인트, height, @현재게이지바색)
  end
end  
class Game_Actor < Game_Battler
  attr_reader   :exp_list
end
#==============================================================================
# ■ Window_Map_Name
#------------------------------------------------------------------------------
#  マップ名を表示するウィンドウです。
#==============================================================================
class Window_Map게이지 < Window_Base
  attr_accessor :actor
  #--------------------------------------------------------------------------
  # ● オブジェクト初期
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 204, 224)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    @showing_time = 0
  end
#게이지 표시 화면
  def 게이지
    self.contents.clear
    게이지바그리기(@actor.hp, @actor.maxhp, 0, 64, 172)
    게이지바그리기(@actor.sp, @actor.maxsp, 0, 96, 172)    
    #@actor.exp - @actor.exp_list[@actor.level] 현재렙 경험치 초기치에서 현재 경험치를 뺀값.
    #즉, 게이지에서 표시되는 값이다.
    #다음 렙의 경험치를 구한다.
    #@actor.next_rest_exp_s.to_i+@actor.exp
    #다음 렙의 경험치에서 현재렙 경험치 초기치를 뺀다.
     #@actor.next_rest_exp_s.to_i+@actor.exp- @actor.exp_list[@actor.level]
    게이지바그리기(@actor.exp - @actor.exp_list[@actor.level], @actor.next_rest_exp_s.to_i+@actor.exp - @actor.exp_list[@actor.level], 0, 128, 172)
    draw_actor_class(@actor, 32, 32)
    draw_actor_level(@actor, 96, 32)
    draw_actor_name(@actor, 4, 0)
    draw_actor_hp(@actor, 0, 64, 172)
    draw_actor_sp(@actor, 0, 96, 172)
    draw_actor_exp(@actor, 0, 128)
  end
end

#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  # ● メイン?理
  #--------------------------------------------------------------------------
alias thdo_main main
  alias thdo_initialize initialize
  def initialize
    @actor_index = 0
    thdo_initialize
  end
  def main
    # 地名ウィンドウを作成
    @actor = $game_party.actors[@actor_index]
    @map게이지window = Window_Map게이지.new(@actor)
    @map게이지window.opacity = 0
    # ?す
    thdo_main
    # 地名ウィンドウを解放
    @map게이지window.dispose
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    # 루프
    loop do
      # 맵, interpreter, 플레이어의 순서에 갱신
      # (이 갱신 순서는, 이벤트를 실행하는 조건이 채워지고 있을 때
      #  플레이어에 일순간 이동할 기회를 주지 않는등의 이유로써 중요)
      $game_map.update
      $game_system.map_interpreter.update
      $game_player.update
      # 시스템 (타이머), 화면을 갱신
      $game_system.update
      $game_screen.update
      # 플레이어의 장소 이동중이 아니면 루프를 중단
      unless $game_temp.player_transferring
        break
      end
      # 장소 이동을 실행
      transfer_player
      # 트란지션 처리중의 경우, 루프를 중단
      if $game_temp.transition_processing
        break
      end
    end
    # 스프라이트 세트를 갱신
    @spriteset.update
    # 메세지 윈도우를 갱신
    @message_window.update
    # 게임 오버의 경우
    if $game_temp.gameover
      # 게임 오버 화면으로 전환하고
      $scene = Scene_Gameover.new
      return
    end
    # 타이틀 화면에 되돌리는 경우
    if $game_temp.to_title
      # 타이틀 화면으로 전환하고
      $scene = Scene_Title.new
      return
    end
    # 트란지션 처리중의 경우
    if $game_temp.transition_processing
      # 트란지션 처리중 플래그를 클리어
      $game_temp.transition_processing = false
      # 트란지션 실행
      if $game_temp.transition_name == ""
        Graphics.transition(20)
      else
        Graphics.transition(40, "Graphics/Transitions/" +
          $game_temp.transition_name)
      end
    end
    # 메세지 윈도우 표시중의 경우
    if $game_temp.message_window_showing
      return
    end
    # 엔카운트카운트가 0 으로, 엔카운트리스트가 하늘이 아닌 경우
    if $game_player.encounter_count == 0 and $game_map.encounter_list != []
      # 이벤트 실행중이나 엔카운트 금지중이 아니면
      unless $game_system.map_interpreter.running?  or
             $game_system.encounter_disabled
        # 배틀 호출 플래그를 세트
        $game_temp.battle_calling = true
        $game_temp.battle_can_escape = true
        $game_temp.battle_can_lose = false
        $game_temp.battle_proc = nil
        # 무리를 결정
        n = rand($game_map.encounter_list.size)
        $game_temp.battle_troop_id = $game_map.encounter_list[n]
      end
    end
        
    #다음 엑터에게
    if Input.trigger? (Input::R)
            unless $game_system.map_interpreter.running?  or
             $game_system.menu_disabled
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      @map게이지window.actor = $game_party.actors[@actor_index]
      @map게이지window.게이지
      end
    end
    #전의 엑터에게
    if Input.trigger? (Input::L)
            unless $game_system.map_interpreter.running?  or
             $game_system.menu_disabled
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      @map게이지window.actor = $game_party.actors[@actor_index]
      @map게이지window.게이지
      end
    end
#THDO스크립트 종료
    # B 버튼이 밀렸을 경우
    if Input.trigger? (Input::B)
      # 이벤트 실행중이나 메뉴 금지중이 아니면
      unless $game_system.map_interpreter.running?  or
             $game_system.menu_disabled
        # 메뉴 호출 플래그와 SE 연주 플래그를 세트
        $game_temp.menu_calling = true
        $game_temp.menu_beep = true
      end
    end
    # 디버그 모드가 ON 또한 F9 키가 밀리고 있는 경우
    if $DEBUG and Input.press? (Input::F9)
      # 디버그 호출 플래그를 세트
      $game_temp.debug_calling = true
    end
    # 플레이어의 이동중이 아닌 경우
    unless $game_player.moving?
      @map게이지window.게이지#THDO스크립트
      # 각종 화면의 호출을 실행
      if $game_temp.battle_calling
        call_battle
      elsif $game_temp.shop_calling
        call_shop
      elsif $game_temp.name_calling
        call_name
      elsif $game_temp.menu_calling
        call_menu
      elsif $game_temp.save_calling
        call_save
      elsif $game_temp.debug_calling
        call_debug
      end
    end
  end
end



주의 !!!!
위 스크립트는 게이지바의 그림파일 없이 사용합니다. 별도로 게이지바 그림을 사용할 경우 위의 갈색으로 쓰여진 "게이지바그리기" 메소드를 아래 메소드로 교체해주세요.

  def 게이지바그리기(현재포인트, 최고포인트, x, y, width, height = 30) #따로 게이지 그림 파일을 사용할 경우
    @빈게이지바그림 = RPG::Cache.picture("빈게이지그림파일명")
    @현재게이지바그림 = RPG::Cache.picture("게이지바그림파일명")
    @빈게이지바 = Rect.new(x, y, width, height)
    @빈게이지바 = self.contents.stretch_blt(@빈게이지바, @빈게이지바그림,  @빈게이지바그림.rect)
    @현재게이지바 = Rect.new(x, y, (width * 현재포인트) / 최고포인트, height)
    @현재게이지바 = self.contents.stretch_blt(@현재게이지바, @현재게이지바그림,  @현재게이지바그림.rect)
  end

그리고 빈게이지그림파일명이라고 된 곳에 게이지가 비어있을 때의 그림의 파일명을, 현재게이지바그림파일명이라고 된 곳에 게이지가 차있을 때의 그림의 파일명을 넣어주세요.



이걸로 만들었거든요?? 근데.. 위치를 바꿀수 없을까요..?
오른쪽아래로 내리고 싶은데.. 알려주세요
?

  1. 쯔꾸르 mv 게임을 apk 파일로 변환했는데...

    Date2023.01.14 By박하맛 Views1330
    Read More
  2. 쯔꾸르 젖소이야기 결혼 방법좀 알려주세요...

    Date2021.12.20 By백지씨 Views2627
    Read More
  3. apk포팅 승인 어케 하나요?

    Date2021.11.29 Bygame메이커xp Views1257
    Read More
  4. Yanfly님의 Action Sequence Pack 질문드립니다

    Date2021.07.15 ByNeuromancer Views1541
    Read More
  5. 싸게 MV 를 먼저? 아니면 돈을 더 들어서라도 MZ?

    Date2021.07.06 ByXatra Views1752
    Read More
  6. RMMV - 스탯창과 대화창 변견 관련 질문입니다. (초보입니다 도움좀 주세요 ㅜㅜ)

    Date2021.01.22 Byscribble Views1553
    Read More
  7. 아오오니를 하는 사람인데요 질문 두가지가 있어요

    Date2021.01.16 By오니개무서워 Views1634
    Read More
  8. 재밌는게임

    Date2020.12.07 Byland_tnt Views1455
    Read More
  9. c언어 질문

    Date2020.11.10 By세종기항19 Views1684
    Read More
  10. 코딩 질문

    Date2020.11.08 By세종기항19 Views1539
    Read More
  11. 혹시나 물어보는데

    Date2020.11.07 By드래곤규 Views1402
    Read More
  12. 오픈보 게임 더블드래곤 리로디드 얼티네이트에 대해 궁금

    Date2020.09.09 By이부닝 Views1224
    Read More
  13. 상태이상 확률 결정

    Date2020.09.02 By스트레이보우 Views1006
    Read More
  14. 다음 인디사이드 제작대회는 언제쯤 열릴까요?

    Date2020.05.23 ByWOONAALAA Views963
    Read More
  15. xp로 제작된 어플 실행자체가 안된다는 분이 있습니다.(제생각엔 apk로 변환하는 과정에서 버전자체가 낮은 것 같습니다)

    Date2020.05.04 By라엔 Views1415
    Read More
  16. apk 포팅하는데 게임 이름이 필요합니다 뜨는데

    Date2020.05.03 Bykashu Views1350
    Read More
  17. 쯔꾸르VX Ace렉먹음 도와주세요...

    Date2020.03.22 By랖랖 Views1780
    Read More
  18. 안녕하세요

    Date2020.02.14 By청월령 Views834
    Read More
  19. 포팅 중 '게임 이름이 필요합니다' 오류

    Date2020.02.11 By아이비스 Views817
    Read More
  20. RPGMV 거리 추적

    Date2020.01.19 By정욱 Views931
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 442 Next
/ 442


[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)